{"version":3,"file":"mass-tools.js","sources":["../packages/ms-spectrum/node_modules/is-any-array/src/index.js","../packages/ms-spectrum/node_modules/ml-array-max/lib/index.js","../packages/ms-spectrum/node_modules/ml-array-max/lib-es6/index.js","../packages/ms-spectrum/node_modules/ml-array-sum/lib-es6/index.js","../packages/ms-spectrum/node_modules/ml-array-normed/lib/index.js","../packages/ms-spectrum/node_modules/ml-arrayxy-uniquex/src/index.js","../packages/ms-spectrum/node_modules/xy-parser/src/index.js","../packages/ms-spectrum/src/getBestPeaks.js","../packages/ms-spectrum/node_modules/ml-stat/array.js","../packages/ms-spectrum/node_modules/ml-stat/matrix.js","../packages/ms-spectrum/node_modules/ml-stat/index.js","../packages/ms-spectrum/node_modules/peaks-similarity/src/index.js","../packages/ms-spectrum/src/getPeakChargeBySimilarity.js","../packages/ms-spectrum/src/getPeaks.js","../packages/ms-spectrum/src/isContinuous.js","../packages/ms-spectrum/node_modules/ml-peak-shape-generator/src/util/constants.js","../packages/ms-spectrum/node_modules/ml-peak-shape-generator/src/util/erfinv.js","../packages/ms-spectrum/node_modules/ml-peak-shape-generator/src/classes/Gaussian.js","../packages/ms-spectrum/node_modules/ml-peak-shape-generator/src/classes/Lorentzian.js","../packages/ms-spectrum/node_modules/ml-peak-shape-generator/src/classes/PseudoVoigt.js","../packages/ms-spectrum/node_modules/ml-peak-shape-generator/src/util/getShapeGenerator.js","../packages/ms-spectrum/node_modules/ml-savitzky-golay-generalized/src/index.js","../packages/ms-spectrum/node_modules/ml-gsd/src/gsd.js","../packages/ms-spectrum/node_modules/ml-levenberg-marquardt/src/checkOptions.js","../packages/ms-spectrum/node_modules/ml-levenberg-marquardt/src/errorCalculation.js","../packages/ms-spectrum/node_modules/ml-array-min/lib-es6/index.js","../packages/ms-spectrum/node_modules/ml-array-rescale/lib-es6/index.js","../packages/ms-spectrum/node_modules/ml-matrix/src/inspect.js","../packages/ms-spectrum/node_modules/ml-matrix/src/mathOperations.js","../packages/ms-spectrum/node_modules/ml-matrix/src/util.js","../packages/ms-spectrum/node_modules/ml-matrix/src/stat.js","../packages/ms-spectrum/node_modules/ml-matrix/src/matrix.js","../packages/ms-spectrum/node_modules/ml-matrix/src/wrap/WrapperMatrix2D.js","../packages/ms-spectrum/node_modules/ml-matrix/src/dc/lu.js","../packages/ms-spectrum/node_modules/ml-matrix/src/dc/util.js","../packages/ms-spectrum/node_modules/ml-matrix/src/dc/qr.js","../packages/ms-spectrum/node_modules/ml-matrix/src/dc/svd.js","../packages/ms-spectrum/node_modules/ml-matrix/src/decompositions.js","../packages/ms-spectrum/node_modules/ml-levenberg-marquardt/src/gradientFunction.js","../packages/ms-spectrum/node_modules/ml-levenberg-marquardt/src/step.js","../packages/ms-spectrum/node_modules/ml-levenberg-marquardt/src/index.js","../packages/ms-spectrum/node_modules/ml-spectra-fitting/src/selectMethod.js","../packages/ms-spectrum/node_modules/ml-spectra-fitting/src/shapes/sumOfGaussianLorentzians.js","../packages/ms-spectrum/node_modules/ml-spectra-fitting/src/shapes/sumOfGaussians.js","../packages/ms-spectrum/node_modules/ml-spectra-fitting/src/shapes/sumOfLorentzians.js","../packages/ms-spectrum/node_modules/ml-spectra-fitting/src/index.js","../packages/ms-spectrum/node_modules/median-quickselect/lib/median-quickselect.min.js","../packages/ms-spectrum/node_modules/ml-spectra-processing/src/x/xFindClosestIndex.js","../packages/ms-spectrum/node_modules/ml-spectra-processing/src/x/xGetFromToIndex.js","../packages/ms-spectrum/node_modules/d3-array/build/d3-array.js","../packages/ms-spectrum/node_modules/ml-gsd/src/post/groupPeaks.js","../packages/ms-spectrum/node_modules/ml-gsd/src/post/optimizePeaks.js","../packages/ms-spectrum/node_modules/ml-gsd/src/post/joinBroadPeaks.js","../packages/ms-spectrum/node_modules/ml-gsd/src/post/broadenPeaks.js","../packages/ms-spectrum/src/appendPeaksCharge.js","../packages/ms-spectrum/src/peakPicking.js","../packages/ms-spectrum/node_modules/ml-array-min/lib/index.js","../packages/ms-spectrum/node_modules/ml-regression-base/node_modules/is-any-array/src/index.js","../packages/ms-spectrum/node_modules/ml-regression-base/src/maybeToPrecision.js","../packages/ms-spectrum/node_modules/ml-regression-base/src/checkArrayLength.js","../packages/ms-spectrum/node_modules/ml-regression-base/src/index.js","../packages/ms-spectrum/node_modules/ml-regression-simple-linear/src/index.js","../packages/ms-spectrum/node_modules/ml-regression-power/lib/index.js","../packages/ms-spectrum/src/peaksWidth.js","../packages/ms-spectrum/src/jsgraph/getPeaksAnnotation.js","../packages/ms-spectrum/src/jsgraph/index.js","../packages/ms-spectrum/src/Spectrum.js","../packages/ms-spectrum/src/index.js","../packages/emdb/node_modules/jszip/dist/jszip.js","../packages/emdb/node_modules/node-fetch/browser.js","../packages/emdb/src/util/fetchArrayBuffer.js","../packages/emdb/src/loadCommercials.js","../packages/chemical-elements/src/constants.js","../packages/mf-parser/src/Kind.js","../packages/mf-parser/src/util/parseCharge.js","../packages/mf-parser/src/parse.js","../packages/mf-parser/src/Format.js","../packages/mf-parser/src/util/formatCharge.js","../packages/mf-parser/src/util/toDisplay.js","../packages/mf-parser/src/Style.js","../packages/mf-parser/src/util/toHtml.js","../packages/chemical-elements/src/elementsAndStableIsotopes.js","../packages/chemical-elements/src/elementsAndStableIsotopesObject.js","../packages/mf-parser/src/ensureCase.js","../packages/chemical-elements/src/elements.js","../packages/chemical-elements/src/elementsAndIsotopes.js","../packages/chemical-elements/src/elementsAndIsotopesObject.js","../packages/chemical-elements/src/elementsObject.js","../packages/chemical-elements/src/index.js","../packages/chemical-groups/src/groupsObject.js","../packages/mf-parser/src/util/getIsotopeRatioInfo.js","../packages/mf-parser/src/util/getIsotopesObject.js","../packages/mf-parser/src/util/getEA.js","../packages/chemical-elements/src/unsaturationsObject.js","../packages/mf-parser/src/util/partToAtoms.js","../packages/mf-parser/src/util/partToMF.js","../packages/mf-parser/src/util/getInfo.js","../packages/mf-parser/src/util/getIsotopesInfo.js","../packages/mf-parser/src/util/partsToDisplay.js","../packages/mf-parser/src/util/partsToMF.js","../packages/atom-sorter/src/index.js","../packages/mf-parser/src/util/toParts.js","../packages/mf-parser/src/MF.js","../packages/mf-parser/src/index.js","../packages/mf-matcher/src/unsaturationMatcher.js","../packages/mf-matcher/src/generalMatcher.js","../packages/mf-utilities/src/getMsem.js","../packages/mf-utilities/src/getMsInfo.js","../packages/mf-matcher/node_modules/ml-spectra-processing/src/x/xAbsolute.js","../packages/mf-matcher/node_modules/is-any-array/src/index.js","../packages/mf-matcher/node_modules/median-quickselect/lib/median-quickselect.min.js","../packages/mf-matcher/node_modules/ml-array-median/lib-es6/index.js","../packages/mf-matcher/node_modules/ml-spectra-processing/src/x/xAbsoluteMedian.js","../packages/mf-matcher/node_modules/ml-spectra-processing/src/x/xAdd.js","../packages/mf-matcher/node_modules/ml-spectra-processing/src/x/xMultiply.js","../packages/mf-matcher/node_modules/ml-spectra-processing/src/x/xDotProduct.js","../packages/mf-matcher/node_modules/ml-spectra-processing/src/x/xCrossCorrelation.js","../packages/mf-matcher/node_modules/ml-spectra-processing/src/x/xAutoCorrelation.js","../packages/mf-matcher/node_modules/ml-spectra-processing/src/x/xBoxPlot.js","../packages/mf-matcher/node_modules/ml-spectra-processing/src/x/xCorrelation.js","../packages/mf-matcher/node_modules/ml-spectra-processing/src/x/xDivide.js","../packages/mf-matcher/node_modules/ml-spectra-processing/src/x/xFindClosestIndex.js","../packages/mf-matcher/node_modules/ml-spectra-processing/src/x/xGetFromToIndex.js","../packages/mf-matcher/node_modules/ml-spectra-processing/src/x/xGetTargetIndex.js","../packages/mf-matcher/node_modules/ml-spectra-processing/src/x/xIsMonotone.js","../packages/mf-matcher/node_modules/d3-array/build/d3-array.js","../packages/mf-matcher/node_modules/spline-interpolator/index.js","../packages/mf-matcher/node_modules/ml-spectra-processing/src/x/erfcinv.js","../packages/mf-matcher/node_modules/ml-spectra-processing/src/x/rayleighCdf.js","../packages/mf-matcher/node_modules/ml-spectra-processing/src/x/xNoiseSanPlot.js","../packages/mf-matcher/node_modules/ml-spectra-processing/src/x/xNorm.js","../packages/mf-matcher/node_modules/ml-spectra-processing/src/x/xCheck.js","../packages/mf-matcher/node_modules/ml-spectra-processing/src/x/xPadding.js","../packages/mf-matcher/node_modules/ml-spectra-processing/src/x/xRotate.js","../packages/mf-matcher/node_modules/ml-spectra-processing/src/x/xRolling.js","../packages/mf-matcher/node_modules/ml-array-sum/lib-es6/index.js","../packages/mf-matcher/node_modules/ml-array-mean/lib-es6/index.js","../packages/mf-matcher/node_modules/ml-spectra-processing/src/x/xRollingAverage.js","../packages/mf-matcher/node_modules/ml-spectra-processing/src/x/xRollingMedian.js","../packages/mf-matcher/node_modules/ml-spectra-processing/src/x/xSubtract.js","../packages/mf-matcher/node_modules/ml-spectra-processing/src/x/xMinIndex.js","../packages/mf-matcher/node_modules/ml-spectra-processing/src/x/xMaxIndex.js","../packages/mf-matcher/node_modules/ml-spectra-processing/src/reim/reimAbsolute.js","../packages/mf-matcher/node_modules/ml-spectra-processing/src/reim/reimPhaseCorrection.js","../packages/mf-matcher/node_modules/ml-spectra-processing/src/reim/reimAutoPhaseCorrection.js","../packages/mf-matcher/node_modules/fft.js/lib/fft.js","../packages/mf-matcher/node_modules/ml-spectra-processing/src/reim/reimFFT.js","../packages/mf-matcher/node_modules/ml-spectra-processing/src/xreim/xreimZeroFilling.js","../packages/mf-matcher/node_modules/ml-spectra-processing/src/xreim/xreimSortX.js","../packages/mf-matcher/node_modules/ml-spectra-processing/src/xy/xyAlign.js","../packages/mf-matcher/node_modules/ml-spectra-processing/src/xy/xyCheck.js","../packages/mf-matcher/node_modules/ml-spectra-processing/src/zones/zonesNormalize.js","../packages/mf-matcher/node_modules/ml-spectra-processing/src/xy/xyExtract.js","../packages/mf-matcher/node_modules/ml-spectra-processing/src/xy/xyGetNMaxY.js","../packages/mf-matcher/node_modules/ml-spectra-processing/src/xy/xyGrowingX.js","../packages/mf-matcher/node_modules/ml-spectra-processing/src/xy/xyIntegral.js","../packages/mf-matcher/node_modules/ml-spectra-processing/src/xy/xyIntegration.js","../packages/mf-matcher/node_modules/ml-spectra-processing/src/xy/xyMaxClosestYPoint.js","../packages/mf-matcher/node_modules/ml-spectra-processing/src/xy/xyMaxY.js","../packages/mf-matcher/node_modules/ml-spectra-processing/src/xy/xyMaxYPoint.js","../packages/mf-matcher/node_modules/ml-spectra-processing/src/xy/xyMaximaY.js","../packages/mf-matcher/node_modules/ml-spectra-processing/src/xy/xyMinClosestYPoint.js","../packages/mf-matcher/node_modules/ml-spectra-processing/src/xy/xyMinYPoint.js","../packages/mf-matcher/node_modules/ml-spectra-processing/src/xy/xyMinimaY.js","../packages/mf-matcher/node_modules/ml-spectra-processing/src/xy/xyPeakInfo.js","../packages/mf-matcher/node_modules/ml-spectra-processing/src/xy/xyRealMaxYPoint.js","../packages/mf-matcher/node_modules/ml-spectra-processing/src/xy/xyRealMinYPoint.js","../packages/mf-matcher/node_modules/ml-spectra-processing/src/xy/xyReduce.js","../packages/mf-matcher/node_modules/ml-spectra-processing/src/xy/xyRolling.js","../packages/mf-matcher/node_modules/ml-spectra-processing/src/xy/xyToXYObject.js","../packages/mf-matcher/node_modules/ml-spectra-processing/src/xy/xyToXYArray.js","../packages/mf-matcher/node_modules/ml-peak-shape-generator/src/util/constants.js","../packages/mf-matcher/node_modules/ml-peak-shape-generator/src/util/erfinv.js","../packages/mf-matcher/node_modules/ml-peak-shape-generator/src/classes/Gaussian.js","../packages/mf-matcher/node_modules/ml-peak-shape-generator/src/classes/Lorentzian.js","../packages/mf-matcher/node_modules/ml-peak-shape-generator/src/classes/PseudoVoigt.js","../packages/mf-matcher/node_modules/ml-peak-shape-generator/src/util/getShapeGenerator.js","../packages/mf-matcher/node_modules/ml-savitzky-golay-generalized/src/index.js","../packages/mf-matcher/node_modules/ml-gsd/src/gsd.js","../packages/mf-matcher/node_modules/ml-array-max/lib-es6/index.js","../packages/mf-matcher/node_modules/ml-array-min/lib-es6/index.js","../packages/mf-matcher/node_modules/ml-array-rescale/lib-es6/index.js","../packages/mf-matcher/node_modules/ml-matrix/src/inspect.js","../packages/mf-matcher/node_modules/ml-matrix/src/mathOperations.js","../packages/mf-matcher/node_modules/ml-matrix/src/util.js","../packages/mf-matcher/node_modules/ml-matrix/src/stat.js","../packages/mf-matcher/node_modules/ml-matrix/src/matrix.js","../packages/mf-matcher/node_modules/ml-spectra-processing/src/xy/xyXShift.js","../packages/mf-matcher/node_modules/ml-spectra-processing/src/xyObject/xyObjectCheck.js","../packages/mf-matcher/node_modules/ml-spectra-processing/src/xyObject/xyObjectMaxXPoint.js","../packages/mf-matcher/node_modules/ml-spectra-processing/src/xyObject/xyObjectMinXPoint.js","../packages/mf-matcher/node_modules/ml-spectra-processing/src/xyObject/xyObjectBestPoints.js","../packages/mf-matcher/node_modules/ml-spectra-processing/src/xyObject/xyObjectJoinX.js","../packages/mf-matcher/node_modules/ml-spectra-processing/src/xyObject/xyObjectMaxYPoint.js","../packages/mf-matcher/node_modules/ml-spectra-processing/src/xyObject/xyObjectMinYPoint.js","../packages/mf-matcher/node_modules/ml-spectra-processing/src/xyObject/xyObjectSlotX.js","../packages/mf-matcher/node_modules/ml-spectra-processing/src/xyObject/xyObjectSortX.js","../packages/mf-matcher/node_modules/ml-spectra-processing/src/xyObject/xyObjectToXY.js","../packages/mf-matcher/node_modules/ml-spectra-processing/src/zone/zoneToX.js","../packages/mf-matcher/node_modules/ml-spectra-processing/src/matrix/probabilisticQuotientNormalization.js","../packages/mf-matcher/node_modules/ml-spectra-processing/src/index.js","../packages/mf-matcher/src/msemMatcher.js","../packages/mf-matcher/src/index.js","../packages/mf-utilities/src/processRange.js","../packages/mf-utilities/src/preprocessIonizations.js","../packages/mf-generator/node_modules/sum-object-keys/lib/index.js","../packages/mf-generator/src/index.js","../packages/mf-from-google-sheet/node_modules/papaparse/papaparse.min.js","../packages/mf-from-google-sheet/src/util/fetchTextBrowser.js","../packages/mf-from-google-sheet/src/index.js","../packages/emdb/src/loadGoogleSheet.js","../packages/emdb/src/loadKnapSack.js","../packages/mf-finder/src/TargetMassCache.js","../packages/mf-finder/src/preprocessRanges.js","../packages/mf-finder/src/index.js","../packages/emdb/src/fromMonoisotopicMass.js","../packages/emdb/src/fromArray.js","../packages/emdb/src/fromRange.js","../packages/chemical-groups/src/groups.js","../packages/chemical-groups/src/groupsToSequence.js","../packages/chemical-groups/src/index.js","../packages/emdb/node_modules/peptide/src/aminoAcids.js","../packages/emdb/node_modules/peptide/src/isoElectricPoint.js","../packages/emdb/node_modules/peptide/src/getAA.js","../packages/emdb/node_modules/peptide/src/chargePeptide.js","../packages/emdb/node_modules/peptide/src/allowNeutralLoss.js","../packages/emdb/node_modules/peptide/src/splitPeptide.js","../packages/emdb/node_modules/peptide/src/digestPeptide.js","../packages/emdb/node_modules/peptide/src/generatePeptideFragments.js","../packages/emdb/node_modules/peptide/src/convertAASequence.js","../packages/emdb/node_modules/peptide/src/index.js","../packages/emdb/src/fromPeptidicSequence.js","../packages/nucleotide/src/ensureUppercaseSequence.js","../packages/nucleotide/src/sequenceToMF.js","../packages/nucleotide/src/furanThreeTerm.js","../packages/nucleotide/src/addFiveTerm.js","../packages/mf-utilities/src/mfDiff.js","../packages/nucleotide/src/baseLoss.js","../packages/nucleotide/src/addFiveTermBaseLoss.js","../packages/nucleotide/src/addInternalTerm.js","../packages/nucleotide/src/addThreeTerm.js","../packages/nucleotide/src/addThreeTermBaseLoss.js","../packages/nucleotide/src/generateFragments.js","../packages/nucleotide/src/index.js","../packages/emdb/src/fromNucleicSequence.js","../packages/emdb/node_modules/is-any-array/src/index.js","../packages/emdb/node_modules/ml-array-max/lib/index.js","../packages/emdb/node_modules/ml-array-min/lib/index.js","../packages/emdb/node_modules/ml-regression-base/node_modules/is-any-array/src/index.js","../packages/emdb/node_modules/ml-regression-base/src/maybeToPrecision.js","../packages/emdb/node_modules/ml-regression-base/src/checkArrayLength.js","../packages/emdb/node_modules/ml-regression-base/src/index.js","../packages/emdb/node_modules/median-quickselect/lib/median-quickselect.min.js","../packages/emdb/node_modules/ml-array-median/lib-es6/index.js","../packages/emdb/node_modules/ml-regression-theil-sen/lib/index.js","../packages/emdb/src/massShifts.js","../packages/emdb/src/search.js","../packages/emdb/src/searchMSEM.js","../packages/emdb/src/util/fetchJSON.js","../packages/emdb/src/searchPubchem.js","../packages/isotopic-distribution/node_modules/ml-peak-shape-generator/src/util/constants.js","../packages/isotopic-distribution/node_modules/ml-peak-shape-generator/src/util/erfinv.js","../packages/isotopic-distribution/node_modules/ml-peak-shape-generator/src/classes/Gaussian.js","../packages/isotopic-distribution/node_modules/ml-peak-shape-generator/src/classes/Lorentzian.js","../packages/isotopic-distribution/node_modules/ml-peak-shape-generator/src/classes/PseudoVoigt.js","../packages/isotopic-distribution/node_modules/ml-peak-shape-generator/src/util/getShapeGenerator.js","../packages/isotopic-distribution/node_modules/spectrum-generator/src/util/addBaseline.js","../packages/isotopic-distribution/node_modules/d3-random/src/defaultSource.js","../packages/isotopic-distribution/node_modules/d3-random/src/uniform.js","../packages/isotopic-distribution/node_modules/d3-random/src/normal.js","../packages/isotopic-distribution/node_modules/ml-xsadd/lib-es6/xsadd.js","../packages/isotopic-distribution/node_modules/spectrum-generator/src/util/addNoise.js","../packages/isotopic-distribution/node_modules/spectrum-generator/src/index.js","../packages/isotopic-distribution/src/utils/sortX.js","../packages/isotopic-distribution/src/utils/sortY.js","../packages/isotopic-distribution/src/utils/join.js","../packages/isotopic-distribution/src/utils/topY.js","../packages/isotopic-distribution/src/utils/maxToOne.js","../packages/isotopic-distribution/src/utils/multiply.js","../packages/isotopic-distribution/src/utils/square.js","../packages/isotopic-distribution/src/utils/power.js","../packages/isotopic-distribution/src/utils/normalize.js","../packages/isotopic-distribution/src/utils/closestPointX.js","../packages/isotopic-distribution/src/Distribution.js","../packages/isotopic-distribution/src/IsotopicDistribution.js","../packages/isotopic-distribution/src/index.js","../packages/emdb/node_modules/ml-stat/array.js","../packages/emdb/node_modules/ml-stat/matrix.js","../packages/emdb/node_modules/ml-stat/index.js","../packages/emdb/node_modules/peaks-similarity/src/index.js","../packages/emdb/src/searchSimilarity.js","../packages/emdb/src/index.js","../node_modules/peptide/src/aminoAcids.js","../node_modules/peptide/src/isoElectricPoint.js","../node_modules/peptide/src/getAA.js","../node_modules/peptide/src/chargePeptide.js","../node_modules/peptide/src/allowNeutralLoss.js","../node_modules/peptide/src/splitPeptide.js","../node_modules/peptide/src/digestPeptide.js","../node_modules/peptide/src/generatePeptideFragments.js","../node_modules/peptide/src/convertAASequence.js","../node_modules/peptide/src/index.js","../packages/ms-report/src/appendInternals.js","../packages/ms-report/node_modules/peptide/src/aminoAcids.js","../packages/ms-report/node_modules/peptide/src/isoElectricPoint.js","../packages/ms-report/node_modules/peptide/src/getAA.js","../packages/ms-report/node_modules/peptide/src/chargePeptide.js","../packages/ms-report/node_modules/peptide/src/allowNeutralLoss.js","../packages/ms-report/node_modules/peptide/src/splitPeptide.js","../packages/ms-report/node_modules/peptide/src/digestPeptide.js","../packages/ms-report/node_modules/peptide/src/generatePeptideFragments.js","../packages/ms-report/node_modules/peptide/src/convertAASequence.js","../packages/ms-report/node_modules/peptide/src/index.js","../packages/ms-report/src/appendResidues.js","../packages/ms-report/node_modules/@svgdotjs/svg.js/dist/svg.esm.js","../packages/ms-report/src/getPaper.browser.js","../packages/ms-report/src/appendResiduesPosition.js","../packages/ms-report/src/appendResults.js","../packages/ms-report/src/appendRows.js","../packages/ms-report/src/appendRowsInformation.js","../packages/ms-report/src/draw/addCSS.js","../packages/ms-report/src/draw/addScript.js","../packages/ms-report/src/draw/drawLabel.js","../packages/ms-report/src/draw/drawInternals.js","../packages/ms-report/src/draw/drawReplacements.js","../packages/ms-report/src/draw/drawTerminals.js","../packages/ms-report/src/draw/drawSequence.js","../packages/ms-report/src/sequenceSVG.js","../packages/ms-report/src/index.js","../packages/mf-from-ea/src/preprocessEARanges.js","../packages/mf-from-ea/src/index.js","../src/index.js"],"sourcesContent":["const toString = Object.prototype.toString;\n\nexport default function isAnyArray(object) {\n  return toString.call(object).endsWith('Array]');\n}\n","'use strict';\n\nfunction _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }\n\nvar isArray = _interopDefault(require('is-any-array'));\n\nfunction max(input, options = {}) {\r\n  if (!isArray(input)) {\r\n    throw new TypeError('input must be an array');\r\n  }\r\n\r\n  if (input.length === 0) {\r\n    throw new TypeError('input must not be empty');\r\n  }\r\n\r\n  const { fromIndex = 0, toIndex = input.length } = options;\r\n\r\n  if (\r\n    fromIndex < 0 ||\r\n    fromIndex >= input.length ||\r\n    !Number.isInteger(fromIndex)\r\n  ) {\r\n    throw new Error('fromIndex must be a positive integer smaller than length');\r\n  }\r\n\r\n  if (\r\n    toIndex <= fromIndex ||\r\n    toIndex > input.length ||\r\n    !Number.isInteger(toIndex)\r\n  ) {\r\n    throw new Error(\r\n      'toIndex must be an integer greater than fromIndex and at most equal to length',\r\n    );\r\n  }\r\n\r\n  let maxValue = input[fromIndex];\r\n  for (let i = fromIndex + 1; i < toIndex; i++) {\r\n    if (input[i] > maxValue) maxValue = input[i];\r\n  }\r\n  return maxValue;\r\n}\n\nmodule.exports = max;\n","import isArray from 'is-any-array';\n\nfunction max(input) {\n  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n  if (!isArray(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 default max;\n","import isArray from 'is-any-array';\n\nfunction sum(input) {\n  if (!isArray(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 sumValue = 0;\n\n  for (var i = 0; i < input.length; i++) {\n    sumValue += input[i];\n  }\n\n  return sumValue;\n}\n\nexport default sum;\n","'use strict';\n\nfunction _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }\n\nvar isArray = _interopDefault(require('is-any-array'));\nvar max = _interopDefault(require('ml-array-max'));\nvar sum = _interopDefault(require('ml-array-sum'));\n\nfunction norm(input, options = {}) {\r\n  const { algorithm = 'absolute', sumValue = 1, maxValue = 1 } = options;\r\n  if (!isArray(input)) {\r\n    throw new Error('input must be an array');\r\n  }\r\n\r\n  let output;\r\n  if (options.output !== undefined) {\r\n    if (!isArray(options.output)) {\r\n      throw new TypeError('output option must be an array if specified');\r\n    }\r\n    output = options.output;\r\n  } else {\r\n    output = new Array(input.length);\r\n  }\r\n\r\n  if (input.length === 0) {\r\n    throw new Error('input must not be empty');\r\n  }\r\n\r\n  switch (algorithm.toLowerCase()) {\r\n    case 'absolute': {\r\n      let absoluteSumValue = absoluteSum(input) / sumValue;\r\n      if (absoluteSumValue === 0) return input.slice(0);\r\n      for (let i = 0; i < input.length; i++) {\r\n        output[i] = input[i] / absoluteSumValue;\r\n      }\r\n      return output;\r\n    }\r\n    case 'max': {\r\n      let currentMaxValue = max(input);\r\n      if (currentMaxValue === 0) return input.slice(0);\r\n      const factor = maxValue / currentMaxValue;\r\n      for (let i = 0; i < input.length; i++) {\r\n        output[i] = input[i] * factor;\r\n      }\r\n      return output;\r\n    }\r\n    case 'sum': {\r\n      let sumFactor = sum(input) / sumValue;\r\n      if (sumFactor === 0) return input.slice(0);\r\n      for (let i = 0; i < input.length; i++) {\r\n        output[i] = input[i] / sumFactor;\r\n      }\r\n      return output;\r\n    }\r\n    default:\r\n      throw new Error(`norm: unknown algorithm: ${algorithm}`);\r\n  }\r\n}\r\n\r\nfunction absoluteSum(input) {\r\n  let sumValue = 0;\r\n  for (let i = 0; i < input.length; i++) {\r\n    sumValue += Math.abs(input[i]);\r\n  }\r\n  return sumValue;\r\n}\n\nmodule.exports = norm;\n","\n/**\n * In place modification of the 2 arrays to make X unique and sum the Y if X has the same value\n * @param {object} [points={}] : Object of points contains property x (an array) and y (an array)\n * @return points\n */\n\nexport default function uniqueX(points = {}) {\n  const { x, y } = points;\n  if (x.length < 2) return;\n  if (x.length !== y.length) {\n    throw new Error('The X and Y arrays mush have the same length');\n  }\n\n  let current = x[0];\n  let counter = 0;\n\n  for (let i = 1; i < x.length; i++) {\n    if (current !== x[i]) {\n      counter++;\n      current = x[i];\n      x[counter] = x[i];\n      if (i !== counter) {\n        y[counter] = 0;\n      }\n    }\n    if (i !== counter) {\n      y[counter] += y[i];\n    }\n  }\n\n  x.length = counter + 1;\n  y.length = counter + 1;\n}\n","import uniqueXFunction from 'ml-arrayxy-uniquex';\n\n/**\n * Parse a text-file and convert it to an array of XY points\n * @param {string} text - csv or tsv strings\n * @param {object} [options={}]\n * @param {boolean} [options.rescale = false] - will set the maximum value to 1\n * @param {boolean} [options.uniqueX = false] - Make the X values unique (works only with 'xxyy' format). If the X value is repeated the sum of Y is done.\n * @param {number} [options.xColumn = 0] - A number that specifies the x column\n * @param {number} [options.yColumn = 1] - A number that specifies the y column\n * @param {number} [options.maxNumberColumns = (Math.max(xColumn, yColumn)+1)] - A number that specifies the maximum number of y columns\n * @param {number} [options.minNumberColumns = (Math.min(xColumn, yColumn)+1)] - A number that specifies the minimum number of y columns\n * @param {boolean} [options.keepInfo = false] - shoud we keep the non numeric lines. In this case the system will return an object {data, info}\n * @return {object{x:<Array<number>>,y:<Array<number>>}\n */\nexport function parseXY(text, options = {}) {\n  let {\n    rescale = false,\n    uniqueX = false,\n    xColumn = 0,\n    yColumn = 1,\n    keepInfo = false,\n    maxNumberColumns = Number.MAX_SAFE_INTEGER,\n    minNumberColumns = 2,\n  } = options;\n\n  maxNumberColumns = Math.max(maxNumberColumns, xColumn + 1, yColumn + 1);\n  minNumberColumns = Math.max(xColumn + 1, yColumn + 1, minNumberColumns);\n\n  let lines = text.split(/[\\r\\n]+/);\n\n  let maxY = Number.MIN_VALUE;\n  let result = { x: [], y: [] };\n  let info = [];\n  for (let l = 0; l < lines.length; l++) {\n    let line = lines[l].trim();\n    // we will consider only lines that contains only numbers\n    if (line.match(/[0-9]+/) && line.match(/^[0-9eE,;. \\t+-]+$/)) {\n      let fields = line.split(/,[; \\t]+|[; \\t]+/);\n      if (fields.length === 1) {\n        fields = line.split(/[,; \\t]+/);\n      }\n      if (\n        fields &&\n        fields.length >= minNumberColumns &&\n        fields.length <= maxNumberColumns\n      ) {\n        let x = parseFloat(fields[xColumn].replace(',', '.'));\n        let y = parseFloat(fields[yColumn].replace(',', '.'));\n\n        if (y > maxY) maxY = y;\n        result.x.push(x);\n        result.y.push(y);\n      }\n    } else if (line) {\n      info.push({ position: result.x.length, value: line });\n    }\n  }\n\n  if (uniqueX) {\n    uniqueXFunction(result);\n  }\n\n  if (rescale) {\n    for (let i = 0; i < result.y.length; i++) {\n      result.y[i] /= maxY;\n    }\n  }\n\n  if (!keepInfo) return result;\n\n  return {\n    info,\n    data: result,\n  };\n}\n","'use strict';\n\n/**\n * Filter the array by taking the higher peaks and only\n * keep one per slot.\n * There are 2 different slots, the smallest one will have the\n * extra annotation `close` to true\n * @param {array} peaks - array of all the peaks\n * @param {object} [options={}]\n * @param {number} [options.from] - min X value of the window to consider\n * @param {number} [options.to] - max X value of the window to consider\n * @param {number} [options.searchMonoisotopicRatio=0] - search previous peaks with at least ratio height\n * @param {number} [options.limit=20] - max number of peaks\n * @param {number} [options.threshold=0.01] - minimal intensity compare to base peak\n * @param {number} [options.numberSlots=10] - define the number of slots and indirectly the slot width\n * @param {number} [options.numberCloseSlots=50]\n * @returns {array} - copy of peaks with 'close' annotation\n */\n\nfunction getBestPeaks(peaks, options = {}) {\n  const {\n    searchMonoisotopicRatio = 0,\n    from = peaks.reduce(\n      (previous, peak) => Math.min(peak.x, previous),\n      Number.MAX_SAFE_INTEGER,\n    ),\n    to = peaks.reduce(\n      (previous, peak) => Math.max(peak.x, previous),\n      Number.MIN_SAFE_INTEGER,\n    ),\n    limit = 20,\n    threshold = 0.01,\n    numberCloseSlots = 50,\n    numberSlots = 10,\n  } = options;\n  let slot = (to - from) / numberSlots;\n  let closeSlot = (to - from) / numberCloseSlots;\n  let selected = peaks\n    .filter((peak) => peak.x >= from && peak.x <= to)\n    .map((peak) => {\n      return {\n        peak,\n        monoisotopic: false,\n      };\n    });\n\n  if (searchMonoisotopicRatio) {\n    selected = selected.sort((a, b) => b.peak.x - a.peak.x);\n\n    for (let i = 0; i < selected.length; i++) {\n      let item = selected[i];\n      for (let j = i + 1; j < selected.length; j++) {\n        let nextItem = selected[j];\n        if (item.peak.x - nextItem.peak.x < 0.09) continue;\n        if (item.peak.x - nextItem.peak.x > 1.1) break;\n        if (nextItem.peak.y > item.peak.y * searchMonoisotopicRatio) {\n          item.monoisotopic = false;\n          nextItem.monoisotopic = true;\n          break;\n        }\n      }\n    }\n  }\n\n  selected = selected.sort((a, b) => {\n    if (a.monoisotopic && !b.monoisotopic) return -1;\n    if (b.monoisotopic && !a.monoisotopic) return 1;\n    return b.peak.y - a.peak.y;\n  });\n\n  let toReturn = [];\n  if (selected.length === 0) return [];\n  let minY = selected[0].peak.y * threshold;\n  peakLoop: for (let item of selected) {\n    if (item.peak.y < minY) {\n      if (item.monoisotopic) {\n        continue;\n      } else {\n        break;\n      }\n    }\n    let close = false;\n    for (let existing of toReturn) {\n      if (Math.abs(existing.x - item.peak.x) < closeSlot) {\n        continue peakLoop;\n      }\n      if (Math.abs(existing.x - item.peak.x) < slot) {\n        close = true;\n      }\n    }\n    let newPeak = JSON.parse(JSON.stringify(item.peak));\n    newPeak.close = close;\n    toReturn.push(newPeak);\n    if (toReturn.length === limit) break;\n  }\n  return toReturn.sort((a, b) => a.x - b.x);\n}\n\nmodule.exports = getBestPeaks;\n","'use strict';\n\nfunction compareNumbers(a, b) {\n    return a - b;\n}\n\n/**\n * Computes the sum of the given values\n * @param {Array} values\n * @returns {number}\n */\nexports.sum = function sum(values) {\n    var sum = 0;\n    for (var i = 0; i < values.length; i++) {\n        sum += values[i];\n    }\n    return sum;\n};\n\n/**\n * Computes the maximum of the given values\n * @param {Array} values\n * @returns {number}\n */\nexports.max = function max(values) {\n    var max = values[0];\n    var l = values.length;\n    for (var i = 1; i < l; i++) {\n        if (values[i] > max) max = values[i];\n    }\n    return max;\n};\n\n/**\n * Computes the minimum of the given values\n * @param {Array} values\n * @returns {number}\n */\nexports.min = function min(values) {\n    var min = values[0];\n    var l = values.length;\n    for (var i = 1; i < l; i++) {\n        if (values[i] < min) min = values[i];\n    }\n    return min;\n};\n\n/**\n * Computes the min and max of the given values\n * @param {Array} values\n * @returns {{min: number, max: number}}\n */\nexports.minMax = function minMax(values) {\n    var min = values[0];\n    var max = values[0];\n    var l = values.length;\n    for (var i = 1; i < l; i++) {\n        if (values[i] < min) min = values[i];\n        if (values[i] > max) max = values[i];\n    }\n    return {\n        min: min,\n        max: max\n    };\n};\n\n/**\n * Computes the arithmetic mean of the given values\n * @param {Array} values\n * @returns {number}\n */\nexports.arithmeticMean = function arithmeticMean(values) {\n    var sum = 0;\n    var l = values.length;\n    for (var i = 0; i < l; i++) {\n        sum += values[i];\n    }\n    return sum / l;\n};\n\n/**\n * {@link arithmeticMean}\n */\nexports.mean = exports.arithmeticMean;\n\n/**\n * Computes the geometric mean of the given values\n * @param {Array} values\n * @returns {number}\n */\nexports.geometricMean = function geometricMean(values) {\n    var mul = 1;\n    var l = values.length;\n    for (var i = 0; i < l; i++) {\n        mul *= values[i];\n    }\n    return Math.pow(mul, 1 / l);\n};\n\n/**\n * Computes the mean of the log of the given values\n * If the return value is exponentiated, it gives the same result as the\n * geometric mean.\n * @param {Array} values\n * @returns {number}\n */\nexports.logMean = function logMean(values) {\n    var lnsum = 0;\n    var l = values.length;\n    for (var i = 0; i < l; i++) {\n        lnsum += Math.log(values[i]);\n    }\n    return lnsum / l;\n};\n\n/**\n * Computes the weighted grand mean for a list of means and sample sizes\n * @param {Array} means - Mean values for each set of samples\n * @param {Array} samples - Number of original values for each set of samples\n * @returns {number}\n */\nexports.grandMean = function grandMean(means, samples) {\n    var sum = 0;\n    var n = 0;\n    var l = means.length;\n    for (var i = 0; i < l; i++) {\n        sum += samples[i] * means[i];\n        n += samples[i];\n    }\n    return sum / n;\n};\n\n/**\n * Computes the truncated mean of the given values using a given percentage\n * @param {Array} values\n * @param {number} percent - The percentage of values to keep (range: [0,1])\n * @param {boolean} [alreadySorted=false]\n * @returns {number}\n */\nexports.truncatedMean = function truncatedMean(values, percent, alreadySorted) {\n    if (alreadySorted === undefined) alreadySorted = false;\n    if (!alreadySorted) {\n        values = [].concat(values).sort(compareNumbers);\n    }\n    var l = values.length;\n    var k = Math.floor(l * percent);\n    var sum = 0;\n    for (var i = k; i < (l - k); i++) {\n        sum += values[i];\n    }\n    return sum / (l - 2 * k);\n};\n\n/**\n * Computes the harmonic mean of the given values\n * @param {Array} values\n * @returns {number}\n */\nexports.harmonicMean = function harmonicMean(values) {\n    var sum = 0;\n    var l = values.length;\n    for (var i = 0; i < l; i++) {\n        if (values[i] === 0) {\n            throw new RangeError('value at index ' + i + 'is zero');\n        }\n        sum += 1 / values[i];\n    }\n    return l / sum;\n};\n\n/**\n * Computes the contraharmonic mean of the given values\n * @param {Array} values\n * @returns {number}\n */\nexports.contraHarmonicMean = function contraHarmonicMean(values) {\n    var r1 = 0;\n    var r2 = 0;\n    var l = values.length;\n    for (var i = 0; i < l; i++) {\n        r1 += values[i] * values[i];\n        r2 += values[i];\n    }\n    if (r2 < 0) {\n        throw new RangeError('sum of values is negative');\n    }\n    return r1 / r2;\n};\n\n/**\n * Computes the median of the given values\n * @param {Array} values\n * @param {boolean} [alreadySorted=false]\n * @returns {number}\n */\nexports.median = function median(values, alreadySorted) {\n    if (alreadySorted === undefined) alreadySorted = false;\n    if (!alreadySorted) {\n        values = [].concat(values).sort(compareNumbers);\n    }\n    var l = values.length;\n    var half = Math.floor(l / 2);\n    if (l % 2 === 0) {\n        return (values[half - 1] + values[half]) * 0.5;\n    } else {\n        return values[half];\n    }\n};\n\n/**\n * Computes the variance of the given values\n * @param {Array} values\n * @param {boolean} [unbiased=true] - if true, divide by (n-1); if false, divide by n.\n * @returns {number}\n */\nexports.variance = function variance(values, unbiased) {\n    if (unbiased === undefined) unbiased = true;\n    var theMean = exports.mean(values);\n    var theVariance = 0;\n    var l = values.length;\n\n    for (var i = 0; i < l; i++) {\n        var x = values[i] - theMean;\n        theVariance += x * x;\n    }\n\n    if (unbiased) {\n        return theVariance / (l - 1);\n    } else {\n        return theVariance / l;\n    }\n};\n\n/**\n * Computes the standard deviation of the given values\n * @param {Array} values\n * @param {boolean} [unbiased=true] - if true, divide by (n-1); if false, divide by n.\n * @returns {number}\n */\nexports.standardDeviation = function standardDeviation(values, unbiased) {\n    return Math.sqrt(exports.variance(values, unbiased));\n};\n\nexports.standardError = function standardError(values) {\n    return exports.standardDeviation(values) / Math.sqrt(values.length);\n};\n\n/**\n * IEEE Transactions on biomedical engineering, vol. 52, no. 1, january 2005, p. 76-\n * Calculate the standard deviation via the Median of the absolute deviation\n *  The formula for the standard deviation only holds for Gaussian random variables.\n * @returns {{mean: number, stdev: number}}\n */\nexports.robustMeanAndStdev = function robustMeanAndStdev(y) {\n    var mean = 0, stdev = 0;\n    var length = y.length, i = 0;\n    for (i = 0; i < length; i++) {\n        mean += y[i];\n    }\n    mean /= length;\n    var averageDeviations = new Array(length);\n    for (i = 0; i < length; i++)\n        averageDeviations[i] = Math.abs(y[i] - mean);\n    averageDeviations.sort(compareNumbers);\n    if (length % 2 === 1) {\n        stdev = averageDeviations[(length - 1) / 2] / 0.6745;\n    } else {\n        stdev = 0.5 * (averageDeviations[length / 2] + averageDeviations[length / 2 - 1]) / 0.6745;\n    }\n\n    return {\n        mean: mean,\n        stdev: stdev\n    };\n};\n\nexports.quartiles = function quartiles(values, alreadySorted) {\n    if (typeof (alreadySorted) === 'undefined') alreadySorted = false;\n    if (!alreadySorted) {\n        values = [].concat(values).sort(compareNumbers);\n    }\n\n    var quart = values.length / 4;\n    var q1 = values[Math.ceil(quart) - 1];\n    var q2 = exports.median(values, true);\n    var q3 = values[Math.ceil(quart * 3) - 1];\n\n    return {q1: q1, q2: q2, q3: q3};\n};\n\nexports.pooledStandardDeviation = function pooledStandardDeviation(samples, unbiased) {\n    return Math.sqrt(exports.pooledVariance(samples, unbiased));\n};\n\nexports.pooledVariance = function pooledVariance(samples, unbiased) {\n    if (typeof (unbiased) === 'undefined') unbiased = true;\n    var sum = 0;\n    var length = 0, l = samples.length;\n    for (var i = 0; i < l; i++) {\n        var values = samples[i];\n        var vari = exports.variance(values);\n\n        sum += (values.length - 1) * vari;\n\n        if (unbiased)\n            length += values.length - 1;\n        else\n            length += values.length;\n    }\n    return sum / length;\n};\n\nexports.mode = function mode(values) {\n    var l = values.length,\n        itemCount = new Array(l),\n        i;\n    for (i = 0; i < l; i++) {\n        itemCount[i] = 0;\n    }\n    var itemArray = new Array(l);\n    var count = 0;\n\n    for (i = 0; i < l; i++) {\n        var index = itemArray.indexOf(values[i]);\n        if (index >= 0)\n            itemCount[index]++;\n        else {\n            itemArray[count] = values[i];\n            itemCount[count] = 1;\n            count++;\n        }\n    }\n\n    var maxValue = 0, maxIndex = 0;\n    for (i = 0; i < count; i++) {\n        if (itemCount[i] > maxValue) {\n            maxValue = itemCount[i];\n            maxIndex = i;\n        }\n    }\n\n    return itemArray[maxIndex];\n};\n\nexports.covariance = function covariance(vector1, vector2, unbiased) {\n    if (typeof (unbiased) === 'undefined') unbiased = true;\n    var mean1 = exports.mean(vector1);\n    var mean2 = exports.mean(vector2);\n\n    if (vector1.length !== vector2.length)\n        throw 'Vectors do not have the same dimensions';\n\n    var cov = 0, l = vector1.length;\n    for (var i = 0; i < l; i++) {\n        var x = vector1[i] - mean1;\n        var y = vector2[i] - mean2;\n        cov += x * y;\n    }\n\n    if (unbiased)\n        return cov / (l - 1);\n    else\n        return cov / l;\n};\n\nexports.skewness = function skewness(values, unbiased) {\n    if (typeof (unbiased) === 'undefined') unbiased = true;\n    var theMean = exports.mean(values);\n\n    var s2 = 0, s3 = 0, l = values.length;\n    for (var i = 0; i < l; i++) {\n        var dev = values[i] - theMean;\n        s2 += dev * dev;\n        s3 += dev * dev * dev;\n    }\n    var m2 = s2 / l;\n    var m3 = s3 / l;\n\n    var g = m3 / (Math.pow(m2, 3 / 2.0));\n    if (unbiased) {\n        var a = Math.sqrt(l * (l - 1));\n        var b = l - 2;\n        return (a / b) * g;\n    } else {\n        return g;\n    }\n};\n\nexports.kurtosis = function kurtosis(values, unbiased) {\n    if (typeof (unbiased) === 'undefined') unbiased = true;\n    var theMean = exports.mean(values);\n    var n = values.length, s2 = 0, s4 = 0;\n\n    for (var i = 0; i < n; i++) {\n        var dev = values[i] - theMean;\n        s2 += dev * dev;\n        s4 += dev * dev * dev * dev;\n    }\n    var m2 = s2 / n;\n    var m4 = s4 / n;\n\n    if (unbiased) {\n        var v = s2 / (n - 1);\n        var a = (n * (n + 1)) / ((n - 1) * (n - 2) * (n - 3));\n        var b = s4 / (v * v);\n        var c = ((n - 1) * (n - 1)) / ((n - 2) * (n - 3));\n\n        return a * b - 3 * c;\n    } else {\n        return m4 / (m2 * m2) - 3;\n    }\n};\n\nexports.entropy = function entropy(values, eps) {\n    if (typeof (eps) === 'undefined') eps = 0;\n    var sum = 0, l = values.length;\n    for (var i = 0; i < l; i++)\n        sum += values[i] * Math.log(values[i] + eps);\n    return -sum;\n};\n\nexports.weightedMean = function weightedMean(values, weights) {\n    var sum = 0, l = values.length;\n    for (var i = 0; i < l; i++)\n        sum += values[i] * weights[i];\n    return sum;\n};\n\nexports.weightedStandardDeviation = function weightedStandardDeviation(values, weights) {\n    return Math.sqrt(exports.weightedVariance(values, weights));\n};\n\nexports.weightedVariance = function weightedVariance(values, weights) {\n    var theMean = exports.weightedMean(values, weights);\n    var vari = 0, l = values.length;\n    var a = 0, b = 0;\n\n    for (var i = 0; i < l; i++) {\n        var z = values[i] - theMean;\n        var w = weights[i];\n\n        vari += w * (z * z);\n        b += w;\n        a += w * w;\n    }\n\n    return vari * (b / (b * b - a));\n};\n\nexports.center = function center(values, inPlace) {\n    if (typeof (inPlace) === 'undefined') inPlace = false;\n\n    var result = values;\n    if (!inPlace)\n        result = [].concat(values);\n\n    var theMean = exports.mean(result), l = result.length;\n    for (var i = 0; i < l; i++)\n        result[i] -= theMean;\n};\n\nexports.standardize = function standardize(values, standardDev, inPlace) {\n    if (typeof (standardDev) === 'undefined') standardDev = exports.standardDeviation(values);\n    if (typeof (inPlace) === 'undefined') inPlace = false;\n    var l = values.length;\n    var result = inPlace ? values : new Array(l);\n    for (var i = 0; i < l; i++)\n        result[i] = values[i] / standardDev;\n    return result;\n};\n\nexports.cumulativeSum = function cumulativeSum(array) {\n    var l = array.length;\n    var result = new Array(l);\n    result[0] = array[0];\n    for (var i = 1; i < l; i++)\n        result[i] = result[i - 1] + array[i];\n    return result;\n};\n","'use strict';\n\nvar arrayStat = require('./array');\n\nfunction compareNumbers(a, b) {\n    return a - b;\n}\n\nexports.max = function max(matrix) {\n    var max = -Infinity;\n    for (var i = 0; i < matrix.length; i++) {\n        for (var j = 0; j < matrix[i].length; j++) {\n            if (matrix[i][j] > max) max = matrix[i][j];\n        }\n    }\n    return max;\n};\n\nexports.min = function min(matrix) {\n    var min = Infinity;\n    for (var i = 0; i < matrix.length; i++) {\n        for (var j = 0; j < matrix[i].length; j++) {\n            if (matrix[i][j] < min) min = matrix[i][j];\n        }\n    }\n    return min;\n};\n\nexports.minMax = function minMax(matrix) {\n    var min = Infinity;\n    var max = -Infinity;\n    for (var i = 0; i < matrix.length; i++) {\n        for (var j = 0; j < matrix[i].length; j++) {\n            if (matrix[i][j] < min) min = matrix[i][j];\n            if (matrix[i][j] > max) max = matrix[i][j];\n        }\n    }\n    return {\n        min:min,\n        max:max\n    };\n};\n\nexports.entropy = function entropy(matrix, eps) {\n    if (typeof (eps) === 'undefined') {\n        eps = 0;\n    }\n    var sum = 0,\n        l1 = matrix.length,\n        l2 = matrix[0].length;\n    for (var i = 0; i < l1; i++) {\n        for (var j = 0; j < l2; j++) {\n            sum += matrix[i][j] * Math.log(matrix[i][j] + eps);\n        }\n    }\n    return -sum;\n};\n\nexports.mean = function mean(matrix, dimension) {\n    if (typeof (dimension) === 'undefined') {\n        dimension = 0;\n    }\n    var rows = matrix.length,\n        cols = matrix[0].length,\n        theMean, N, i, j;\n\n    if (dimension === -1) {\n        theMean = [0];\n        N = rows * cols;\n        for (i = 0; i < rows; i++) {\n            for (j = 0; j < cols; j++) {\n                theMean[0] += matrix[i][j];\n            }\n        }\n        theMean[0] /= N;\n    } else if (dimension === 0) {\n        theMean = new Array(cols);\n        N = rows;\n        for (j = 0; j < cols; j++) {\n            theMean[j] = 0;\n            for (i = 0; i < rows; i++) {\n                theMean[j] += matrix[i][j];\n            }\n            theMean[j] /= N;\n        }\n    } else if (dimension === 1) {\n        theMean = new Array(rows);\n        N = cols;\n        for (j = 0; j < rows; j++) {\n            theMean[j] = 0;\n            for (i = 0; i < cols; i++) {\n                theMean[j] += matrix[j][i];\n            }\n            theMean[j] /= N;\n        }\n    } else {\n        throw new Error('Invalid dimension');\n    }\n    return theMean;\n};\n\nexports.sum = function sum(matrix, dimension) {\n    if (typeof (dimension) === 'undefined') {\n        dimension = 0;\n    }\n    var rows = matrix.length,\n        cols = matrix[0].length,\n        theSum, i, j;\n\n    if (dimension === -1) {\n        theSum = [0];\n        for (i = 0; i < rows; i++) {\n            for (j = 0; j < cols; j++) {\n                theSum[0] += matrix[i][j];\n            }\n        }\n    } else if (dimension === 0) {\n        theSum = new Array(cols);\n        for (j = 0; j < cols; j++) {\n            theSum[j] = 0;\n            for (i = 0; i < rows; i++) {\n                theSum[j] += matrix[i][j];\n            }\n        }\n    } else if (dimension === 1) {\n        theSum = new Array(rows);\n        for (j = 0; j < rows; j++) {\n            theSum[j] = 0;\n            for (i = 0; i < cols; i++) {\n                theSum[j] += matrix[j][i];\n            }\n        }\n    } else {\n        throw new Error('Invalid dimension');\n    }\n    return theSum;\n};\n\nexports.product = function product(matrix, dimension) {\n    if (typeof (dimension) === 'undefined') {\n        dimension = 0;\n    }\n    var rows = matrix.length,\n        cols = matrix[0].length,\n        theProduct, i, j;\n\n    if (dimension === -1) {\n        theProduct = [1];\n        for (i = 0; i < rows; i++) {\n            for (j = 0; j < cols; j++) {\n                theProduct[0] *= matrix[i][j];\n            }\n        }\n    } else if (dimension === 0) {\n        theProduct = new Array(cols);\n        for (j = 0; j < cols; j++) {\n            theProduct[j] = 1;\n            for (i = 0; i < rows; i++) {\n                theProduct[j] *= matrix[i][j];\n            }\n        }\n    } else if (dimension === 1) {\n        theProduct = new Array(rows);\n        for (j = 0; j < rows; j++) {\n            theProduct[j] = 1;\n            for (i = 0; i < cols; i++) {\n                theProduct[j] *= matrix[j][i];\n            }\n        }\n    } else {\n        throw new Error('Invalid dimension');\n    }\n    return theProduct;\n};\n\nexports.standardDeviation = function standardDeviation(matrix, means, unbiased) {\n    var vari = exports.variance(matrix, means, unbiased), l = vari.length;\n    for (var i = 0; i < l; i++) {\n        vari[i] = Math.sqrt(vari[i]);\n    }\n    return vari;\n};\n\nexports.variance = function variance(matrix, means, unbiased) {\n    if (typeof (unbiased) === 'undefined') {\n        unbiased = true;\n    }\n    means = means || exports.mean(matrix);\n    var rows = matrix.length;\n    if (rows === 0) return [];\n    var cols = matrix[0].length;\n    var vari = new Array(cols);\n\n    for (var j = 0; j < cols; j++) {\n        var sum1 = 0, sum2 = 0, x = 0;\n        for (var i = 0; i < rows; i++) {\n            x = matrix[i][j] - means[j];\n            sum1 += x;\n            sum2 += x * x;\n        }\n        if (unbiased) {\n            vari[j] = (sum2 - ((sum1 * sum1) / rows)) / (rows - 1);\n        } else {\n            vari[j] = (sum2 - ((sum1 * sum1) / rows)) / rows;\n        }\n    }\n    return vari;\n};\n\nexports.median = function median(matrix) {\n    var rows = matrix.length, cols = matrix[0].length;\n    var medians = new Array(cols);\n\n    for (var i = 0; i < cols; i++) {\n        var data = new Array(rows);\n        for (var j = 0; j < rows; j++) {\n            data[j] = matrix[j][i];\n        }\n        data.sort(compareNumbers);\n        var N = data.length;\n        if (N % 2 === 0) {\n            medians[i] = (data[N / 2] + data[(N / 2) - 1]) * 0.5;\n        } else {\n            medians[i] = data[Math.floor(N / 2)];\n        }\n    }\n    return medians;\n};\n\nexports.mode = function mode(matrix) {\n    var rows = matrix.length,\n        cols = matrix[0].length,\n        modes = new Array(cols),\n        i, j;\n    for (i = 0; i < cols; i++) {\n        var itemCount = new Array(rows);\n        for (var k = 0; k < rows; k++) {\n            itemCount[k] = 0;\n        }\n        var itemArray = new Array(rows);\n        var count = 0;\n\n        for (j = 0; j < rows; j++) {\n            var index = itemArray.indexOf(matrix[j][i]);\n            if (index >= 0) {\n                itemCount[index]++;\n            } else {\n                itemArray[count] = matrix[j][i];\n                itemCount[count] = 1;\n                count++;\n            }\n        }\n\n        var maxValue = 0, maxIndex = 0;\n        for (j = 0; j < count; j++) {\n            if (itemCount[j] > maxValue) {\n                maxValue = itemCount[j];\n                maxIndex = j;\n            }\n        }\n\n        modes[i] = itemArray[maxIndex];\n    }\n    return modes;\n};\n\nexports.skewness = function skewness(matrix, unbiased) {\n    if (typeof (unbiased) === 'undefined') unbiased = true;\n    var means = exports.mean(matrix);\n    var n = matrix.length, l = means.length;\n    var skew = new Array(l);\n\n    for (var j = 0; j < l; j++) {\n        var s2 = 0, s3 = 0;\n        for (var i = 0; i < n; i++) {\n            var dev = matrix[i][j] - means[j];\n            s2 += dev * dev;\n            s3 += dev * dev * dev;\n        }\n\n        var m2 = s2 / n;\n        var m3 = s3 / n;\n        var g = m3 / Math.pow(m2, 3 / 2);\n\n        if (unbiased) {\n            var a = Math.sqrt(n * (n - 1));\n            var b = n - 2;\n            skew[j] = (a / b) * g;\n        } else {\n            skew[j] = g;\n        }\n    }\n    return skew;\n};\n\nexports.kurtosis = function kurtosis(matrix, unbiased) {\n    if (typeof (unbiased) === 'undefined') unbiased = true;\n    var means = exports.mean(matrix);\n    var n = matrix.length, m = matrix[0].length;\n    var kurt = new Array(m);\n\n    for (var j = 0; j < m; j++) {\n        var s2 = 0, s4 = 0;\n        for (var i = 0; i < n; i++) {\n            var dev = matrix[i][j] - means[j];\n            s2 += dev * dev;\n            s4 += dev * dev * dev * dev;\n        }\n        var m2 = s2 / n;\n        var m4 = s4 / n;\n\n        if (unbiased) {\n            var v = s2 / (n - 1);\n            var a = (n * (n + 1)) / ((n - 1) * (n - 2) * (n - 3));\n            var b = s4 / (v * v);\n            var c = ((n - 1) * (n - 1)) / ((n - 2) * (n - 3));\n            kurt[j] = a * b - 3 * c;\n        } else {\n            kurt[j] = m4 / (m2 * m2) - 3;\n        }\n    }\n    return kurt;\n};\n\nexports.standardError = function standardError(matrix) {\n    var samples = matrix.length;\n    var standardDeviations = exports.standardDeviation(matrix);\n    var l = standardDeviations.length;\n    var standardErrors = new Array(l);\n    var sqrtN = Math.sqrt(samples);\n\n    for (var i = 0; i < l; i++) {\n        standardErrors[i] = standardDeviations[i] / sqrtN;\n    }\n    return standardErrors;\n};\n\nexports.covariance = function covariance(matrix, dimension) {\n    return exports.scatter(matrix, undefined, dimension);\n};\n\nexports.scatter = function scatter(matrix, divisor, dimension) {\n    if (typeof (dimension) === 'undefined') {\n        dimension = 0;\n    }\n    if (typeof (divisor) === 'undefined') {\n        if (dimension === 0) {\n            divisor = matrix.length - 1;\n        } else if (dimension === 1) {\n            divisor = matrix[0].length - 1;\n        }\n    }\n    var means = exports.mean(matrix, dimension);\n    var rows = matrix.length;\n    if (rows === 0) {\n        return [[]];\n    }\n    var cols = matrix[0].length,\n        cov, i, j, s, k;\n\n    if (dimension === 0) {\n        cov = new Array(cols);\n        for (i = 0; i < cols; i++) {\n            cov[i] = new Array(cols);\n        }\n        for (i = 0; i < cols; i++) {\n            for (j = i; j < cols; j++) {\n                s = 0;\n                for (k = 0; k < rows; k++) {\n                    s += (matrix[k][j] - means[j]) * (matrix[k][i] - means[i]);\n                }\n                s /= divisor;\n                cov[i][j] = s;\n                cov[j][i] = s;\n            }\n        }\n    } else if (dimension === 1) {\n        cov = new Array(rows);\n        for (i = 0; i < rows; i++) {\n            cov[i] = new Array(rows);\n        }\n        for (i = 0; i < rows; i++) {\n            for (j = i; j < rows; j++) {\n                s = 0;\n                for (k = 0; k < cols; k++) {\n                    s += (matrix[j][k] - means[j]) * (matrix[i][k] - means[i]);\n                }\n                s /= divisor;\n                cov[i][j] = s;\n                cov[j][i] = s;\n            }\n        }\n    } else {\n        throw new Error('Invalid dimension');\n    }\n\n    return cov;\n};\n\nexports.correlation = function correlation(matrix) {\n    var means = exports.mean(matrix),\n        standardDeviations = exports.standardDeviation(matrix, true, means),\n        scores = exports.zScores(matrix, means, standardDeviations),\n        rows = matrix.length,\n        cols = matrix[0].length,\n        i, j;\n\n    var cor = new Array(cols);\n    for (i = 0; i < cols; i++) {\n        cor[i] = new Array(cols);\n    }\n    for (i = 0; i < cols; i++) {\n        for (j = i; j < cols; j++) {\n            var c = 0;\n            for (var k = 0, l = scores.length; k < l; k++) {\n                c += scores[k][j] * scores[k][i];\n            }\n            c /= rows - 1;\n            cor[i][j] = c;\n            cor[j][i] = c;\n        }\n    }\n    return cor;\n};\n\nexports.zScores = function zScores(matrix, means, standardDeviations) {\n    means = means || exports.mean(matrix);\n    if (typeof (standardDeviations) === 'undefined') standardDeviations = exports.standardDeviation(matrix, true, means);\n    return exports.standardize(exports.center(matrix, means, false), standardDeviations, true);\n};\n\nexports.center = function center(matrix, means, inPlace) {\n    means = means || exports.mean(matrix);\n    var result = matrix,\n        l = matrix.length,\n        i, j, jj;\n\n    if (!inPlace) {\n        result = new Array(l);\n        for (i = 0; i < l; i++) {\n            result[i] = new Array(matrix[i].length);\n        }\n    }\n\n    for (i = 0; i < l; i++) {\n        var row = result[i];\n        for (j = 0, jj = row.length; j < jj; j++) {\n            row[j] = matrix[i][j] - means[j];\n        }\n    }\n    return result;\n};\n\nexports.standardize = function standardize(matrix, standardDeviations, inPlace) {\n    if (typeof (standardDeviations) === 'undefined') standardDeviations = exports.standardDeviation(matrix);\n    var result = matrix,\n        l = matrix.length,\n        i, j, jj;\n\n    if (!inPlace) {\n        result = new Array(l);\n        for (i = 0; i < l; i++) {\n            result[i] = new Array(matrix[i].length);\n        }\n    }\n\n    for (i = 0; i < l; i++) {\n        var resultRow = result[i];\n        var sourceRow = matrix[i];\n        for (j = 0, jj = resultRow.length; j < jj; j++) {\n            if (standardDeviations[j] !== 0 && !isNaN(standardDeviations[j])) {\n                resultRow[j] = sourceRow[j] / standardDeviations[j];\n            }\n        }\n    }\n    return result;\n};\n\nexports.weightedVariance = function weightedVariance(matrix, weights) {\n    var means = exports.mean(matrix);\n    var rows = matrix.length;\n    if (rows === 0) return [];\n    var cols = matrix[0].length;\n    var vari = new Array(cols);\n\n    for (var j = 0; j < cols; j++) {\n        var sum = 0;\n        var a = 0, b = 0;\n\n        for (var i = 0; i < rows; i++) {\n            var z = matrix[i][j] - means[j];\n            var w = weights[i];\n\n            sum += w * (z * z);\n            b += w;\n            a += w * w;\n        }\n\n        vari[j] = sum * (b / (b * b - a));\n    }\n\n    return vari;\n};\n\nexports.weightedMean = function weightedMean(matrix, weights, dimension) {\n    if (typeof (dimension) === 'undefined') {\n        dimension = 0;\n    }\n    var rows = matrix.length;\n    if (rows === 0) return [];\n    var cols = matrix[0].length,\n        means, i, ii, j, w, row;\n\n    if (dimension === 0) {\n        means = new Array(cols);\n        for (i = 0; i < cols; i++) {\n            means[i] = 0;\n        }\n        for (i = 0; i < rows; i++) {\n            row = matrix[i];\n            w = weights[i];\n            for (j = 0; j < cols; j++) {\n                means[j] += row[j] * w;\n            }\n        }\n    } else if (dimension === 1) {\n        means = new Array(rows);\n        for (i = 0; i < rows; i++) {\n            means[i] = 0;\n        }\n        for (j = 0; j < rows; j++) {\n            row = matrix[j];\n            w = weights[j];\n            for (i = 0; i < cols; i++) {\n                means[j] += row[i] * w;\n            }\n        }\n    } else {\n        throw new Error('Invalid dimension');\n    }\n\n    var weightSum = arrayStat.sum(weights);\n    if (weightSum !== 0) {\n        for (i = 0, ii = means.length; i < ii; i++) {\n            means[i] /= weightSum;\n        }\n    }\n    return means;\n};\n\nexports.weightedCovariance = function weightedCovariance(matrix, weights, means, dimension) {\n    dimension = dimension || 0;\n    means = means || exports.weightedMean(matrix, weights, dimension);\n    var s1 = 0, s2 = 0;\n    for (var i = 0, ii = weights.length; i < ii; i++) {\n        s1 += weights[i];\n        s2 += weights[i] * weights[i];\n    }\n    var factor = s1 / (s1 * s1 - s2);\n    return exports.weightedScatter(matrix, weights, means, factor, dimension);\n};\n\nexports.weightedScatter = function weightedScatter(matrix, weights, means, factor, dimension) {\n    dimension = dimension || 0;\n    means = means || exports.weightedMean(matrix, weights, dimension);\n    if (typeof (factor) === 'undefined') {\n        factor = 1;\n    }\n    var rows = matrix.length;\n    if (rows === 0) {\n        return [[]];\n    }\n    var cols = matrix[0].length,\n        cov, i, j, k, s;\n\n    if (dimension === 0) {\n        cov = new Array(cols);\n        for (i = 0; i < cols; i++) {\n            cov[i] = new Array(cols);\n        }\n        for (i = 0; i < cols; i++) {\n            for (j = i; j < cols; j++) {\n                s = 0;\n                for (k = 0; k < rows; k++) {\n                    s += weights[k] * (matrix[k][j] - means[j]) * (matrix[k][i] - means[i]);\n                }\n                cov[i][j] = s * factor;\n                cov[j][i] = s * factor;\n            }\n        }\n    } else if (dimension === 1) {\n        cov = new Array(rows);\n        for (i = 0; i < rows; i++) {\n            cov[i] = new Array(rows);\n        }\n        for (i = 0; i < rows; i++) {\n            for (j = i; j < rows; j++) {\n                s = 0;\n                for (k = 0; k < cols; k++) {\n                    s += weights[k] * (matrix[j][k] - means[j]) * (matrix[i][k] - means[i]);\n                }\n                cov[i][j] = s * factor;\n                cov[j][i] = s * factor;\n            }\n        }\n    } else {\n        throw new Error('Invalid dimension');\n    }\n\n    return cov;\n};\n","'use strict';\n\nexports.array = require('./array');\nexports.matrix = require('./matrix');\n","'use strict';\n\nvar COMMON_NO = 0;\nvar COMMON_FIRST = 1;\nvar COMMON_SECOND = 2;\nvar COMMON_BOTH = 3; // should be a binary operation !\n\nvar Stat = require('ml-stat').array;\n\n/**\n * Create a comparator class\n * {object} [options={}]\n * {string} [options.common=''] should we take only common peaks 'first', 'second', 'both', ''\n * {number} [options.widthBottom=2] bottom trapezoid width for similarity evaluation\n * {number} [options.widthTop=1] top trapezoid width for similarity evaluation\n * {number} [options.from] from region used for similarity calculation\n * {number} [options.to] to region used for similarity calculation\n */\n\nmodule.exports = function Comparator(options = {}) {\n  var widthTop, widthBottom, from, to;\n  var array1Extract, array2Extract, widthSlope, array1ExtractInfo, array2ExtractInfo;\n  var common, commonFactor;\n\n  setOptions(options);\n\n  var array1 = [];\n  var array2 = [];\n\n  /*\n     2 formats are allowed:\n     [[x1,x2,...],[y1,y2,...]] or [[x1,y1],[x2,y2], ...]\n    */\n\n  function setOptions(newOptions) {\n    options = newOptions || {};\n    if (typeof options.common === 'string') {\n      if (options.common.toLowerCase() === 'first') {\n        common = COMMON_FIRST;\n      } else if (options.common.toLowerCase() === 'second') {\n        common = COMMON_SECOND;\n      } else if (options.common.toLowerCase() === 'both') {\n        common = COMMON_BOTH;\n      } else {\n        common = COMMON_NO;\n      }\n    } else {\n      if (options.common === true) {\n        common = COMMON_BOTH;\n      } else {\n        common = COMMON_NO;\n      }\n    }\n    commonFactor = options.commonFactor || commonFactor || 4;\n\n    if (options.widthBottom === undefined) {\n      options.widthBottom = widthBottom || 2;\n    }\n    if (options.widthTop === undefined) {\n      options.widthTop = widthTop || 1;\n    }\n    setTrapezoid(options.widthBottom, options.widthTop);\n    setFromTo(options.from || from, options.to || to);\n  }\n\n  function setPeaks1(anArray) {\n    array1 = checkArray(anArray);\n\n    if (common) {\n      var extracts = commonExtractAndNormalize(array1, array2, widthBottom, from, to, common);\n      array1Extract = extracts.data1;\n      array1ExtractInfo = extracts.info1;\n      array2Extract = extracts.data2;\n      array2ExtractInfo = extracts.info2;\n    } else {\n      var extract = extractAndNormalize(array1, from, to);\n      array1Extract = extract.data;\n      array1ExtractInfo = extract.info;\n    }\n  }\n  function setPeaks2(anArray) {\n    array2 = checkArray(anArray);\n    if (common) {\n      var extracts = commonExtractAndNormalize(array1, array2, widthBottom, from, to, common);\n      array1Extract = extracts.data1;\n      array1ExtractInfo = extracts.info1;\n      array2Extract = extracts.data2;\n      array2ExtractInfo = extracts.info2;\n    } else {\n      var extract = extractAndNormalize(array2, from, to);\n      array2Extract = extract.data;\n      array2ExtractInfo = extract.info;\n    }\n  }\n\n  function getExtract1() {\n    return array1Extract;\n  }\n\n  function getExtract2() {\n    return array2Extract;\n  }\n\n\n  function getExtractInfo1() {\n    return array1ExtractInfo;\n  }\n\n  function getExtractInfo2() {\n    return array2ExtractInfo;\n  }\n\n  function setTrapezoid(newWidthBottom, newWidthTop) {\n    widthTop = newWidthTop;\n    widthBottom = newWidthBottom;\n    widthSlope = (widthBottom - widthTop) / 2;\n    if (widthBottom < widthTop) throw new Error('widthBottom has to be larger than widthTop');\n  }\n\n  function setFromTo(newFrom, newTo) {\n    if (newFrom === from && newTo === to) return;\n    from = newFrom;\n    to = newTo;\n    if (common) {\n      var extracts = commonExtractAndNormalize(array1, array2, widthBottom, from, to, common, commonFactor);\n      array1Extract = extracts.data1;\n      array1ExtractInfo = extracts.info1;\n      array2Extract = extracts.data2;\n      array2ExtractInfo = extracts.info2;\n    } else {\n      var extract = extractAndNormalize(array1, from, to);\n      array1Extract = extract.data;\n      array1ExtractInfo = extract.info;\n      extract = extractAndNormalize(array2, from, to);\n      array2Extract = extract.data;\n      array2ExtractInfo = extract.info;\n    }\n  }\n\n\n  function getOverlap(x1, y1, x2, y2) {\n    if (y1 === 0 || y2 === 0) return 0;\n\n    // TAKE CARE !!! We multiply the diff by 2 !!!\n    var diff = Math.abs(x1 - x2) * 2;\n\n    if (diff > widthBottom) return 0;\n    if (diff <= widthTop) {\n      return Math.min(y1, y2);\n    }\n\n    var maxValue = Math.max(y1, y2) * (widthBottom - diff) / (widthBottom - widthTop);\n    return Math.min(y1, y2, maxValue);\n  }\n\n  // This is the old trapezoid similarity\n  function getOverlapTrapezoid(x1, y1, x2, y2) {\n    var factor = 2 / (widthTop + widthBottom); // correction for surface=1\n    if (y1 === 0 || y2 === 0) return 0;\n    if (x1 === x2) { // they have the same position\n      return Math.min(y1, y2);\n    }\n\n    var diff = Math.abs(x1 - x2);\n    if (diff >= widthBottom) return 0;\n    if (y1 === y2) { // do they have the same height ???\n      // we need to find the common length\n      if (diff <= widthTop) {\n        return (((widthTop + widthBottom) / 2 - diff) * y1) * factor;\n      } else if (diff <= widthBottom) {\n        return (widthBottom - diff) * y1 / 2 * (diff - widthTop) / (widthBottom - widthTop) * factor;\n      }\n      return 0;\n    } else { // the height are different and not the same position ...\n      // we need to consider only one segment to find its intersection\n\n      var small = Math.min(y1, y2);\n      var big = Math.max(y1, y2);\n\n      var targets = [\n        [[0, 0], [widthSlope, small]],\n        [[widthSlope, small], [widthSlope + widthTop, small]],\n        [[widthTop + widthSlope, small], [widthBottom, 0]]\n      ];\n      var segment;\n      if ((x1 > x2 && y1 > y2) || (x1 < x2 && y1 < y2)) {\n        segment = [[diff, 0], [diff + widthSlope, big]];\n      } else {\n        segment = [[diff + widthSlope, big], [diff, 0]];\n      }\n\n\n      for (var i = 0; i < 3; i++) {\n        var intersection = getIntersection(targets[i], segment);\n        if (intersection) {\n          switch (i) {\n            case 0:\n              return small - ((diff * intersection.y / 2)) * factor;\n            case 1: // to simplify ...\n              //     console.log(\"           \",widthSlope,small,big,intersection.x)\n              return ((widthSlope * small / (2 * big)) * small +\n                                (widthTop + widthSlope - intersection.x) * small +\n                                widthSlope * small / 2) * factor;\n            case 2:\n              return ((widthBottom - diff) * intersection.y / 2) * factor;\n            default:\n              throw new Error(`unexpected intersection value: ${i}`);\n          }\n        }\n      }\n    }\n    return NaN;\n  }\n\n\n  // this method calculates the total diff. The sum of positive value will yield to overlap\n  function calculateDiff() {\n    // we need to take 2 pointers\n    // and travel progressively between them ...\n    var newFirst = [\n      [].concat(array1Extract[0]),\n      [].concat(array1Extract[1])\n    ];\n    var newSecond = [\n      [].concat(array2Extract[0]),\n      [].concat(array2Extract[1])\n    ];\n    var array1Length = array1Extract[0] ? array1Extract[0].length : 0;\n    var array2Length = array2Extract[0] ? array2Extract[0].length : 0;\n\n    var pos1 = 0;\n    var pos2 = 0;\n    var previous2 = 0;\n    while (pos1 < array1Length) {\n      var diff = newFirst[0][pos1] - array2Extract[0][pos2];\n      if (Math.abs(diff) < widthBottom) { // there is some overlap\n        var overlap;\n        if (options.trapezoid) {\n          overlap = getOverlapTrapezoid(newFirst[0][pos1], newFirst[1][pos1], newSecond[0][pos2], newSecond[1][pos2], widthTop, widthBottom);\n        } else {\n          overlap = getOverlap(newFirst[0][pos1], newFirst[1][pos1], newSecond[0][pos2], newSecond[1][pos2], widthTop, widthBottom);\n        }\n        newFirst[1][pos1] -= overlap;\n        newSecond[1][pos2] -= overlap;\n        if (pos2 < (array2Length - 1)) {\n          pos2++;\n        } else {\n          pos1++;\n          pos2 = previous2;\n        }\n      } else {\n        if (diff > 0 && pos2 < (array2Length - 1)) {\n          pos2++;\n          previous2 = pos2;\n        } else {\n          pos1++;\n          pos2 = previous2;\n        }\n      }\n    }\n    return newSecond;\n  }\n\n\n  /*\n        This code requires the use of an array like  [[x1,y1],[x2,y2], ...]\n        If it is not the right format, we will just convert it\n        Otherwise we return the correct format\n     */\n  function checkArray(points) {\n    // if it is already a 2D array of points, we just return them\n    if (Array.isArray(points) && Array.isArray(points[0]) && points.length === 2) return points;\n    var x = new Array(points.length);\n    var y = new Array(points.length);\n    for (var i = 0; i < points.length; i++) {\n      x[i] = points[i][0];\n      y[i] = points[i][1];\n    }\n    return [x, y];\n  }\n\n  function getSimilarity(newPeaks1, newPeaks2) {\n    if (newPeaks1) setPeaks1(newPeaks1);\n    if (newPeaks2) setPeaks2(newPeaks2);\n    var result = {};\n    result.diff = calculateDiff();\n    result.extract1 = getExtract1();\n    result.extract2 = getExtract2();\n    result.extractInfo1 = getExtractInfo1();\n    result.extractInfo2 = getExtractInfo2();\n    result.similarity = calculateOverlapFromDiff(result.diff);\n    result.widthBottom = widthBottom;\n    result.widthTop = widthTop;\n    return result;\n  }\n\n  /*\n    This works mainly when you have a array1 that is fixed\n    newPeaks2 have to be normalized ! (sum to 1)\n  */\n  function fastSimilarity(newPeaks2, from, to) {\n    array1Extract = extract(array1, from, to);\n    array2Extract = newPeaks2;\n    if (common & COMMON_SECOND) array1Extract = getCommonArray(array1Extract, array2Extract, widthBottom);\n    normalize(array1Extract);\n    var diff = calculateDiff();\n    return calculateOverlapFromDiff(diff);\n  }\n\n\n  this.setPeaks1 = setPeaks1;\n  this.setPeaks2 = setPeaks2;\n  this.getExtract1 = getExtract1;\n  this.getExtract2 = getExtract2;\n  this.getExtractInfo1 = getExtractInfo1;\n  this.getExtractInfo2 = getExtractInfo2;\n  this.setFromTo = setFromTo;\n  this.setOptions = setOptions;\n  this.setTrapezoid = setTrapezoid;\n  this.getSimilarity = getSimilarity;\n  this.getCommonArray = getCommonArray;\n\n  this.fastSimilarity = fastSimilarity;\n};\n\n\n// returns an new array based on array1 where there is a peak of array2 at a distance under width/2\nfunction getCommonArray(array1, array2, width) {\n  var newArray = [[], []];\n  var pos2 = 0;\n  width /= 2;\n  var j = 0;\n  var array1Length = array1[0] ? array1[0].length : 0;\n  var array2Length = array2[0] ? array2[0].length : 0;\n\n  for (var i = 0; i < array1Length; i++) {\n    while (pos2 < array2Length && (array1[0][i] > (array2[0][pos2] + width))) {\n      pos2++;\n    }\n    if ((pos2 < array2Length) && (array1[0][i] > array2[0][pos2] - width)) {\n      newArray[0][j] = array1[0][i];\n      newArray[1][j] = array1[1][i];\n      j++;\n    }\n  }\n  return newArray;\n}\n\n\n// Adapted from: http://stackoverflow.com/questions/563198/how-do-you-detect-where-two-line-segments-intersect/1968345#1968345\nfunction getIntersection(segment1, segment2) {\n  var p0X = segment1[0][0];\n  var p0Y = segment1[0][1];\n  var p1X = segment1[1][0];\n  var p1Y = segment1[1][1];\n  var p2X = segment2[0][0];\n  var p2Y = segment2[0][1];\n  var p3X = segment2[1][0];\n  var p3Y = segment2[1][1];\n\n  var s1X, s1Y, s2X, s2Y;\n  s1X = p1X - p0X;\n  s1Y = p1Y - p0Y;\n  s2X = p3X - p2X;\n  s2Y = p3Y - p2Y;\n  var s, t;\n  s = (-s1Y * (p0X - p2X) + s1X * (p0Y - p2Y)) / (-s2X * s1Y + s1X * s2Y);\n  t = (s2X * (p0Y - p2Y) - s2Y * (p0X - p2X)) / (-s2X * s1Y + s1X * s2Y);\n  if (s >= 0 && s <= 1 && t >= 0 && t <= 1) {\n    return {\n      x: p0X + (t * s1X),\n      y: p0Y + (t * s1Y)\n    };\n  }\n  return null; // No collision\n}\n\nfunction normalize(array) {\n  var min = Stat.min(array[1]);\n  var max = Stat.max(array[1]);\n  var sum = Stat.sum(array[1]);\n  var length = array[1] ? array[1].length : 0;\n  if (sum !== 0) {\n    for (var i = 0; i < length; i++) {\n      array[1][i] /= sum;\n    }\n  }\n  return {\n    sum: sum,\n    min: min,\n    max: max\n  };\n}\n\n// this method will systematically take care of both array\nfunction commonExtractAndNormalize(array1, array2, width, from, to, common) {\n  if (!(Array.isArray(array1)) || !(Array.isArray(array2))) {\n    return {\n      info: undefined,\n      data: undefined\n    };\n  }\n  var extract1 = extract(array1, from, to);\n  var extract2 = extract(array2, from, to);\n  var common1, common2, info1, info2;\n  if (common & COMMON_SECOND) {\n    common1 = getCommonArray(extract1, extract2, width);\n    info1 = normalize(common1);\n  } else {\n    common1 = extract1;\n    info1 = normalize(common1);\n  }\n  if (common & COMMON_FIRST) {\n    common2 = getCommonArray(extract2, extract1, width);\n    info2 = normalize(common2);\n  } else {\n    common2 = extract2;\n    info2 = normalize(common2);\n  }\n\n  return {\n    info1: info1,\n    info2: info2,\n    data1: common1,\n    data2: common2\n  };\n}\n\nfunction extract(array, from, to) {\n  var newArray = [[], []];\n  var j = 0;\n  var length = array[0] ? array[0].length : 0;\n  for (var i = 0; i < length; i++) {\n    if ((!from || array[0][i] >= from) && (!to || array[0][i] <= to)) {\n      newArray[0][j] = array[0][i];\n      newArray[1][j] = array[1][i];\n      j++;\n    }\n  }\n  return newArray;\n}\n\nfunction extractAndNormalize(array, from, to) {\n  if (!(Array.isArray(array))) {\n    return {\n      info: undefined,\n      data: undefined\n    };\n  }\n  var newArray = extract(array, from, to);\n  var info = normalize(newArray);\n  return {\n    info: info,\n    data: newArray\n  };\n}\n\nfunction calculateOverlapFromDiff(diffs) {\n  if (diffs[1].length === 0) return 0;\n  var sumPos = 0;\n  for (var i = 0; i < diffs[1].length; i++) {\n    sumPos += Math.abs(diffs[1][i]);\n  }\n  return 1 - sumPos;\n}\n","'use strict';\n\nconst Similarity = require('peaks-similarity');\n\n/**\n * @param {object}   [options={}]\n * @param {object}   [options.minCharge=1]\n * @param {object}   [options.maxCharge=10]\n * @param {object}   [options.similarity={}]\n * @param {object}   [options.similarity.widthBottom]\n * @param {object}   [options.similarity.widthTop]\n * @param {object}   [options.similarity.widthFunction] - function called with mass that should return an object width containing top and bottom\n * @param {object}   [options.similarity.zone={}]\n * @param {object}   [options.similarity.zone.low=-0.5] - window shift based on observed monoisotopic mass\n * @param {object}   [options.similarity.zone.high=2.5] - to value for the comparison window\n * @param {object}   [options.similarity.common]\n */\n\nconst NEUTRON_MASS = 1;\n\nfunction getPeakChargeBySimilarity(spectrum, targetMass, options = {}) {\n  let { similarity = {}, minCharge = 1, maxCharge = 10 } = options;\n  let { zone = {}, widthFunction } = similarity;\n  let { low = -0.5, high = 2.5 } = zone;\n\n  if (!spectrum || !spectrum.data.x.length > 0) {\n    throw Error(\n      'You need to add an experimental spectrum first using setMassSpectrum',\n    );\n  }\n\n  let width = {\n    bottom: similarity.widthBottom,\n    top: similarity.widthTop,\n  };\n\n  similarity = JSON.parse(JSON.stringify(similarity));\n  similarity.common = 'second';\n\n  let experimentalData = spectrum.data;\n  let similarityProcessor = new Similarity(similarity);\n  similarityProcessor.setPeaks1([experimentalData.x, experimentalData.y]);\n\n  if (widthFunction && typeof widthFunction === 'string') {\n    // eslint-disable-next-line no-new-func\n    widthFunction = new Function('mass', widthFunction);\n    let checkTopBottom = widthFunction(123);\n    if (!checkTopBottom.bottom || !checkTopBottom.top) {\n      throw Error(\n        'widthFunction should return an object with bottom and top properties',\n      );\n    }\n  }\n\n  let fromCharge =\n    minCharge * maxCharge > 0\n      ? Math.round(Math.min(Math.abs(minCharge), Math.abs(maxCharge)))\n      : 1;\n  let toCharge = Math.round(Math.max(Math.abs(minCharge), Math.abs(maxCharge)));\n\n  let fromIsotope = Math.ceil(low);\n  let toIsotope = Math.floor(high);\n  let isotopeHeight = 1 / (toIsotope - fromIsotope + 1);\n\n  let results = [];\n\n  for (let charge = fromCharge; charge < toCharge + 1; charge++) {\n    let isotopePositions = { x: [], y: [] };\n    for (\n      let isotopePosition = fromIsotope;\n      isotopePosition < toIsotope + 1;\n      isotopePosition++\n    ) {\n      isotopePositions.x.push(\n        targetMass + (isotopePosition * NEUTRON_MASS) / charge,\n      );\n      isotopePositions.y.push(isotopeHeight);\n    }\n    let from = targetMass + low / Math.abs(charge);\n    let to = targetMass + high / Math.abs(charge);\n    similarityProcessor.setFromTo(from, to);\n    if (widthFunction) {\n      width = widthFunction(targetMass);\n      similarityProcessor.setTrapezoid(width.bottom, width.top);\n    }\n\n    similarityProcessor.setPeaks2([isotopePositions.x, isotopePositions.y]);\n    let result = similarityProcessor.getSimilarity();\n\n    results.push({ charge, similarity: result.similarity });\n  }\n\n  return results.sort((a, b) => b.similarity - a.similarity)[0].charge;\n}\n\nmodule.exports = getPeakChargeBySimilarity;\n","'use strict';\n\n/**\n * Filter the array of peaks\n * @param {array} peaks - array of all the peaks\n * @param {object} [options={}]\n * @param {number} [options.from] - min X value of the window to consider\n * @param {number} [options.to] - max X value of the window to consider\n * @param {number} [options.threshold=0.01] - minimal intensity compare to base peak\n * @param {number} [options.limit=undefined] - maximal number of peaks (based on intensity)\n * @returns {array} - copy of peaks with 'close' annotation\n */\n\nfunction getPeaks(peaks, options = {}) {\n  const {\n    from = peaks.reduce(\n      (previous, peak) => Math.min(peak.x, previous),\n      Number.MAX_SAFE_INTEGER,\n    ),\n    to = peaks.reduce(\n      (previous, peak) => Math.max(peak.x, previous),\n      Number.MIN_SAFE_INTEGER,\n    ),\n    threshold = 0.01,\n    limit,\n  } = options;\n\n  let maxY = Number.MIN_SAFE_INTEGER;\n  for (let peak of peaks) {\n    if (peak.y > maxY) maxY = peak.y;\n  }\n  let minY = maxY * threshold;\n\n  peaks = peaks.filter(\n    (peak) => peak.x >= from && peak.x <= to && peak.y >= minY,\n  );\n\n  if (limit && peaks.length > limit) {\n    peaks.sort((a, b) => b.y - a.y);\n    peaks = peaks.slice(0, limit);\n  }\n\n  return peaks.sort((a, b) => a.x - b.x);\n}\n\nmodule.exports = getPeaks;\n","'use strict';\n\n/**\n * When a spectrum is continous ?\n * - has more than 100 points\n * - deltaX change can not be more than a factor 2\n * - deltaX may not be larger than 0.1\n * - if y is zero it does not count\n * @param {object} spectrum\n * @param {object} [options={}]\n * @param {number} [options.minLength=100]\n * @param {number} [options.maxDeltaRatio=3]\n */\n\nfunction isContinuous(spectrum, options = {}) {\n  const { minLength = 100, maxDeltaRatio = 3 } = options;\n  const minRadio = 1 / maxDeltaRatio;\n  const maxRatio = 1 * maxDeltaRatio;\n  if (spectrum.continuous === undefined) {\n    let xs = spectrum.data.x;\n    let ys = spectrum.data.y;\n    if (xs.length < minLength) {\n      spectrum.continuous = false;\n    } else {\n      let previousDelta = xs[1] - xs[0];\n      spectrum.continuous = true;\n      let success = 0;\n      let failed = 0;\n      for (let i = 0; i < xs.length - 1; i++) {\n        if (ys[i] === 0 || ys[i + 1] === 0) {\n          previousDelta = 0;\n          continue;\n        }\n        let delta = xs[i + 1] - xs[i];\n        if (previousDelta) {\n          let ratio = delta / previousDelta;\n          if (\n            (Math.abs(delta) > 0.1 || ratio < minRadio || ratio > maxRatio) &&\n            ys[i] !== 0 &&\n            ys[i + 1] !== 0\n          ) {\n            failed++;\n            break;\n          } else {\n            success++;\n          }\n        }\n        previousDelta = delta;\n      }\n      if (success / failed < 10) {\n        spectrum.continuous = false;\n      }\n    }\n  }\n  return spectrum.continuous;\n}\n\nmodule.exports = isContinuous;\n","export const GAUSSIAN_EXP_FACTOR = -4 * Math.LN2;\nexport const ROOT_PI_OVER_LN2 = Math.sqrt(Math.PI / Math.LN2);\nexport const ROOT_THREE = Math.sqrt(3);\nexport const ROOT_2LN2 = Math.sqrt(2 * Math.LN2);\nexport const ROOT_2LN2_MINUS_ONE = Math.sqrt(2 * Math.LN2) - 1;\n","// https://en.wikipedia.org/wiki/Error_function#Inverse_functions\n// This code yields to a good approximation\n\n// If needed a better implementation using polynomial can be found on https://en.wikipedia.org/wiki/Error_function#Inverse_functions\n\nexport default function erfinv(x) {\n  let a = 0.147;\n  if (x === 0) return 0;\n  let ln1MinusXSqrd = Math.log(1 - x * x);\n  let lnEtcBy2Plus2 = ln1MinusXSqrd / 2 + 2 / (Math.PI * a);\n  let firstSqrt = Math.sqrt(lnEtcBy2Plus2 ** 2 - ln1MinusXSqrd / a);\n  let secondSqrt = Math.sqrt(firstSqrt - lnEtcBy2Plus2);\n  return secondSqrt * (x > 0 ? 1 : -1);\n}\n","import {\n  ROOT_2LN2,\n  GAUSSIAN_EXP_FACTOR,\n  ROOT_PI_OVER_LN2,\n} from '../util/constants';\nimport erfinv from '../util/erfinv';\n\nexport class Gaussian {\n  /**\n   * @param {object} [options = {}]\n   * @param {number} [options.height=x] Define the height of the peak, by default area=1 (normalized)\n   * @param {number} [options.fwhm = 500] - Full Width at Half Maximum in the number of points in FWHM.\n   * @param {number} [options.sd] - Standard deviation, if it's defined options.fwhm will be ignored and the value will be computed sd * Math.sqrt(8 * Math.LN2);\n   */\n  constructor(options = {}) {\n    this.fwhm = options.sd\n      ? Gaussian.widthToFWHM(2 * options.sd)\n      : options.fwhm\n      ? options.fwhm\n      : 500;\n    this.height =\n      options.height === undefined\n        ? Math.sqrt(-GAUSSIAN_EXP_FACTOR / Math.PI) / this.fwhm\n        : options.height;\n  }\n  /**\n   * Calculate a gaussian shape\n   * @param {object} [options = {}]\n   * @param {number} [options.factor = 6] - Number of time to take fwhm to calculate length. Default covers 99.99 % of area.\n   * @param {number} [options.length = fwhm * factor + 1] - total number of points to calculate\n   * @return {Float64Array} y values\n   */\n\n  getData(options = {}) {\n    let { length, factor = this.getFactor() } = options;\n\n    if (!length) {\n      length = Math.min(Math.ceil(this.fwhm * factor), Math.pow(2, 25) - 1);\n      if (length % 2 === 0) length++;\n    }\n\n    const center = (length - 1) / 2;\n    const data = new Float64Array(length);\n    for (let i = 0; i <= center; i++) {\n      data[i] = this.fct(i - center) * this.height;\n      data[length - 1 - i] = data[i];\n    }\n\n    return data;\n  }\n\n  /**\n   * Return a parameterized function of a gaussian shape (see README for equation).\n   * @param {number} x - x value to calculate.\n   * @returns {number} - the y value of gaussian with the current parameters.\n   */\n  fct(x) {\n    return Gaussian.fct(x, this.fwhm);\n  }\n\n  /**\n   * Calculate the number of times FWHM allows to reach a specific area coverage\n   * @param {number} [area=0.9999]\n   * @returns {number}\n   */\n  getFactor(area = 0.9999) {\n    return Gaussian.getFactor(area);\n  }\n\n  /**\n   * Calculate the area of the shape.\n   * @returns {number} - returns the area.\n   */\n\n  getArea() {\n    return Gaussian.getArea(this.fwhm, { height: this.height });\n  }\n\n  /**\n   * Compute the value of Full Width at Half Maximum (FWHM) from the width between the inflection points.\n   * //https://mathworld.wolfram.com/GaussianFunction.html\n   * @param {number} width - Width between the inflection points\n   * @returns {number} fwhm\n   */\n  widthToFWHM(width) {\n    //https://mathworld.wolfram.com/GaussianFunction.html\n    return Gaussian.widthToFWHM(width);\n  }\n\n  /**\n   * Compute the value of width between the inflection points from Full Width at Half Maximum (FWHM).\n   * //https://mathworld.wolfram.com/GaussianFunction.html\n   * @param {number} fwhm - Full Width at Half Maximum.\n   * @returns {number} width\n   */\n  fwhmToWidth(fwhm = this.fwhm) {\n    return Gaussian.fwhmToWidth(fwhm);\n  }\n\n  /**\n   * set a new full width at half maximum\n   * @param {number} fwhm - full width at half maximum\n   */\n  setFWHM(fwhm) {\n    this.fwhm = fwhm;\n  }\n\n  /**\n   * set a new height\n   * @param {number} height - The maximal intensity of the shape.\n   */\n  setHeight(height) {\n    this.height = height;\n  }\n}\n\n/**\n * Return a parameterized function of a gaussian shape (see README for equation).\n * @param {number} x - x value to calculate.\n * @param {number} fwhm - full width half maximum\n * @returns {number} - the y value of gaussian with the current parameters.\n */\nGaussian.fct = function fct(x, fwhm = 500) {\n  return Math.exp(GAUSSIAN_EXP_FACTOR * Math.pow(x / fwhm, 2));\n};\n\n/**\n * Compute the value of Full Width at Half Maximum (FWHM) from the width between the inflection points.\n * //https://mathworld.wolfram.com/GaussianFunction.html\n * @param {number} width - Width between the inflection points\n * @returns {number} fwhm\n */\nGaussian.widthToFWHM = function widthToFWHM(width) {\n  return width * ROOT_2LN2;\n};\n\n/**\n * Compute the value of width between the inflection points from Full Width at Half Maximum (FWHM).\n * //https://mathworld.wolfram.com/GaussianFunction.html\n * @param {number} fwhm - Full Width at Half Maximum.\n * @returns {number} width\n */\nGaussian.fwhmToWidth = function fwhmToWidth(fwhm) {\n  return fwhm / ROOT_2LN2;\n};\n\n/**\n * Calculate the area of a specific shape.\n * @param {number} fwhm - Full width at half maximum.\n * @param {object} [options = {}] - options.\n * @param {number} [options.height = 1] - Maximum y value of the shape.\n * @returns {number} - returns the area of the specific shape and parameters.\n */\n\nGaussian.getArea = function getArea(fwhm, options = {}) {\n  let { height = 1 } = options;\n  return (height * ROOT_PI_OVER_LN2 * fwhm) / 2;\n};\n\n/**\n * Calculate the number of times FWHM allows to reach a specific area coverage.\n * @param {number} [area=0.9999]\n * @returns {number}\n */\nGaussian.getFactor = function getFactor(area = 0.9999) {\n  return Math.sqrt(2) * erfinv(area);\n};\n","import { ROOT_THREE } from '../util/constants';\n\nexport class Lorentzian {\n  /**\n   * @param {object} [options = {}]\n   * @param {number} [options.height=x] Define the height of the peak, by default area=1 (normalized)\n   * @param {number} [options.fwhm = 500] - Full Width at Half Maximum in the number of points in FWHM.\n   * @param {number} [options.sd] - Standard deviation, if it's defined options.fwhm will be ignored and the value will be computed sd * Math.sqrt(8 * Math.LN2);\n   */\n  constructor(options = {}) {\n    this.fwhm = options.fwhm === undefined ? 500 : options.fwhm;\n    this.height =\n      options.height === undefined ? 2 / Math.PI / this.fwhm : options.height;\n  }\n  /**\n   * Calculate a lorentzian shape\n   * @param {object} [options = {}]\n   * @param {number} [options.factor = Math.tan(Math.PI * (0.9999 - 0.5))] - Number of time to take fwhm to calculate length. Default covers 99.99 % of area.\n   * @param {number} [options.length = fwhm * factor + 1] - total number of points to calculate\n   * @return {Float64Array} y values\n   */\n  getData(options = {}) {\n    let { length, factor = this.getFactor() } = options;\n\n    if (!length) {\n      length = Math.min(Math.ceil(this.fwhm * factor), Math.pow(2, 25) - 1);\n      if (length % 2 === 0) length++;\n    }\n\n    const center = (length - 1) / 2;\n    const data = new Float64Array(length);\n    for (let i = 0; i <= center; i++) {\n      data[i] = this.fct(i - center) * this.height;\n      data[length - 1 - i] = data[i];\n    }\n    return data;\n  }\n\n  /**\n   * Return a parameterized function of a lorentzian shape (see README for equation).\n   * @param {number} x - x value to calculate.\n   * @returns {number} - the y value of lorentzian with the current parameters.\n   */\n  fct(x) {\n    return Lorentzian.fct(x, this.fwhm);\n  }\n\n  /**\n   * Calculate the number of times FWHM allows to reach a specific area coverage\n   * @param {number} [area=0.9999]\n   * @returns {number}\n   */\n  getFactor(area = 0.9999) {\n    return Lorentzian.getFactor(area);\n  }\n\n  /**\n   * Calculate the area of the shape.\n   * @returns {number} - returns the area.\n   */\n\n  getArea() {\n    return Lorentzian.getArea(this.fwhm, { height: this.height });\n  }\n\n  /**\n   * Compute the value of width between the inflection points of a specific shape from Full Width at Half Maximum (FWHM).\n   * //https://mathworld.wolfram.com/LorentzianFunction.html\n   * @param {number} [fwhm] - Full Width at Half Maximum.\n   * @returns {number} width between the inflection points\n   */\n  fwhmToWidth(fwhm = this.fwhm) {\n    return Lorentzian.fwhmToWidth(fwhm);\n  }\n\n  /**\n   * Compute the value of Full Width at Half Maximum (FWHM) of a specific shape from the width between the inflection points.\n   * //https://mathworld.wolfram.com/LorentzianFunction.html\n   * @param {number} [width] Width between the inflection points\n   * @returns {number} fwhm\n   */\n  widthToFWHM(width) {\n    return Lorentzian.widthToFWHM(width);\n  }\n  /**\n   * set a new full width at half maximum\n   * @param {number} fwhm - full width at half maximum\n   */\n  setFWHM(fwhm) {\n    this.fwhm = fwhm;\n  }\n\n  /**\n   * set a new height\n   * @param {number} height - The maximal intensity of the shape.\n   */\n  setHeight(height) {\n    this.height = height;\n  }\n}\n\n/**\n * Return a parameterized function of a gaussian shape (see README for equation).\n * @param {number} x - x value to calculate.\n * @param {number} fwhm - full width half maximum\n * @returns {number} - the y value of gaussian with the current parameters.\n */\nLorentzian.fct = function fct(x, fwhm) {\n  const squareFWHM = fwhm * fwhm;\n  return squareFWHM / (4 * Math.pow(x, 2) + squareFWHM);\n};\n\n/**\n * Compute the value of width between the inflection points of a specific shape from Full Width at Half Maximum (FWHM).\n * //https://mathworld.wolfram.com/LorentzianFunction.html\n * @param {number} [fwhm] - Full Width at Half Maximum.\n * @returns {number} width between the inflection points\n */\nLorentzian.fwhmToWidth = function fwhmToWidth(fwhm) {\n  return fwhm / ROOT_THREE;\n};\n\n/**\n * Compute the value of Full Width at Half Maximum (FWHM) of a specific shape from the width between the inflection points.\n * //https://mathworld.wolfram.com/LorentzianFunction.html\n * @param {number} [width] Width between the inflection points\n * @returns {number} fwhm\n */\nLorentzian.widthToFWHM = function widthToFWHM(width) {\n  return width * ROOT_THREE;\n};\n\n/**\n * Calculate the area of a specific shape.\n * @param {number} fwhm - Full width at half maximum.\n * @param {*} [options = {}] - options.\n * @param {number} [options.height = 1] - Maximum y value of the shape.\n * @returns {number} - returns the area of the specific shape and parameters.\n */\nLorentzian.getArea = function getArea(fwhm, options = {}) {\n  let { height = 1 } = options;\n\n  return (height * Math.PI * fwhm) / 2;\n};\n\n/**\n * Calculate the number of times FWHM allows to reach a specific area coverage\n * @param {number} [area=0.9999]\n * @returns {number}\n */\nLorentzian.getFactor = function getFactor(area = 0.9999) {\n  return 2 * Math.tan(Math.PI * (area - 0.5));\n};\n","import {\n  GAUSSIAN_EXP_FACTOR,\n  ROOT_2LN2_MINUS_ONE,\n  ROOT_PI_OVER_LN2,\n} from '../util/constants';\n\nimport { Gaussian } from './Gaussian';\nimport { Lorentzian } from './Lorentzian';\n\nexport class PseudoVoigt {\n  /**\n   * @param {object} [options={}]\n   * @param {number} [options.height=x] Define the height of the peak, by default area=1 (normalized)\n   * @param {number} [options.fwhm=500] - Full Width at Half Maximum in the number of points in FWHM.\n   * @param {number} [options.mu=0.5] - ratio of gaussian contribution.\n   */\n\n  constructor(options = {}) {\n    this.mu = options.mu === undefined ? 0.5 : options.mu;\n    this.fwhm = options.fwhm === undefined ? 500 : options.fwhm;\n    this.height =\n      options.height === undefined\n        ? 1 /\n          ((this.mu / Math.sqrt(-GAUSSIAN_EXP_FACTOR / Math.PI)) * this.fwhm +\n            ((1 - this.mu) * this.fwhm * Math.PI) / 2)\n        : options.height;\n  }\n\n  /**\n   * Calculate a linear combination of gaussian and lorentzian function width an same full width at half maximum\n   * @param { object } [options = {}]\n   * @param { number } [options.factor = 2 * Math.tan(Math.PI * (0.9999 - 0.5))] - Number of time to take fwhm in the calculation of the length.Default covers 99.99 % of area.\n   * @param { number } [options.length = fwhm * factor + 1] - total number of points to calculate\n   * @return { object } - { fwhm, data<Float64Array>} - An with the number of points at half maximum and the array of y values covering the 99.99 % of the area.\n   */\n\n  getData(options = {}) {\n    let { length, factor = this.getFactor() } = options;\n    if (!length) {\n      length = Math.ceil(this.fwhm * factor);\n      if (length % 2 === 0) length++;\n    }\n\n    const center = (length - 1) / 2;\n\n    let data = new Float64Array(length);\n    for (let i = 0; i <= center; i++) {\n      data[i] = this.fct(i - center) * this.height;\n      data[length - 1 - i] = data[i];\n    }\n\n    return data;\n  }\n\n  /**\n   * Return a parameterized function of a linear combination of Gaussian and Lorentzian shapes where the full width at half maximum are the same for both kind of shapes (see README for equation).\n   * @param {number} [x] x value to calculate.\n   * @returns {number} - the y value of a pseudo voigt with the current parameters.\n   */\n\n  fct(x) {\n    return PseudoVoigt.fct(x, this.fwhm, this.mu);\n  }\n\n  /**\n   * Calculate the number of times FWHM allows to reach a specific area coverage\n   * @param {number} [area=0.9999] - required area to be coverage\n   * @param {number} [mu=this.mu] - ratio of gaussian contribution.\n   * @returns {number}\n   */\n  getFactor(area = 0.9999, mu = this.mu) {\n    return PseudoVoigt.getFactor(area, mu);\n  }\n\n  /**\n   * Calculate the area of the shape.\n   * @returns {number} - returns the area.\n   */\n  getArea() {\n    return PseudoVoigt.getArea(this.fwhm, { height: this.height, mu: this.mu });\n  }\n\n  /**\n   * Compute the value of Full Width at Half Maximum (FMHM) from width between the inflection points.\n   * @param {number} width - width between the inflection points\n   * @param {number} [mu = 0.5] - ratio of gaussian contribution.\n   * @returns {number} Full Width at Half Maximum (FMHM).\n   */\n  widthToFWHM(width, mu) {\n    return PseudoVoigt.widthToFWHM(width, mu);\n  }\n  /**\n   * Compute the value of width between the inflection points from Full Width at Half Maximum (FWHM).\n   * @param {number} fwhm - Full Width at Half Maximum.\n   * @param {number} [mu] - ratio of gaussian contribution.\n   * @returns {number} width between the inflection points.\n   */\n  fwhmToWidth(fwhm = this.fwhm, mu = this.mu) {\n    return PseudoVoigt.fwhmToWidth(fwhm, mu);\n  }\n\n  /**\n   * set a new full width at half maximum\n   * @param {number} fwhm - full width at half maximum\n   */\n  setFWHM(fwhm) {\n    this.fwhm = fwhm;\n  }\n\n  /**\n   * set a new height\n   * @param {number} height - The maximal intensity of the shape.\n   */\n  setHeight(height) {\n    this.height = height;\n  }\n\n  /**\n   * set a new mu\n   * @param {number} mu - ratio of gaussian contribution.\n   */\n  setMu(mu) {\n    this.mu = mu;\n  }\n}\n\n/**\n * Return a parameterized function of a gaussian shape (see README for equation).\n * @param {number} x - x value to calculate.\n * @param {number} fwhm - full width half maximum\n * @param {number} [mu=0.5] - ratio of gaussian contribution.\n * @returns {number} - the y value of gaussian with the current parameters.\n */\nPseudoVoigt.fct = function fct(x, fwhm, mu = 0.5) {\n  return (1 - mu) * Lorentzian.fct(x, fwhm) + mu * Gaussian.fct(x, fwhm);\n};\n\n/**\n * Compute the value of Full Width at Half Maximum (FMHM) from width between the inflection points.\n * @param {number} width - width between the inflection points\n * @param {number} [mu = 0.5] - ratio of gaussian contribution.\n * @returns {number} Full Width at Half Maximum (FMHM).\n */\nPseudoVoigt.widthToFWHM = function widthToFWHM(width, mu = 0.5) {\n  return width * (mu * ROOT_2LN2_MINUS_ONE + 1);\n};\n/**\n * Compute the value of width between the inflection points from Full Width at Half Maximum (FWHM).\n * @param {number} fwhm - Full Width at Half Maximum.\n * @param {number} [mu = 0.5] - ratio of gaussian contribution.\n * @returns {number} width between the inflection points.\n */\nPseudoVoigt.fwhmToWidth = function fwhmToWidth(fwhm, mu = 0.5) {\n  return fwhm / (mu * ROOT_2LN2_MINUS_ONE + 1);\n};\n\n/**\n * Calculate the area of a specific shape.\n * @param {number} fwhm - Full width at half maximum.\n * @param {*} [options = {}] - options.\n * @param {number} [options.height = 1] - Maximum y value of the shape.\n * @param {number} [options.mu = 0.5] - ratio of gaussian contribution.\n * @returns {number} - returns the area of the specific shape and parameters.\n */\nPseudoVoigt.getArea = function getArea(fwhm, options = {}) {\n  let { height = 1, mu = 0.5 } = options;\n  return (fwhm * height * (mu * ROOT_PI_OVER_LN2 + (1 - mu) * Math.PI)) / 2;\n};\n\n/**\n * Calculate the number of times FWHM allows to reach a specific area coverage\n * @param {number} [area=0.9999] - required area to be coverage\n * @param {number} [mu=this.mu] - ratio of gaussian contribution.\n * @returns {number}\n */\nPseudoVoigt.getFactor = function getFactor(area = 0.9999, mu = 0.5) {\n  return mu < 1 ? Lorentzian.getFactor(area) : Gaussian.getFactor(area);\n};\n","import { Gaussian } from '../classes/Gaussian';\nimport { Lorentzian } from '../classes/Lorentzian';\nimport { PseudoVoigt } from '../classes/PseudoVoigt';\n\nexport function getShapeGenerator(options) {\n  let { kind = 'Gaussian', options: shapeOptions } = options;\n  switch (kind.toLowerCase().replace(/[^a-z]/g, '')) {\n    case 'gaussian':\n      return new Gaussian(shapeOptions);\n    case 'lorentzian':\n      return new Lorentzian(shapeOptions);\n    case 'pseudovoigt':\n      return new PseudoVoigt(shapeOptions);\n    default:\n      throw new Error(`Unknown kind: ${kind}`);\n  }\n}\n","/**\n * Apply Savitzky Golay algorithm\n * @param {array} [ys] Array of y values\n * @param {array|number} [xs] Array of X or deltaX\n * @param {object} [options={}]\n * @param {number} [options.windowSize=9]\n * @param {number} [options.derivative=0]\n * @param {number} [options.polynomial=3]\n * @return {array} Array containing the new ys (same length)\n */\n\nexport default function SavitzkyGolay(ys, xs, options = {}) {\n  let { windowSize = 9, derivative = 0, polynomial = 3 } = options;\n\n  if (windowSize % 2 === 0 || windowSize < 5 || !Number.isInteger(windowSize)) {\n    throw new RangeError(\n      'Invalid window size (should be odd and at least 5 integer number)',\n    );\n  }\n  if (windowSize > ys.length) {\n    throw new RangeError(\n      `Window size is higher than the data length ${windowSize}>${ys.length}`,\n    );\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(\n      '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  }\n\n  let half = Math.floor(windowSize / 2);\n  let np = ys.length;\n  let ans = new Array(np);\n  let weights = fullWeights(windowSize, polynomial, derivative);\n  let hs = 0;\n  let constantH = true;\n  if (Array.isArray(xs)) {\n    constantH = false;\n  } else {\n    hs = Math.pow(xs, derivative);\n  }\n\n  //For the borders\n  for (let i = 0; i < half; i++) {\n    let wg1 = weights[half - i - 1];\n    let 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    } 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\n  //For the internal points\n  let wg = weights[half];\n  for (let i = windowSize; i <= np; i++) {\n    let d = 0;\n    for (let l = 0; l < windowSize; l++) d += wg[l] * ys[l + i - windowSize];\n    if (!constantH) hs = getHs(xs, i - half - 1, half, derivative);\n    ans[i - half - 1] = d / hs;\n  }\n  return ans;\n}\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 Math.pow(hs / count, derivative);\n}\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  } else {\n    if (k === 0 && s === 0) {\n      Grampoly = 1;\n    } else {\n      Grampoly = 0;\n    }\n  }\n  return Grampoly;\n}\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}\n\nfunction Weight(i, t, m, n, s) {\n  let sum = 0;\n  for (let k = 0; k <= n; k++) {\n    //console.log(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/**\n *\n * @param m  Number of points\n * @param n  Polynomial grade\n * @param s  Derivative\n */\nfunction fullWeights(m, n, s) {\n  let weights = new Array(m);\n  let np = Math.floor(m / 2);\n  for (let t = -np; t <= np; t++) {\n    weights[t + np] = new Array(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\n/*function entropy(data,h,options){\n    var trend = SavitzkyGolay(data,h,trendOptions);\n    var copy = new Array(data.length);\n    var sum = 0;\n    var max = 0;\n    for(var i=0;i<data.length;i++){\n        copy[i] = data[i]-trend[i];\n    }\n\n    sum/=data.length;\n    console.log(sum+\" \"+max);\n    console.log(stat.array.standardDeviation(copy));\n    console.log(Math.abs(stat.array.mean(copy))/stat.array.standardDeviation(copy));\n    return sum;\n\n}\n\n\n\nfunction guessWindowSize(data, h){\n    console.log(\"entropy \"+entropy(data,h,trendOptions));\n    return 5;\n}\n*/\n","import { getShapeGenerator } from 'ml-peak-shape-generator';\nimport SG from 'ml-savitzky-golay-generalized';\n\n/**\n * Global spectra deconvolution\n * @param {object} data - Object data with x and y arrays\n * @param {Array<number>} [data.x] - Independent variable\n * @param {Array<number>} [data.y] - Dependent variable\n * @param {object} [options={}] - Options object\n * @param {object} [options.shape={}] - Object that specified the kind of shape to calculate the FWHM instead of width between inflection points. see https://mljs.github.io/peak-shape-generator/#inflectionpointswidthtofwhm\n * @param {object} [options.shape.kind='gaussian']\n * @param {object} [options.shape.options={}]\n * @param {object} [options.sgOptions] - Options object for Savitzky-Golay filter. See https://github.com/mljs/savitzky-golay-generalized#options\n * @param {number} [options.sgOptions.windowSize = 9] - points to use in the approximations\n * @param {number} [options.sgOptions.polynomial = 3] - degree of the polynomial to use in the approximations\n * @param {number} [options.minMaxRatio = 0.00025] - Threshold to determine if a given peak should be considered as a noise\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 * @param {number} [options.noiseLevel = 0] - Noise threshold in spectrum units\n * @param {boolean} [options.maxCriteria = true] - Peaks are local maximum(true) or minimum(false)\n * @param {boolean} [options.smoothY = true] - Select the peak intensities from a smoothed version of the independent variables\n * @param {boolean} [options.realTopDetection = false] - Use a quadratic optimizations with the peak and its 3 closest neighbors\n * to determine the true x,y values of the peak?\n * @param {number} [options.heightFactor = 0] - Factor to multiply the calculated height (usually 2)\n * @param {number} [options.derivativeThreshold = -1] - Filters based on the amplitude of the first derivative\n * @return {Array<object>}\n */\nexport function gsd(data, options = {}) {\n  let {\n    noiseLevel,\n    sgOptions = {\n      windowSize: 9,\n      polynomial: 3,\n    },\n    shape = {},\n    smoothY = true,\n    heightFactor = 0,\n    broadRatio = 0.0,\n    maxCriteria = true,\n    minMaxRatio = 0.00025,\n    derivativeThreshold = -1,\n    realTopDetection = false,\n  } = options;\n\n  let { y: yIn, x } = data;\n\n  const y = yIn.slice();\n  let equalSpaced = isEqualSpaced(x);\n\n  if (noiseLevel === undefined) {\n    noiseLevel = equalSpaced ? getNoiseLevel(y) : 0;\n  }\n\n  const yCorrection = { m: 1, b: noiseLevel };\n\n  if (!maxCriteria) {\n    yCorrection.m = -1;\n    yCorrection.b *= -1;\n  }\n\n  for (let i = 0; i < y.length; i++) {\n    y[i] = yCorrection.m * y[i] - yCorrection.b;\n  }\n\n  for (let i = 0; i < y.length; i++) {\n    if (y[i] < 0) {\n      y[i] = 0;\n    }\n  }\n  // If the max difference between delta x is less than 5%, then,\n  // we can assume it to be equally spaced variable\n  let yData = y;\n  let dY, ddY;\n  const { windowSize, polynomial } = sgOptions;\n\n  if (equalSpaced) {\n    if (smoothY) {\n      yData = SG(y, x[1] - x[0], {\n        windowSize,\n        polynomial,\n        derivative: 0,\n      });\n    }\n    dY = SG(y, x[1] - x[0], {\n      windowSize,\n      polynomial,\n      derivative: 1,\n    });\n    ddY = SG(y, x[1] - x[0], {\n      windowSize,\n      polynomial,\n      derivative: 2,\n    });\n  } else {\n    if (smoothY) {\n      yData = SG(y, x, {\n        windowSize,\n        polynomial,\n        derivative: 0,\n      });\n    }\n    dY = SG(y, x, {\n      windowSize,\n      polynomial,\n      derivative: 1,\n    });\n    ddY = SG(y, x, {\n      windowSize,\n      polynomial,\n      derivative: 2,\n    });\n  }\n\n  const xData = x;\n  const dX = x[1] - x[0];\n  let maxDdy = 0;\n  let maxY = 0;\n  for (let i = 0; i < yData.length; i++) {\n    if (Math.abs(ddY[i]) > maxDdy) {\n      maxDdy = Math.abs(ddY[i]);\n    }\n    if (Math.abs(yData[i]) > maxY) {\n      maxY = Math.abs(yData[i]);\n    }\n  }\n\n  let lastMax = null;\n  let lastMin = null;\n  let minddY = [];\n  let intervalL = [];\n  let intervalR = [];\n  let broadMask = [];\n\n  // By the intermediate value theorem We cannot find 2 consecutive maximum or minimum\n  for (let i = 1; i < yData.length - 1; ++i) {\n    // filter based on derivativeThreshold\n    // console.log('pasa', y[i], dY[i], ddY[i]);\n    if (Math.abs(dY[i]) > derivativeThreshold) {\n      // Minimum in first derivative\n      if (\n        (dY[i] < dY[i - 1] && dY[i] <= dY[i + 1]) ||\n        (dY[i] <= dY[i - 1] && dY[i] < dY[i + 1])\n      ) {\n        lastMin = {\n          x: xData[i],\n          index: i,\n        };\n        if (dX > 0 && lastMax !== null) {\n          intervalL.push(lastMax);\n          intervalR.push(lastMin);\n        }\n      }\n\n      // Maximum in first derivative\n      if (\n        (dY[i] >= dY[i - 1] && dY[i] > dY[i + 1]) ||\n        (dY[i] > dY[i - 1] && dY[i] >= dY[i + 1])\n      ) {\n        lastMax = {\n          x: xData[i],\n          index: i,\n        };\n        if (dX < 0 && lastMin !== null) {\n          intervalL.push(lastMax);\n          intervalR.push(lastMin);\n        }\n      }\n    }\n\n    // Minimum in second derivative\n    if (ddY[i] < ddY[i - 1] && ddY[i] < ddY[i + 1]) {\n      minddY.push(i);\n      broadMask.push(Math.abs(ddY[i]) <= broadRatio * maxDdy);\n    }\n  }\n\n  let widthProcessor = shape.kind\n    ? getShapeGenerator(shape.kind, shape.options).widthToFWHM\n    : (x) => x;\n\n  let signals = [];\n  let lastK = -1;\n  let possible, frequency, distanceJ, minDistance, gettingCloser;\n  for (let j = 0; j < minddY.length; ++j) {\n    frequency = xData[minddY[j]];\n    possible = -1;\n    let k = lastK + 1;\n    minDistance = Number.MAX_VALUE;\n    distanceJ = 0;\n    gettingCloser = true;\n    while (possible === -1 && k < intervalL.length && gettingCloser) {\n      distanceJ = Math.abs(frequency - (intervalL[k].x + intervalR[k].x) / 2);\n\n      // Still getting closer?\n      if (distanceJ < minDistance) {\n        minDistance = distanceJ;\n      } else {\n        gettingCloser = false;\n      }\n      if (distanceJ < Math.abs(intervalL[k].x - intervalR[k].x) / 2) {\n        possible = k;\n        lastK = k;\n      }\n      ++k;\n    }\n\n    if (possible !== -1) {\n      if (Math.abs(yData[minddY[j]]) > minMaxRatio * maxY) {\n        let width = Math.abs(intervalR[possible].x - intervalL[possible].x);\n        signals.push({\n          index: minddY[j],\n          x: frequency,\n          y: (yData[minddY[j]] + yCorrection.b) / yCorrection.m,\n          width: widthProcessor(width),\n          soft: broadMask[j],\n        });\n\n        signals[signals.length - 1].left = intervalL[possible];\n        signals[signals.length - 1].right = intervalR[possible];\n\n        if (heightFactor) {\n          let yLeft = yData[intervalL[possible].index];\n          let yRight = yData[intervalR[possible].index];\n          signals[signals.length - 1].height =\n            heightFactor *\n            (signals[signals.length - 1].y - (yLeft + yRight) / 2);\n        }\n      }\n    }\n  }\n\n  if (realTopDetection) {\n    determineRealTop(signals, xData, yData);\n  }\n\n  // Correct the values to fit the original spectra data\n  for (let j = 0; j < signals.length; j++) {\n    signals[j].base = noiseLevel;\n  }\n\n  signals.sort(function (a, b) {\n    return a.x - b.x;\n  });\n\n  return signals;\n}\n\nconst isEqualSpaced = (x) => {\n  let tmp;\n  let maxDx = 0;\n  let minDx = Number.MAX_SAFE_INTEGER;\n  for (let i = 0; i < x.length - 1; ++i) {\n    tmp = Math.abs(x[i + 1] - x[i]);\n    if (tmp < minDx) {\n      minDx = tmp;\n    }\n    if (tmp > maxDx) {\n      maxDx = tmp;\n    }\n  }\n  return (maxDx - minDx) / maxDx < 0.05;\n};\n\nconst getNoiseLevel = (y) => {\n  let mean = 0;\n\n  let stddev = 0;\n  let length = y.length;\n  for (let i = 0; i < length; ++i) {\n    mean += y[i];\n  }\n  mean /= length;\n  let averageDeviations = new Array(length);\n  for (let i = 0; i < length; ++i) {\n    averageDeviations[i] = Math.abs(y[i] - mean);\n  }\n  averageDeviations.sort((a, b) => a - b);\n  if (length % 2 === 1) {\n    stddev = averageDeviations[(length - 1) / 2] / 0.6745;\n  } else {\n    stddev =\n      (0.5 *\n        (averageDeviations[length / 2] + averageDeviations[length / 2 - 1])) /\n      0.6745;\n  }\n\n  return stddev;\n};\n\nconst determineRealTop = (peakList, x, y) => {\n  let alpha, beta, gamma, p, currentPoint;\n  for (let j = 0; j < peakList.length; j++) {\n    currentPoint = peakList[j].index; // peakList[j][2];\n    // The detected peak could be moved 1 or 2 units to left or right.\n    if (\n      y[currentPoint - 1] >= y[currentPoint - 2] &&\n      y[currentPoint - 1] >= y[currentPoint]\n    ) {\n      currentPoint--;\n    } else {\n      if (\n        y[currentPoint + 1] >= y[currentPoint] &&\n        y[currentPoint + 1] >= y[currentPoint + 2]\n      ) {\n        currentPoint++;\n      } else {\n        if (\n          y[currentPoint - 2] >= y[currentPoint - 3] &&\n          y[currentPoint - 2] >= y[currentPoint - 1]\n        ) {\n          currentPoint -= 2;\n        } else {\n          if (\n            y[currentPoint + 2] >= y[currentPoint + 1] &&\n            y[currentPoint + 2] >= y[currentPoint + 3]\n          ) {\n            currentPoint += 2;\n          }\n        }\n      }\n    }\n    // interpolation to a sin() function\n    if (\n      y[currentPoint - 1] > 0 &&\n      y[currentPoint + 1] > 0 &&\n      y[currentPoint] >= y[currentPoint - 1] &&\n      y[currentPoint] >= y[currentPoint + 1] &&\n      (y[currentPoint] !== y[currentPoint - 1] ||\n        y[currentPoint] !== y[currentPoint + 1])\n    ) {\n      alpha = 20 * Math.log10(y[currentPoint - 1]);\n      beta = 20 * Math.log10(y[currentPoint]);\n      gamma = 20 * Math.log10(y[currentPoint + 1]);\n      p = (0.5 * (alpha - gamma)) / (alpha - 2 * beta + gamma);\n      // console.log(alpha, beta, gamma, `p: ${p}`);\n      // console.log(x[currentPoint]+\" \"+tmp+\" \"+currentPoint);\n      peakList[j].x =\n        x[currentPoint] + (x[currentPoint] - x[currentPoint - 1]) * p;\n      peakList[j].y =\n        y[currentPoint] -\n        0.25 * (y[currentPoint - 1] - y[currentPoint + 1]) * p;\n    }\n  }\n};\n","import isArray from 'is-any-array';\n\nexport default function checkOptions(data, parameterizedFunction, options) {\n  let {\n    timeout,\n    minValues,\n    maxValues,\n    initialValues,\n    weights = 1,\n    damping = 1e-2,\n    dampingStepUp = 11,\n    dampingStepDown = 9,\n    maxIterations = 100,\n    errorTolerance = 1e-7,\n    centralDifference = false,\n    gradientDifference = 10e-2,\n    improvementThreshold = 1e-3,\n  } = options;\n\n  if (damping <= 0) {\n    throw new Error('The damping option must be a positive number');\n  } else if (!data.x || !data.y) {\n    throw new Error('The data parameter must have x and y elements');\n  } else if (\n    !isArray(data.x) ||\n    data.x.length < 2 ||\n    !isArray(data.y) ||\n    data.y.length < 2\n  ) {\n    throw new Error(\n      'The data parameter elements must be an array with more than 2 points',\n    );\n  } else if (data.x.length !== data.y.length) {\n    throw new Error('The data parameter elements must have the same size');\n  }\n\n  let parameters =\n    initialValues || new Array(parameterizedFunction.length).fill(1);\n\n  let nbPoints = data.y.length;\n  let parLen = parameters.length;\n  maxValues = maxValues || new Array(parLen).fill(Number.MAX_SAFE_INTEGER);\n  minValues = minValues || new Array(parLen).fill(Number.MIN_SAFE_INTEGER);\n\n  if (maxValues.length !== minValues.length) {\n    throw new Error('minValues and maxValues must be the same size');\n  }\n\n  if (!isArray(parameters)) {\n    throw new Error('initialValues must be an array');\n  }\n\n  if (typeof gradientDifference === 'number') {\n    gradientDifference = new Array(parameters.length).fill(gradientDifference);\n  } else if (isArray(gradientDifference)) {\n    if (gradientDifference.length !== parLen) {\n      gradientDifference = new Array(parLen).fill(gradientDifference[0]);\n    }\n  } else {\n    throw new Error(\n      'gradientDifference should be a number or array with length equal to the number of parameters',\n    );\n  }\n\n  let filler;\n  if (typeof weights === 'number') {\n    let value = 1 / weights ** 2;\n    filler = () => value;\n  } else if (isArray(weights)) {\n    if (weights.length < data.x.length) {\n      let value = 1 / weights[0] ** 2;\n      filler = () => value;\n    } else {\n      filler = (i) => 1 / weights[i] ** 2;\n    }\n  } else {\n    throw new Error(\n      'weights should be a number or array with length equal to the number of data points',\n    );\n  }\n\n  let checkTimeout;\n  if (timeout !== undefined) {\n    if (typeof timeout !== 'number') {\n      throw new Error('timeout should be a number');\n    }\n    let endTime = Date.now() + timeout * 1000;\n    checkTimeout = () => Date.now() > endTime;\n  } else {\n    checkTimeout = () => false;\n  }\n\n  let weightSquare = new Array(data.x.length);\n  for (let i = 0; i < nbPoints; i++) {\n    weightSquare[i] = filler(i);\n  }\n\n  return {\n    checkTimeout,\n    minValues,\n    maxValues,\n    parameters,\n    weightSquare,\n    damping,\n    dampingStepUp,\n    dampingStepDown,\n    maxIterations,\n    errorTolerance,\n    centralDifference,\n    gradientDifference,\n    improvementThreshold,\n  };\n}\n","/**\n * the sum of the weighted squares of the errors (or weighted residuals) between the data.y\n * and the curve-fit function.\n * @ignore\n * @param {{x:Array<number>, y:Array<number>}} data - Array of points to fit in the format [x1, x2, ... ], [y1, y2, ... ]\n * @param {Array<number>} parameters - Array of current parameter values\n * @param {function} parameterizedFunction - The parameters and returns a function with the independent variable as a parameter\n * @param {Array} weightSquare - Square of weights\n * @return {number}\n */\nexport default function errorCalculation(\n  data,\n  parameters,\n  parameterizedFunction,\n  weightSquare,\n) {\n  let error = 0;\n  const func = parameterizedFunction(parameters);\n  for (let i = 0; i < data.x.length; i++) {\n    error += Math.pow(data.y[i] - func(data.x[i]), 2) / weightSquare[i];\n  }\n\n  return error;\n}\n","import isArray from 'is-any-array';\n\nfunction min(input) {\n  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n  if (!isArray(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 default min;\n","import isArray 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 (!isArray(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 (!isArray(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 default rescale;\n","const indent = ' '.repeat(2);\nconst indentData = ' '.repeat(4);\n\nexport function inspectMatrix() {\n  return inspectMatrixWithOptions(this);\n}\n\nexport function inspectMatrixWithOptions(matrix, options = {}) {\n  const { maxRows = 15, maxColumns = 10, maxNumSize = 8 } = options;\n  return `${matrix.constructor.name} {\n${indent}[\n${indentData}${inspectData(matrix, maxRows, maxColumns, maxNumSize)}\n${indent}]\n${indent}rows: ${matrix.rows}\n${indent}columns: ${matrix.columns}\n}`;\n}\n\nfunction inspectData(matrix, maxRows, maxColumns, maxNumSize) {\n  const { rows, columns } = matrix;\n  const maxI = Math.min(rows, maxRows);\n  const maxJ = Math.min(columns, maxColumns);\n  const result = [];\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));\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) {\n  const numStr = String(num);\n  if (numStr.length <= maxNumSize) {\n    return numStr.padEnd(maxNumSize, ' ');\n  }\n  const precise = num.toPrecision(maxNumSize - 2);\n  if (precise.length <= maxNumSize) {\n    return precise;\n  }\n  const exponential = num.toExponential(maxNumSize - 2);\n  const eIndex = exponential.indexOf('e');\n  const e = exponential.slice(eIndex);\n  return exponential.slice(0, maxNumSize - e.length) + e;\n}\n","export function 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, Math.pow(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, Math.pow(this.get(i, j), matrix.get(i, j)));\n      }\n    }\n    return this;\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 */\nexport function 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 */\nexport function 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 */\nexport function 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 */\nexport function 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\nexport function checkIndices(matrix, rowIndices, columnIndices) {\n  return {\n    row: checkRowIndices(matrix, rowIndices),\n    column: checkColumnIndices(matrix, columnIndices),\n  };\n}\n\nexport function checkRowIndices(matrix, rowIndices) {\n  if (typeof rowIndices !== 'object') {\n    throw new TypeError('unexpected type for row indices');\n  }\n\n  let rowOut = rowIndices.some((r) => {\n    return r < 0 || r >= matrix.rows;\n  });\n\n  if (rowOut) {\n    throw new RangeError('row indices are out of range');\n  }\n\n  if (!Array.isArray(rowIndices)) rowIndices = Array.from(rowIndices);\n\n  return rowIndices;\n}\n\nexport function checkColumnIndices(matrix, columnIndices) {\n  if (typeof columnIndices !== 'object') {\n    throw new TypeError('unexpected type for column indices');\n  }\n\n  let columnOut = columnIndices.some((c) => {\n    return c < 0 || c >= matrix.columns;\n  });\n\n  if (columnOut) {\n    throw new RangeError('column indices are out of range');\n  }\n  if (!Array.isArray(columnIndices)) columnIndices = Array.from(columnIndices);\n\n  return columnIndices;\n}\n\nexport function 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\nexport function 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\nexport function checkNonEmpty(matrix) {\n  if (matrix.isEmpty()) {\n    throw new Error('Empty matrix has no elements to index');\n  }\n}\n","import { newArray } from './util';\n\nexport function 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\nexport function 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\nexport function 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\nexport function 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\nexport function 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\nexport function 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\nexport function 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\nexport function 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\nexport function 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\nexport function 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\nexport function 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\nexport function 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\nexport function 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 += Math.pow(matrix.get(i, j), 2) / (matrix.columns - 1);\n    }\n    scale.push(Math.sqrt(sum));\n  }\n  return scale;\n}\n\nexport function 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\nexport function 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 += Math.pow(matrix.get(i, j), 2) / (matrix.rows - 1);\n    }\n    scale.push(Math.sqrt(sum));\n  }\n  return scale;\n}\n\nexport function 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\nexport function 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 += Math.pow(matrix.get(i, j), 2) / divider;\n    }\n  }\n  return Math.sqrt(sum);\n}\n\nexport function 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","import rescale from 'ml-array-rescale';\n\nimport { inspectMatrix, inspectMatrixWithOptions } from './inspect';\nimport { installMathOperations } from './mathOperations';\nimport {\n  sumByRow,\n  sumByColumn,\n  sumAll,\n  productByRow,\n  productByColumn,\n  productAll,\n  varianceByRow,\n  varianceByColumn,\n  varianceAll,\n  centerByRow,\n  centerByColumn,\n  centerAll,\n  scaleByRow,\n  scaleByColumn,\n  scaleAll,\n  getScaleByRow,\n  getScaleByColumn,\n  getScaleAll,\n} from './stat';\nimport {\n  checkRowVector,\n  checkRowIndex,\n  checkColumnIndex,\n  checkColumnVector,\n  checkRange,\n  checkIndices,\n  checkNonEmpty,\n} from './util';\n\nexport class 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  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() {\n    if (this.isEmpty()) {\n      return NaN;\n    }\n    let v = this.get(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        }\n      }\n    }\n    return v;\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() {\n    if (this.isEmpty()) {\n      return NaN;\n    }\n    let v = this.get(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        }\n      }\n    }\n    return v;\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    let result = 0;\n    if (type === 'max') {\n      return this.max();\n    } else if (type === 'frobenius') {\n      for (let i = 0; i < this.rows; i++) {\n        for (let j = 0; j < this.columns; j++) {\n          result = result + this.get(i, j) * this.get(i, j);\n        }\n      }\n      return Math.sqrt(result);\n    } else {\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  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 resultat = AbstractMatrix.zeros(2 * c11.rows, 2 * c11.columns);\n      resultat = resultat.setSubMatrix(c11, 0, 0);\n      resultat = resultat.setSubMatrix(c12, c11.rows, 0);\n      resultat = resultat.setSubMatrix(c21, 0, c11.columns);\n      resultat = resultat.setSubMatrix(c22, c11.rows, c11.columns);\n      return resultat.subMatrix(0, rows - 1, 0, cols - 1);\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: min,\n          max: 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  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    let indices = checkIndices(this, rowIndices, columnIndices);\n    let newMatrix = new Matrix(rowIndices.length, columnIndices.length);\n    for (let i = 0; i < indices.row.length; i++) {\n      let rowIndex = indices.row[i];\n      for (let j = 0; j < indices.column.length; j++) {\n        let columnIndex = indices.column[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    let newMatrix = new Matrix(this.rows, this.columns);\n    for (let row = 0; row < this.rows; row++) {\n      for (let column = 0; column < this.columns; column++) {\n        newMatrix.set(row, column, this.get(row, column));\n      }\n    }\n    return newMatrix;\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 (!Array.isArray(mean)) {\n          throw new TypeError('mean must be an array');\n        }\n        return varianceByRow(this, unbiased, mean);\n      }\n      case 'column': {\n        if (!Array.isArray(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 (!Array.isArray(center)) {\n          throw new TypeError('center must be an array');\n        }\n        centerByRow(this, center);\n        return this;\n      }\n      case 'column': {\n        if (!Array.isArray(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 (!Array.isArray(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 (!Array.isArray(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\nAbstractMatrix.prototype.klass = 'Matrix';\nif (typeof Symbol !== 'undefined') {\n  AbstractMatrix.prototype[\n    Symbol.for('nodejs.util.inspect.custom')\n  ] = inspectMatrix;\n}\n\nfunction compareNumbers(a, b) {\n  return a - b;\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\nexport default class Matrix extends AbstractMatrix {\n  constructor(nRows, nColumns) {\n    super();\n    if (Matrix.isMatrix(nRows)) {\n      // eslint-disable-next-line no-constructor-return\n      return nRows.clone();\n    } else if (Number.isInteger(nRows) && nRows >= 0) {\n      // Create an empty matrix\n      this.data = [];\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    } else if (Array.isArray(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      for (let i = 0; i < nRows; i++) {\n        if (arrayData[i].length !== nColumns) {\n          throw new RangeError('Inconsistent array dimensions');\n        }\n        this.data.push(Float64Array.from(arrayData[i]));\n      }\n    } else {\n      throw new TypeError(\n        'First argument must be a positive number or an array',\n      );\n    }\n    this.rows = nRows;\n    this.columns = nColumns;\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","import { AbstractMatrix } from '../matrix';\n\nexport default class 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","import Matrix from '../matrix';\nimport WrapperMatrix2D from '../wrap/WrapperMatrix2D';\n\nexport default class 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","export function 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","import Matrix from '../matrix';\nimport WrapperMatrix2D from '../wrap/WrapperMatrix2D';\n\nimport { hypotenuse } from './util';\n\nexport default class 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","import Matrix from '../matrix';\nimport WrapperMatrix2D from '../wrap/WrapperMatrix2D';\n\nimport { hypotenuse } from './util';\n\nexport default class 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 iter = 0;\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          iter = iter + 1;\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          iter = 0;\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","import LuDecomposition from './dc/lu';\nimport QrDecomposition from './dc/qr';\nimport SingularValueDecomposition from './dc/svd';\nimport Matrix from './matrix';\nimport WrapperMatrix2D from './wrap/WrapperMatrix2D';\n\nexport function 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\nexport function 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","import { Matrix } from 'ml-matrix';\n/**\n * Difference of the matrix function over the parameters\n * @ignore\n * @param {{x:Array<number>, y:Array<number>}} data - Array of points to fit in the format [x1, x2, ... ], [y1, y2, ... ]\n * @param {Array<number>} evaluatedData - Array of previous evaluated function values\n * @param {Array<number>} params - Array of previous parameter values\n * @param {number|array} gradientDifference - The step size to approximate the jacobian matrix\n * @param {boolean} centralDifference - If true the jacobian matrix is approximated by central differences otherwise by forward differences\n * @param {function} paramFunction - The parameters and returns a function with the independent variable as a parameter\n * @return {Matrix}\n */\n\nexport default function gradientFunction(\n  data,\n  evaluatedData,\n  params,\n  gradientDifference,\n  paramFunction,\n  centralDifference,\n) {\n  const nbParams = params.length;\n  const nbPoints = data.x.length;\n  let ans = Matrix.zeros(nbParams, nbPoints);\n\n  let rowIndex = 0;\n  for (let param = 0; param < nbParams; param++) {\n    if (gradientDifference[param] === 0) continue;\n    let delta = gradientDifference[param];\n    let auxParams = params.slice();\n    auxParams[param] += delta;\n    let funcParam = paramFunction(auxParams);\n    if (!centralDifference) {\n      for (let point = 0; point < nbPoints; point++) {\n        ans.set(\n          rowIndex,\n          point,\n          (evaluatedData[point] - funcParam(data.x[point])) / delta,\n        );\n      }\n    } else {\n      auxParams = params.slice();\n      auxParams[param] -= delta;\n      delta *= 2;\n      let funcParam2 = paramFunction(auxParams);\n      for (let point = 0; point < nbPoints; point++) {\n        ans.set(\n          rowIndex,\n          point,\n          (funcParam2(data.x[point]) - funcParam(data.x[point])) / delta,\n        );\n      }\n    }\n    rowIndex++;\n  }\n\n  return ans;\n}\n","import { inverse, Matrix } from 'ml-matrix';\n\nimport gradientFunction from './gradientFunction';\n\n/**\n * Matrix function over the samples\n * @ignore\n * @param {{x:Array<number>, y:Array<number>}} data - Array of points to fit in the format [x1, x2, ... ], [y1, y2, ... ]\n * @param {Array<number>} evaluatedData - Array of previous evaluated function values\n * @return {Matrix}\n */\nfunction matrixFunction(data, evaluatedData) {\n  const m = data.x.length;\n\n  let ans = new Matrix(m, 1);\n\n  for (let point = 0; point < m; point++) {\n    ans.set(point, 0, data.y[point] - evaluatedData[point]);\n  }\n  return ans;\n}\n\n/**\n * Iteration for Levenberg-Marquardt\n * @ignore\n * @param {{x:Array<number>, y:Array<number>}} data - Array of points to fit in the format [x1, x2, ... ], [y1, y2, ... ]\n * @param {Array<number>} params - Array of previous parameter values\n * @param {number} damping - Levenberg-Marquardt parameter\n * @param {number|array} gradientDifference - The step size to approximate the jacobian matrix\n * @param {boolean} centralDifference - If true the jacobian matrix is approximated by central differences otherwise by forward differences\n * @param {function} parameterizedFunction - The parameters and returns a function with the independent variable as a parameter\n * @return {Array<number>}\n */\nexport default function step(\n  data,\n  params,\n  damping,\n  gradientDifference,\n  parameterizedFunction,\n  centralDifference,\n  weights,\n) {\n  let value = damping;\n  let identity = Matrix.eye(params.length, params.length, value);\n\n  const func = parameterizedFunction(params);\n\n  let evaluatedData = new Float64Array(data.x.length);\n  for (let i = 0; i < data.x.length; i++) {\n    evaluatedData[i] = func(data.x[i]);\n  }\n\n  let gradientFunc = gradientFunction(\n    data,\n    evaluatedData,\n    params,\n    gradientDifference,\n    parameterizedFunction,\n    centralDifference,\n  );\n  let residualError = matrixFunction(data, evaluatedData);\n\n  let inverseMatrix = inverse(\n    identity.add(\n      gradientFunc.mmul(\n        gradientFunc.transpose().scale('row', { scale: weights }),\n      ),\n    ),\n  );\n\n  let jacobianWeigthResidualError = gradientFunc.mmul(\n    residualError.scale('row', { scale: weights }),\n  );\n\n  let perturbations = inverseMatrix.mmul(jacobianWeigthResidualError);\n\n  return {\n    perturbations,\n    jacobianWeigthResidualError,\n  };\n}\n","import checkOptions from './checkOptions';\nimport errorCalculation from './errorCalculation';\nimport step from './step';\n\n/**\n * Curve fitting algorithm\n * @param {{x:Array<number>, y:Array<number>}} data - Array of points to fit in the format [x1, x2, ... ], [y1, y2, ... ]\n * @param {function} parameterizedFunction - The parameters and returns a function with the independent variable as a parameter\n * @param {object} [options] - Options object\n * @param {number|array} [options.weights = 1] - weighting vector, if the length does not match with the number of data points, the vector is reconstructed with first value.\n * @param {number} [options.damping = 1e-2] - Levenberg-Marquardt parameter, small values of the damping parameter λ result in a Gauss-Newton update and large\nvalues of λ result in a gradient descent update\n * @param {number} [options.dampingStepDown = 9] - factor to reduce the damping (Levenberg-Marquardt parameter) when there is not an improvement when updating parameters.\n * @param {number} [options.dampingStepUp = 11] - factor to increase the damping (Levenberg-Marquardt parameter) when there is an improvement when updating parameters.\n * @param {number} [options.improvementThreshold = 1e-3] - the threshold to define an improvement through an update of parameters\n * @param {number|array} [options.gradientDifference = 10e-2] - The step size to approximate the jacobian matrix\n * @param {boolean} [options.centralDifference = false] - If true the jacobian matrix is approximated by central differences otherwise by forward differences\n * @param {Array<number>} [options.minValues] - Minimum allowed values for parameters\n * @param {Array<number>} [options.maxValues] - Maximum allowed values for parameters\n * @param {Array<number>} [options.initialValues] - Array of initial parameter values\n * @param {number} [options.maxIterations = 100] - Maximum of allowed iterations\n * @param {number} [options.errorTolerance = 10e-3] - Minimum uncertainty allowed for each point.\n * @param {number} [options.timeout] - maximum time running before throw in seconds.\n * @return {{parameterValues: Array<number>, parameterError: number, iterations: number}}\n */\nexport default function levenbergMarquardt(\n  data,\n  parameterizedFunction,\n  options = {},\n) {\n  let {\n    checkTimeout,\n    minValues,\n    maxValues,\n    parameters,\n    weightSquare,\n    damping,\n    dampingStepUp,\n    dampingStepDown,\n    maxIterations,\n    errorTolerance,\n    centralDifference,\n    gradientDifference,\n    improvementThreshold,\n  } = checkOptions(data, parameterizedFunction, options);\n\n  let error = errorCalculation(\n    data,\n    parameters,\n    parameterizedFunction,\n    weightSquare,\n  );\n\n  let converged = error <= errorTolerance;\n\n  let iteration = 0;\n  for (; iteration < maxIterations && !converged; iteration++) {\n    let previousError = error;\n\n    let { perturbations, jacobianWeigthResidualError } = step(\n      data,\n      parameters,\n      damping,\n      gradientDifference,\n      parameterizedFunction,\n      centralDifference,\n      weightSquare,\n    );\n\n    for (let k = 0; k < parameters.length; k++) {\n      parameters[k] = Math.min(\n        Math.max(minValues[k], parameters[k] - perturbations.get(k, 0)),\n        maxValues[k],\n      );\n    }\n\n    error = errorCalculation(\n      data,\n      parameters,\n      parameterizedFunction,\n      weightSquare,\n    );\n\n    if (isNaN(error)) break;\n\n    let improvementMetric =\n      (previousError - error) /\n      perturbations\n        .transpose()\n        .mmul(perturbations.mulS(damping).add(jacobianWeigthResidualError))\n        .get(0, 0);\n\n    if (improvementMetric > improvementThreshold) {\n      damping = Math.max(damping / dampingStepDown, 1e-7);\n    } else {\n      error = previousError;\n      damping = Math.min(damping * dampingStepUp, 1e7);\n    }\n\n    if (checkTimeout()) {\n      throw new Error(\n        `The execution time is over to ${options.timeout} seconds`,\n      );\n    }\n\n    converged = error <= errorTolerance;\n  }\n\n  return {\n    parameterValues: parameters,\n    parameterError: error,\n    iterations: iteration,\n  };\n}\n","import LM from 'ml-levenberg-marquardt';\n\nconst LEVENBERG_MARQUARDT = 1;\n\nexport function selectMethod(optimizationOptions = {}) {\n  let { kind, options } = optimizationOptions;\n  kind = getKind(kind);\n  switch (kind) {\n    case LEVENBERG_MARQUARDT:\n      return {\n        algorithm: LM,\n        optimizationOptions: checkOptions(kind, options),\n      };\n    default:\n      throw new Error(`Unknown kind algorithm`);\n  }\n}\n\nfunction checkOptions(kind, options = {}) {\n  // eslint-disable-next-line default-case\n  switch (kind) {\n    case LEVENBERG_MARQUARDT:\n      return Object.assign({}, lmOptions, options);\n  }\n}\n\nfunction getKind(kind) {\n  if (typeof kind !== 'string') return kind;\n  switch (kind.toLowerCase().replace(/[^a-z]/g, '')) {\n    case 'lm':\n    case 'levenbergmarquardt':\n      return LEVENBERG_MARQUARDT;\n    default:\n      throw new Error(`Unknown kind algorithm`);\n  }\n}\n\nconst lmOptions = {\n  damping: 1.5,\n  maxIterations: 100,\n  errorTolerance: 1e-8,\n};\n","import { PseudoVoigt } from 'ml-peak-shape-generator';\n\n/**\n * This function calculates the spectrum as a sum of linear combination of gaussian and lorentzian functions. The pseudo voigt\n * parameters are divided in 4 batches. 1st: centers; 2nd: heights; 3th: widths; 4th: mu's ;\n * @param t Ordinate value\n * @param p Lorentzian parameters\n * @returns {*}\n */\n\nexport function sumOfGaussianLorentzians(p) {\n  return function (t) {\n    let nL = p.length / 4;\n    let result = 0;\n    for (let i = 0; i < nL; i++) {\n      result +=\n        p[i + nL] * PseudoVoigt.fct(t - p[i], p[i + nL * 2], p[i + nL * 3]);\n    }\n    return result;\n  };\n}\n","import { Gaussian } from 'ml-peak-shape-generator';\n/**\n * This function calculates the spectrum as a sum of gaussian functions. The Gaussian\n * parameters are divided in 3 batches. 1st: centers; 2nd: height; 3th: widths;\n * @param t Ordinate values\n * @param p Gaussian parameters\n * @returns {*}\n */\n\nexport function sumOfGaussians(p) {\n  return function (t) {\n    let nL = p.length / 3;\n    let result = 0;\n    for (let i = 0; i < nL; i++) {\n      result += p[i + nL] * Gaussian.fct(t - p[i], p[i + nL * 2]);\n    }\n    return result;\n  };\n}\n","import { Lorentzian } from 'ml-peak-shape-generator';\n\n/**\n * This function calculates the spectrum as a sum of lorentzian functions. The Lorentzian\n * parameters are divided in 3 batches. 1st: centers; 2nd: heights; 3th: widths;\n * @param t Ordinate values\n * @param p Lorentzian parameters\n * @returns {*}\n */\n\nexport function sumOfLorentzians(p) {\n  return function (t) {\n    let nL = p.length / 3;\n    let result = 0;\n    for (let i = 0; i < nL; i++) {\n      result += p[i + nL] * Lorentzian.fct(t - p[i], p[i + nL * 2]);\n    }\n    return result;\n  };\n}\n","import getMaxValue from 'ml-array-max';\n\nimport { selectMethod } from './selectMethod';\nimport { sumOfGaussianLorentzians } from './shapes/sumOfGaussianLorentzians';\nimport { sumOfGaussians } from './shapes/sumOfGaussians';\nimport { sumOfLorentzians } from './shapes/sumOfLorentzians';\n\nconst STATE_INIT = 0;\nconst STATE_MIN = 1;\nconst STATE_MAX = 2;\nconst STATE_GS = 3;\n\nconst keys = ['x', 'y', 'width', 'mu'];\n/**\n * Fits a set of points to the sum of a set of bell functions.\n * @param {object} data - An object containing the x and y data to be fitted.\n * @param {array} peaks - A list of initial parameters to be optimized. e.g. coming from a peak picking [{x, y, width}].\n * @param {object} [options = {}]\n * @param {object} [options.shape={}] - it's specify the kind of shape used to fitting.\n * @param {string} [options.shape.kind = 'gaussian'] - kind of shape; lorentzian, gaussian and pseudovoigt are supported.\n * @param {object} [options.optimization = {}] - it's specify the kind and options of the algorithm use to optimize parameters.\n * @param {object} [options.optimization.kind = 'lm'] - kind of algorithm. By default it's levenberg-marquardt.\n * @param {number} [options.optimization.options.timeout] - maximum time running before break in seconds.\n * @param {object} [options.optimization.options = {}] - options for the specific kind of algorithm.\n * @returns {object} - A object with fitting error and the list of optimized parameters { parameters: [ {x, y, width} ], error } if the kind of shape is pseudoVoigt mu parameter is optimized.\n */\nexport function optimize(data, peaks, options = {}) {\n  let {\n    shape = { kind: 'gaussian' },\n    optimization = {\n      kind: 'lm',\n    },\n  } = options;\n\n  peaks = JSON.parse(JSON.stringify(peaks));\n\n  if (typeof shape.kind !== 'string') {\n    throw new Error('kind should be a string');\n  }\n\n  let kind = shape.kind.toLowerCase().replace(/[^a-z]/g, '');\n\n  let x = data.x;\n  let maxY = getMaxValue(data.y);\n  let y = new Array(x.length);\n  for (let i = 0; i < x.length; i++) {\n    y[i] = data.y[i] / maxY;\n  }\n\n  let nbParams;\n  let paramsFunc;\n  switch (kind) {\n    case 'gaussian':\n      nbParams = 3;\n      paramsFunc = sumOfGaussians;\n      break;\n    case 'lorentzian':\n      nbParams = 3;\n      paramsFunc = sumOfLorentzians;\n      break;\n    case 'pseudovoigt':\n      nbParams = 4;\n      paramsFunc = sumOfGaussianLorentzians;\n      break;\n    default:\n      throw new Error('kind of shape is not supported');\n  }\n\n  let nbShapes = peaks.length;\n  let pInit = new Float64Array(nbShapes * nbParams);\n  let pMin = new Float64Array(nbShapes * nbParams);\n  let pMax = new Float64Array(nbShapes * nbParams);\n  let gradientDifference = new Float64Array(nbShapes * nbParams);\n  let deltaX = Math.abs(data.x[0] - data.x[1]);\n\n  for (let i = 0; i < nbShapes; i++) {\n    let peak = peaks[i];\n    for (let s = 0; s < nbParams; s++) {\n      pInit[i + s * nbShapes] = getValue(s, peak, STATE_INIT, deltaX, maxY);\n      pMin[i + s * nbShapes] = getValue(s, peak, STATE_MIN, deltaX, maxY);\n      pMax[i + s * nbShapes] = getValue(s, peak, STATE_MAX, deltaX, maxY);\n      gradientDifference[i + s * nbShapes] = getValue(\n        s,\n        peak,\n        STATE_GS,\n        deltaX,\n        maxY,\n      );\n    }\n  }\n\n  let { algorithm, optimizationOptions } = selectMethod(optimization);\n\n  optimizationOptions.minValues = pMin;\n  optimizationOptions.maxValues = pMax;\n  optimizationOptions.initialValues = pInit;\n  optimizationOptions.gradientDifference = gradientDifference;\n\n  let pFit = algorithm({ x, y }, paramsFunc, optimizationOptions);\n\n  let { parameterError: error, iterations } = pFit;\n  let result = { error, iterations, peaks };\n  for (let i = 0; i < peaks.length; i++) {\n    pFit.parameterValues[i + peaks.length] *= maxY;\n    for (let s = 0; s < nbParams; s++) {\n      // we modify the optimized parameters\n      peaks[i][keys[s]] = pFit.parameterValues[i + s * peaks.length];\n    }\n  }\n  return result;\n}\n\nfunction getValue(parameterIndex, peak, key, dt, maxY) {\n  let value;\n  switch (parameterIndex) {\n    case 0:\n      value =\n        key === STATE_INIT\n          ? peak.x\n          : key === STATE_GS\n          ? dt / 1000\n          : key === STATE_MIN\n          ? peak.x - dt\n          : peak.x + dt;\n      break;\n    case 1:\n      value =\n        key === STATE_INIT\n          ? peak.y / maxY\n          : key === STATE_GS\n          ? 1e-3\n          : key === STATE_MIN\n          ? 0\n          : 1.5;\n      break;\n    case 2:\n      value =\n        key === STATE_INIT\n          ? peak.width\n          : key === STATE_GS\n          ? dt / 1000\n          : key === STATE_MIN\n          ? peak.width / 4\n          : peak.width * 4;\n      break;\n    default:\n      value =\n        key === STATE_INIT\n          ? 0.5\n          : key === STATE_GS\n          ? 0.01\n          : key === STATE_MIN\n          ? 0\n          : 1;\n  }\n  return value;\n}\n","(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","/**\n * Returns the closest index of a `target` in an ordered array\n * @param {array<Number>} array\n * @param {number} target\n */\n\nexport function xFindClosestIndex(array, target) {\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    } else if (array[middle] > target) {\n      high = middle;\n    } else {\n      return middle;\n    }\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    } else {\n      return low + 1;\n    }\n  } else {\n    return low;\n  }\n}\n","import { xFindClosestIndex } from './xFindClosestIndex';\n\n/**\n * Returns an object with {fromIndex, toIndex} for a specific from / to\n * @param {array} x\n * @param {object} [options={}]\n * @param {number} [options.from] - First value for xyIntegration in the X scale\n * @param {number} [options.fromIndex=0] - First point for xyIntegration\n * @param {number} [options.to] - Last value for xyIntegration in the X scale\n * @param {number} [options.toIndex=x.length-1] - Last point for xyIntegration\n */\n\nexport function xGetFromToIndex(x, options = {}) {\n  let { fromIndex, toIndex, from, to } = options;\n\n  if (fromIndex === undefined) {\n    if (from !== undefined) {\n      fromIndex = xFindClosestIndex(x, from);\n    } else {\n      fromIndex = 0;\n    }\n  }\n  if (toIndex === undefined) {\n    if (to !== undefined) {\n      toIndex = xFindClosestIndex(x, to);\n    } else {\n      toIndex = x.length - 1;\n    }\n  }\n  if (fromIndex > toIndex) [fromIndex, toIndex] = [toIndex, fromIndex];\n  return { fromIndex, toIndex };\n}\n","(function (global, factory) {\n  typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n  typeof define === 'function' && define.amd ? define(['exports'], factory) :\n  (factory((global.d3_array = {})));\n}(this, function (exports) { 'use strict';\n\n  function ascending(a, b) {\n    return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n  }\n\n  function bisector(compare) {\n    if (compare.length === 1) compare = ascendingComparator(compare);\n    return {\n      left: function(a, x, lo, hi) {\n        if (lo == null) lo = 0;\n        if (hi == null) hi = a.length;\n        while (lo < hi) {\n          var mid = lo + hi >>> 1;\n          if (compare(a[mid], x) < 0) lo = mid + 1;\n          else hi = mid;\n        }\n        return lo;\n      },\n      right: function(a, x, lo, hi) {\n        if (lo == null) lo = 0;\n        if (hi == null) hi = a.length;\n        while (lo < hi) {\n          var mid = lo + hi >>> 1;\n          if (compare(a[mid], x) > 0) hi = mid;\n          else lo = mid + 1;\n        }\n        return lo;\n      }\n    };\n  }\n\n  function ascendingComparator(f) {\n    return function(d, x) {\n      return ascending(f(d), x);\n    };\n  }\n\n  var ascendingBisect = bisector(ascending);\n  var bisectRight = ascendingBisect.right;\n  var bisectLeft = ascendingBisect.left;\n\n  function descending(a, b) {\n    return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n  }\n\n  function number$1(x) {\n    return x === null ? NaN : +x;\n  }\n\n  function variance(array, f) {\n    var n = array.length,\n        m = 0,\n        a,\n        d,\n        s = 0,\n        i = -1,\n        j = 0;\n\n    if (f == null) {\n      while (++i < n) {\n        if (!isNaN(a = number$1(array[i]))) {\n          d = a - m;\n          m += d / ++j;\n          s += d * (a - m);\n        }\n      }\n    }\n\n    else {\n      while (++i < n) {\n        if (!isNaN(a = number$1(f(array[i], i, array)))) {\n          d = a - m;\n          m += d / ++j;\n          s += d * (a - m);\n        }\n      }\n    }\n\n    if (j > 1) return s / (j - 1);\n  }\n\n  function deviation(array, f) {\n    var v = variance(array, f);\n    return v ? Math.sqrt(v) : v;\n  }\n\n  function extent(array, f) {\n    var i = -1,\n        n = array.length,\n        a,\n        b,\n        c;\n\n    if (f == null) {\n      while (++i < n) if ((b = array[i]) != null && b >= b) { a = c = b; break; }\n      while (++i < n) if ((b = array[i]) != null) {\n        if (a > b) a = b;\n        if (c < b) c = b;\n      }\n    }\n\n    else {\n      while (++i < n) if ((b = f(array[i], i, array)) != null && b >= b) { a = c = b; break; }\n      while (++i < n) if ((b = f(array[i], i, array)) != null) {\n        if (a > b) a = b;\n        if (c < b) c = b;\n      }\n    }\n\n    return [a, c];\n  }\n\n  function constant(x) {\n    return function() {\n      return x;\n    };\n  }\n\n  function identity(x) {\n    return x;\n  }\n\n  function range(start, stop, step) {\n    start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step;\n\n    var i = -1,\n        n = Math.max(0, Math.ceil((stop - start) / step)) | 0,\n        range = new Array(n);\n\n    while (++i < n) {\n      range[i] = start + i * step;\n    }\n\n    return range;\n  }\n\n  var e10 = Math.sqrt(50);\n  var e5 = Math.sqrt(10);\n  var e2 = Math.sqrt(2);\n  function ticks(start, stop, count) {\n    var step = tickStep(start, stop, count);\n    return range(\n      Math.ceil(start / step) * step,\n      Math.floor(stop / step) * step + step / 2, // inclusive\n      step\n    );\n  }\n\n  function tickStep(start, stop, count) {\n    var step0 = Math.abs(stop - start) / Math.max(0, count),\n        step1 = Math.pow(10, Math.floor(Math.log(step0) / Math.LN10)),\n        error = step0 / step1;\n    if (error >= e10) step1 *= 10;\n    else if (error >= e5) step1 *= 5;\n    else if (error >= e2) step1 *= 2;\n    return stop < start ? -step1 : step1;\n  }\n\n  function sturges(values) {\n    return Math.ceil(Math.log(values.length) / Math.LN2) + 1;\n  }\n\n  function number(x) {\n    return +x;\n  }\n\n  function histogram() {\n    var value = identity,\n        domain = extent,\n        threshold = sturges;\n\n    function histogram(data) {\n      var i,\n          n = data.length,\n          x,\n          values = new Array(n);\n\n      // Coerce values to numbers.\n      for (i = 0; i < n; ++i) {\n        values[i] = +value(data[i], i, data);\n      }\n\n      var xz = domain(values),\n          x0 = +xz[0],\n          x1 = +xz[1],\n          tz = threshold(values, x0, x1);\n\n      // Convert number of thresholds into uniform thresholds.\n      if (!Array.isArray(tz)) tz = ticks(x0, x1, +tz);\n\n      // Coerce thresholds to numbers, ignoring any outside the domain.\n      var m = tz.length;\n      for (i = 0; i < m; ++i) tz[i] = +tz[i];\n      while (tz[0] <= x0) tz.shift(), --m;\n      while (tz[m - 1] >= x1) tz.pop(), --m;\n\n      var bins = new Array(m + 1),\n          bin;\n\n      // Initialize bins.\n      for (i = 0; i <= m; ++i) {\n        bin = bins[i] = [];\n        bin.x0 = i > 0 ? tz[i - 1] : x0;\n        bin.x1 = i < m ? tz[i] : x1;\n      }\n\n      // Assign data to bins by value, ignoring any outside the domain.\n      for (i = 0; i < n; ++i) {\n        x = values[i];\n        if (x0 <= x && x <= x1) {\n          bins[bisectRight(tz, x, 0, m)].push(data[i]);\n        }\n      }\n\n      return bins;\n    }\n\n    histogram.value = function(_) {\n      return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(+_), histogram) : value;\n    };\n\n    histogram.domain = function(_) {\n      return arguments.length ? (domain = typeof _ === \"function\" ? _ : constant([+_[0], +_[1]]), histogram) : domain;\n    };\n\n    histogram.thresholds = function(_) {\n      if (!arguments.length) return threshold;\n      threshold = typeof _ === \"function\" ? _\n          : Array.isArray(_) ? constant(Array.prototype.map.call(_, number))\n          : constant(+_);\n      return histogram;\n    };\n\n    return histogram;\n  }\n\n  function quantile(array, p, f) {\n    if (f == null) f = number$1;\n    if (!(n = array.length)) return;\n    if ((p = +p) <= 0 || n < 2) return +f(array[0], 0, array);\n    if (p >= 1) return +f(array[n - 1], n - 1, array);\n    var n,\n        h = (n - 1) * p,\n        i = Math.floor(h),\n        a = +f(array[i], i, array),\n        b = +f(array[i + 1], i + 1, array);\n    return a + (b - a) * (h - i);\n  }\n\n  function freedmanDiaconis(values, min, max) {\n    values.sort(ascending);\n    return Math.ceil((max - min) / (2 * (quantile(values, 0.75) - quantile(values, 0.25)) * Math.pow(values.length, -1 / 3)));\n  }\n\n  function scott(values, min, max) {\n    return Math.ceil((max - min) / (3.5 * deviation(values) * Math.pow(values.length, -1 / 3)));\n  }\n\n  function max(array, f) {\n    var i = -1,\n        n = array.length,\n        a,\n        b;\n\n    if (f == null) {\n      while (++i < n) if ((b = array[i]) != null && b >= b) { a = b; break; }\n      while (++i < n) if ((b = array[i]) != null && b > a) a = b;\n    }\n\n    else {\n      while (++i < n) if ((b = f(array[i], i, array)) != null && b >= b) { a = b; break; }\n      while (++i < n) if ((b = f(array[i], i, array)) != null && b > a) a = b;\n    }\n\n    return a;\n  }\n\n  function mean(array, f) {\n    var s = 0,\n        n = array.length,\n        a,\n        i = -1,\n        j = n;\n\n    if (f == null) {\n      while (++i < n) if (!isNaN(a = number$1(array[i]))) s += a; else --j;\n    }\n\n    else {\n      while (++i < n) if (!isNaN(a = number$1(f(array[i], i, array)))) s += a; else --j;\n    }\n\n    if (j) return s / j;\n  }\n\n  function median(array, f) {\n    var numbers = [],\n        n = array.length,\n        a,\n        i = -1;\n\n    if (f == null) {\n      while (++i < n) if (!isNaN(a = number$1(array[i]))) numbers.push(a);\n    }\n\n    else {\n      while (++i < n) if (!isNaN(a = number$1(f(array[i], i, array)))) numbers.push(a);\n    }\n\n    return quantile(numbers.sort(ascending), 0.5);\n  }\n\n  function merge(arrays) {\n    var n = arrays.length,\n        m,\n        i = -1,\n        j = 0,\n        merged,\n        array;\n\n    while (++i < n) j += arrays[i].length;\n    merged = new Array(j);\n\n    while (--n >= 0) {\n      array = arrays[n];\n      m = array.length;\n      while (--m >= 0) {\n        merged[--j] = array[m];\n      }\n    }\n\n    return merged;\n  }\n\n  function min(array, f) {\n    var i = -1,\n        n = array.length,\n        a,\n        b;\n\n    if (f == null) {\n      while (++i < n) if ((b = array[i]) != null && b >= b) { a = b; break; }\n      while (++i < n) if ((b = array[i]) != null && a > b) a = b;\n    }\n\n    else {\n      while (++i < n) if ((b = f(array[i], i, array)) != null && b >= b) { a = b; break; }\n      while (++i < n) if ((b = f(array[i], i, array)) != null && a > b) a = b;\n    }\n\n    return a;\n  }\n\n  function pairs(array) {\n    var i = 0, n = array.length - 1, p = array[0], pairs = new Array(n < 0 ? 0 : n);\n    while (i < n) pairs[i] = [p, p = array[++i]];\n    return pairs;\n  }\n\n  function permute(array, indexes) {\n    var i = indexes.length, permutes = new Array(i);\n    while (i--) permutes[i] = array[indexes[i]];\n    return permutes;\n  }\n\n  function scan(array, compare) {\n    if (!(n = array.length)) return;\n    var i = 0,\n        n,\n        j = 0,\n        xi,\n        xj = array[j];\n\n    if (!compare) compare = ascending;\n\n    while (++i < n) if (compare(xi = array[i], xj) < 0 || compare(xj, xj) !== 0) xj = xi, j = i;\n\n    if (compare(xj, xj) === 0) return j;\n  }\n\n  function shuffle(array, i0, i1) {\n    var m = (i1 == null ? array.length : i1) - (i0 = i0 == null ? 0 : +i0),\n        t,\n        i;\n\n    while (m) {\n      i = Math.random() * m-- | 0;\n      t = array[m + i0];\n      array[m + i0] = array[i + i0];\n      array[i + i0] = t;\n    }\n\n    return array;\n  }\n\n  function sum(array, f) {\n    var s = 0,\n        n = array.length,\n        a,\n        i = -1;\n\n    if (f == null) {\n      while (++i < n) if (a = +array[i]) s += a; // Note: zero and null are equivalent.\n    }\n\n    else {\n      while (++i < n) if (a = +f(array[i], i, array)) s += a;\n    }\n\n    return s;\n  }\n\n  function transpose(matrix) {\n    if (!(n = matrix.length)) return [];\n    for (var i = -1, m = min(matrix, length), transpose = new Array(m); ++i < m;) {\n      for (var j = -1, n, row = transpose[i] = new Array(n); ++j < n;) {\n        row[j] = matrix[j][i];\n      }\n    }\n    return transpose;\n  }\n\n  function length(d) {\n    return d.length;\n  }\n\n  function zip() {\n    return transpose(arguments);\n  }\n\n  var version = \"0.7.1\";\n\n  exports.version = version;\n  exports.bisect = bisectRight;\n  exports.bisectRight = bisectRight;\n  exports.bisectLeft = bisectLeft;\n  exports.ascending = ascending;\n  exports.bisector = bisector;\n  exports.descending = descending;\n  exports.deviation = deviation;\n  exports.extent = extent;\n  exports.histogram = histogram;\n  exports.thresholdFreedmanDiaconis = freedmanDiaconis;\n  exports.thresholdScott = scott;\n  exports.thresholdSturges = sturges;\n  exports.max = max;\n  exports.mean = mean;\n  exports.median = median;\n  exports.merge = merge;\n  exports.min = min;\n  exports.pairs = pairs;\n  exports.permute = permute;\n  exports.quantile = quantile;\n  exports.range = range;\n  exports.scan = scan;\n  exports.shuffle = shuffle;\n  exports.sum = sum;\n  exports.ticks = ticks;\n  exports.tickStep = tickStep;\n  exports.transpose = transpose;\n  exports.variance = variance;\n  exports.zip = zip;\n\n}));","/**\n * Group peaks based on factor and add group property in peaks\n * @param {array} peakList\n * @param {number} factor\n */\n\nexport function groupPeaks(peakList, factor = 1) {\n  if (peakList.length === 0) return [];\n  let peaks = peakList.sort((a, b) => a.x - b.x);\n\n  let previousPeak = { x: Number.NEGATIVE_INFINITY, width: 1 };\n  let currentGroup = [previousPeak];\n  let groups = [];\n\n  for (let peak of peaks) {\n    if (\n      (peak.x - previousPeak.x) / (peak.width + previousPeak.width) <=\n      factor / 2\n    ) {\n      currentGroup.push(peak);\n    } else {\n      currentGroup = [peak];\n      groups.push(currentGroup);\n    }\n    peak.group = groups.length - 1;\n    previousPeak = peak;\n  }\n\n  return groups;\n}\n","import { optimize } from 'ml-spectra-fitting';\nimport { xGetFromToIndex } from 'ml-spectra-processing';\n\nimport { groupPeaks } from './groupPeaks';\n\n/**\n * Optimize the position (x), max intensity (y), full width at half maximum (width)\n * and the ratio of gaussian contribution (mu) if it's required. It supports three kind of shapes: gaussian, lorentzian and pseudovoigt\n * @param {object} data - An object containing the x and y data to be fitted.\n * @param {Array} peakList - A list of initial parameters to be optimized. e.g. coming from a peak picking [{x, y, width}].\n * @param {object} [options = {}] -\n * @param {number} [options.factorWidth = 1] - times of width to group peaks.\n * @param {number} [options.factorLimits = 2] - times of width to use to optimize peaks\n * @param {object} [options.shape={}] - it's specify the kind of shape used to fitting.\n * @param {string} [options.shape.kind='gaussian'] - kind of shape; lorentzian, gaussian and pseudovoigt are supported.\n * @param {string} [options.shape.options={}] - options depending the kind of shape\n * @param {object} [options.optimization={}] - it's specify the kind and options of the algorithm use to optimize parameters.\n * @param {string} [options.optimization.kind='lm'] - kind of algorithm. By default it's levenberg-marquardt.\n * @param {object} [options.optimization.options={}] - options for the specific kind of algorithm.\n * @param {number} [options.optimization.options.timeout=10] - maximum time running before break in seconds.\n */\n\nexport function optimizePeaks(data, peakList, options = {}) {\n  const {\n    factorWidth = 1,\n    factorLimits = 2,\n    shape = {\n      kind: 'gaussian',\n    },\n    optimization = {\n      kind: 'lm',\n      options: {\n        timeout: 10,\n      },\n    },\n  } = options;\n\n  if (data.x[0] > data.x[1]) {\n    data.x.reverse();\n    data.y.reverse();\n  }\n\n  let groups = groupPeaks(peakList, factorWidth);\n\n  let results = [];\n  for (const peaks of groups) {\n    const firstPeak = peaks[0];\n    const lastPeak = peaks[peaks.length - 1];\n\n    const from = firstPeak.x - firstPeak.width * factorLimits;\n    const to = lastPeak.x + lastPeak.width * factorLimits;\n    const { fromIndex, toIndex } = xGetFromToIndex(data.x, { from, to });\n    // Multiple peaks\n    const currentRange = {\n      x: data.x.slice(fromIndex, toIndex),\n      y: data.y.slice(fromIndex, toIndex),\n    };\n    if (currentRange.x.length > 5) {\n      let { peaks: optimizedPeaks } = optimize(currentRange, peaks, {\n        shape,\n        optimization,\n      });\n      results = results.concat(optimizedPeaks);\n    } else {\n      results = results.concat(peaks);\n    }\n  }\n  return results;\n}\n","import { optimize } from 'ml-spectra-fitting';\n\n/**\n * This function try to join the peaks that seems to belong to a broad signal in a single broad peak.\n * @param {Array} peakList - A list of initial parameters to be optimized. e.g. coming from a peak picking [{x, y, width}].\n * @param {object} [options = {}] - options\n * @param {number} [options.width=0.25] - width limit to join peaks.\n * @param {object} [options.shape={}] - it's specify the kind of shape used to fitting.\n * @param {string} [options.shape.kind = 'gaussian'] - kind of shape; lorentzian, gaussian and pseudovoigt are supported.\n * @param {object} [options.optimization = {}] - it's specify the kind and options of the algorithm use to optimize parameters.\n * @param {string} [options.optimization.kind = 'lm'] - kind of algorithm. By default it's levenberg-marquardt.\n * @param {number} [options.optimization.options.timeout = 10] - maximum time running before break in seconds.\n * @param {object} [options.optimization.options = {}] - options for the specific kind of algorithm.\n */\nexport function joinBroadPeaks(peakList, options = {}) {\n  let {\n    width = 0.25,\n    shape = { kind: 'gaussian' },\n    optimization = { kind: 'lm', timeout: 10 },\n  } = options;\n  let broadLines = [];\n  // Optimize the possible broad lines\n  let max = 0;\n\n  let maxI = 0;\n\n  let count = 1;\n  for (let i = peakList.length - 1; i >= 0; i--) {\n    if (peakList[i].soft) {\n      broadLines.push(peakList.splice(i, 1)[0]);\n    }\n  }\n  // Push a feke peak\n  broadLines.push({ x: Number.MAX_VALUE });\n\n  let candidates = { x: [broadLines[0].x], y: [broadLines[0].y] };\n  let indexes = [0];\n  for (let i = 1; i < broadLines.length; i++) {\n    if (Math.abs(broadLines[i - 1].x - broadLines[i].x) < width) {\n      candidates.x.push(broadLines[i].x);\n      candidates.y.push(broadLines[i].y);\n      if (broadLines[i].y > max) {\n        max = broadLines[i].y;\n        maxI = i;\n      }\n      indexes.push(i);\n      count++;\n    } else {\n      if (count > 2) {\n        let fitted = optimize(\n          candidates,\n          [\n            {\n              x: broadLines[maxI].x,\n              y: max,\n              width: Math.abs(\n                candidates.x[0] - candidates.x[candidates.x.length - 1],\n              ),\n            },\n          ],\n          { shape, optimization },\n        );\n        let { peaks: peak } = fitted;\n        peak[0].index = Math.floor(\n          indexes.reduce((a, b) => a + b, 0) / indexes.length,\n        );\n        peak[0].soft = false;\n        peakList.push(peak[0]);\n      } else {\n        // Put back the candidates to the signals list\n        indexes.forEach((index) => {\n          peakList.push(broadLines[index]);\n        });\n      }\n      candidates = { x: [broadLines[i].x], y: [broadLines[i].y] };\n      indexes = [i];\n      max = broadLines[i].y;\n      maxI = i;\n      count = 1;\n    }\n  }\n  peakList.sort(function (a, b) {\n    return a.x - b.x;\n  });\n\n  return peakList;\n}\n","/**\n * This method will allow to enlarge peaks and prevent overlap between peaks\n * Because peaks may not be symmetric after we add 2 properties, from and to.\n * @param {Array} peakList\n * @param {object} [options={}]\n * @param {number} [options.factor=2]\n * @param {boolean} [options.overlap=false] by default we don't allow overlap\n * @return {Array} peakList\n */\nexport function broadenPeaks(peakList, options = {}) {\n  const { factor = 2, overlap = false } = options;\n\n  for (let peak of peakList) {\n    if (!peak.right || !peak.left) {\n      peak.from = peak.x - (peak.width / 2) * factor;\n      peak.to = peak.x + (peak.width / 2) * factor;\n    } else {\n      peak.from = peak.x - (peak.x - peak.left.x) * factor;\n      peak.to = peak.x + (peak.right.x - peak.x) * factor;\n    }\n  }\n\n  if (!overlap) {\n    for (let i = 0; i < peakList.length - 1; i++) {\n      let peak = peakList[i];\n      let nextPeak = peakList[i + 1];\n      if (peak.to > nextPeak.from) {\n        peak.to = nextPeak.from = (peak.to + nextPeak.from) / 2;\n      }\n    }\n  }\n\n  for (let peak of peakList) {\n    peak.width = peak.to - peak.from;\n  }\n\n  return peakList;\n}\n","'use strict';\n\n/**\n * @param {object}   [options={}]\n * @param {object}   [options.min=1]\n * @param {object}   [options.max=10]\n * @param {object}   [options.low=-1]\n * @param {object}   [options.high=1]\n * @param {object}   [options.precision=100]\n */\n\nconst NEUTRON_MASS = 1;\n\nfunction appendPeaksCharge(peaks, options = {}) {\n  let {\n    precision = 100,\n    low = -1,\n    high = 1,\n    min: minCharge = 1,\n    max: maxCharge = 10,\n  } = options;\n  let fromCharge =\n    minCharge * maxCharge > 0\n      ? Math.round(Math.min(Math.abs(minCharge), Math.abs(maxCharge)))\n      : 1;\n  let toCharge = Math.round(Math.max(Math.abs(minCharge), Math.abs(maxCharge)));\n\n  let fromIsotope = Math.ceil(low);\n  let toIsotope = Math.floor(high);\n  let numberIsotopes = toIsotope - fromIsotope + 1;\n  let isotopeIntensity = 1 / numberIsotopes;\n  let fromIndex = 0;\n  let localFromIndex = 0;\n  let localToIndex = 0;\n  for (let peakIndex = 0; peakIndex < peaks.length; peakIndex++) {\n    let peak = peaks[peakIndex];\n\n    let targetMass = peak.x;\n    localFromIndex = fromIndex;\n    let bestCharge = fromCharge;\n    let bestChargeMatch = 0;\n    for (let charge = fromCharge; charge < toCharge + 1; charge++) {\n      let theoreticalPositions = {\n        x: [],\n        y: new Array(numberIsotopes).fill(isotopeIntensity),\n      };\n\n      let massRange = precision * 1e-6 * targetMass;\n      for (\n        let isotopePosition = fromIsotope;\n        isotopePosition < toIsotope + 1;\n        isotopePosition++\n      ) {\n        theoreticalPositions.x.push(\n          targetMass + (isotopePosition * NEUTRON_MASS) / charge,\n        );\n      }\n      let fromMass = targetMass + low / Math.abs(charge) - massRange;\n      let toMass = targetMass + high / Math.abs(charge) + massRange;\n\n      if (charge === 1) {\n        // we may move the fromIndex\n        while (peaks[fromIndex].x < fromMass) {\n          fromIndex++;\n        }\n      }\n\n      /*\n       * Find the from / to index for the specific peak and specific charge\n       */\n      while (peaks[localFromIndex].x < fromMass) {\n        localFromIndex++;\n      }\n      localToIndex = localFromIndex;\n      let localHeightSum = 0;\n      while (localToIndex < peaks.length && peaks[localToIndex].x < toMass) {\n        localHeightSum += peaks[localToIndex].y;\n        localToIndex++;\n      }\n      localToIndex--;\n\n      //  console.log({ localFromIndex, localToIndex });\n      /*\n        Calculate the overlap for a specific peak and specific charge\n      */\n      let currentTheoreticalPosition = 0;\n      let theoreticalMaxValue = 1 / numberIsotopes;\n      let totalMatch = 0;\n\n      for (let index = localFromIndex; index <= localToIndex; index++) {\n        let minMass =\n          theoreticalPositions.x[currentTheoreticalPosition] -\n          massRange / charge;\n        let maxMass =\n          theoreticalPositions.x[currentTheoreticalPosition] +\n          massRange / charge;\n\n        while (maxMass < peaks[index].x) {\n          currentTheoreticalPosition++;\n          theoreticalMaxValue = 1 / numberIsotopes;\n          minMass =\n            theoreticalPositions.x[currentTheoreticalPosition] -\n            massRange / charge;\n          maxMass =\n            theoreticalPositions.x[currentTheoreticalPosition] +\n            massRange / charge;\n        }\n\n        while (index < peaks.length && peaks[index].x < minMass) {\n          index++;\n        }\n\n        //    console.log({ index, minMass, maxMass, massRange, localHeightSum });\n        if (index < peaks.length && peaks[index].x <= maxMass) {\n          while (index < peaks.length && peaks[index].x <= maxMass) {\n            if (peaks[index].x >= minMass && peaks[index].x <= maxMass) {\n              let value = peaks[index].y / localHeightSum;\n              //      console.log({ theoreticalMaxValue, value });\n              value = Math.min(theoreticalMaxValue, value);\n\n              theoreticalMaxValue -= value;\n              totalMatch += value;\n            }\n            index++;\n          }\n          index--;\n        }\n\n        if (totalMatch > bestChargeMatch) {\n          bestCharge = charge;\n          bestChargeMatch = totalMatch;\n        }\n      }\n    }\n    peak.charge = bestCharge;\n  }\n  return peaks;\n}\n\nmodule.exports = appendPeaksCharge;\n","'use strict';\n\nconst gsd = require('ml-gsd').gsd;\n\nconst appendPeaksCharge = require('./appendPeaksCharge');\n\n/**\n * Filter the array of peaks\n * @param {Spectrum} spectrum - array of all the peaks\n * @param {object} [options={}]\n * @param {object} [options.charge={}]\n * @param {number} [options.charge.min=1]\n * @param {number} [options.charge.max=10]\n * @param {number} [options.charge.low=-1]\n * @param {number} [options.charge.high=1]\n * @param {number} [options.charge.precision=30]\n * @returns {array} - copy of peaks with 'close' annotation\n */\n\nfunction peakPicking(spectrum, options = {}) {\n  const { charge: chargeOptions = {} } = options;\n  if (!spectrum.peaks) {\n    if (spectrum.isContinuous()) {\n      spectrum.peaks = gsd(spectrum.data, {\n        noiseLevel: 0,\n        minMaxRatio: 0.00025, // Threshold to determine if a given peak should be considered as a noise\n        realTopDetection: true,\n        maxCriteria: true, // inverted:false\n        smoothY: false,\n        sgOptions: { windowSize: 7, polynomial: 3 },\n      });\n    } else {\n      spectrum.peaks = [];\n      let data = spectrum.data;\n      for (let i = 0; i < data.x.length; i++) {\n        spectrum.peaks.push({\n          x: data.x[i],\n          y: data.y[i],\n          width: 0,\n        });\n      }\n    }\n    // required and linked to https://github.com/mljs/global-spectral-deconvolution/issues/17\n    spectrum.peaks = spectrum.peaks.filter(\n      (peak) => !isNaN(peak.x) && !isNaN(peak.y),\n    );\n    appendPeaksCharge(spectrum.peaks, chargeOptions);\n  }\n\n  return spectrum.peaks;\n}\n\nmodule.exports = peakPicking;\n","'use strict';\n\nfunction _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }\n\nvar isArray = _interopDefault(require('is-any-array'));\n\nfunction min(input, options = {}) {\r\n  if (!isArray(input)) {\r\n    throw new TypeError('input must be an array');\r\n  }\r\n\r\n  if (input.length === 0) {\r\n    throw new TypeError('input must not be empty');\r\n  }\r\n\r\n  const { fromIndex = 0, toIndex = input.length } = options;\r\n\r\n  if (\r\n    fromIndex < 0 ||\r\n    fromIndex >= input.length ||\r\n    !Number.isInteger(fromIndex)\r\n  ) {\r\n    throw new Error('fromIndex must be a positive integer smaller than length');\r\n  }\r\n\r\n  if (\r\n    toIndex <= fromIndex ||\r\n    toIndex > input.length ||\r\n    !Number.isInteger(toIndex)\r\n  ) {\r\n    throw new Error(\r\n      'toIndex must be an integer greater than fromIndex and at most equal to length',\r\n    );\r\n  }\r\n\r\n  let minValue = input[fromIndex];\r\n  for (let i = fromIndex + 1; i < toIndex; i++) {\r\n    if (input[i] < minValue) minValue = input[i];\r\n  }\r\n  return minValue;\r\n}\n\nmodule.exports = min;\n","'use strict';\n\nconst toString = Object.prototype.toString;\n\nfunction isAnyArray(object) {\n  return toString.call(object).endsWith('Array]');\n}\n\nmodule.exports = isAnyArray;\n","export default function maybeToPrecision(value, digits) {\n  if (value < 0) {\n    value = 0 - value;\n    if (typeof digits === 'number') {\n      return `- ${value.toPrecision(digits)}`;\n    } else {\n      return `- ${value.toString()}`;\n    }\n  } else {\n    if (typeof digits === 'number') {\n      return value.toPrecision(digits);\n    } else {\n      return value.toString();\n    }\n  }\n}\n","import isAnyArray from 'is-any-array';\n\nexport default function checkArraySize(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","import isAnyArray from 'is-any-array';\n\nexport { default as maybeToPrecision } from './maybeToPrecision';\nexport { default as checkArrayLength } from './checkArrayLength';\nexport default class BaseRegression {\n  constructor() {\n    if (new.target === BaseRegression) {\n      throw new Error('BaseRegression must be subclassed');\n    }\n  }\n\n  predict(x) {\n    if (typeof x === 'number') {\n      return this._predict(x);\n    } else if (isAnyArray(x)) {\n      const y = [];\n      for (let i = 0; i < x.length; i++) {\n        y.push(this._predict(x[i]));\n      }\n      return y;\n    } else {\n      throw new TypeError('x must be a number or array');\n    }\n  }\n\n  _predict() {\n    throw new Error('_predict must be implemented');\n  }\n\n  train() {\n    // Do nothing for this package\n  }\n\n  toString() {\n    return '';\n  }\n\n  toLaTeX() {\n    return '';\n  }\n\n  /**\n   * Return the correlation coefficient of determination (r) and chi-square.\n   * @param {Array<number>} x\n   * @param {Array<number>} y\n   * @return {object}\n   */\n  score(x, y) {\n    if (!isAnyArray(x) || !isAnyArray(y) || x.length !== y.length) {\n      throw new Error('x and y must be arrays of the same length');\n    }\n\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\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\n    const r =\n      (n * xY - xSum * ySum) /\n      Math.sqrt((n * xSquared - xSum * xSum) * (n * ySquared - ySum * ySum));\n\n    return {\n      r: r,\n      r2: r * r,\n      chi2: chi2,\n      rmsd: Math.sqrt(rmsd / n),\n    };\n  }\n}\n","import BaseRegression, {\n  checkArrayLength,\n  maybeToPrecision\n} from 'ml-regression-base';\n\nexport default class SimpleLinearRegression extends BaseRegression {\n  constructor(x, y) {\n    super();\n    if (x === true) {\n      this.slope = y.slope;\n      this.intercept = y.intercept;\n      this.coefficients = [y.intercept, y.slope];\n    } else {\n      checkArrayLength(x, y);\n      regress(this, x, y);\n    }\n  }\n\n  toJSON() {\n    return {\n      name: 'simpleLinearRegression',\n      slope: this.slope,\n      intercept: this.intercept\n    };\n  }\n\n  _predict(x) {\n    return this.slope * x + this.intercept;\n  }\n\n  computeX(y) {\n    return (y - this.intercept) / this.slope;\n  }\n\n  toString(precision) {\n    let result = 'f(x) = ';\n    if (this.slope !== 0) {\n      const xFactor = maybeToPrecision(this.slope, precision);\n      result += `${xFactor === '1' ? '' : `${xFactor} * `}x`;\n      if (this.intercept !== 0) {\n        const absIntercept = Math.abs(this.intercept);\n        const operator = absIntercept === this.intercept ? '+' : '-';\n        result += ` ${operator} ${maybeToPrecision(absIntercept, precision)}`;\n      }\n    } else {\n      result += maybeToPrecision(this.intercept, precision);\n    }\n    return result;\n  }\n\n  toLaTeX(precision) {\n    return this.toString(precision);\n  }\n\n  static load(json) {\n    if (json.name !== 'simpleLinearRegression') {\n      throw new TypeError('not a SLR model');\n    }\n    return new SimpleLinearRegression(true, json);\n  }\n}\n\nfunction regress(slr, x, y) {\n  const n = x.length;\n  let xSum = 0;\n  let ySum = 0;\n\n  let xSquared = 0;\n  let xY = 0;\n\n  for (let i = 0; i < n; i++) {\n    xSum += x[i];\n    ySum += y[i];\n    xSquared += x[i] * x[i];\n    xY += x[i] * y[i];\n  }\n\n  const numerator = n * xY - xSum * ySum;\n  slr.slope = numerator / (n * xSquared - xSum * xSum);\n  slr.intercept = (1 / n) * ySum - slr.slope * (1 / n) * xSum;\n  slr.coefficients = [slr.intercept, slr.slope];\n}\n","'use strict';\n\nfunction _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }\n\nvar BaseRegression = require('ml-regression-base');\nvar BaseRegression__default = _interopDefault(BaseRegression);\nvar SimpleLinearRegression = _interopDefault(require('ml-regression-simple-linear'));\n\nclass PowerRegression extends BaseRegression__default {\n  constructor(x, y) {\n    super();\n    if (x === true) {\n      // reloading model\n      this.A = y.A;\n      this.B = y.B;\n    } else {\n      BaseRegression.checkArrayLength(x, y);\n      regress(this, x, y);\n    }\n  }\n\n  _predict(newInputs) {\n    return this.A * Math.pow(newInputs, this.B);\n  }\n\n  toJSON() {\n    return {\n      name: 'powerRegression',\n      A: this.A,\n      B: this.B\n    };\n  }\n\n  toString(precision) {\n    return `f(x) = ${BaseRegression.maybeToPrecision(\n      this.A,\n      precision\n    )} * x^${BaseRegression.maybeToPrecision(this.B, precision)}`;\n  }\n\n  toLaTeX(precision) {\n    let latex = '';\n    if (this.B >= 0) {\n      latex = `f(x) = ${BaseRegression.maybeToPrecision(\n        this.A,\n        precision\n      )}x^{${BaseRegression.maybeToPrecision(this.B, precision)}}`;\n    } else {\n      latex = `f(x) = \\\\frac{${BaseRegression.maybeToPrecision(\n        this.A,\n        precision\n      )}}{x^{${BaseRegression.maybeToPrecision(-this.B, precision)}}}`;\n    }\n    latex = latex.replace(/e([+-]?[0-9]+)/g, 'e^{$1}');\n    return latex;\n  }\n\n  static load(json) {\n    if (json.name !== 'powerRegression') {\n      throw new TypeError('not a power regression model');\n    }\n    return new PowerRegression(true, json);\n  }\n}\n\nfunction regress(pr, x, y) {\n  const n = x.length;\n  const xl = new Array(n);\n  const yl = new Array(n);\n  for (let i = 0; i < n; i++) {\n    xl[i] = Math.log(x[i]);\n    yl[i] = Math.log(y[i]);\n  }\n\n  const linear = new SimpleLinearRegression(xl, yl);\n  pr.A = Math.exp(linear.intercept);\n  pr.B = linear.slope;\n}\n\nmodule.exports = PowerRegression;\n","'use strict';\n\nconst max = require('ml-array-max/lib/index');\nconst min = require('ml-array-min/lib/index');\nconst Regression = require('ml-regression-power/lib/index.js');\n\nfunction peaksWidth(peaks) {\n  let xs = peaks.map((peak) => peak.x);\n  let widths = peaks.map((peak) => peak.width);\n\n  if (xs.length < 2) {\n    throw new Error(\n      `peaksWidth: not enough peaks (less than 2) for automatic width calculation: ${xs.length}`,\n    );\n  }\n  let regression = new Regression(xs, widths, {\n    computeQuality: true,\n    computeCoefficient: true,\n  });\n\n  if (isNaN(regression.A) || isNaN(regression.B)) {\n    throw new Error('peaksWidth: can not calculate regression');\n  }\n\n  let from = min(xs);\n  let to = max(xs);\n\n  let regressionChart = { x: [], y: [] };\n  for (let x = from; x <= to; x += (to - from) / 1000) {\n    regressionChart.x.push(x);\n    regressionChart.y.push(regression.predict(x));\n  }\n  return {\n    widths: {\n      x: xs,\n      y: widths,\n    },\n    fit: regressionChart,\n    score: regression.score(xs, widths),\n    // eslint-disable-next-line no-new-func\n    predictFct: regression.predict.bind(regression),\n    tex: regression.toLaTeX(3),\n    A: regression.A,\n    B: regression.B,\n    predictFctString: `${regression.A} * mass ** ${regression.B}`,\n  };\n}\n\nmodule.exports = peaksWidth;\n","'use strict';\n\n/**\n *\n * @param {array} bestPeaks\n * @param {object} [options={}]\n * @param {array} [options.mfColors={}]\n * @param {number} [options.numberDigits=5]\n * @param {number} [options.numberMFs=0]\n * @param {boolean} [options.showMF=false]\n * @param {array} [options.mfColors={}]\n * @param {number} [options.charge=1]\n * @param {number} [options.shift=0]\n * @param {object} [options.mfPrefs]\n * @param {number} [options.displayCharge=true]\n *\n */\n\nfunction getPeaksAnnotation(bestPeaks, options = {}) {\n  const emdb = new (require('emdb'))();\n\n  options = Object.assign({ limit: 5, precision: 100 }, options);\n\n  let {\n    numberDigits = 5,\n    shift = 0,\n    showMF = false,\n    numberMFs = 0,\n    charge = 1,\n    mfPrefs = {},\n    displayCharge = true,\n    mfColors = [\n      { limit: 3, color: 'green' },\n      { limit: 20, color: 'lightgreen' },\n      { limit: 50, color: 'lightorange' },\n    ],\n  } = options;\n  if (showMF && !numberMFs) numberMFs = 1;\n  let annotations = [];\n  bestPeaks.sort((a, b) => (a.close ? -1 : b.close ? 1 : 0));\n  for (let peak of bestPeaks) {\n    let annotation;\n    if (peak.close) {\n      annotation = {\n        type: 'line',\n        _highlight: peak._highlight,\n        info: peak,\n        position: [\n          {\n            y: peak.y,\n            dy: '-5px',\n            x: peak.x,\n          },\n          {\n            y: peak.y,\n            dy: '-15px',\n            x: peak.x,\n          },\n        ],\n      };\n      annotations.push(annotation);\n      annotation = {\n        type: 'ellipse',\n        _highlight: peak._highlight,\n        info: peak,\n        position: [\n          {\n            y: peak.y,\n            dy: '-15px',\n            x: peak.x,\n          },\n        ],\n        props: {\n          rx: '3px',\n          ry: '3px',\n          fillOpacity: 0.3,\n        },\n      };\n    } else {\n      annotation = {\n        type: 'line',\n        _highlight: peak._highlight,\n        position: [\n          {\n            y: peak.y,\n            dy: '-5px',\n            x: peak.x,\n          },\n          {\n            y: peak.y,\n            dy: '-25px',\n            x: peak.x,\n          },\n        ],\n        labels: [\n          {\n            text: (peak.x + shift).toFixed(numberDigits),\n            color: 'red',\n            position: {\n              x: peak.x,\n              y: peak.y,\n              dy: '-17px',\n              dx: '2px',\n            },\n          },\n        ],\n      };\n\n      if (displayCharge) {\n        annotation.labels.push({\n          text: `Z:${peak.charge}`,\n          color: 'grey',\n          position: {\n            x: peak.x,\n            y: peak.y,\n            dy: '-4px',\n            dx: '2px',\n          },\n        });\n      }\n\n      if (numberMFs) {\n        // we have 2 cases. Either there is a shift and we deal with differences\n        // otherwise it is absolute\n        // if there is a shift we consider only a neutral loss and the parameter charge is important\n        if (shift) {\n          // neutral loss\n          let currentMfPrefs = Object.assign({}, mfPrefs, {\n            allowNeutral: true,\n            ionizations: '',\n          });\n          // we need to deal with the precision and increase it\n          currentMfPrefs.precision =\n            (currentMfPrefs.precision / Math.max(Math.abs(peak.x + shift), 1)) *\n            peak.x;\n          emdb.fromMonoisotopicMass(\n            Math.abs((peak.x + shift) * charge),\n            currentMfPrefs,\n          );\n        } else {\n          emdb.fromMonoisotopicMass(Math.abs(peak.x * charge), mfPrefs);\n        }\n\n        let mfs = emdb.get('monoisotopic');\n        let numberOfMFS = Math.min(mfs.length, numberMFs);\n\n        for (let i = 0; i < numberOfMFS; i++) {\n          let mf = mfs[i];\n\n          let ppm = shift ? (mf.ms.ppm / shift) * mfs[0].ms.em : mf.ms.ppm;\n          annotation.labels.push({\n            text: mf.mf,\n            color: getColor(mfColors, Math.abs(ppm)),\n            position: {\n              x: peak.x,\n              y: peak.y,\n              dy: `${-13 * (numberOfMFS - i) - 17}px`,\n              dx: '2px',\n            },\n          });\n        }\n      }\n    }\n    annotations.push(annotation);\n  }\n  return annotations;\n}\n\nfunction getColor(colors, value) {\n  for (let color of colors) {\n    if (value < color.limit) return color.color;\n  }\n  return 'lightgrey';\n}\n\nmodule.exports = getPeaksAnnotation;\n","'use strict';\n\nmodule.exports = {\n  getPeaksAnnotation: require('./getPeaksAnnotation'),\n};\n","'use strict';\n\nconst max = require('ml-array-max/lib/index.js');\nconst normed = require('ml-array-normed/lib/index.js');\nconst { parseXY } = require('xy-parser');\n\nconst getBestPeaks = require('./getBestPeaks');\nconst getPeakChargeBySimilarity = require('./getPeakChargeBySimilarity');\nconst getPeaks = require('./getPeaks');\nconst isContinuous = require('./isContinuous');\nconst peakPicking = require('./peakPicking');\nconst peaksWidth = require('./peaksWidth');\n\nfunction Spectrum(data = { x: [], y: [] }) {\n  if (\n    typeof data !== 'object' ||\n    !Array.isArray(data.x) ||\n    !Array.isArray(data.y)\n  ) {\n    throw new TypeError('Spectrum data must be an object with x:[], y:[]');\n  }\n  this.data = {\n    x: data.x,\n    y: data.y,\n  };\n  Object.defineProperty(this.data, 'xOriginal', {\n    enumerable: false,\n    writable: true,\n  });\n  this.cache = {};\n}\n\nSpectrum.fromText = function fromText(text) {\n  const data = parseXY(text);\n  return new Spectrum(data);\n};\n\nSpectrum.prototype.maxY = function maxY() {\n  return max(this.data.y);\n};\n\nSpectrum.prototype.sumY = function sumY() {\n  if (!this.cache.sumY) {\n    this.cache.sumY = this.data.y.reduce(\n      (previous, current) => previous + current,\n      0,\n    );\n  }\n  return this.cache.sumY;\n};\n\nSpectrum.prototype.scaleY = function scaleY(intensity = 1) {\n  let basePeak = this.maxY() / intensity;\n  this.data.y = this.data.y.map((y) => y / basePeak);\n  return this;\n};\n\nSpectrum.prototype.rescaleX = function rescaleX(callback) {\n  this.ensureOriginalX();\n\n  for (let i = 0; i < this.data.x.length; i++) {\n    this.data.x[i] = callback(this.data.xOriginal[i]);\n  }\n\n  return this;\n};\n\nSpectrum.prototype.ensureOriginalX = function ensureOriginalX() {\n  if (!this.data.xOriginal) {\n    this.data.xOriginal = this.data.x.slice(0);\n  }\n};\n\nSpectrum.prototype.normedY = function normedY(total = 1) {\n  this.data.y = normed(this.data.y);\n  if (total !== 1) {\n    this.data.y = this.data.y.map((y) => y * total);\n  }\n  return this;\n};\n\nSpectrum.prototype.peakPicking = function () {\n  peakPicking(this);\n  return this.peaks;\n};\n\nSpectrum.prototype.peaksWidth = function () {\n  peakPicking(this);\n  return peaksWidth(this.peaks);\n};\n\nSpectrum.prototype.getBestPeaks = function (options) {\n  peakPicking(this);\n  return getBestPeaks(this.peaks, options);\n};\n\nSpectrum.prototype.getPeakChargeBySimilarity = function (targetMass, options) {\n  return getPeakChargeBySimilarity(this, targetMass, options);\n};\n\nSpectrum.prototype.getPeaks = function (options) {\n  peakPicking(this);\n  return getPeaks(this.peaks, options);\n};\n\nSpectrum.prototype.isContinuous = function () {\n  return isContinuous(this);\n};\n\nSpectrum.JsGraph = Spectrum.prototype.JsGraph = require('./jsgraph/index');\n\nmodule.exports = Spectrum;\n","'use strict';\n\nmodule.exports.Spectrum = require('./Spectrum');\n\nmodule.exports.getPeaks = require('./getPeaks');\nmodule.exports.getBestPeaks = require('./getBestPeaks');\n","/*!\n\nJSZip v3.5.0 - A JavaScript class for generating and reading zip files\n<http://stuartk.com/jszip>\n\n(c) 2009-2016 Stuart Knightley <stuart [at] stuartk.com>\nDual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip/master/LICENSE.markdown.\n\nJSZip uses the library pako released under the MIT license :\nhttps://github.com/nodeca/pako/blob/master/LICENSE\n*/\n\n(function(f){if(typeof exports===\"object\"&&typeof module!==\"undefined\"){module.exports=f()}else if(typeof define===\"function\"&&define.amd){define([],f)}else{var g;if(typeof window!==\"undefined\"){g=window}else if(typeof global!==\"undefined\"){g=global}else if(typeof self!==\"undefined\"){g=self}else{g=this}g.JSZip = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){\n'use strict';\nvar utils = require('./utils');\nvar support = require('./support');\n// private property\nvar _keyStr = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n\n\n// public method for encoding\nexports.encode = function(input) {\n    var output = [];\n    var chr1, chr2, chr3, enc1, enc2, enc3, enc4;\n    var i = 0, len = input.length, remainingBytes = len;\n\n    var isArray = utils.getTypeOf(input) !== \"string\";\n    while (i < input.length) {\n        remainingBytes = len - i;\n\n        if (!isArray) {\n            chr1 = input.charCodeAt(i++);\n            chr2 = i < len ? input.charCodeAt(i++) : 0;\n            chr3 = i < len ? input.charCodeAt(i++) : 0;\n        } else {\n            chr1 = input[i++];\n            chr2 = i < len ? input[i++] : 0;\n            chr3 = i < len ? input[i++] : 0;\n        }\n\n        enc1 = chr1 >> 2;\n        enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);\n        enc3 = remainingBytes > 1 ? (((chr2 & 15) << 2) | (chr3 >> 6)) : 64;\n        enc4 = remainingBytes > 2 ? (chr3 & 63) : 64;\n\n        output.push(_keyStr.charAt(enc1) + _keyStr.charAt(enc2) + _keyStr.charAt(enc3) + _keyStr.charAt(enc4));\n\n    }\n\n    return output.join(\"\");\n};\n\n// public method for decoding\nexports.decode = function(input) {\n    var chr1, chr2, chr3;\n    var enc1, enc2, enc3, enc4;\n    var i = 0, resultIndex = 0;\n\n    var dataUrlPrefix = \"data:\";\n\n    if (input.substr(0, dataUrlPrefix.length) === dataUrlPrefix) {\n        // This is a common error: people give a data url\n        // (data:image/png;base64,iVBOR...) with a {base64: true} and\n        // wonders why things don't work.\n        // We can detect that the string input looks like a data url but we\n        // *can't* be sure it is one: removing everything up to the comma would\n        // be too dangerous.\n        throw new Error(\"Invalid base64 input, it looks like a data url.\");\n    }\n\n    input = input.replace(/[^A-Za-z0-9\\+\\/\\=]/g, \"\");\n\n    var totalLength = input.length * 3 / 4;\n    if(input.charAt(input.length - 1) === _keyStr.charAt(64)) {\n        totalLength--;\n    }\n    if(input.charAt(input.length - 2) === _keyStr.charAt(64)) {\n        totalLength--;\n    }\n    if (totalLength % 1 !== 0) {\n        // totalLength is not an integer, the length does not match a valid\n        // base64 content. That can happen if:\n        // - the input is not a base64 content\n        // - the input is *almost* a base64 content, with a extra chars at the\n        //   beginning or at the end\n        // - the input uses a base64 variant (base64url for example)\n        throw new Error(\"Invalid base64 input, bad content length.\");\n    }\n    var output;\n    if (support.uint8array) {\n        output = new Uint8Array(totalLength|0);\n    } else {\n        output = new Array(totalLength|0);\n    }\n\n    while (i < input.length) {\n\n        enc1 = _keyStr.indexOf(input.charAt(i++));\n        enc2 = _keyStr.indexOf(input.charAt(i++));\n        enc3 = _keyStr.indexOf(input.charAt(i++));\n        enc4 = _keyStr.indexOf(input.charAt(i++));\n\n        chr1 = (enc1 << 2) | (enc2 >> 4);\n        chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);\n        chr3 = ((enc3 & 3) << 6) | enc4;\n\n        output[resultIndex++] = chr1;\n\n        if (enc3 !== 64) {\n            output[resultIndex++] = chr2;\n        }\n        if (enc4 !== 64) {\n            output[resultIndex++] = chr3;\n        }\n\n    }\n\n    return output;\n};\n\n},{\"./support\":30,\"./utils\":32}],2:[function(require,module,exports){\n'use strict';\n\nvar external = require(\"./external\");\nvar DataWorker = require('./stream/DataWorker');\nvar DataLengthProbe = require('./stream/DataLengthProbe');\nvar Crc32Probe = require('./stream/Crc32Probe');\nvar DataLengthProbe = require('./stream/DataLengthProbe');\n\n/**\n * Represent a compressed object, with everything needed to decompress it.\n * @constructor\n * @param {number} compressedSize the size of the data compressed.\n * @param {number} uncompressedSize the size of the data after decompression.\n * @param {number} crc32 the crc32 of the decompressed file.\n * @param {object} compression the type of compression, see lib/compressions.js.\n * @param {String|ArrayBuffer|Uint8Array|Buffer} data the compressed data.\n */\nfunction CompressedObject(compressedSize, uncompressedSize, crc32, compression, data) {\n    this.compressedSize = compressedSize;\n    this.uncompressedSize = uncompressedSize;\n    this.crc32 = crc32;\n    this.compression = compression;\n    this.compressedContent = data;\n}\n\nCompressedObject.prototype = {\n    /**\n     * Create a worker to get the uncompressed content.\n     * @return {GenericWorker} the worker.\n     */\n    getContentWorker : function () {\n        var worker = new DataWorker(external.Promise.resolve(this.compressedContent))\n        .pipe(this.compression.uncompressWorker())\n        .pipe(new DataLengthProbe(\"data_length\"));\n\n        var that = this;\n        worker.on(\"end\", function () {\n            if(this.streamInfo['data_length'] !== that.uncompressedSize) {\n                throw new Error(\"Bug : uncompressed data size mismatch\");\n            }\n        });\n        return worker;\n    },\n    /**\n     * Create a worker to get the compressed content.\n     * @return {GenericWorker} the worker.\n     */\n    getCompressedWorker : function () {\n        return new DataWorker(external.Promise.resolve(this.compressedContent))\n        .withStreamInfo(\"compressedSize\", this.compressedSize)\n        .withStreamInfo(\"uncompressedSize\", this.uncompressedSize)\n        .withStreamInfo(\"crc32\", this.crc32)\n        .withStreamInfo(\"compression\", this.compression)\n        ;\n    }\n};\n\n/**\n * Chain the given worker with other workers to compress the content with the\n * given compression.\n * @param {GenericWorker} uncompressedWorker the worker to pipe.\n * @param {Object} compression the compression object.\n * @param {Object} compressionOptions the options to use when compressing.\n * @return {GenericWorker} the new worker compressing the content.\n */\nCompressedObject.createWorkerFrom = function (uncompressedWorker, compression, compressionOptions) {\n    return uncompressedWorker\n    .pipe(new Crc32Probe())\n    .pipe(new DataLengthProbe(\"uncompressedSize\"))\n    .pipe(compression.compressWorker(compressionOptions))\n    .pipe(new DataLengthProbe(\"compressedSize\"))\n    .withStreamInfo(\"compression\", compression);\n};\n\nmodule.exports = CompressedObject;\n\n},{\"./external\":6,\"./stream/Crc32Probe\":25,\"./stream/DataLengthProbe\":26,\"./stream/DataWorker\":27}],3:[function(require,module,exports){\n'use strict';\n\nvar GenericWorker = require(\"./stream/GenericWorker\");\n\nexports.STORE = {\n    magic: \"\\x00\\x00\",\n    compressWorker : function (compressionOptions) {\n        return new GenericWorker(\"STORE compression\");\n    },\n    uncompressWorker : function () {\n        return new GenericWorker(\"STORE decompression\");\n    }\n};\nexports.DEFLATE = require('./flate');\n\n},{\"./flate\":7,\"./stream/GenericWorker\":28}],4:[function(require,module,exports){\n'use strict';\n\nvar utils = require('./utils');\n\n/**\n * The following functions come from pako, from pako/lib/zlib/crc32.js\n * released under the MIT license, see pako https://github.com/nodeca/pako/\n */\n\n// Use ordinary array, since untyped makes no boost here\nfunction makeTable() {\n    var c, table = [];\n\n    for(var n =0; n < 256; n++){\n        c = n;\n        for(var k =0; k < 8; k++){\n            c = ((c&1) ? (0xEDB88320 ^ (c >>> 1)) : (c >>> 1));\n        }\n        table[n] = c;\n    }\n\n    return table;\n}\n\n// Create table on load. Just 255 signed longs. Not a problem.\nvar crcTable = makeTable();\n\n\nfunction crc32(crc, buf, len, pos) {\n    var t = crcTable, end = pos + len;\n\n    crc = crc ^ (-1);\n\n    for (var i = pos; i < end; i++ ) {\n        crc = (crc >>> 8) ^ t[(crc ^ buf[i]) & 0xFF];\n    }\n\n    return (crc ^ (-1)); // >>> 0;\n}\n\n// That's all for the pako functions.\n\n/**\n * Compute the crc32 of a string.\n * This is almost the same as the function crc32, but for strings. Using the\n * same function for the two use cases leads to horrible performances.\n * @param {Number} crc the starting value of the crc.\n * @param {String} str the string to use.\n * @param {Number} len the length of the string.\n * @param {Number} pos the starting position for the crc32 computation.\n * @return {Number} the computed crc32.\n */\nfunction crc32str(crc, str, len, pos) {\n    var t = crcTable, end = pos + len;\n\n    crc = crc ^ (-1);\n\n    for (var i = pos; i < end; i++ ) {\n        crc = (crc >>> 8) ^ t[(crc ^ str.charCodeAt(i)) & 0xFF];\n    }\n\n    return (crc ^ (-1)); // >>> 0;\n}\n\nmodule.exports = function crc32wrapper(input, crc) {\n    if (typeof input === \"undefined\" || !input.length) {\n        return 0;\n    }\n\n    var isArray = utils.getTypeOf(input) !== \"string\";\n\n    if(isArray) {\n        return crc32(crc|0, input, input.length, 0);\n    } else {\n        return crc32str(crc|0, input, input.length, 0);\n    }\n};\n\n},{\"./utils\":32}],5:[function(require,module,exports){\n'use strict';\nexports.base64 = false;\nexports.binary = false;\nexports.dir = false;\nexports.createFolders = true;\nexports.date = null;\nexports.compression = null;\nexports.compressionOptions = null;\nexports.comment = null;\nexports.unixPermissions = null;\nexports.dosPermissions = null;\n\n},{}],6:[function(require,module,exports){\n/* global Promise */\n'use strict';\n\n// load the global object first:\n// - it should be better integrated in the system (unhandledRejection in node)\n// - the environment may have a custom Promise implementation (see zone.js)\nvar ES6Promise = null;\nif (typeof Promise !== \"undefined\") {\n    ES6Promise = Promise;\n} else {\n    ES6Promise = require(\"lie\");\n}\n\n/**\n * Let the user use/change some implementations.\n */\nmodule.exports = {\n    Promise: ES6Promise\n};\n\n},{\"lie\":37}],7:[function(require,module,exports){\n'use strict';\nvar USE_TYPEDARRAY = (typeof Uint8Array !== 'undefined') && (typeof Uint16Array !== 'undefined') && (typeof Uint32Array !== 'undefined');\n\nvar pako = require(\"pako\");\nvar utils = require(\"./utils\");\nvar GenericWorker = require(\"./stream/GenericWorker\");\n\nvar ARRAY_TYPE = USE_TYPEDARRAY ? \"uint8array\" : \"array\";\n\nexports.magic = \"\\x08\\x00\";\n\n/**\n * Create a worker that uses pako to inflate/deflate.\n * @constructor\n * @param {String} action the name of the pako function to call : either \"Deflate\" or \"Inflate\".\n * @param {Object} options the options to use when (de)compressing.\n */\nfunction FlateWorker(action, options) {\n    GenericWorker.call(this, \"FlateWorker/\" + action);\n\n    this._pako = null;\n    this._pakoAction = action;\n    this._pakoOptions = options;\n    // the `meta` object from the last chunk received\n    // this allow this worker to pass around metadata\n    this.meta = {};\n}\n\nutils.inherits(FlateWorker, GenericWorker);\n\n/**\n * @see GenericWorker.processChunk\n */\nFlateWorker.prototype.processChunk = function (chunk) {\n    this.meta = chunk.meta;\n    if (this._pako === null) {\n        this._createPako();\n    }\n    this._pako.push(utils.transformTo(ARRAY_TYPE, chunk.data), false);\n};\n\n/**\n * @see GenericWorker.flush\n */\nFlateWorker.prototype.flush = function () {\n    GenericWorker.prototype.flush.call(this);\n    if (this._pako === null) {\n        this._createPako();\n    }\n    this._pako.push([], true);\n};\n/**\n * @see GenericWorker.cleanUp\n */\nFlateWorker.prototype.cleanUp = function () {\n    GenericWorker.prototype.cleanUp.call(this);\n    this._pako = null;\n};\n\n/**\n * Create the _pako object.\n * TODO: lazy-loading this object isn't the best solution but it's the\n * quickest. The best solution is to lazy-load the worker list. See also the\n * issue #446.\n */\nFlateWorker.prototype._createPako = function () {\n    this._pako = new pako[this._pakoAction]({\n        raw: true,\n        level: this._pakoOptions.level || -1 // default compression\n    });\n    var self = this;\n    this._pako.onData = function(data) {\n        self.push({\n            data : data,\n            meta : self.meta\n        });\n    };\n};\n\nexports.compressWorker = function (compressionOptions) {\n    return new FlateWorker(\"Deflate\", compressionOptions);\n};\nexports.uncompressWorker = function () {\n    return new FlateWorker(\"Inflate\", {});\n};\n\n},{\"./stream/GenericWorker\":28,\"./utils\":32,\"pako\":38}],8:[function(require,module,exports){\n'use strict';\n\nvar utils = require('../utils');\nvar GenericWorker = require('../stream/GenericWorker');\nvar utf8 = require('../utf8');\nvar crc32 = require('../crc32');\nvar signature = require('../signature');\n\n/**\n * Transform an integer into a string in hexadecimal.\n * @private\n * @param {number} dec the number to convert.\n * @param {number} bytes the number of bytes to generate.\n * @returns {string} the result.\n */\nvar decToHex = function(dec, bytes) {\n    var hex = \"\", i;\n    for (i = 0; i < bytes; i++) {\n        hex += String.fromCharCode(dec & 0xff);\n        dec = dec >>> 8;\n    }\n    return hex;\n};\n\n/**\n * Generate the UNIX part of the external file attributes.\n * @param {Object} unixPermissions the unix permissions or null.\n * @param {Boolean} isDir true if the entry is a directory, false otherwise.\n * @return {Number} a 32 bit integer.\n *\n * adapted from http://unix.stackexchange.com/questions/14705/the-zip-formats-external-file-attribute :\n *\n * TTTTsstrwxrwxrwx0000000000ADVSHR\n * ^^^^____________________________ file type, see zipinfo.c (UNX_*)\n *     ^^^_________________________ setuid, setgid, sticky\n *        ^^^^^^^^^________________ permissions\n *                 ^^^^^^^^^^______ not used ?\n *                           ^^^^^^ DOS attribute bits : Archive, Directory, Volume label, System file, Hidden, Read only\n */\nvar generateUnixExternalFileAttr = function (unixPermissions, isDir) {\n\n    var result = unixPermissions;\n    if (!unixPermissions) {\n        // I can't use octal values in strict mode, hence the hexa.\n        //  040775 => 0x41fd\n        // 0100664 => 0x81b4\n        result = isDir ? 0x41fd : 0x81b4;\n    }\n    return (result & 0xFFFF) << 16;\n};\n\n/**\n * Generate the DOS part of the external file attributes.\n * @param {Object} dosPermissions the dos permissions or null.\n * @param {Boolean} isDir true if the entry is a directory, false otherwise.\n * @return {Number} a 32 bit integer.\n *\n * Bit 0     Read-Only\n * Bit 1     Hidden\n * Bit 2     System\n * Bit 3     Volume Label\n * Bit 4     Directory\n * Bit 5     Archive\n */\nvar generateDosExternalFileAttr = function (dosPermissions, isDir) {\n\n    // the dir flag is already set for compatibility\n    return (dosPermissions || 0)  & 0x3F;\n};\n\n/**\n * Generate the various parts used in the construction of the final zip file.\n * @param {Object} streamInfo the hash with information about the compressed file.\n * @param {Boolean} streamedContent is the content streamed ?\n * @param {Boolean} streamingEnded is the stream finished ?\n * @param {number} offset the current offset from the start of the zip file.\n * @param {String} platform let's pretend we are this platform (change platform dependents fields)\n * @param {Function} encodeFileName the function to encode the file name / comment.\n * @return {Object} the zip parts.\n */\nvar generateZipParts = function(streamInfo, streamedContent, streamingEnded, offset, platform, encodeFileName) {\n    var file = streamInfo['file'],\n    compression = streamInfo['compression'],\n    useCustomEncoding = encodeFileName !== utf8.utf8encode,\n    encodedFileName = utils.transformTo(\"string\", encodeFileName(file.name)),\n    utfEncodedFileName = utils.transformTo(\"string\", utf8.utf8encode(file.name)),\n    comment = file.comment,\n    encodedComment = utils.transformTo(\"string\", encodeFileName(comment)),\n    utfEncodedComment = utils.transformTo(\"string\", utf8.utf8encode(comment)),\n    useUTF8ForFileName = utfEncodedFileName.length !== file.name.length,\n    useUTF8ForComment = utfEncodedComment.length !== comment.length,\n    dosTime,\n    dosDate,\n    extraFields = \"\",\n    unicodePathExtraField = \"\",\n    unicodeCommentExtraField = \"\",\n    dir = file.dir,\n    date = file.date;\n\n\n    var dataInfo = {\n        crc32 : 0,\n        compressedSize : 0,\n        uncompressedSize : 0\n    };\n\n    // if the content is streamed, the sizes/crc32 are only available AFTER\n    // the end of the stream.\n    if (!streamedContent || streamingEnded) {\n        dataInfo.crc32 = streamInfo['crc32'];\n        dataInfo.compressedSize = streamInfo['compressedSize'];\n        dataInfo.uncompressedSize = streamInfo['uncompressedSize'];\n    }\n\n    var bitflag = 0;\n    if (streamedContent) {\n        // Bit 3: the sizes/crc32 are set to zero in the local header.\n        // The correct values are put in the data descriptor immediately\n        // following the compressed data.\n        bitflag |= 0x0008;\n    }\n    if (!useCustomEncoding && (useUTF8ForFileName || useUTF8ForComment)) {\n        // Bit 11: Language encoding flag (EFS).\n        bitflag |= 0x0800;\n    }\n\n\n    var extFileAttr = 0;\n    var versionMadeBy = 0;\n    if (dir) {\n        // dos or unix, we set the dos dir flag\n        extFileAttr |= 0x00010;\n    }\n    if(platform === \"UNIX\") {\n        versionMadeBy = 0x031E; // UNIX, version 3.0\n        extFileAttr |= generateUnixExternalFileAttr(file.unixPermissions, dir);\n    } else { // DOS or other, fallback to DOS\n        versionMadeBy = 0x0014; // DOS, version 2.0\n        extFileAttr |= generateDosExternalFileAttr(file.dosPermissions, dir);\n    }\n\n    // date\n    // @see http://www.delorie.com/djgpp/doc/rbinter/it/52/13.html\n    // @see http://www.delorie.com/djgpp/doc/rbinter/it/65/16.html\n    // @see http://www.delorie.com/djgpp/doc/rbinter/it/66/16.html\n\n    dosTime = date.getUTCHours();\n    dosTime = dosTime << 6;\n    dosTime = dosTime | date.getUTCMinutes();\n    dosTime = dosTime << 5;\n    dosTime = dosTime | date.getUTCSeconds() / 2;\n\n    dosDate = date.getUTCFullYear() - 1980;\n    dosDate = dosDate << 4;\n    dosDate = dosDate | (date.getUTCMonth() + 1);\n    dosDate = dosDate << 5;\n    dosDate = dosDate | date.getUTCDate();\n\n    if (useUTF8ForFileName) {\n        // set the unicode path extra field. unzip needs at least one extra\n        // field to correctly handle unicode path, so using the path is as good\n        // as any other information. This could improve the situation with\n        // other archive managers too.\n        // This field is usually used without the utf8 flag, with a non\n        // unicode path in the header (winrar, winzip). This helps (a bit)\n        // with the messy Windows' default compressed folders feature but\n        // breaks on p7zip which doesn't seek the unicode path extra field.\n        // So for now, UTF-8 everywhere !\n        unicodePathExtraField =\n            // Version\n            decToHex(1, 1) +\n            // NameCRC32\n            decToHex(crc32(encodedFileName), 4) +\n            // UnicodeName\n            utfEncodedFileName;\n\n        extraFields +=\n            // Info-ZIP Unicode Path Extra Field\n            \"\\x75\\x70\" +\n            // size\n            decToHex(unicodePathExtraField.length, 2) +\n            // content\n            unicodePathExtraField;\n    }\n\n    if(useUTF8ForComment) {\n\n        unicodeCommentExtraField =\n            // Version\n            decToHex(1, 1) +\n            // CommentCRC32\n            decToHex(crc32(encodedComment), 4) +\n            // UnicodeName\n            utfEncodedComment;\n\n        extraFields +=\n            // Info-ZIP Unicode Path Extra Field\n            \"\\x75\\x63\" +\n            // size\n            decToHex(unicodeCommentExtraField.length, 2) +\n            // content\n            unicodeCommentExtraField;\n    }\n\n    var header = \"\";\n\n    // version needed to extract\n    header += \"\\x0A\\x00\";\n    // general purpose bit flag\n    header += decToHex(bitflag, 2);\n    // compression method\n    header += compression.magic;\n    // last mod file time\n    header += decToHex(dosTime, 2);\n    // last mod file date\n    header += decToHex(dosDate, 2);\n    // crc-32\n    header += decToHex(dataInfo.crc32, 4);\n    // compressed size\n    header += decToHex(dataInfo.compressedSize, 4);\n    // uncompressed size\n    header += decToHex(dataInfo.uncompressedSize, 4);\n    // file name length\n    header += decToHex(encodedFileName.length, 2);\n    // extra field length\n    header += decToHex(extraFields.length, 2);\n\n\n    var fileRecord = signature.LOCAL_FILE_HEADER + header + encodedFileName + extraFields;\n\n    var dirRecord = signature.CENTRAL_FILE_HEADER +\n        // version made by (00: DOS)\n        decToHex(versionMadeBy, 2) +\n        // file header (common to file and central directory)\n        header +\n        // file comment length\n        decToHex(encodedComment.length, 2) +\n        // disk number start\n        \"\\x00\\x00\" +\n        // internal file attributes TODO\n        \"\\x00\\x00\" +\n        // external file attributes\n        decToHex(extFileAttr, 4) +\n        // relative offset of local header\n        decToHex(offset, 4) +\n        // file name\n        encodedFileName +\n        // extra field\n        extraFields +\n        // file comment\n        encodedComment;\n\n    return {\n        fileRecord: fileRecord,\n        dirRecord: dirRecord\n    };\n};\n\n/**\n * Generate the EOCD record.\n * @param {Number} entriesCount the number of entries in the zip file.\n * @param {Number} centralDirLength the length (in bytes) of the central dir.\n * @param {Number} localDirLength the length (in bytes) of the local dir.\n * @param {String} comment the zip file comment as a binary string.\n * @param {Function} encodeFileName the function to encode the comment.\n * @return {String} the EOCD record.\n */\nvar generateCentralDirectoryEnd = function (entriesCount, centralDirLength, localDirLength, comment, encodeFileName) {\n    var dirEnd = \"\";\n    var encodedComment = utils.transformTo(\"string\", encodeFileName(comment));\n\n    // end of central dir signature\n    dirEnd = signature.CENTRAL_DIRECTORY_END +\n        // number of this disk\n        \"\\x00\\x00\" +\n        // number of the disk with the start of the central directory\n        \"\\x00\\x00\" +\n        // total number of entries in the central directory on this disk\n        decToHex(entriesCount, 2) +\n        // total number of entries in the central directory\n        decToHex(entriesCount, 2) +\n        // size of the central directory   4 bytes\n        decToHex(centralDirLength, 4) +\n        // offset of start of central directory with respect to the starting disk number\n        decToHex(localDirLength, 4) +\n        // .ZIP file comment length\n        decToHex(encodedComment.length, 2) +\n        // .ZIP file comment\n        encodedComment;\n\n    return dirEnd;\n};\n\n/**\n * Generate data descriptors for a file entry.\n * @param {Object} streamInfo the hash generated by a worker, containing information\n * on the file entry.\n * @return {String} the data descriptors.\n */\nvar generateDataDescriptors = function (streamInfo) {\n    var descriptor = \"\";\n    descriptor = signature.DATA_DESCRIPTOR +\n        // crc-32                          4 bytes\n        decToHex(streamInfo['crc32'], 4) +\n        // compressed size                 4 bytes\n        decToHex(streamInfo['compressedSize'], 4) +\n        // uncompressed size               4 bytes\n        decToHex(streamInfo['uncompressedSize'], 4);\n\n    return descriptor;\n};\n\n\n/**\n * A worker to concatenate other workers to create a zip file.\n * @param {Boolean} streamFiles `true` to stream the content of the files,\n * `false` to accumulate it.\n * @param {String} comment the comment to use.\n * @param {String} platform the platform to use, \"UNIX\" or \"DOS\".\n * @param {Function} encodeFileName the function to encode file names and comments.\n */\nfunction ZipFileWorker(streamFiles, comment, platform, encodeFileName) {\n    GenericWorker.call(this, \"ZipFileWorker\");\n    // The number of bytes written so far. This doesn't count accumulated chunks.\n    this.bytesWritten = 0;\n    // The comment of the zip file\n    this.zipComment = comment;\n    // The platform \"generating\" the zip file.\n    this.zipPlatform = platform;\n    // the function to encode file names and comments.\n    this.encodeFileName = encodeFileName;\n    // Should we stream the content of the files ?\n    this.streamFiles = streamFiles;\n    // If `streamFiles` is false, we will need to accumulate the content of the\n    // files to calculate sizes / crc32 (and write them *before* the content).\n    // This boolean indicates if we are accumulating chunks (it will change a lot\n    // during the lifetime of this worker).\n    this.accumulate = false;\n    // The buffer receiving chunks when accumulating content.\n    this.contentBuffer = [];\n    // The list of generated directory records.\n    this.dirRecords = [];\n    // The offset (in bytes) from the beginning of the zip file for the current source.\n    this.currentSourceOffset = 0;\n    // The total number of entries in this zip file.\n    this.entriesCount = 0;\n    // the name of the file currently being added, null when handling the end of the zip file.\n    // Used for the emitted metadata.\n    this.currentFile = null;\n\n\n\n    this._sources = [];\n}\nutils.inherits(ZipFileWorker, GenericWorker);\n\n/**\n * @see GenericWorker.push\n */\nZipFileWorker.prototype.push = function (chunk) {\n\n    var currentFilePercent = chunk.meta.percent || 0;\n    var entriesCount = this.entriesCount;\n    var remainingFiles = this._sources.length;\n\n    if(this.accumulate) {\n        this.contentBuffer.push(chunk);\n    } else {\n        this.bytesWritten += chunk.data.length;\n\n        GenericWorker.prototype.push.call(this, {\n            data : chunk.data,\n            meta : {\n                currentFile : this.currentFile,\n                percent : entriesCount ? (currentFilePercent + 100 * (entriesCount - remainingFiles - 1)) / entriesCount : 100\n            }\n        });\n    }\n};\n\n/**\n * The worker started a new source (an other worker).\n * @param {Object} streamInfo the streamInfo object from the new source.\n */\nZipFileWorker.prototype.openedSource = function (streamInfo) {\n    this.currentSourceOffset = this.bytesWritten;\n    this.currentFile = streamInfo['file'].name;\n\n    var streamedContent = this.streamFiles && !streamInfo['file'].dir;\n\n    // don't stream folders (because they don't have any content)\n    if(streamedContent) {\n        var record = generateZipParts(streamInfo, streamedContent, false, this.currentSourceOffset, this.zipPlatform, this.encodeFileName);\n        this.push({\n            data : record.fileRecord,\n            meta : {percent:0}\n        });\n    } else {\n        // we need to wait for the whole file before pushing anything\n        this.accumulate = true;\n    }\n};\n\n/**\n * The worker finished a source (an other worker).\n * @param {Object} streamInfo the streamInfo object from the finished source.\n */\nZipFileWorker.prototype.closedSource = function (streamInfo) {\n    this.accumulate = false;\n    var streamedContent = this.streamFiles && !streamInfo['file'].dir;\n    var record = generateZipParts(streamInfo, streamedContent, true, this.currentSourceOffset, this.zipPlatform, this.encodeFileName);\n\n    this.dirRecords.push(record.dirRecord);\n    if(streamedContent) {\n        // after the streamed file, we put data descriptors\n        this.push({\n            data : generateDataDescriptors(streamInfo),\n            meta : {percent:100}\n        });\n    } else {\n        // the content wasn't streamed, we need to push everything now\n        // first the file record, then the content\n        this.push({\n            data : record.fileRecord,\n            meta : {percent:0}\n        });\n        while(this.contentBuffer.length) {\n            this.push(this.contentBuffer.shift());\n        }\n    }\n    this.currentFile = null;\n};\n\n/**\n * @see GenericWorker.flush\n */\nZipFileWorker.prototype.flush = function () {\n\n    var localDirLength = this.bytesWritten;\n    for(var i = 0; i < this.dirRecords.length; i++) {\n        this.push({\n            data : this.dirRecords[i],\n            meta : {percent:100}\n        });\n    }\n    var centralDirLength = this.bytesWritten - localDirLength;\n\n    var dirEnd = generateCentralDirectoryEnd(this.dirRecords.length, centralDirLength, localDirLength, this.zipComment, this.encodeFileName);\n\n    this.push({\n        data : dirEnd,\n        meta : {percent:100}\n    });\n};\n\n/**\n * Prepare the next source to be read.\n */\nZipFileWorker.prototype.prepareNextSource = function () {\n    this.previous = this._sources.shift();\n    this.openedSource(this.previous.streamInfo);\n    if (this.isPaused) {\n        this.previous.pause();\n    } else {\n        this.previous.resume();\n    }\n};\n\n/**\n * @see GenericWorker.registerPrevious\n */\nZipFileWorker.prototype.registerPrevious = function (previous) {\n    this._sources.push(previous);\n    var self = this;\n\n    previous.on('data', function (chunk) {\n        self.processChunk(chunk);\n    });\n    previous.on('end', function () {\n        self.closedSource(self.previous.streamInfo);\n        if(self._sources.length) {\n            self.prepareNextSource();\n        } else {\n            self.end();\n        }\n    });\n    previous.on('error', function (e) {\n        self.error(e);\n    });\n    return this;\n};\n\n/**\n * @see GenericWorker.resume\n */\nZipFileWorker.prototype.resume = function () {\n    if(!GenericWorker.prototype.resume.call(this)) {\n        return false;\n    }\n\n    if (!this.previous && this._sources.length) {\n        this.prepareNextSource();\n        return true;\n    }\n    if (!this.previous && !this._sources.length && !this.generatedError) {\n        this.end();\n        return true;\n    }\n};\n\n/**\n * @see GenericWorker.error\n */\nZipFileWorker.prototype.error = function (e) {\n    var sources = this._sources;\n    if(!GenericWorker.prototype.error.call(this, e)) {\n        return false;\n    }\n    for(var i = 0; i < sources.length; i++) {\n        try {\n            sources[i].error(e);\n        } catch(e) {\n            // the `error` exploded, nothing to do\n        }\n    }\n    return true;\n};\n\n/**\n * @see GenericWorker.lock\n */\nZipFileWorker.prototype.lock = function () {\n    GenericWorker.prototype.lock.call(this);\n    var sources = this._sources;\n    for(var i = 0; i < sources.length; i++) {\n        sources[i].lock();\n    }\n};\n\nmodule.exports = ZipFileWorker;\n\n},{\"../crc32\":4,\"../signature\":23,\"../stream/GenericWorker\":28,\"../utf8\":31,\"../utils\":32}],9:[function(require,module,exports){\n'use strict';\n\nvar compressions = require('../compressions');\nvar ZipFileWorker = require('./ZipFileWorker');\n\n/**\n * Find the compression to use.\n * @param {String} fileCompression the compression defined at the file level, if any.\n * @param {String} zipCompression the compression defined at the load() level.\n * @return {Object} the compression object to use.\n */\nvar getCompression = function (fileCompression, zipCompression) {\n\n    var compressionName = fileCompression || zipCompression;\n    var compression = compressions[compressionName];\n    if (!compression) {\n        throw new Error(compressionName + \" is not a valid compression method !\");\n    }\n    return compression;\n};\n\n/**\n * Create a worker to generate a zip file.\n * @param {JSZip} zip the JSZip instance at the right root level.\n * @param {Object} options to generate the zip file.\n * @param {String} comment the comment to use.\n */\nexports.generateWorker = function (zip, options, comment) {\n\n    var zipFileWorker = new ZipFileWorker(options.streamFiles, comment, options.platform, options.encodeFileName);\n    var entriesCount = 0;\n    try {\n\n        zip.forEach(function (relativePath, file) {\n            entriesCount++;\n            var compression = getCompression(file.options.compression, options.compression);\n            var compressionOptions = file.options.compressionOptions || options.compressionOptions || {};\n            var dir = file.dir, date = file.date;\n\n            file._compressWorker(compression, compressionOptions)\n            .withStreamInfo(\"file\", {\n                name : relativePath,\n                dir : dir,\n                date : date,\n                comment : file.comment || \"\",\n                unixPermissions : file.unixPermissions,\n                dosPermissions : file.dosPermissions\n            })\n            .pipe(zipFileWorker);\n        });\n        zipFileWorker.entriesCount = entriesCount;\n    } catch (e) {\n        zipFileWorker.error(e);\n    }\n\n    return zipFileWorker;\n};\n\n},{\"../compressions\":3,\"./ZipFileWorker\":8}],10:[function(require,module,exports){\n'use strict';\n\n/**\n * Representation a of zip file in js\n * @constructor\n */\nfunction JSZip() {\n    // if this constructor is used without `new`, it adds `new` before itself:\n    if(!(this instanceof JSZip)) {\n        return new JSZip();\n    }\n\n    if(arguments.length) {\n        throw new Error(\"The constructor with parameters has been removed in JSZip 3.0, please check the upgrade guide.\");\n    }\n\n    // object containing the files :\n    // {\n    //   \"folder/\" : {...},\n    //   \"folder/data.txt\" : {...}\n    // }\n    this.files = {};\n\n    this.comment = null;\n\n    // Where we are in the hierarchy\n    this.root = \"\";\n    this.clone = function() {\n        var newObj = new JSZip();\n        for (var i in this) {\n            if (typeof this[i] !== \"function\") {\n                newObj[i] = this[i];\n            }\n        }\n        return newObj;\n    };\n}\nJSZip.prototype = require('./object');\nJSZip.prototype.loadAsync = require('./load');\nJSZip.support = require('./support');\nJSZip.defaults = require('./defaults');\n\n// TODO find a better way to handle this version,\n// a require('package.json').version doesn't work with webpack, see #327\nJSZip.version = \"3.5.0\";\n\nJSZip.loadAsync = function (content, options) {\n    return new JSZip().loadAsync(content, options);\n};\n\nJSZip.external = require(\"./external\");\nmodule.exports = JSZip;\n\n},{\"./defaults\":5,\"./external\":6,\"./load\":11,\"./object\":15,\"./support\":30}],11:[function(require,module,exports){\n'use strict';\nvar utils = require('./utils');\nvar external = require(\"./external\");\nvar utf8 = require('./utf8');\nvar utils = require('./utils');\nvar ZipEntries = require('./zipEntries');\nvar Crc32Probe = require('./stream/Crc32Probe');\nvar nodejsUtils = require(\"./nodejsUtils\");\n\n/**\n * Check the CRC32 of an entry.\n * @param {ZipEntry} zipEntry the zip entry to check.\n * @return {Promise} the result.\n */\nfunction checkEntryCRC32(zipEntry) {\n    return new external.Promise(function (resolve, reject) {\n        var worker = zipEntry.decompressed.getContentWorker().pipe(new Crc32Probe());\n        worker.on(\"error\", function (e) {\n            reject(e);\n        })\n        .on(\"end\", function () {\n            if (worker.streamInfo.crc32 !== zipEntry.decompressed.crc32) {\n                reject(new Error(\"Corrupted zip : CRC32 mismatch\"));\n            } else {\n                resolve();\n            }\n        })\n        .resume();\n    });\n}\n\nmodule.exports = function(data, options) {\n    var zip = this;\n    options = utils.extend(options || {}, {\n        base64: false,\n        checkCRC32: false,\n        optimizedBinaryString: false,\n        createFolders: false,\n        decodeFileName: utf8.utf8decode\n    });\n\n    if (nodejsUtils.isNode && nodejsUtils.isStream(data)) {\n        return external.Promise.reject(new Error(\"JSZip can't accept a stream when loading a zip file.\"));\n    }\n\n    return utils.prepareContent(\"the loaded zip file\", data, true, options.optimizedBinaryString, options.base64)\n    .then(function(data) {\n        var zipEntries = new ZipEntries(options);\n        zipEntries.load(data);\n        return zipEntries;\n    }).then(function checkCRC32(zipEntries) {\n        var promises = [external.Promise.resolve(zipEntries)];\n        var files = zipEntries.files;\n        if (options.checkCRC32) {\n            for (var i = 0; i < files.length; i++) {\n                promises.push(checkEntryCRC32(files[i]));\n            }\n        }\n        return external.Promise.all(promises);\n    }).then(function addFiles(results) {\n        var zipEntries = results.shift();\n        var files = zipEntries.files;\n        for (var i = 0; i < files.length; i++) {\n            var input = files[i];\n            zip.file(input.fileNameStr, input.decompressed, {\n                binary: true,\n                optimizedBinaryString: true,\n                date: input.date,\n                dir: input.dir,\n                comment : input.fileCommentStr.length ? input.fileCommentStr : null,\n                unixPermissions : input.unixPermissions,\n                dosPermissions : input.dosPermissions,\n                createFolders: options.createFolders\n            });\n        }\n        if (zipEntries.zipComment.length) {\n            zip.comment = zipEntries.zipComment;\n        }\n\n        return zip;\n    });\n};\n\n},{\"./external\":6,\"./nodejsUtils\":14,\"./stream/Crc32Probe\":25,\"./utf8\":31,\"./utils\":32,\"./zipEntries\":33}],12:[function(require,module,exports){\n\"use strict\";\n\nvar utils = require('../utils');\nvar GenericWorker = require('../stream/GenericWorker');\n\n/**\n * A worker that use a nodejs stream as source.\n * @constructor\n * @param {String} filename the name of the file entry for this stream.\n * @param {Readable} stream the nodejs stream.\n */\nfunction NodejsStreamInputAdapter(filename, stream) {\n    GenericWorker.call(this, \"Nodejs stream input adapter for \" + filename);\n    this._upstreamEnded = false;\n    this._bindStream(stream);\n}\n\nutils.inherits(NodejsStreamInputAdapter, GenericWorker);\n\n/**\n * Prepare the stream and bind the callbacks on it.\n * Do this ASAP on node 0.10 ! A lazy binding doesn't always work.\n * @param {Stream} stream the nodejs stream to use.\n */\nNodejsStreamInputAdapter.prototype._bindStream = function (stream) {\n    var self = this;\n    this._stream = stream;\n    stream.pause();\n    stream\n    .on(\"data\", function (chunk) {\n        self.push({\n            data: chunk,\n            meta : {\n                percent : 0\n            }\n        });\n    })\n    .on(\"error\", function (e) {\n        if(self.isPaused) {\n            this.generatedError = e;\n        } else {\n            self.error(e);\n        }\n    })\n    .on(\"end\", function () {\n        if(self.isPaused) {\n            self._upstreamEnded = true;\n        } else {\n            self.end();\n        }\n    });\n};\nNodejsStreamInputAdapter.prototype.pause = function () {\n    if(!GenericWorker.prototype.pause.call(this)) {\n        return false;\n    }\n    this._stream.pause();\n    return true;\n};\nNodejsStreamInputAdapter.prototype.resume = function () {\n    if(!GenericWorker.prototype.resume.call(this)) {\n        return false;\n    }\n\n    if(this._upstreamEnded) {\n        this.end();\n    } else {\n        this._stream.resume();\n    }\n\n    return true;\n};\n\nmodule.exports = NodejsStreamInputAdapter;\n\n},{\"../stream/GenericWorker\":28,\"../utils\":32}],13:[function(require,module,exports){\n'use strict';\n\nvar Readable = require('readable-stream').Readable;\n\nvar utils = require('../utils');\nutils.inherits(NodejsStreamOutputAdapter, Readable);\n\n/**\n* A nodejs stream using a worker as source.\n* @see the SourceWrapper in http://nodejs.org/api/stream.html\n* @constructor\n* @param {StreamHelper} helper the helper wrapping the worker\n* @param {Object} options the nodejs stream options\n* @param {Function} updateCb the update callback.\n*/\nfunction NodejsStreamOutputAdapter(helper, options, updateCb) {\n    Readable.call(this, options);\n    this._helper = helper;\n\n    var self = this;\n    helper.on(\"data\", function (data, meta) {\n        if (!self.push(data)) {\n            self._helper.pause();\n        }\n        if(updateCb) {\n            updateCb(meta);\n        }\n    })\n    .on(\"error\", function(e) {\n        self.emit('error', e);\n    })\n    .on(\"end\", function () {\n        self.push(null);\n    });\n}\n\n\nNodejsStreamOutputAdapter.prototype._read = function() {\n    this._helper.resume();\n};\n\nmodule.exports = NodejsStreamOutputAdapter;\n\n},{\"../utils\":32,\"readable-stream\":16}],14:[function(require,module,exports){\n'use strict';\n\nmodule.exports = {\n    /**\n     * True if this is running in Nodejs, will be undefined in a browser.\n     * In a browser, browserify won't include this file and the whole module\n     * will be resolved an empty object.\n     */\n    isNode : typeof Buffer !== \"undefined\",\n    /**\n     * Create a new nodejs Buffer from an existing content.\n     * @param {Object} data the data to pass to the constructor.\n     * @param {String} encoding the encoding to use.\n     * @return {Buffer} a new Buffer.\n     */\n    newBufferFrom: function(data, encoding) {\n        if (Buffer.from && Buffer.from !== Uint8Array.from) {\n            return Buffer.from(data, encoding);\n        } else {\n            if (typeof data === \"number\") {\n                // Safeguard for old Node.js versions. On newer versions,\n                // Buffer.from(number) / Buffer(number, encoding) already throw.\n                throw new Error(\"The \\\"data\\\" argument must not be a number\");\n            }\n            return new Buffer(data, encoding);\n        }\n    },\n    /**\n     * Create a new nodejs Buffer with the specified size.\n     * @param {Integer} size the size of the buffer.\n     * @return {Buffer} a new Buffer.\n     */\n    allocBuffer: function (size) {\n        if (Buffer.alloc) {\n            return Buffer.alloc(size);\n        } else {\n            var buf = new Buffer(size);\n            buf.fill(0);\n            return buf;\n        }\n    },\n    /**\n     * Find out if an object is a Buffer.\n     * @param {Object} b the object to test.\n     * @return {Boolean} true if the object is a Buffer, false otherwise.\n     */\n    isBuffer : function(b){\n        return Buffer.isBuffer(b);\n    },\n\n    isStream : function (obj) {\n        return obj &&\n            typeof obj.on === \"function\" &&\n            typeof obj.pause === \"function\" &&\n            typeof obj.resume === \"function\";\n    }\n};\n\n},{}],15:[function(require,module,exports){\n'use strict';\nvar utf8 = require('./utf8');\nvar utils = require('./utils');\nvar GenericWorker = require('./stream/GenericWorker');\nvar StreamHelper = require('./stream/StreamHelper');\nvar defaults = require('./defaults');\nvar CompressedObject = require('./compressedObject');\nvar ZipObject = require('./zipObject');\nvar generate = require(\"./generate\");\nvar nodejsUtils = require(\"./nodejsUtils\");\nvar NodejsStreamInputAdapter = require(\"./nodejs/NodejsStreamInputAdapter\");\n\n\n/**\n * Add a file in the current folder.\n * @private\n * @param {string} name the name of the file\n * @param {String|ArrayBuffer|Uint8Array|Buffer} data the data of the file\n * @param {Object} originalOptions the options of the file\n * @return {Object} the new file.\n */\nvar fileAdd = function(name, data, originalOptions) {\n    // be sure sub folders exist\n    var dataType = utils.getTypeOf(data),\n        parent;\n\n\n    /*\n     * Correct options.\n     */\n\n    var o = utils.extend(originalOptions || {}, defaults);\n    o.date = o.date || new Date();\n    if (o.compression !== null) {\n        o.compression = o.compression.toUpperCase();\n    }\n\n    if (typeof o.unixPermissions === \"string\") {\n        o.unixPermissions = parseInt(o.unixPermissions, 8);\n    }\n\n    // UNX_IFDIR  0040000 see zipinfo.c\n    if (o.unixPermissions && (o.unixPermissions & 0x4000)) {\n        o.dir = true;\n    }\n    // Bit 4    Directory\n    if (o.dosPermissions && (o.dosPermissions & 0x0010)) {\n        o.dir = true;\n    }\n\n    if (o.dir) {\n        name = forceTrailingSlash(name);\n    }\n    if (o.createFolders && (parent = parentFolder(name))) {\n        folderAdd.call(this, parent, true);\n    }\n\n    var isUnicodeString = dataType === \"string\" && o.binary === false && o.base64 === false;\n    if (!originalOptions || typeof originalOptions.binary === \"undefined\") {\n        o.binary = !isUnicodeString;\n    }\n\n\n    var isCompressedEmpty = (data instanceof CompressedObject) && data.uncompressedSize === 0;\n\n    if (isCompressedEmpty || o.dir || !data || data.length === 0) {\n        o.base64 = false;\n        o.binary = true;\n        data = \"\";\n        o.compression = \"STORE\";\n        dataType = \"string\";\n    }\n\n    /*\n     * Convert content to fit.\n     */\n\n    var zipObjectContent = null;\n    if (data instanceof CompressedObject || data instanceof GenericWorker) {\n        zipObjectContent = data;\n    } else if (nodejsUtils.isNode && nodejsUtils.isStream(data)) {\n        zipObjectContent = new NodejsStreamInputAdapter(name, data);\n    } else {\n        zipObjectContent = utils.prepareContent(name, data, o.binary, o.optimizedBinaryString, o.base64);\n    }\n\n    var object = new ZipObject(name, zipObjectContent, o);\n    this.files[name] = object;\n    /*\n    TODO: we can't throw an exception because we have async promises\n    (we can have a promise of a Date() for example) but returning a\n    promise is useless because file(name, data) returns the JSZip\n    object for chaining. Should we break that to allow the user\n    to catch the error ?\n\n    return external.Promise.resolve(zipObjectContent)\n    .then(function () {\n        return object;\n    });\n    */\n};\n\n/**\n * Find the parent folder of the path.\n * @private\n * @param {string} path the path to use\n * @return {string} the parent folder, or \"\"\n */\nvar parentFolder = function (path) {\n    if (path.slice(-1) === '/') {\n        path = path.substring(0, path.length - 1);\n    }\n    var lastSlash = path.lastIndexOf('/');\n    return (lastSlash > 0) ? path.substring(0, lastSlash) : \"\";\n};\n\n/**\n * Returns the path with a slash at the end.\n * @private\n * @param {String} path the path to check.\n * @return {String} the path with a trailing slash.\n */\nvar forceTrailingSlash = function(path) {\n    // Check the name ends with a /\n    if (path.slice(-1) !== \"/\") {\n        path += \"/\"; // IE doesn't like substr(-1)\n    }\n    return path;\n};\n\n/**\n * Add a (sub) folder in the current folder.\n * @private\n * @param {string} name the folder's name\n * @param {boolean=} [createFolders] If true, automatically create sub\n *  folders. Defaults to false.\n * @return {Object} the new folder.\n */\nvar folderAdd = function(name, createFolders) {\n    createFolders = (typeof createFolders !== 'undefined') ? createFolders : defaults.createFolders;\n\n    name = forceTrailingSlash(name);\n\n    // Does this folder already exist?\n    if (!this.files[name]) {\n        fileAdd.call(this, name, null, {\n            dir: true,\n            createFolders: createFolders\n        });\n    }\n    return this.files[name];\n};\n\n/**\n* Cross-window, cross-Node-context regular expression detection\n* @param  {Object}  object Anything\n* @return {Boolean}        true if the object is a regular expression,\n* false otherwise\n*/\nfunction isRegExp(object) {\n    return Object.prototype.toString.call(object) === \"[object RegExp]\";\n}\n\n// return the actual prototype of JSZip\nvar out = {\n    /**\n     * @see loadAsync\n     */\n    load: function() {\n        throw new Error(\"This method has been removed in JSZip 3.0, please check the upgrade guide.\");\n    },\n\n\n    /**\n     * Call a callback function for each entry at this folder level.\n     * @param {Function} cb the callback function:\n     * function (relativePath, file) {...}\n     * It takes 2 arguments : the relative path and the file.\n     */\n    forEach: function(cb) {\n        var filename, relativePath, file;\n        for (filename in this.files) {\n            if (!this.files.hasOwnProperty(filename)) {\n                continue;\n            }\n            file = this.files[filename];\n            relativePath = filename.slice(this.root.length, filename.length);\n            if (relativePath && filename.slice(0, this.root.length) === this.root) { // the file is in the current root\n                cb(relativePath, file); // TODO reverse the parameters ? need to be clean AND consistent with the filter search fn...\n            }\n        }\n    },\n\n    /**\n     * Filter nested files/folders with the specified function.\n     * @param {Function} search the predicate to use :\n     * function (relativePath, file) {...}\n     * It takes 2 arguments : the relative path and the file.\n     * @return {Array} An array of matching elements.\n     */\n    filter: function(search) {\n        var result = [];\n        this.forEach(function (relativePath, entry) {\n            if (search(relativePath, entry)) { // the file matches the function\n                result.push(entry);\n            }\n\n        });\n        return result;\n    },\n\n    /**\n     * Add a file to the zip file, or search a file.\n     * @param   {string|RegExp} name The name of the file to add (if data is defined),\n     * the name of the file to find (if no data) or a regex to match files.\n     * @param   {String|ArrayBuffer|Uint8Array|Buffer} data  The file data, either raw or base64 encoded\n     * @param   {Object} o     File options\n     * @return  {JSZip|Object|Array} this JSZip object (when adding a file),\n     * a file (when searching by string) or an array of files (when searching by regex).\n     */\n    file: function(name, data, o) {\n        if (arguments.length === 1) {\n            if (isRegExp(name)) {\n                var regexp = name;\n                return this.filter(function(relativePath, file) {\n                    return !file.dir && regexp.test(relativePath);\n                });\n            }\n            else { // text\n                var obj = this.files[this.root + name];\n                if (obj && !obj.dir) {\n                    return obj;\n                } else {\n                    return null;\n                }\n            }\n        }\n        else { // more than one argument : we have data !\n            name = this.root + name;\n            fileAdd.call(this, name, data, o);\n        }\n        return this;\n    },\n\n    /**\n     * Add a directory to the zip file, or search.\n     * @param   {String|RegExp} arg The name of the directory to add, or a regex to search folders.\n     * @return  {JSZip} an object with the new directory as the root, or an array containing matching folders.\n     */\n    folder: function(arg) {\n        if (!arg) {\n            return this;\n        }\n\n        if (isRegExp(arg)) {\n            return this.filter(function(relativePath, file) {\n                return file.dir && arg.test(relativePath);\n            });\n        }\n\n        // else, name is a new folder\n        var name = this.root + arg;\n        var newFolder = folderAdd.call(this, name);\n\n        // Allow chaining by returning a new object with this folder as the root\n        var ret = this.clone();\n        ret.root = newFolder.name;\n        return ret;\n    },\n\n    /**\n     * Delete a file, or a directory and all sub-files, from the zip\n     * @param {string} name the name of the file to delete\n     * @return {JSZip} this JSZip object\n     */\n    remove: function(name) {\n        name = this.root + name;\n        var file = this.files[name];\n        if (!file) {\n            // Look for any folders\n            if (name.slice(-1) !== \"/\") {\n                name += \"/\";\n            }\n            file = this.files[name];\n        }\n\n        if (file && !file.dir) {\n            // file\n            delete this.files[name];\n        } else {\n            // maybe a folder, delete recursively\n            var kids = this.filter(function(relativePath, file) {\n                return file.name.slice(0, name.length) === name;\n            });\n            for (var i = 0; i < kids.length; i++) {\n                delete this.files[kids[i].name];\n            }\n        }\n\n        return this;\n    },\n\n    /**\n     * Generate the complete zip file\n     * @param {Object} options the options to generate the zip file :\n     * - compression, \"STORE\" by default.\n     * - type, \"base64\" by default. Values are : string, base64, uint8array, arraybuffer, blob.\n     * @return {String|Uint8Array|ArrayBuffer|Buffer|Blob} the zip file\n     */\n    generate: function(options) {\n        throw new Error(\"This method has been removed in JSZip 3.0, please check the upgrade guide.\");\n    },\n\n    /**\n     * Generate the complete zip file as an internal stream.\n     * @param {Object} options the options to generate the zip file :\n     * - compression, \"STORE\" by default.\n     * - type, \"base64\" by default. Values are : string, base64, uint8array, arraybuffer, blob.\n     * @return {StreamHelper} the streamed zip file.\n     */\n    generateInternalStream: function(options) {\n      var worker, opts = {};\n      try {\n          opts = utils.extend(options || {}, {\n              streamFiles: false,\n              compression: \"STORE\",\n              compressionOptions : null,\n              type: \"\",\n              platform: \"DOS\",\n              comment: null,\n              mimeType: 'application/zip',\n              encodeFileName: utf8.utf8encode\n          });\n\n          opts.type = opts.type.toLowerCase();\n          opts.compression = opts.compression.toUpperCase();\n\n          // \"binarystring\" is preferred but the internals use \"string\".\n          if(opts.type === \"binarystring\") {\n            opts.type = \"string\";\n          }\n\n          if (!opts.type) {\n            throw new Error(\"No output type specified.\");\n          }\n\n          utils.checkSupport(opts.type);\n\n          // accept nodejs `process.platform`\n          if(\n              opts.platform === 'darwin' ||\n              opts.platform === 'freebsd' ||\n              opts.platform === 'linux' ||\n              opts.platform === 'sunos'\n          ) {\n              opts.platform = \"UNIX\";\n          }\n          if (opts.platform === 'win32') {\n              opts.platform = \"DOS\";\n          }\n\n          var comment = opts.comment || this.comment || \"\";\n          worker = generate.generateWorker(this, opts, comment);\n      } catch (e) {\n        worker = new GenericWorker(\"error\");\n        worker.error(e);\n      }\n      return new StreamHelper(worker, opts.type || \"string\", opts.mimeType);\n    },\n    /**\n     * Generate the complete zip file asynchronously.\n     * @see generateInternalStream\n     */\n    generateAsync: function(options, onUpdate) {\n        return this.generateInternalStream(options).accumulate(onUpdate);\n    },\n    /**\n     * Generate the complete zip file asynchronously.\n     * @see generateInternalStream\n     */\n    generateNodeStream: function(options, onUpdate) {\n        options = options || {};\n        if (!options.type) {\n            options.type = \"nodebuffer\";\n        }\n        return this.generateInternalStream(options).toNodejsStream(onUpdate);\n    }\n};\nmodule.exports = out;\n\n},{\"./compressedObject\":2,\"./defaults\":5,\"./generate\":9,\"./nodejs/NodejsStreamInputAdapter\":12,\"./nodejsUtils\":14,\"./stream/GenericWorker\":28,\"./stream/StreamHelper\":29,\"./utf8\":31,\"./utils\":32,\"./zipObject\":35}],16:[function(require,module,exports){\n/*\n * This file is used by module bundlers (browserify/webpack/etc) when\n * including a stream implementation. We use \"readable-stream\" to get a\n * consistent behavior between nodejs versions but bundlers often have a shim\n * for \"stream\". Using this shim greatly improve the compatibility and greatly\n * reduce the final size of the bundle (only one stream implementation, not\n * two).\n */\nmodule.exports = require(\"stream\");\n\n},{\"stream\":undefined}],17:[function(require,module,exports){\n'use strict';\nvar DataReader = require('./DataReader');\nvar utils = require('../utils');\n\nfunction ArrayReader(data) {\n    DataReader.call(this, data);\n\tfor(var i = 0; i < this.data.length; i++) {\n\t\tdata[i] = data[i] & 0xFF;\n\t}\n}\nutils.inherits(ArrayReader, DataReader);\n/**\n * @see DataReader.byteAt\n */\nArrayReader.prototype.byteAt = function(i) {\n    return this.data[this.zero + i];\n};\n/**\n * @see DataReader.lastIndexOfSignature\n */\nArrayReader.prototype.lastIndexOfSignature = function(sig) {\n    var sig0 = sig.charCodeAt(0),\n        sig1 = sig.charCodeAt(1),\n        sig2 = sig.charCodeAt(2),\n        sig3 = sig.charCodeAt(3);\n    for (var i = this.length - 4; i >= 0; --i) {\n        if (this.data[i] === sig0 && this.data[i + 1] === sig1 && this.data[i + 2] === sig2 && this.data[i + 3] === sig3) {\n            return i - this.zero;\n        }\n    }\n\n    return -1;\n};\n/**\n * @see DataReader.readAndCheckSignature\n */\nArrayReader.prototype.readAndCheckSignature = function (sig) {\n    var sig0 = sig.charCodeAt(0),\n        sig1 = sig.charCodeAt(1),\n        sig2 = sig.charCodeAt(2),\n        sig3 = sig.charCodeAt(3),\n        data = this.readData(4);\n    return sig0 === data[0] && sig1 === data[1] && sig2 === data[2] && sig3 === data[3];\n};\n/**\n * @see DataReader.readData\n */\nArrayReader.prototype.readData = function(size) {\n    this.checkOffset(size);\n    if(size === 0) {\n        return [];\n    }\n    var result = this.data.slice(this.zero + this.index, this.zero + this.index + size);\n    this.index += size;\n    return result;\n};\nmodule.exports = ArrayReader;\n\n},{\"../utils\":32,\"./DataReader\":18}],18:[function(require,module,exports){\n'use strict';\nvar utils = require('../utils');\n\nfunction DataReader(data) {\n    this.data = data; // type : see implementation\n    this.length = data.length;\n    this.index = 0;\n    this.zero = 0;\n}\nDataReader.prototype = {\n    /**\n     * Check that the offset will not go too far.\n     * @param {string} offset the additional offset to check.\n     * @throws {Error} an Error if the offset is out of bounds.\n     */\n    checkOffset: function(offset) {\n        this.checkIndex(this.index + offset);\n    },\n    /**\n     * Check that the specified index will not be too far.\n     * @param {string} newIndex the index to check.\n     * @throws {Error} an Error if the index is out of bounds.\n     */\n    checkIndex: function(newIndex) {\n        if (this.length < this.zero + newIndex || newIndex < 0) {\n            throw new Error(\"End of data reached (data length = \" + this.length + \", asked index = \" + (newIndex) + \"). Corrupted zip ?\");\n        }\n    },\n    /**\n     * Change the index.\n     * @param {number} newIndex The new index.\n     * @throws {Error} if the new index is out of the data.\n     */\n    setIndex: function(newIndex) {\n        this.checkIndex(newIndex);\n        this.index = newIndex;\n    },\n    /**\n     * Skip the next n bytes.\n     * @param {number} n the number of bytes to skip.\n     * @throws {Error} if the new index is out of the data.\n     */\n    skip: function(n) {\n        this.setIndex(this.index + n);\n    },\n    /**\n     * Get the byte at the specified index.\n     * @param {number} i the index to use.\n     * @return {number} a byte.\n     */\n    byteAt: function(i) {\n        // see implementations\n    },\n    /**\n     * Get the next number with a given byte size.\n     * @param {number} size the number of bytes to read.\n     * @return {number} the corresponding number.\n     */\n    readInt: function(size) {\n        var result = 0,\n            i;\n        this.checkOffset(size);\n        for (i = this.index + size - 1; i >= this.index; i--) {\n            result = (result << 8) + this.byteAt(i);\n        }\n        this.index += size;\n        return result;\n    },\n    /**\n     * Get the next string with a given byte size.\n     * @param {number} size the number of bytes to read.\n     * @return {string} the corresponding string.\n     */\n    readString: function(size) {\n        return utils.transformTo(\"string\", this.readData(size));\n    },\n    /**\n     * Get raw data without conversion, <size> bytes.\n     * @param {number} size the number of bytes to read.\n     * @return {Object} the raw data, implementation specific.\n     */\n    readData: function(size) {\n        // see implementations\n    },\n    /**\n     * Find the last occurrence of a zip signature (4 bytes).\n     * @param {string} sig the signature to find.\n     * @return {number} the index of the last occurrence, -1 if not found.\n     */\n    lastIndexOfSignature: function(sig) {\n        // see implementations\n    },\n    /**\n     * Read the signature (4 bytes) at the current position and compare it with sig.\n     * @param {string} sig the expected signature\n     * @return {boolean} true if the signature matches, false otherwise.\n     */\n    readAndCheckSignature: function(sig) {\n        // see implementations\n    },\n    /**\n     * Get the next date.\n     * @return {Date} the date.\n     */\n    readDate: function() {\n        var dostime = this.readInt(4);\n        return new Date(Date.UTC(\n        ((dostime >> 25) & 0x7f) + 1980, // year\n        ((dostime >> 21) & 0x0f) - 1, // month\n        (dostime >> 16) & 0x1f, // day\n        (dostime >> 11) & 0x1f, // hour\n        (dostime >> 5) & 0x3f, // minute\n        (dostime & 0x1f) << 1)); // second\n    }\n};\nmodule.exports = DataReader;\n\n},{\"../utils\":32}],19:[function(require,module,exports){\n'use strict';\nvar Uint8ArrayReader = require('./Uint8ArrayReader');\nvar utils = require('../utils');\n\nfunction NodeBufferReader(data) {\n    Uint8ArrayReader.call(this, data);\n}\nutils.inherits(NodeBufferReader, Uint8ArrayReader);\n\n/**\n * @see DataReader.readData\n */\nNodeBufferReader.prototype.readData = function(size) {\n    this.checkOffset(size);\n    var result = this.data.slice(this.zero + this.index, this.zero + this.index + size);\n    this.index += size;\n    return result;\n};\nmodule.exports = NodeBufferReader;\n\n},{\"../utils\":32,\"./Uint8ArrayReader\":21}],20:[function(require,module,exports){\n'use strict';\nvar DataReader = require('./DataReader');\nvar utils = require('../utils');\n\nfunction StringReader(data) {\n    DataReader.call(this, data);\n}\nutils.inherits(StringReader, DataReader);\n/**\n * @see DataReader.byteAt\n */\nStringReader.prototype.byteAt = function(i) {\n    return this.data.charCodeAt(this.zero + i);\n};\n/**\n * @see DataReader.lastIndexOfSignature\n */\nStringReader.prototype.lastIndexOfSignature = function(sig) {\n    return this.data.lastIndexOf(sig) - this.zero;\n};\n/**\n * @see DataReader.readAndCheckSignature\n */\nStringReader.prototype.readAndCheckSignature = function (sig) {\n    var data = this.readData(4);\n    return sig === data;\n};\n/**\n * @see DataReader.readData\n */\nStringReader.prototype.readData = function(size) {\n    this.checkOffset(size);\n    // this will work because the constructor applied the \"& 0xff\" mask.\n    var result = this.data.slice(this.zero + this.index, this.zero + this.index + size);\n    this.index += size;\n    return result;\n};\nmodule.exports = StringReader;\n\n},{\"../utils\":32,\"./DataReader\":18}],21:[function(require,module,exports){\n'use strict';\nvar ArrayReader = require('./ArrayReader');\nvar utils = require('../utils');\n\nfunction Uint8ArrayReader(data) {\n    ArrayReader.call(this, data);\n}\nutils.inherits(Uint8ArrayReader, ArrayReader);\n/**\n * @see DataReader.readData\n */\nUint8ArrayReader.prototype.readData = function(size) {\n    this.checkOffset(size);\n    if(size === 0) {\n        // in IE10, when using subarray(idx, idx), we get the array [0x00] instead of [].\n        return new Uint8Array(0);\n    }\n    var result = this.data.subarray(this.zero + this.index, this.zero + this.index + size);\n    this.index += size;\n    return result;\n};\nmodule.exports = Uint8ArrayReader;\n\n},{\"../utils\":32,\"./ArrayReader\":17}],22:[function(require,module,exports){\n'use strict';\n\nvar utils = require('../utils');\nvar support = require('../support');\nvar ArrayReader = require('./ArrayReader');\nvar StringReader = require('./StringReader');\nvar NodeBufferReader = require('./NodeBufferReader');\nvar Uint8ArrayReader = require('./Uint8ArrayReader');\n\n/**\n * Create a reader adapted to the data.\n * @param {String|ArrayBuffer|Uint8Array|Buffer} data the data to read.\n * @return {DataReader} the data reader.\n */\nmodule.exports = function (data) {\n    var type = utils.getTypeOf(data);\n    utils.checkSupport(type);\n    if (type === \"string\" && !support.uint8array) {\n        return new StringReader(data);\n    }\n    if (type === \"nodebuffer\") {\n        return new NodeBufferReader(data);\n    }\n    if (support.uint8array) {\n        return new Uint8ArrayReader(utils.transformTo(\"uint8array\", data));\n    }\n    return new ArrayReader(utils.transformTo(\"array\", data));\n};\n\n},{\"../support\":30,\"../utils\":32,\"./ArrayReader\":17,\"./NodeBufferReader\":19,\"./StringReader\":20,\"./Uint8ArrayReader\":21}],23:[function(require,module,exports){\n'use strict';\nexports.LOCAL_FILE_HEADER = \"PK\\x03\\x04\";\nexports.CENTRAL_FILE_HEADER = \"PK\\x01\\x02\";\nexports.CENTRAL_DIRECTORY_END = \"PK\\x05\\x06\";\nexports.ZIP64_CENTRAL_DIRECTORY_LOCATOR = \"PK\\x06\\x07\";\nexports.ZIP64_CENTRAL_DIRECTORY_END = \"PK\\x06\\x06\";\nexports.DATA_DESCRIPTOR = \"PK\\x07\\x08\";\n\n},{}],24:[function(require,module,exports){\n'use strict';\n\nvar GenericWorker = require('./GenericWorker');\nvar utils = require('../utils');\n\n/**\n * A worker which convert chunks to a specified type.\n * @constructor\n * @param {String} destType the destination type.\n */\nfunction ConvertWorker(destType) {\n    GenericWorker.call(this, \"ConvertWorker to \" + destType);\n    this.destType = destType;\n}\nutils.inherits(ConvertWorker, GenericWorker);\n\n/**\n * @see GenericWorker.processChunk\n */\nConvertWorker.prototype.processChunk = function (chunk) {\n    this.push({\n        data : utils.transformTo(this.destType, chunk.data),\n        meta : chunk.meta\n    });\n};\nmodule.exports = ConvertWorker;\n\n},{\"../utils\":32,\"./GenericWorker\":28}],25:[function(require,module,exports){\n'use strict';\n\nvar GenericWorker = require('./GenericWorker');\nvar crc32 = require('../crc32');\nvar utils = require('../utils');\n\n/**\n * A worker which calculate the crc32 of the data flowing through.\n * @constructor\n */\nfunction Crc32Probe() {\n    GenericWorker.call(this, \"Crc32Probe\");\n    this.withStreamInfo(\"crc32\", 0);\n}\nutils.inherits(Crc32Probe, GenericWorker);\n\n/**\n * @see GenericWorker.processChunk\n */\nCrc32Probe.prototype.processChunk = function (chunk) {\n    this.streamInfo.crc32 = crc32(chunk.data, this.streamInfo.crc32 || 0);\n    this.push(chunk);\n};\nmodule.exports = Crc32Probe;\n\n},{\"../crc32\":4,\"../utils\":32,\"./GenericWorker\":28}],26:[function(require,module,exports){\n'use strict';\n\nvar utils = require('../utils');\nvar GenericWorker = require('./GenericWorker');\n\n/**\n * A worker which calculate the total length of the data flowing through.\n * @constructor\n * @param {String} propName the name used to expose the length\n */\nfunction DataLengthProbe(propName) {\n    GenericWorker.call(this, \"DataLengthProbe for \" + propName);\n    this.propName = propName;\n    this.withStreamInfo(propName, 0);\n}\nutils.inherits(DataLengthProbe, GenericWorker);\n\n/**\n * @see GenericWorker.processChunk\n */\nDataLengthProbe.prototype.processChunk = function (chunk) {\n    if(chunk) {\n        var length = this.streamInfo[this.propName] || 0;\n        this.streamInfo[this.propName] = length + chunk.data.length;\n    }\n    GenericWorker.prototype.processChunk.call(this, chunk);\n};\nmodule.exports = DataLengthProbe;\n\n\n},{\"../utils\":32,\"./GenericWorker\":28}],27:[function(require,module,exports){\n'use strict';\n\nvar utils = require('../utils');\nvar GenericWorker = require('./GenericWorker');\n\n// the size of the generated chunks\n// TODO expose this as a public variable\nvar DEFAULT_BLOCK_SIZE = 16 * 1024;\n\n/**\n * A worker that reads a content and emits chunks.\n * @constructor\n * @param {Promise} dataP the promise of the data to split\n */\nfunction DataWorker(dataP) {\n    GenericWorker.call(this, \"DataWorker\");\n    var self = this;\n    this.dataIsReady = false;\n    this.index = 0;\n    this.max = 0;\n    this.data = null;\n    this.type = \"\";\n\n    this._tickScheduled = false;\n\n    dataP.then(function (data) {\n        self.dataIsReady = true;\n        self.data = data;\n        self.max = data && data.length || 0;\n        self.type = utils.getTypeOf(data);\n        if(!self.isPaused) {\n            self._tickAndRepeat();\n        }\n    }, function (e) {\n        self.error(e);\n    });\n}\n\nutils.inherits(DataWorker, GenericWorker);\n\n/**\n * @see GenericWorker.cleanUp\n */\nDataWorker.prototype.cleanUp = function () {\n    GenericWorker.prototype.cleanUp.call(this);\n    this.data = null;\n};\n\n/**\n * @see GenericWorker.resume\n */\nDataWorker.prototype.resume = function () {\n    if(!GenericWorker.prototype.resume.call(this)) {\n        return false;\n    }\n\n    if (!this._tickScheduled && this.dataIsReady) {\n        this._tickScheduled = true;\n        utils.delay(this._tickAndRepeat, [], this);\n    }\n    return true;\n};\n\n/**\n * Trigger a tick a schedule an other call to this function.\n */\nDataWorker.prototype._tickAndRepeat = function() {\n    this._tickScheduled = false;\n    if(this.isPaused || this.isFinished) {\n        return;\n    }\n    this._tick();\n    if(!this.isFinished) {\n        utils.delay(this._tickAndRepeat, [], this);\n        this._tickScheduled = true;\n    }\n};\n\n/**\n * Read and push a chunk.\n */\nDataWorker.prototype._tick = function() {\n\n    if(this.isPaused || this.isFinished) {\n        return false;\n    }\n\n    var size = DEFAULT_BLOCK_SIZE;\n    var data = null, nextIndex = Math.min(this.max, this.index + size);\n    if (this.index >= this.max) {\n        // EOF\n        return this.end();\n    } else {\n        switch(this.type) {\n            case \"string\":\n                data = this.data.substring(this.index, nextIndex);\n            break;\n            case \"uint8array\":\n                data = this.data.subarray(this.index, nextIndex);\n            break;\n            case \"array\":\n            case \"nodebuffer\":\n                data = this.data.slice(this.index, nextIndex);\n            break;\n        }\n        this.index = nextIndex;\n        return this.push({\n            data : data,\n            meta : {\n                percent : this.max ? this.index / this.max * 100 : 0\n            }\n        });\n    }\n};\n\nmodule.exports = DataWorker;\n\n},{\"../utils\":32,\"./GenericWorker\":28}],28:[function(require,module,exports){\n'use strict';\n\n/**\n * A worker that does nothing but passing chunks to the next one. This is like\n * a nodejs stream but with some differences. On the good side :\n * - it works on IE 6-9 without any issue / polyfill\n * - it weights less than the full dependencies bundled with browserify\n * - it forwards errors (no need to declare an error handler EVERYWHERE)\n *\n * A chunk is an object with 2 attributes : `meta` and `data`. The former is an\n * object containing anything (`percent` for example), see each worker for more\n * details. The latter is the real data (String, Uint8Array, etc).\n *\n * @constructor\n * @param {String} name the name of the stream (mainly used for debugging purposes)\n */\nfunction GenericWorker(name) {\n    // the name of the worker\n    this.name = name || \"default\";\n    // an object containing metadata about the workers chain\n    this.streamInfo = {};\n    // an error which happened when the worker was paused\n    this.generatedError = null;\n    // an object containing metadata to be merged by this worker into the general metadata\n    this.extraStreamInfo = {};\n    // true if the stream is paused (and should not do anything), false otherwise\n    this.isPaused = true;\n    // true if the stream is finished (and should not do anything), false otherwise\n    this.isFinished = false;\n    // true if the stream is locked to prevent further structure updates (pipe), false otherwise\n    this.isLocked = false;\n    // the event listeners\n    this._listeners = {\n        'data':[],\n        'end':[],\n        'error':[]\n    };\n    // the previous worker, if any\n    this.previous = null;\n}\n\nGenericWorker.prototype = {\n    /**\n     * Push a chunk to the next workers.\n     * @param {Object} chunk the chunk to push\n     */\n    push : function (chunk) {\n        this.emit(\"data\", chunk);\n    },\n    /**\n     * End the stream.\n     * @return {Boolean} true if this call ended the worker, false otherwise.\n     */\n    end : function () {\n        if (this.isFinished) {\n            return false;\n        }\n\n        this.flush();\n        try {\n            this.emit(\"end\");\n            this.cleanUp();\n            this.isFinished = true;\n        } catch (e) {\n            this.emit(\"error\", e);\n        }\n        return true;\n    },\n    /**\n     * End the stream with an error.\n     * @param {Error} e the error which caused the premature end.\n     * @return {Boolean} true if this call ended the worker with an error, false otherwise.\n     */\n    error : function (e) {\n        if (this.isFinished) {\n            return false;\n        }\n\n        if(this.isPaused) {\n            this.generatedError = e;\n        } else {\n            this.isFinished = true;\n\n            this.emit(\"error\", e);\n\n            // in the workers chain exploded in the middle of the chain,\n            // the error event will go downward but we also need to notify\n            // workers upward that there has been an error.\n            if(this.previous) {\n                this.previous.error(e);\n            }\n\n            this.cleanUp();\n        }\n        return true;\n    },\n    /**\n     * Add a callback on an event.\n     * @param {String} name the name of the event (data, end, error)\n     * @param {Function} listener the function to call when the event is triggered\n     * @return {GenericWorker} the current object for chainability\n     */\n    on : function (name, listener) {\n        this._listeners[name].push(listener);\n        return this;\n    },\n    /**\n     * Clean any references when a worker is ending.\n     */\n    cleanUp : function () {\n        this.streamInfo = this.generatedError = this.extraStreamInfo = null;\n        this._listeners = [];\n    },\n    /**\n     * Trigger an event. This will call registered callback with the provided arg.\n     * @param {String} name the name of the event (data, end, error)\n     * @param {Object} arg the argument to call the callback with.\n     */\n    emit : function (name, arg) {\n        if (this._listeners[name]) {\n            for(var i = 0; i < this._listeners[name].length; i++) {\n                this._listeners[name][i].call(this, arg);\n            }\n        }\n    },\n    /**\n     * Chain a worker with an other.\n     * @param {Worker} next the worker receiving events from the current one.\n     * @return {worker} the next worker for chainability\n     */\n    pipe : function (next) {\n        return next.registerPrevious(this);\n    },\n    /**\n     * Same as `pipe` in the other direction.\n     * Using an API with `pipe(next)` is very easy.\n     * Implementing the API with the point of view of the next one registering\n     * a source is easier, see the ZipFileWorker.\n     * @param {Worker} previous the previous worker, sending events to this one\n     * @return {Worker} the current worker for chainability\n     */\n    registerPrevious : function (previous) {\n        if (this.isLocked) {\n            throw new Error(\"The stream '\" + this + \"' has already been used.\");\n        }\n\n        // sharing the streamInfo...\n        this.streamInfo = previous.streamInfo;\n        // ... and adding our own bits\n        this.mergeStreamInfo();\n        this.previous =  previous;\n        var self = this;\n        previous.on('data', function (chunk) {\n            self.processChunk(chunk);\n        });\n        previous.on('end', function () {\n            self.end();\n        });\n        previous.on('error', function (e) {\n            self.error(e);\n        });\n        return this;\n    },\n    /**\n     * Pause the stream so it doesn't send events anymore.\n     * @return {Boolean} true if this call paused the worker, false otherwise.\n     */\n    pause : function () {\n        if(this.isPaused || this.isFinished) {\n            return false;\n        }\n        this.isPaused = true;\n\n        if(this.previous) {\n            this.previous.pause();\n        }\n        return true;\n    },\n    /**\n     * Resume a paused stream.\n     * @return {Boolean} true if this call resumed the worker, false otherwise.\n     */\n    resume : function () {\n        if(!this.isPaused || this.isFinished) {\n            return false;\n        }\n        this.isPaused = false;\n\n        // if true, the worker tried to resume but failed\n        var withError = false;\n        if(this.generatedError) {\n            this.error(this.generatedError);\n            withError = true;\n        }\n        if(this.previous) {\n            this.previous.resume();\n        }\n\n        return !withError;\n    },\n    /**\n     * Flush any remaining bytes as the stream is ending.\n     */\n    flush : function () {},\n    /**\n     * Process a chunk. This is usually the method overridden.\n     * @param {Object} chunk the chunk to process.\n     */\n    processChunk : function(chunk) {\n        this.push(chunk);\n    },\n    /**\n     * Add a key/value to be added in the workers chain streamInfo once activated.\n     * @param {String} key the key to use\n     * @param {Object} value the associated value\n     * @return {Worker} the current worker for chainability\n     */\n    withStreamInfo : function (key, value) {\n        this.extraStreamInfo[key] = value;\n        this.mergeStreamInfo();\n        return this;\n    },\n    /**\n     * Merge this worker's streamInfo into the chain's streamInfo.\n     */\n    mergeStreamInfo : function () {\n        for(var key in this.extraStreamInfo) {\n            if (!this.extraStreamInfo.hasOwnProperty(key)) {\n                continue;\n            }\n            this.streamInfo[key] = this.extraStreamInfo[key];\n        }\n    },\n\n    /**\n     * Lock the stream to prevent further updates on the workers chain.\n     * After calling this method, all calls to pipe will fail.\n     */\n    lock: function () {\n        if (this.isLocked) {\n            throw new Error(\"The stream '\" + this + \"' has already been used.\");\n        }\n        this.isLocked = true;\n        if (this.previous) {\n            this.previous.lock();\n        }\n    },\n\n    /**\n     *\n     * Pretty print the workers chain.\n     */\n    toString : function () {\n        var me = \"Worker \" + this.name;\n        if (this.previous) {\n            return this.previous + \" -> \" + me;\n        } else {\n            return me;\n        }\n    }\n};\n\nmodule.exports = GenericWorker;\n\n},{}],29:[function(require,module,exports){\n'use strict';\n\nvar utils = require('../utils');\nvar ConvertWorker = require('./ConvertWorker');\nvar GenericWorker = require('./GenericWorker');\nvar base64 = require('../base64');\nvar support = require(\"../support\");\nvar external = require(\"../external\");\n\nvar NodejsStreamOutputAdapter = null;\nif (support.nodestream) {\n    try {\n        NodejsStreamOutputAdapter = require('../nodejs/NodejsStreamOutputAdapter');\n    } catch(e) {}\n}\n\n/**\n * Apply the final transformation of the data. If the user wants a Blob for\n * example, it's easier to work with an U8intArray and finally do the\n * ArrayBuffer/Blob conversion.\n * @param {String} type the name of the final type\n * @param {String|Uint8Array|Buffer} content the content to transform\n * @param {String} mimeType the mime type of the content, if applicable.\n * @return {String|Uint8Array|ArrayBuffer|Buffer|Blob} the content in the right format.\n */\nfunction transformZipOutput(type, content, mimeType) {\n    switch(type) {\n        case \"blob\" :\n            return utils.newBlob(utils.transformTo(\"arraybuffer\", content), mimeType);\n        case \"base64\" :\n            return base64.encode(content);\n        default :\n            return utils.transformTo(type, content);\n    }\n}\n\n/**\n * Concatenate an array of data of the given type.\n * @param {String} type the type of the data in the given array.\n * @param {Array} dataArray the array containing the data chunks to concatenate\n * @return {String|Uint8Array|Buffer} the concatenated data\n * @throws Error if the asked type is unsupported\n */\nfunction concat (type, dataArray) {\n    var i, index = 0, res = null, totalLength = 0;\n    for(i = 0; i < dataArray.length; i++) {\n        totalLength += dataArray[i].length;\n    }\n    switch(type) {\n        case \"string\":\n            return dataArray.join(\"\");\n          case \"array\":\n            return Array.prototype.concat.apply([], dataArray);\n        case \"uint8array\":\n            res = new Uint8Array(totalLength);\n            for(i = 0; i < dataArray.length; i++) {\n                res.set(dataArray[i], index);\n                index += dataArray[i].length;\n            }\n            return res;\n        case \"nodebuffer\":\n            return Buffer.concat(dataArray);\n        default:\n            throw new Error(\"concat : unsupported type '\"  + type + \"'\");\n    }\n}\n\n/**\n * Listen a StreamHelper, accumulate its content and concatenate it into a\n * complete block.\n * @param {StreamHelper} helper the helper to use.\n * @param {Function} updateCallback a callback called on each update. Called\n * with one arg :\n * - the metadata linked to the update received.\n * @return Promise the promise for the accumulation.\n */\nfunction accumulate(helper, updateCallback) {\n    return new external.Promise(function (resolve, reject){\n        var dataArray = [];\n        var chunkType = helper._internalType,\n            resultType = helper._outputType,\n            mimeType = helper._mimeType;\n        helper\n        .on('data', function (data, meta) {\n            dataArray.push(data);\n            if(updateCallback) {\n                updateCallback(meta);\n            }\n        })\n        .on('error', function(err) {\n            dataArray = [];\n            reject(err);\n        })\n        .on('end', function (){\n            try {\n                var result = transformZipOutput(resultType, concat(chunkType, dataArray), mimeType);\n                resolve(result);\n            } catch (e) {\n                reject(e);\n            }\n            dataArray = [];\n        })\n        .resume();\n    });\n}\n\n/**\n * An helper to easily use workers outside of JSZip.\n * @constructor\n * @param {Worker} worker the worker to wrap\n * @param {String} outputType the type of data expected by the use\n * @param {String} mimeType the mime type of the content, if applicable.\n */\nfunction StreamHelper(worker, outputType, mimeType) {\n    var internalType = outputType;\n    switch(outputType) {\n        case \"blob\":\n        case \"arraybuffer\":\n            internalType = \"uint8array\";\n        break;\n        case \"base64\":\n            internalType = \"string\";\n        break;\n    }\n\n    try {\n        // the type used internally\n        this._internalType = internalType;\n        // the type used to output results\n        this._outputType = outputType;\n        // the mime type\n        this._mimeType = mimeType;\n        utils.checkSupport(internalType);\n        this._worker = worker.pipe(new ConvertWorker(internalType));\n        // the last workers can be rewired without issues but we need to\n        // prevent any updates on previous workers.\n        worker.lock();\n    } catch(e) {\n        this._worker = new GenericWorker(\"error\");\n        this._worker.error(e);\n    }\n}\n\nStreamHelper.prototype = {\n    /**\n     * Listen a StreamHelper, accumulate its content and concatenate it into a\n     * complete block.\n     * @param {Function} updateCb the update callback.\n     * @return Promise the promise for the accumulation.\n     */\n    accumulate : function (updateCb) {\n        return accumulate(this, updateCb);\n    },\n    /**\n     * Add a listener on an event triggered on a stream.\n     * @param {String} evt the name of the event\n     * @param {Function} fn the listener\n     * @return {StreamHelper} the current helper.\n     */\n    on : function (evt, fn) {\n        var self = this;\n\n        if(evt === \"data\") {\n            this._worker.on(evt, function (chunk) {\n                fn.call(self, chunk.data, chunk.meta);\n            });\n        } else {\n            this._worker.on(evt, function () {\n                utils.delay(fn, arguments, self);\n            });\n        }\n        return this;\n    },\n    /**\n     * Resume the flow of chunks.\n     * @return {StreamHelper} the current helper.\n     */\n    resume : function () {\n        utils.delay(this._worker.resume, [], this._worker);\n        return this;\n    },\n    /**\n     * Pause the flow of chunks.\n     * @return {StreamHelper} the current helper.\n     */\n    pause : function () {\n        this._worker.pause();\n        return this;\n    },\n    /**\n     * Return a nodejs stream for this helper.\n     * @param {Function} updateCb the update callback.\n     * @return {NodejsStreamOutputAdapter} the nodejs stream.\n     */\n    toNodejsStream : function (updateCb) {\n        utils.checkSupport(\"nodestream\");\n        if (this._outputType !== \"nodebuffer\") {\n            // an object stream containing blob/arraybuffer/uint8array/string\n            // is strange and I don't know if it would be useful.\n            // I you find this comment and have a good usecase, please open a\n            // bug report !\n            throw new Error(this._outputType + \" is not supported by this method\");\n        }\n\n        return new NodejsStreamOutputAdapter(this, {\n            objectMode : this._outputType !== \"nodebuffer\"\n        }, updateCb);\n    }\n};\n\n\nmodule.exports = StreamHelper;\n\n},{\"../base64\":1,\"../external\":6,\"../nodejs/NodejsStreamOutputAdapter\":13,\"../support\":30,\"../utils\":32,\"./ConvertWorker\":24,\"./GenericWorker\":28}],30:[function(require,module,exports){\n'use strict';\n\nexports.base64 = true;\nexports.array = true;\nexports.string = true;\nexports.arraybuffer = typeof ArrayBuffer !== \"undefined\" && typeof Uint8Array !== \"undefined\";\nexports.nodebuffer = typeof Buffer !== \"undefined\";\n// contains true if JSZip can read/generate Uint8Array, false otherwise.\nexports.uint8array = typeof Uint8Array !== \"undefined\";\n\nif (typeof ArrayBuffer === \"undefined\") {\n    exports.blob = false;\n}\nelse {\n    var buffer = new ArrayBuffer(0);\n    try {\n        exports.blob = new Blob([buffer], {\n            type: \"application/zip\"\n        }).size === 0;\n    }\n    catch (e) {\n        try {\n            var Builder = self.BlobBuilder || self.WebKitBlobBuilder || self.MozBlobBuilder || self.MSBlobBuilder;\n            var builder = new Builder();\n            builder.append(buffer);\n            exports.blob = builder.getBlob('application/zip').size === 0;\n        }\n        catch (e) {\n            exports.blob = false;\n        }\n    }\n}\n\ntry {\n    exports.nodestream = !!require('readable-stream').Readable;\n} catch(e) {\n    exports.nodestream = false;\n}\n\n},{\"readable-stream\":16}],31:[function(require,module,exports){\n'use strict';\n\nvar utils = require('./utils');\nvar support = require('./support');\nvar nodejsUtils = require('./nodejsUtils');\nvar GenericWorker = require('./stream/GenericWorker');\n\n/**\n * The following functions come from pako, from pako/lib/utils/strings\n * released under the MIT license, see pako https://github.com/nodeca/pako/\n */\n\n// Table with utf8 lengths (calculated by first byte of sequence)\n// Note, that 5 & 6-byte values and some 4-byte values can not be represented in JS,\n// because max possible codepoint is 0x10ffff\nvar _utf8len = new Array(256);\nfor (var i=0; i<256; i++) {\n  _utf8len[i] = (i >= 252 ? 6 : i >= 248 ? 5 : i >= 240 ? 4 : i >= 224 ? 3 : i >= 192 ? 2 : 1);\n}\n_utf8len[254]=_utf8len[254]=1; // Invalid sequence start\n\n// convert string to array (typed, when possible)\nvar string2buf = function (str) {\n    var buf, c, c2, m_pos, i, str_len = str.length, buf_len = 0;\n\n    // count binary size\n    for (m_pos = 0; m_pos < str_len; m_pos++) {\n        c = str.charCodeAt(m_pos);\n        if ((c & 0xfc00) === 0xd800 && (m_pos+1 < str_len)) {\n            c2 = str.charCodeAt(m_pos+1);\n            if ((c2 & 0xfc00) === 0xdc00) {\n                c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);\n                m_pos++;\n            }\n        }\n        buf_len += c < 0x80 ? 1 : c < 0x800 ? 2 : c < 0x10000 ? 3 : 4;\n    }\n\n    // allocate buffer\n    if (support.uint8array) {\n        buf = new Uint8Array(buf_len);\n    } else {\n        buf = new Array(buf_len);\n    }\n\n    // convert\n    for (i=0, m_pos = 0; i < buf_len; m_pos++) {\n        c = str.charCodeAt(m_pos);\n        if ((c & 0xfc00) === 0xd800 && (m_pos+1 < str_len)) {\n            c2 = str.charCodeAt(m_pos+1);\n            if ((c2 & 0xfc00) === 0xdc00) {\n                c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);\n                m_pos++;\n            }\n        }\n        if (c < 0x80) {\n            /* one byte */\n            buf[i++] = c;\n        } else if (c < 0x800) {\n            /* two bytes */\n            buf[i++] = 0xC0 | (c >>> 6);\n            buf[i++] = 0x80 | (c & 0x3f);\n        } else if (c < 0x10000) {\n            /* three bytes */\n            buf[i++] = 0xE0 | (c >>> 12);\n            buf[i++] = 0x80 | (c >>> 6 & 0x3f);\n            buf[i++] = 0x80 | (c & 0x3f);\n        } else {\n            /* four bytes */\n            buf[i++] = 0xf0 | (c >>> 18);\n            buf[i++] = 0x80 | (c >>> 12 & 0x3f);\n            buf[i++] = 0x80 | (c >>> 6 & 0x3f);\n            buf[i++] = 0x80 | (c & 0x3f);\n        }\n    }\n\n    return buf;\n};\n\n// Calculate max possible position in utf8 buffer,\n// that will not break sequence. If that's not possible\n// - (very small limits) return max size as is.\n//\n// buf[] - utf8 bytes array\n// max   - length limit (mandatory);\nvar utf8border = function(buf, max) {\n    var pos;\n\n    max = max || buf.length;\n    if (max > buf.length) { max = buf.length; }\n\n    // go back from last position, until start of sequence found\n    pos = max-1;\n    while (pos >= 0 && (buf[pos] & 0xC0) === 0x80) { pos--; }\n\n    // Fuckup - very small and broken sequence,\n    // return max, because we should return something anyway.\n    if (pos < 0) { return max; }\n\n    // If we came to start of buffer - that means vuffer is too small,\n    // return max too.\n    if (pos === 0) { return max; }\n\n    return (pos + _utf8len[buf[pos]] > max) ? pos : max;\n};\n\n// convert array to string\nvar buf2string = function (buf) {\n    var str, i, out, c, c_len;\n    var len = buf.length;\n\n    // Reserve max possible length (2 words per char)\n    // NB: by unknown reasons, Array is significantly faster for\n    //     String.fromCharCode.apply than Uint16Array.\n    var utf16buf = new Array(len*2);\n\n    for (out=0, i=0; i<len;) {\n        c = buf[i++];\n        // quick process ascii\n        if (c < 0x80) { utf16buf[out++] = c; continue; }\n\n        c_len = _utf8len[c];\n        // skip 5 & 6 byte codes\n        if (c_len > 4) { utf16buf[out++] = 0xfffd; i += c_len-1; continue; }\n\n        // apply mask on first byte\n        c &= c_len === 2 ? 0x1f : c_len === 3 ? 0x0f : 0x07;\n        // join the rest\n        while (c_len > 1 && i < len) {\n            c = (c << 6) | (buf[i++] & 0x3f);\n            c_len--;\n        }\n\n        // terminated by end of string?\n        if (c_len > 1) { utf16buf[out++] = 0xfffd; continue; }\n\n        if (c < 0x10000) {\n            utf16buf[out++] = c;\n        } else {\n            c -= 0x10000;\n            utf16buf[out++] = 0xd800 | ((c >> 10) & 0x3ff);\n            utf16buf[out++] = 0xdc00 | (c & 0x3ff);\n        }\n    }\n\n    // shrinkBuf(utf16buf, out)\n    if (utf16buf.length !== out) {\n        if(utf16buf.subarray) {\n            utf16buf = utf16buf.subarray(0, out);\n        } else {\n            utf16buf.length = out;\n        }\n    }\n\n    // return String.fromCharCode.apply(null, utf16buf);\n    return utils.applyFromCharCode(utf16buf);\n};\n\n\n// That's all for the pako functions.\n\n\n/**\n * Transform a javascript string into an array (typed if possible) of bytes,\n * UTF-8 encoded.\n * @param {String} str the string to encode\n * @return {Array|Uint8Array|Buffer} the UTF-8 encoded string.\n */\nexports.utf8encode = function utf8encode(str) {\n    if (support.nodebuffer) {\n        return nodejsUtils.newBufferFrom(str, \"utf-8\");\n    }\n\n    return string2buf(str);\n};\n\n\n/**\n * Transform a bytes array (or a representation) representing an UTF-8 encoded\n * string into a javascript string.\n * @param {Array|Uint8Array|Buffer} buf the data de decode\n * @return {String} the decoded string.\n */\nexports.utf8decode = function utf8decode(buf) {\n    if (support.nodebuffer) {\n        return utils.transformTo(\"nodebuffer\", buf).toString(\"utf-8\");\n    }\n\n    buf = utils.transformTo(support.uint8array ? \"uint8array\" : \"array\", buf);\n\n    return buf2string(buf);\n};\n\n/**\n * A worker to decode utf8 encoded binary chunks into string chunks.\n * @constructor\n */\nfunction Utf8DecodeWorker() {\n    GenericWorker.call(this, \"utf-8 decode\");\n    // the last bytes if a chunk didn't end with a complete codepoint.\n    this.leftOver = null;\n}\nutils.inherits(Utf8DecodeWorker, GenericWorker);\n\n/**\n * @see GenericWorker.processChunk\n */\nUtf8DecodeWorker.prototype.processChunk = function (chunk) {\n\n    var data = utils.transformTo(support.uint8array ? \"uint8array\" : \"array\", chunk.data);\n\n    // 1st step, re-use what's left of the previous chunk\n    if (this.leftOver && this.leftOver.length) {\n        if(support.uint8array) {\n            var previousData = data;\n            data = new Uint8Array(previousData.length + this.leftOver.length);\n            data.set(this.leftOver, 0);\n            data.set(previousData, this.leftOver.length);\n        } else {\n            data = this.leftOver.concat(data);\n        }\n        this.leftOver = null;\n    }\n\n    var nextBoundary = utf8border(data);\n    var usableData = data;\n    if (nextBoundary !== data.length) {\n        if (support.uint8array) {\n            usableData = data.subarray(0, nextBoundary);\n            this.leftOver = data.subarray(nextBoundary, data.length);\n        } else {\n            usableData = data.slice(0, nextBoundary);\n            this.leftOver = data.slice(nextBoundary, data.length);\n        }\n    }\n\n    this.push({\n        data : exports.utf8decode(usableData),\n        meta : chunk.meta\n    });\n};\n\n/**\n * @see GenericWorker.flush\n */\nUtf8DecodeWorker.prototype.flush = function () {\n    if(this.leftOver && this.leftOver.length) {\n        this.push({\n            data : exports.utf8decode(this.leftOver),\n            meta : {}\n        });\n        this.leftOver = null;\n    }\n};\nexports.Utf8DecodeWorker = Utf8DecodeWorker;\n\n/**\n * A worker to endcode string chunks into utf8 encoded binary chunks.\n * @constructor\n */\nfunction Utf8EncodeWorker() {\n    GenericWorker.call(this, \"utf-8 encode\");\n}\nutils.inherits(Utf8EncodeWorker, GenericWorker);\n\n/**\n * @see GenericWorker.processChunk\n */\nUtf8EncodeWorker.prototype.processChunk = function (chunk) {\n    this.push({\n        data : exports.utf8encode(chunk.data),\n        meta : chunk.meta\n    });\n};\nexports.Utf8EncodeWorker = Utf8EncodeWorker;\n\n},{\"./nodejsUtils\":14,\"./stream/GenericWorker\":28,\"./support\":30,\"./utils\":32}],32:[function(require,module,exports){\n'use strict';\n\nvar support = require('./support');\nvar base64 = require('./base64');\nvar nodejsUtils = require('./nodejsUtils');\nvar setImmediate = require('set-immediate-shim');\nvar external = require(\"./external\");\n\n\n/**\n * Convert a string that pass as a \"binary string\": it should represent a byte\n * array but may have > 255 char codes. Be sure to take only the first byte\n * and returns the byte array.\n * @param {String} str the string to transform.\n * @return {Array|Uint8Array} the string in a binary format.\n */\nfunction string2binary(str) {\n    var result = null;\n    if (support.uint8array) {\n      result = new Uint8Array(str.length);\n    } else {\n      result = new Array(str.length);\n    }\n    return stringToArrayLike(str, result);\n}\n\n/**\n * Create a new blob with the given content and the given type.\n * @param {String|ArrayBuffer} part the content to put in the blob. DO NOT use\n * an Uint8Array because the stock browser of android 4 won't accept it (it\n * will be silently converted to a string, \"[object Uint8Array]\").\n *\n * Use only ONE part to build the blob to avoid a memory leak in IE11 / Edge:\n * when a large amount of Array is used to create the Blob, the amount of\n * memory consumed is nearly 100 times the original data amount.\n *\n * @param {String} type the mime type of the blob.\n * @return {Blob} the created blob.\n */\nexports.newBlob = function(part, type) {\n    exports.checkSupport(\"blob\");\n\n    try {\n        // Blob constructor\n        return new Blob([part], {\n            type: type\n        });\n    }\n    catch (e) {\n\n        try {\n            // deprecated, browser only, old way\n            var Builder = self.BlobBuilder || self.WebKitBlobBuilder || self.MozBlobBuilder || self.MSBlobBuilder;\n            var builder = new Builder();\n            builder.append(part);\n            return builder.getBlob(type);\n        }\n        catch (e) {\n\n            // well, fuck ?!\n            throw new Error(\"Bug : can't construct the Blob.\");\n        }\n    }\n\n\n};\n/**\n * The identity function.\n * @param {Object} input the input.\n * @return {Object} the same input.\n */\nfunction identity(input) {\n    return input;\n}\n\n/**\n * Fill in an array with a string.\n * @param {String} str the string to use.\n * @param {Array|ArrayBuffer|Uint8Array|Buffer} array the array to fill in (will be mutated).\n * @return {Array|ArrayBuffer|Uint8Array|Buffer} the updated array.\n */\nfunction stringToArrayLike(str, array) {\n    for (var i = 0; i < str.length; ++i) {\n        array[i] = str.charCodeAt(i) & 0xFF;\n    }\n    return array;\n}\n\n/**\n * An helper for the function arrayLikeToString.\n * This contains static information and functions that\n * can be optimized by the browser JIT compiler.\n */\nvar arrayToStringHelper = {\n    /**\n     * Transform an array of int into a string, chunk by chunk.\n     * See the performances notes on arrayLikeToString.\n     * @param {Array|ArrayBuffer|Uint8Array|Buffer} array the array to transform.\n     * @param {String} type the type of the array.\n     * @param {Integer} chunk the chunk size.\n     * @return {String} the resulting string.\n     * @throws Error if the chunk is too big for the stack.\n     */\n    stringifyByChunk: function(array, type, chunk) {\n        var result = [], k = 0, len = array.length;\n        // shortcut\n        if (len <= chunk) {\n            return String.fromCharCode.apply(null, array);\n        }\n        while (k < len) {\n            if (type === \"array\" || type === \"nodebuffer\") {\n                result.push(String.fromCharCode.apply(null, array.slice(k, Math.min(k + chunk, len))));\n            }\n            else {\n                result.push(String.fromCharCode.apply(null, array.subarray(k, Math.min(k + chunk, len))));\n            }\n            k += chunk;\n        }\n        return result.join(\"\");\n    },\n    /**\n     * Call String.fromCharCode on every item in the array.\n     * This is the naive implementation, which generate A LOT of intermediate string.\n     * This should be used when everything else fail.\n     * @param {Array|ArrayBuffer|Uint8Array|Buffer} array the array to transform.\n     * @return {String} the result.\n     */\n    stringifyByChar: function(array){\n        var resultStr = \"\";\n        for(var i = 0; i < array.length; i++) {\n            resultStr += String.fromCharCode(array[i]);\n        }\n        return resultStr;\n    },\n    applyCanBeUsed : {\n        /**\n         * true if the browser accepts to use String.fromCharCode on Uint8Array\n         */\n        uint8array : (function () {\n            try {\n                return support.uint8array && String.fromCharCode.apply(null, new Uint8Array(1)).length === 1;\n            } catch (e) {\n                return false;\n            }\n        })(),\n        /**\n         * true if the browser accepts to use String.fromCharCode on nodejs Buffer.\n         */\n        nodebuffer : (function () {\n            try {\n                return support.nodebuffer && String.fromCharCode.apply(null, nodejsUtils.allocBuffer(1)).length === 1;\n            } catch (e) {\n                return false;\n            }\n        })()\n    }\n};\n\n/**\n * Transform an array-like object to a string.\n * @param {Array|ArrayBuffer|Uint8Array|Buffer} array the array to transform.\n * @return {String} the result.\n */\nfunction arrayLikeToString(array) {\n    // Performances notes :\n    // --------------------\n    // String.fromCharCode.apply(null, array) is the fastest, see\n    // see http://jsperf.com/converting-a-uint8array-to-a-string/2\n    // but the stack is limited (and we can get huge arrays !).\n    //\n    // result += String.fromCharCode(array[i]); generate too many strings !\n    //\n    // This code is inspired by http://jsperf.com/arraybuffer-to-string-apply-performance/2\n    // TODO : we now have workers that split the work. Do we still need that ?\n    var chunk = 65536,\n        type = exports.getTypeOf(array),\n        canUseApply = true;\n    if (type === \"uint8array\") {\n        canUseApply = arrayToStringHelper.applyCanBeUsed.uint8array;\n    } else if (type === \"nodebuffer\") {\n        canUseApply = arrayToStringHelper.applyCanBeUsed.nodebuffer;\n    }\n\n    if (canUseApply) {\n        while (chunk > 1) {\n            try {\n                return arrayToStringHelper.stringifyByChunk(array, type, chunk);\n            } catch (e) {\n                chunk = Math.floor(chunk / 2);\n            }\n        }\n    }\n\n    // no apply or chunk error : slow and painful algorithm\n    // default browser on android 4.*\n    return arrayToStringHelper.stringifyByChar(array);\n}\n\nexports.applyFromCharCode = arrayLikeToString;\n\n\n/**\n * Copy the data from an array-like to an other array-like.\n * @param {Array|ArrayBuffer|Uint8Array|Buffer} arrayFrom the origin array.\n * @param {Array|ArrayBuffer|Uint8Array|Buffer} arrayTo the destination array which will be mutated.\n * @return {Array|ArrayBuffer|Uint8Array|Buffer} the updated destination array.\n */\nfunction arrayLikeToArrayLike(arrayFrom, arrayTo) {\n    for (var i = 0; i < arrayFrom.length; i++) {\n        arrayTo[i] = arrayFrom[i];\n    }\n    return arrayTo;\n}\n\n// a matrix containing functions to transform everything into everything.\nvar transform = {};\n\n// string to ?\ntransform[\"string\"] = {\n    \"string\": identity,\n    \"array\": function(input) {\n        return stringToArrayLike(input, new Array(input.length));\n    },\n    \"arraybuffer\": function(input) {\n        return transform[\"string\"][\"uint8array\"](input).buffer;\n    },\n    \"uint8array\": function(input) {\n        return stringToArrayLike(input, new Uint8Array(input.length));\n    },\n    \"nodebuffer\": function(input) {\n        return stringToArrayLike(input, nodejsUtils.allocBuffer(input.length));\n    }\n};\n\n// array to ?\ntransform[\"array\"] = {\n    \"string\": arrayLikeToString,\n    \"array\": identity,\n    \"arraybuffer\": function(input) {\n        return (new Uint8Array(input)).buffer;\n    },\n    \"uint8array\": function(input) {\n        return new Uint8Array(input);\n    },\n    \"nodebuffer\": function(input) {\n        return nodejsUtils.newBufferFrom(input);\n    }\n};\n\n// arraybuffer to ?\ntransform[\"arraybuffer\"] = {\n    \"string\": function(input) {\n        return arrayLikeToString(new Uint8Array(input));\n    },\n    \"array\": function(input) {\n        return arrayLikeToArrayLike(new Uint8Array(input), new Array(input.byteLength));\n    },\n    \"arraybuffer\": identity,\n    \"uint8array\": function(input) {\n        return new Uint8Array(input);\n    },\n    \"nodebuffer\": function(input) {\n        return nodejsUtils.newBufferFrom(new Uint8Array(input));\n    }\n};\n\n// uint8array to ?\ntransform[\"uint8array\"] = {\n    \"string\": arrayLikeToString,\n    \"array\": function(input) {\n        return arrayLikeToArrayLike(input, new Array(input.length));\n    },\n    \"arraybuffer\": function(input) {\n        return input.buffer;\n    },\n    \"uint8array\": identity,\n    \"nodebuffer\": function(input) {\n        return nodejsUtils.newBufferFrom(input);\n    }\n};\n\n// nodebuffer to ?\ntransform[\"nodebuffer\"] = {\n    \"string\": arrayLikeToString,\n    \"array\": function(input) {\n        return arrayLikeToArrayLike(input, new Array(input.length));\n    },\n    \"arraybuffer\": function(input) {\n        return transform[\"nodebuffer\"][\"uint8array\"](input).buffer;\n    },\n    \"uint8array\": function(input) {\n        return arrayLikeToArrayLike(input, new Uint8Array(input.length));\n    },\n    \"nodebuffer\": identity\n};\n\n/**\n * Transform an input into any type.\n * The supported output type are : string, array, uint8array, arraybuffer, nodebuffer.\n * If no output type is specified, the unmodified input will be returned.\n * @param {String} outputType the output type.\n * @param {String|Array|ArrayBuffer|Uint8Array|Buffer} input the input to convert.\n * @throws {Error} an Error if the browser doesn't support the requested output type.\n */\nexports.transformTo = function(outputType, input) {\n    if (!input) {\n        // undefined, null, etc\n        // an empty string won't harm.\n        input = \"\";\n    }\n    if (!outputType) {\n        return input;\n    }\n    exports.checkSupport(outputType);\n    var inputType = exports.getTypeOf(input);\n    var result = transform[inputType][outputType](input);\n    return result;\n};\n\n/**\n * Return the type of the input.\n * The type will be in a format valid for JSZip.utils.transformTo : string, array, uint8array, arraybuffer.\n * @param {Object} input the input to identify.\n * @return {String} the (lowercase) type of the input.\n */\nexports.getTypeOf = function(input) {\n    if (typeof input === \"string\") {\n        return \"string\";\n    }\n    if (Object.prototype.toString.call(input) === \"[object Array]\") {\n        return \"array\";\n    }\n    if (support.nodebuffer && nodejsUtils.isBuffer(input)) {\n        return \"nodebuffer\";\n    }\n    if (support.uint8array && input instanceof Uint8Array) {\n        return \"uint8array\";\n    }\n    if (support.arraybuffer && input instanceof ArrayBuffer) {\n        return \"arraybuffer\";\n    }\n};\n\n/**\n * Throw an exception if the type is not supported.\n * @param {String} type the type to check.\n * @throws {Error} an Error if the browser doesn't support the requested type.\n */\nexports.checkSupport = function(type) {\n    var supported = support[type.toLowerCase()];\n    if (!supported) {\n        throw new Error(type + \" is not supported by this platform\");\n    }\n};\n\nexports.MAX_VALUE_16BITS = 65535;\nexports.MAX_VALUE_32BITS = -1; // well, \"\\xFF\\xFF\\xFF\\xFF\\xFF\\xFF\\xFF\\xFF\" is parsed as -1\n\n/**\n * Prettify a string read as binary.\n * @param {string} str the string to prettify.\n * @return {string} a pretty string.\n */\nexports.pretty = function(str) {\n    var res = '',\n        code, i;\n    for (i = 0; i < (str || \"\").length; i++) {\n        code = str.charCodeAt(i);\n        res += '\\\\x' + (code < 16 ? \"0\" : \"\") + code.toString(16).toUpperCase();\n    }\n    return res;\n};\n\n/**\n * Defer the call of a function.\n * @param {Function} callback the function to call asynchronously.\n * @param {Array} args the arguments to give to the callback.\n */\nexports.delay = function(callback, args, self) {\n    setImmediate(function () {\n        callback.apply(self || null, args || []);\n    });\n};\n\n/**\n * Extends a prototype with an other, without calling a constructor with\n * side effects. Inspired by nodejs' `utils.inherits`\n * @param {Function} ctor the constructor to augment\n * @param {Function} superCtor the parent constructor to use\n */\nexports.inherits = function (ctor, superCtor) {\n    var Obj = function() {};\n    Obj.prototype = superCtor.prototype;\n    ctor.prototype = new Obj();\n};\n\n/**\n * Merge the objects passed as parameters into a new one.\n * @private\n * @param {...Object} var_args All objects to merge.\n * @return {Object} a new object with the data of the others.\n */\nexports.extend = function() {\n    var result = {}, i, attr;\n    for (i = 0; i < arguments.length; i++) { // arguments is not enumerable in some browsers\n        for (attr in arguments[i]) {\n            if (arguments[i].hasOwnProperty(attr) && typeof result[attr] === \"undefined\") {\n                result[attr] = arguments[i][attr];\n            }\n        }\n    }\n    return result;\n};\n\n/**\n * Transform arbitrary content into a Promise.\n * @param {String} name a name for the content being processed.\n * @param {Object} inputData the content to process.\n * @param {Boolean} isBinary true if the content is not an unicode string\n * @param {Boolean} isOptimizedBinaryString true if the string content only has one byte per character.\n * @param {Boolean} isBase64 true if the string content is encoded with base64.\n * @return {Promise} a promise in a format usable by JSZip.\n */\nexports.prepareContent = function(name, inputData, isBinary, isOptimizedBinaryString, isBase64) {\n\n    // if inputData is already a promise, this flatten it.\n    var promise = external.Promise.resolve(inputData).then(function(data) {\n        \n        \n        var isBlob = support.blob && (data instanceof Blob || ['[object File]', '[object Blob]'].indexOf(Object.prototype.toString.call(data)) !== -1);\n\n        if (isBlob && typeof FileReader !== \"undefined\") {\n            return new external.Promise(function (resolve, reject) {\n                var reader = new FileReader();\n\n                reader.onload = function(e) {\n                    resolve(e.target.result);\n                };\n                reader.onerror = function(e) {\n                    reject(e.target.error);\n                };\n                reader.readAsArrayBuffer(data);\n            });\n        } else {\n            return data;\n        }\n    });\n\n    return promise.then(function(data) {\n        var dataType = exports.getTypeOf(data);\n\n        if (!dataType) {\n            return external.Promise.reject(\n                new Error(\"Can't read the data of '\" + name + \"'. Is it \" +\n                          \"in a supported JavaScript type (String, Blob, ArrayBuffer, etc) ?\")\n            );\n        }\n        // special case : it's way easier to work with Uint8Array than with ArrayBuffer\n        if (dataType === \"arraybuffer\") {\n            data = exports.transformTo(\"uint8array\", data);\n        } else if (dataType === \"string\") {\n            if (isBase64) {\n                data = base64.decode(data);\n            }\n            else if (isBinary) {\n                // optimizedBinaryString === true means that the file has already been filtered with a 0xFF mask\n                if (isOptimizedBinaryString !== true) {\n                    // this is a string, not in a base64 format.\n                    // Be sure that this is a correct \"binary string\"\n                    data = string2binary(data);\n                }\n            }\n        }\n        return data;\n    });\n};\n\n},{\"./base64\":1,\"./external\":6,\"./nodejsUtils\":14,\"./support\":30,\"set-immediate-shim\":54}],33:[function(require,module,exports){\n'use strict';\nvar readerFor = require('./reader/readerFor');\nvar utils = require('./utils');\nvar sig = require('./signature');\nvar ZipEntry = require('./zipEntry');\nvar utf8 = require('./utf8');\nvar support = require('./support');\n//  class ZipEntries {{{\n/**\n * All the entries in the zip file.\n * @constructor\n * @param {Object} loadOptions Options for loading the stream.\n */\nfunction ZipEntries(loadOptions) {\n    this.files = [];\n    this.loadOptions = loadOptions;\n}\nZipEntries.prototype = {\n    /**\n     * Check that the reader is on the specified signature.\n     * @param {string} expectedSignature the expected signature.\n     * @throws {Error} if it is an other signature.\n     */\n    checkSignature: function(expectedSignature) {\n        if (!this.reader.readAndCheckSignature(expectedSignature)) {\n            this.reader.index -= 4;\n            var signature = this.reader.readString(4);\n            throw new Error(\"Corrupted zip or bug: unexpected signature \" + \"(\" + utils.pretty(signature) + \", expected \" + utils.pretty(expectedSignature) + \")\");\n        }\n    },\n    /**\n     * Check if the given signature is at the given index.\n     * @param {number} askedIndex the index to check.\n     * @param {string} expectedSignature the signature to expect.\n     * @return {boolean} true if the signature is here, false otherwise.\n     */\n    isSignature: function(askedIndex, expectedSignature) {\n        var currentIndex = this.reader.index;\n        this.reader.setIndex(askedIndex);\n        var signature = this.reader.readString(4);\n        var result = signature === expectedSignature;\n        this.reader.setIndex(currentIndex);\n        return result;\n    },\n    /**\n     * Read the end of the central directory.\n     */\n    readBlockEndOfCentral: function() {\n        this.diskNumber = this.reader.readInt(2);\n        this.diskWithCentralDirStart = this.reader.readInt(2);\n        this.centralDirRecordsOnThisDisk = this.reader.readInt(2);\n        this.centralDirRecords = this.reader.readInt(2);\n        this.centralDirSize = this.reader.readInt(4);\n        this.centralDirOffset = this.reader.readInt(4);\n\n        this.zipCommentLength = this.reader.readInt(2);\n        // warning : the encoding depends of the system locale\n        // On a linux machine with LANG=en_US.utf8, this field is utf8 encoded.\n        // On a windows machine, this field is encoded with the localized windows code page.\n        var zipComment = this.reader.readData(this.zipCommentLength);\n        var decodeParamType = support.uint8array ? \"uint8array\" : \"array\";\n        // To get consistent behavior with the generation part, we will assume that\n        // this is utf8 encoded unless specified otherwise.\n        var decodeContent = utils.transformTo(decodeParamType, zipComment);\n        this.zipComment = this.loadOptions.decodeFileName(decodeContent);\n    },\n    /**\n     * Read the end of the Zip 64 central directory.\n     * Not merged with the method readEndOfCentral :\n     * The end of central can coexist with its Zip64 brother,\n     * I don't want to read the wrong number of bytes !\n     */\n    readBlockZip64EndOfCentral: function() {\n        this.zip64EndOfCentralSize = this.reader.readInt(8);\n        this.reader.skip(4);\n        // this.versionMadeBy = this.reader.readString(2);\n        // this.versionNeeded = this.reader.readInt(2);\n        this.diskNumber = this.reader.readInt(4);\n        this.diskWithCentralDirStart = this.reader.readInt(4);\n        this.centralDirRecordsOnThisDisk = this.reader.readInt(8);\n        this.centralDirRecords = this.reader.readInt(8);\n        this.centralDirSize = this.reader.readInt(8);\n        this.centralDirOffset = this.reader.readInt(8);\n\n        this.zip64ExtensibleData = {};\n        var extraDataSize = this.zip64EndOfCentralSize - 44,\n            index = 0,\n            extraFieldId,\n            extraFieldLength,\n            extraFieldValue;\n        while (index < extraDataSize) {\n            extraFieldId = this.reader.readInt(2);\n            extraFieldLength = this.reader.readInt(4);\n            extraFieldValue = this.reader.readData(extraFieldLength);\n            this.zip64ExtensibleData[extraFieldId] = {\n                id: extraFieldId,\n                length: extraFieldLength,\n                value: extraFieldValue\n            };\n        }\n    },\n    /**\n     * Read the end of the Zip 64 central directory locator.\n     */\n    readBlockZip64EndOfCentralLocator: function() {\n        this.diskWithZip64CentralDirStart = this.reader.readInt(4);\n        this.relativeOffsetEndOfZip64CentralDir = this.reader.readInt(8);\n        this.disksCount = this.reader.readInt(4);\n        if (this.disksCount > 1) {\n            throw new Error(\"Multi-volumes zip are not supported\");\n        }\n    },\n    /**\n     * Read the local files, based on the offset read in the central part.\n     */\n    readLocalFiles: function() {\n        var i, file;\n        for (i = 0; i < this.files.length; i++) {\n            file = this.files[i];\n            this.reader.setIndex(file.localHeaderOffset);\n            this.checkSignature(sig.LOCAL_FILE_HEADER);\n            file.readLocalPart(this.reader);\n            file.handleUTF8();\n            file.processAttributes();\n        }\n    },\n    /**\n     * Read the central directory.\n     */\n    readCentralDir: function() {\n        var file;\n\n        this.reader.setIndex(this.centralDirOffset);\n        while (this.reader.readAndCheckSignature(sig.CENTRAL_FILE_HEADER)) {\n            file = new ZipEntry({\n                zip64: this.zip64\n            }, this.loadOptions);\n            file.readCentralPart(this.reader);\n            this.files.push(file);\n        }\n\n        if (this.centralDirRecords !== this.files.length) {\n            if (this.centralDirRecords !== 0 && this.files.length === 0) {\n                // We expected some records but couldn't find ANY.\n                // This is really suspicious, as if something went wrong.\n                throw new Error(\"Corrupted zip or bug: expected \" + this.centralDirRecords + \" records in central dir, got \" + this.files.length);\n            } else {\n                // We found some records but not all.\n                // Something is wrong but we got something for the user: no error here.\n                // console.warn(\"expected\", this.centralDirRecords, \"records in central dir, got\", this.files.length);\n            }\n        }\n    },\n    /**\n     * Read the end of central directory.\n     */\n    readEndOfCentral: function() {\n        var offset = this.reader.lastIndexOfSignature(sig.CENTRAL_DIRECTORY_END);\n        if (offset < 0) {\n            // Check if the content is a truncated zip or complete garbage.\n            // A \"LOCAL_FILE_HEADER\" is not required at the beginning (auto\n            // extractible zip for example) but it can give a good hint.\n            // If an ajax request was used without responseType, we will also\n            // get unreadable data.\n            var isGarbage = !this.isSignature(0, sig.LOCAL_FILE_HEADER);\n\n            if (isGarbage) {\n                throw new Error(\"Can't find end of central directory : is this a zip file ? \" +\n                                \"If it is, see https://stuk.github.io/jszip/documentation/howto/read_zip.html\");\n            } else {\n                throw new Error(\"Corrupted zip: can't find end of central directory\");\n            }\n\n        }\n        this.reader.setIndex(offset);\n        var endOfCentralDirOffset = offset;\n        this.checkSignature(sig.CENTRAL_DIRECTORY_END);\n        this.readBlockEndOfCentral();\n\n\n        /* extract from the zip spec :\n            4)  If one of the fields in the end of central directory\n                record is too small to hold required data, the field\n                should be set to -1 (0xFFFF or 0xFFFFFFFF) and the\n                ZIP64 format record should be created.\n            5)  The end of central directory record and the\n                Zip64 end of central directory locator record must\n                reside on the same disk when splitting or spanning\n                an archive.\n         */\n        if (this.diskNumber === utils.MAX_VALUE_16BITS || this.diskWithCentralDirStart === utils.MAX_VALUE_16BITS || this.centralDirRecordsOnThisDisk === utils.MAX_VALUE_16BITS || this.centralDirRecords === utils.MAX_VALUE_16BITS || this.centralDirSize === utils.MAX_VALUE_32BITS || this.centralDirOffset === utils.MAX_VALUE_32BITS) {\n            this.zip64 = true;\n\n            /*\n            Warning : the zip64 extension is supported, but ONLY if the 64bits integer read from\n            the zip file can fit into a 32bits integer. This cannot be solved : JavaScript represents\n            all numbers as 64-bit double precision IEEE 754 floating point numbers.\n            So, we have 53bits for integers and bitwise operations treat everything as 32bits.\n            see https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/Bitwise_Operators\n            and http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-262.pdf section 8.5\n            */\n\n            // should look for a zip64 EOCD locator\n            offset = this.reader.lastIndexOfSignature(sig.ZIP64_CENTRAL_DIRECTORY_LOCATOR);\n            if (offset < 0) {\n                throw new Error(\"Corrupted zip: can't find the ZIP64 end of central directory locator\");\n            }\n            this.reader.setIndex(offset);\n            this.checkSignature(sig.ZIP64_CENTRAL_DIRECTORY_LOCATOR);\n            this.readBlockZip64EndOfCentralLocator();\n\n            // now the zip64 EOCD record\n            if (!this.isSignature(this.relativeOffsetEndOfZip64CentralDir, sig.ZIP64_CENTRAL_DIRECTORY_END)) {\n                // console.warn(\"ZIP64 end of central directory not where expected.\");\n                this.relativeOffsetEndOfZip64CentralDir = this.reader.lastIndexOfSignature(sig.ZIP64_CENTRAL_DIRECTORY_END);\n                if (this.relativeOffsetEndOfZip64CentralDir < 0) {\n                    throw new Error(\"Corrupted zip: can't find the ZIP64 end of central directory\");\n                }\n            }\n            this.reader.setIndex(this.relativeOffsetEndOfZip64CentralDir);\n            this.checkSignature(sig.ZIP64_CENTRAL_DIRECTORY_END);\n            this.readBlockZip64EndOfCentral();\n        }\n\n        var expectedEndOfCentralDirOffset = this.centralDirOffset + this.centralDirSize;\n        if (this.zip64) {\n            expectedEndOfCentralDirOffset += 20; // end of central dir 64 locator\n            expectedEndOfCentralDirOffset += 12 /* should not include the leading 12 bytes */ + this.zip64EndOfCentralSize;\n        }\n\n        var extraBytes = endOfCentralDirOffset - expectedEndOfCentralDirOffset;\n\n        if (extraBytes > 0) {\n            // console.warn(extraBytes, \"extra bytes at beginning or within zipfile\");\n            if (this.isSignature(endOfCentralDirOffset, sig.CENTRAL_FILE_HEADER)) {\n                // The offsets seem wrong, but we have something at the specified offset.\n                // So… we keep it.\n            } else {\n                // the offset is wrong, update the \"zero\" of the reader\n                // this happens if data has been prepended (crx files for example)\n                this.reader.zero = extraBytes;\n            }\n        } else if (extraBytes < 0) {\n            throw new Error(\"Corrupted zip: missing \" + Math.abs(extraBytes) + \" bytes.\");\n        }\n    },\n    prepareReader: function(data) {\n        this.reader = readerFor(data);\n    },\n    /**\n     * Read a zip file and create ZipEntries.\n     * @param {String|ArrayBuffer|Uint8Array|Buffer} data the binary string representing a zip file.\n     */\n    load: function(data) {\n        this.prepareReader(data);\n        this.readEndOfCentral();\n        this.readCentralDir();\n        this.readLocalFiles();\n    }\n};\n// }}} end of ZipEntries\nmodule.exports = ZipEntries;\n\n},{\"./reader/readerFor\":22,\"./signature\":23,\"./support\":30,\"./utf8\":31,\"./utils\":32,\"./zipEntry\":34}],34:[function(require,module,exports){\n'use strict';\nvar readerFor = require('./reader/readerFor');\nvar utils = require('./utils');\nvar CompressedObject = require('./compressedObject');\nvar crc32fn = require('./crc32');\nvar utf8 = require('./utf8');\nvar compressions = require('./compressions');\nvar support = require('./support');\n\nvar MADE_BY_DOS = 0x00;\nvar MADE_BY_UNIX = 0x03;\n\n/**\n * Find a compression registered in JSZip.\n * @param {string} compressionMethod the method magic to find.\n * @return {Object|null} the JSZip compression object, null if none found.\n */\nvar findCompression = function(compressionMethod) {\n    for (var method in compressions) {\n        if (!compressions.hasOwnProperty(method)) {\n            continue;\n        }\n        if (compressions[method].magic === compressionMethod) {\n            return compressions[method];\n        }\n    }\n    return null;\n};\n\n// class ZipEntry {{{\n/**\n * An entry in the zip file.\n * @constructor\n * @param {Object} options Options of the current file.\n * @param {Object} loadOptions Options for loading the stream.\n */\nfunction ZipEntry(options, loadOptions) {\n    this.options = options;\n    this.loadOptions = loadOptions;\n}\nZipEntry.prototype = {\n    /**\n     * say if the file is encrypted.\n     * @return {boolean} true if the file is encrypted, false otherwise.\n     */\n    isEncrypted: function() {\n        // bit 1 is set\n        return (this.bitFlag & 0x0001) === 0x0001;\n    },\n    /**\n     * say if the file has utf-8 filename/comment.\n     * @return {boolean} true if the filename/comment is in utf-8, false otherwise.\n     */\n    useUTF8: function() {\n        // bit 11 is set\n        return (this.bitFlag & 0x0800) === 0x0800;\n    },\n    /**\n     * Read the local part of a zip file and add the info in this object.\n     * @param {DataReader} reader the reader to use.\n     */\n    readLocalPart: function(reader) {\n        var compression, localExtraFieldsLength;\n\n        // we already know everything from the central dir !\n        // If the central dir data are false, we are doomed.\n        // On the bright side, the local part is scary  : zip64, data descriptors, both, etc.\n        // The less data we get here, the more reliable this should be.\n        // Let's skip the whole header and dash to the data !\n        reader.skip(22);\n        // in some zip created on windows, the filename stored in the central dir contains \\ instead of /.\n        // Strangely, the filename here is OK.\n        // I would love to treat these zip files as corrupted (see http://www.info-zip.org/FAQ.html#backslashes\n        // or APPNOTE#4.4.17.1, \"All slashes MUST be forward slashes '/'\") but there are a lot of bad zip generators...\n        // Search \"unzip mismatching \"local\" filename continuing with \"central\" filename version\" on\n        // the internet.\n        //\n        // I think I see the logic here : the central directory is used to display\n        // content and the local directory is used to extract the files. Mixing / and \\\n        // may be used to display \\ to windows users and use / when extracting the files.\n        // Unfortunately, this lead also to some issues : http://seclists.org/fulldisclosure/2009/Sep/394\n        this.fileNameLength = reader.readInt(2);\n        localExtraFieldsLength = reader.readInt(2); // can't be sure this will be the same as the central dir\n        // the fileName is stored as binary data, the handleUTF8 method will take care of the encoding.\n        this.fileName = reader.readData(this.fileNameLength);\n        reader.skip(localExtraFieldsLength);\n\n        if (this.compressedSize === -1 || this.uncompressedSize === -1) {\n            throw new Error(\"Bug or corrupted zip : didn't get enough information from the central directory \" + \"(compressedSize === -1 || uncompressedSize === -1)\");\n        }\n\n        compression = findCompression(this.compressionMethod);\n        if (compression === null) { // no compression found\n            throw new Error(\"Corrupted zip : compression \" + utils.pretty(this.compressionMethod) + \" unknown (inner file : \" + utils.transformTo(\"string\", this.fileName) + \")\");\n        }\n        this.decompressed = new CompressedObject(this.compressedSize, this.uncompressedSize, this.crc32, compression, reader.readData(this.compressedSize));\n    },\n\n    /**\n     * Read the central part of a zip file and add the info in this object.\n     * @param {DataReader} reader the reader to use.\n     */\n    readCentralPart: function(reader) {\n        this.versionMadeBy = reader.readInt(2);\n        reader.skip(2);\n        // this.versionNeeded = reader.readInt(2);\n        this.bitFlag = reader.readInt(2);\n        this.compressionMethod = reader.readString(2);\n        this.date = reader.readDate();\n        this.crc32 = reader.readInt(4);\n        this.compressedSize = reader.readInt(4);\n        this.uncompressedSize = reader.readInt(4);\n        var fileNameLength = reader.readInt(2);\n        this.extraFieldsLength = reader.readInt(2);\n        this.fileCommentLength = reader.readInt(2);\n        this.diskNumberStart = reader.readInt(2);\n        this.internalFileAttributes = reader.readInt(2);\n        this.externalFileAttributes = reader.readInt(4);\n        this.localHeaderOffset = reader.readInt(4);\n\n        if (this.isEncrypted()) {\n            throw new Error(\"Encrypted zip are not supported\");\n        }\n\n        // will be read in the local part, see the comments there\n        reader.skip(fileNameLength);\n        this.readExtraFields(reader);\n        this.parseZIP64ExtraField(reader);\n        this.fileComment = reader.readData(this.fileCommentLength);\n    },\n\n    /**\n     * Parse the external file attributes and get the unix/dos permissions.\n     */\n    processAttributes: function () {\n        this.unixPermissions = null;\n        this.dosPermissions = null;\n        var madeBy = this.versionMadeBy >> 8;\n\n        // Check if we have the DOS directory flag set.\n        // We look for it in the DOS and UNIX permissions\n        // but some unknown platform could set it as a compatibility flag.\n        this.dir = this.externalFileAttributes & 0x0010 ? true : false;\n\n        if(madeBy === MADE_BY_DOS) {\n            // first 6 bits (0 to 5)\n            this.dosPermissions = this.externalFileAttributes & 0x3F;\n        }\n\n        if(madeBy === MADE_BY_UNIX) {\n            this.unixPermissions = (this.externalFileAttributes >> 16) & 0xFFFF;\n            // the octal permissions are in (this.unixPermissions & 0x01FF).toString(8);\n        }\n\n        // fail safe : if the name ends with a / it probably means a folder\n        if (!this.dir && this.fileNameStr.slice(-1) === '/') {\n            this.dir = true;\n        }\n    },\n\n    /**\n     * Parse the ZIP64 extra field and merge the info in the current ZipEntry.\n     * @param {DataReader} reader the reader to use.\n     */\n    parseZIP64ExtraField: function(reader) {\n\n        if (!this.extraFields[0x0001]) {\n            return;\n        }\n\n        // should be something, preparing the extra reader\n        var extraReader = readerFor(this.extraFields[0x0001].value);\n\n        // I really hope that these 64bits integer can fit in 32 bits integer, because js\n        // won't let us have more.\n        if (this.uncompressedSize === utils.MAX_VALUE_32BITS) {\n            this.uncompressedSize = extraReader.readInt(8);\n        }\n        if (this.compressedSize === utils.MAX_VALUE_32BITS) {\n            this.compressedSize = extraReader.readInt(8);\n        }\n        if (this.localHeaderOffset === utils.MAX_VALUE_32BITS) {\n            this.localHeaderOffset = extraReader.readInt(8);\n        }\n        if (this.diskNumberStart === utils.MAX_VALUE_32BITS) {\n            this.diskNumberStart = extraReader.readInt(4);\n        }\n    },\n    /**\n     * Read the central part of a zip file and add the info in this object.\n     * @param {DataReader} reader the reader to use.\n     */\n    readExtraFields: function(reader) {\n        var end = reader.index + this.extraFieldsLength,\n            extraFieldId,\n            extraFieldLength,\n            extraFieldValue;\n\n        if (!this.extraFields) {\n            this.extraFields = {};\n        }\n\n        while (reader.index + 4 < end) {\n            extraFieldId = reader.readInt(2);\n            extraFieldLength = reader.readInt(2);\n            extraFieldValue = reader.readData(extraFieldLength);\n\n            this.extraFields[extraFieldId] = {\n                id: extraFieldId,\n                length: extraFieldLength,\n                value: extraFieldValue\n            };\n        }\n\n        reader.setIndex(end);\n    },\n    /**\n     * Apply an UTF8 transformation if needed.\n     */\n    handleUTF8: function() {\n        var decodeParamType = support.uint8array ? \"uint8array\" : \"array\";\n        if (this.useUTF8()) {\n            this.fileNameStr = utf8.utf8decode(this.fileName);\n            this.fileCommentStr = utf8.utf8decode(this.fileComment);\n        } else {\n            var upath = this.findExtraFieldUnicodePath();\n            if (upath !== null) {\n                this.fileNameStr = upath;\n            } else {\n                // ASCII text or unsupported code page\n                var fileNameByteArray =  utils.transformTo(decodeParamType, this.fileName);\n                this.fileNameStr = this.loadOptions.decodeFileName(fileNameByteArray);\n            }\n\n            var ucomment = this.findExtraFieldUnicodeComment();\n            if (ucomment !== null) {\n                this.fileCommentStr = ucomment;\n            } else {\n                // ASCII text or unsupported code page\n                var commentByteArray =  utils.transformTo(decodeParamType, this.fileComment);\n                this.fileCommentStr = this.loadOptions.decodeFileName(commentByteArray);\n            }\n        }\n    },\n\n    /**\n     * Find the unicode path declared in the extra field, if any.\n     * @return {String} the unicode path, null otherwise.\n     */\n    findExtraFieldUnicodePath: function() {\n        var upathField = this.extraFields[0x7075];\n        if (upathField) {\n            var extraReader = readerFor(upathField.value);\n\n            // wrong version\n            if (extraReader.readInt(1) !== 1) {\n                return null;\n            }\n\n            // the crc of the filename changed, this field is out of date.\n            if (crc32fn(this.fileName) !== extraReader.readInt(4)) {\n                return null;\n            }\n\n            return utf8.utf8decode(extraReader.readData(upathField.length - 5));\n        }\n        return null;\n    },\n\n    /**\n     * Find the unicode comment declared in the extra field, if any.\n     * @return {String} the unicode comment, null otherwise.\n     */\n    findExtraFieldUnicodeComment: function() {\n        var ucommentField = this.extraFields[0x6375];\n        if (ucommentField) {\n            var extraReader = readerFor(ucommentField.value);\n\n            // wrong version\n            if (extraReader.readInt(1) !== 1) {\n                return null;\n            }\n\n            // the crc of the comment changed, this field is out of date.\n            if (crc32fn(this.fileComment) !== extraReader.readInt(4)) {\n                return null;\n            }\n\n            return utf8.utf8decode(extraReader.readData(ucommentField.length - 5));\n        }\n        return null;\n    }\n};\nmodule.exports = ZipEntry;\n\n},{\"./compressedObject\":2,\"./compressions\":3,\"./crc32\":4,\"./reader/readerFor\":22,\"./support\":30,\"./utf8\":31,\"./utils\":32}],35:[function(require,module,exports){\n'use strict';\n\nvar StreamHelper = require('./stream/StreamHelper');\nvar DataWorker = require('./stream/DataWorker');\nvar utf8 = require('./utf8');\nvar CompressedObject = require('./compressedObject');\nvar GenericWorker = require('./stream/GenericWorker');\n\n/**\n * A simple object representing a file in the zip file.\n * @constructor\n * @param {string} name the name of the file\n * @param {String|ArrayBuffer|Uint8Array|Buffer} data the data\n * @param {Object} options the options of the file\n */\nvar ZipObject = function(name, data, options) {\n    this.name = name;\n    this.dir = options.dir;\n    this.date = options.date;\n    this.comment = options.comment;\n    this.unixPermissions = options.unixPermissions;\n    this.dosPermissions = options.dosPermissions;\n\n    this._data = data;\n    this._dataBinary = options.binary;\n    // keep only the compression\n    this.options = {\n        compression : options.compression,\n        compressionOptions : options.compressionOptions\n    };\n};\n\nZipObject.prototype = {\n    /**\n     * Create an internal stream for the content of this object.\n     * @param {String} type the type of each chunk.\n     * @return StreamHelper the stream.\n     */\n    internalStream: function (type) {\n        var result = null, outputType = \"string\";\n        try {\n            if (!type) {\n                throw new Error(\"No output type specified.\");\n            }\n            outputType = type.toLowerCase();\n            var askUnicodeString = outputType === \"string\" || outputType === \"text\";\n            if (outputType === \"binarystring\" || outputType === \"text\") {\n                outputType = \"string\";\n            }\n            result = this._decompressWorker();\n\n            var isUnicodeString = !this._dataBinary;\n\n            if (isUnicodeString && !askUnicodeString) {\n                result = result.pipe(new utf8.Utf8EncodeWorker());\n            }\n            if (!isUnicodeString && askUnicodeString) {\n                result = result.pipe(new utf8.Utf8DecodeWorker());\n            }\n        } catch (e) {\n            result = new GenericWorker(\"error\");\n            result.error(e);\n        }\n\n        return new StreamHelper(result, outputType, \"\");\n    },\n\n    /**\n     * Prepare the content in the asked type.\n     * @param {String} type the type of the result.\n     * @param {Function} onUpdate a function to call on each internal update.\n     * @return Promise the promise of the result.\n     */\n    async: function (type, onUpdate) {\n        return this.internalStream(type).accumulate(onUpdate);\n    },\n\n    /**\n     * Prepare the content as a nodejs stream.\n     * @param {String} type the type of each chunk.\n     * @param {Function} onUpdate a function to call on each internal update.\n     * @return Stream the stream.\n     */\n    nodeStream: function (type, onUpdate) {\n        return this.internalStream(type || \"nodebuffer\").toNodejsStream(onUpdate);\n    },\n\n    /**\n     * Return a worker for the compressed content.\n     * @private\n     * @param {Object} compression the compression object to use.\n     * @param {Object} compressionOptions the options to use when compressing.\n     * @return Worker the worker.\n     */\n    _compressWorker: function (compression, compressionOptions) {\n        if (\n            this._data instanceof CompressedObject &&\n            this._data.compression.magic === compression.magic\n        ) {\n            return this._data.getCompressedWorker();\n        } else {\n            var result = this._decompressWorker();\n            if(!this._dataBinary) {\n                result = result.pipe(new utf8.Utf8EncodeWorker());\n            }\n            return CompressedObject.createWorkerFrom(result, compression, compressionOptions);\n        }\n    },\n    /**\n     * Return a worker for the decompressed content.\n     * @private\n     * @return Worker the worker.\n     */\n    _decompressWorker : function () {\n        if (this._data instanceof CompressedObject) {\n            return this._data.getContentWorker();\n        } else if (this._data instanceof GenericWorker) {\n            return this._data;\n        } else {\n            return new DataWorker(this._data);\n        }\n    }\n};\n\nvar removedMethods = [\"asText\", \"asBinary\", \"asNodeBuffer\", \"asUint8Array\", \"asArrayBuffer\"];\nvar removedFn = function () {\n    throw new Error(\"This method has been removed in JSZip 3.0, please check the upgrade guide.\");\n};\n\nfor(var i = 0; i < removedMethods.length; i++) {\n    ZipObject.prototype[removedMethods[i]] = removedFn;\n}\nmodule.exports = ZipObject;\n\n},{\"./compressedObject\":2,\"./stream/DataWorker\":27,\"./stream/GenericWorker\":28,\"./stream/StreamHelper\":29,\"./utf8\":31}],36:[function(require,module,exports){\n(function (global){\n'use strict';\nvar Mutation = global.MutationObserver || global.WebKitMutationObserver;\n\nvar scheduleDrain;\n\n{\n  if (Mutation) {\n    var called = 0;\n    var observer = new Mutation(nextTick);\n    var element = global.document.createTextNode('');\n    observer.observe(element, {\n      characterData: true\n    });\n    scheduleDrain = function () {\n      element.data = (called = ++called % 2);\n    };\n  } else if (!global.setImmediate && typeof global.MessageChannel !== 'undefined') {\n    var channel = new global.MessageChannel();\n    channel.port1.onmessage = nextTick;\n    scheduleDrain = function () {\n      channel.port2.postMessage(0);\n    };\n  } else if ('document' in global && 'onreadystatechange' in global.document.createElement('script')) {\n    scheduleDrain = function () {\n\n      // Create a <script> element; its readystatechange event will be fired asynchronously once it is inserted\n      // into the document. Do so, thus queuing up the task. Remember to clean up once it's been called.\n      var scriptEl = global.document.createElement('script');\n      scriptEl.onreadystatechange = function () {\n        nextTick();\n\n        scriptEl.onreadystatechange = null;\n        scriptEl.parentNode.removeChild(scriptEl);\n        scriptEl = null;\n      };\n      global.document.documentElement.appendChild(scriptEl);\n    };\n  } else {\n    scheduleDrain = function () {\n      setTimeout(nextTick, 0);\n    };\n  }\n}\n\nvar draining;\nvar queue = [];\n//named nextTick for less confusing stack traces\nfunction nextTick() {\n  draining = true;\n  var i, oldQueue;\n  var len = queue.length;\n  while (len) {\n    oldQueue = queue;\n    queue = [];\n    i = -1;\n    while (++i < len) {\n      oldQueue[i]();\n    }\n    len = queue.length;\n  }\n  draining = false;\n}\n\nmodule.exports = immediate;\nfunction immediate(task) {\n  if (queue.push(task) === 1 && !draining) {\n    scheduleDrain();\n  }\n}\n\n}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n},{}],37:[function(require,module,exports){\n'use strict';\nvar immediate = require('immediate');\n\n/* istanbul ignore next */\nfunction INTERNAL() {}\n\nvar handlers = {};\n\nvar REJECTED = ['REJECTED'];\nvar FULFILLED = ['FULFILLED'];\nvar PENDING = ['PENDING'];\n\nmodule.exports = Promise;\n\nfunction Promise(resolver) {\n  if (typeof resolver !== 'function') {\n    throw new TypeError('resolver must be a function');\n  }\n  this.state = PENDING;\n  this.queue = [];\n  this.outcome = void 0;\n  if (resolver !== INTERNAL) {\n    safelyResolveThenable(this, resolver);\n  }\n}\n\nPromise.prototype[\"finally\"] = function (callback) {\n  if (typeof callback !== 'function') {\n    return this;\n  }\n  var p = this.constructor;\n  return this.then(resolve, reject);\n\n  function resolve(value) {\n    function yes () {\n      return value;\n    }\n    return p.resolve(callback()).then(yes);\n  }\n  function reject(reason) {\n    function no () {\n      throw reason;\n    }\n    return p.resolve(callback()).then(no);\n  }\n};\nPromise.prototype[\"catch\"] = function (onRejected) {\n  return this.then(null, onRejected);\n};\nPromise.prototype.then = function (onFulfilled, onRejected) {\n  if (typeof onFulfilled !== 'function' && this.state === FULFILLED ||\n    typeof onRejected !== 'function' && this.state === REJECTED) {\n    return this;\n  }\n  var promise = new this.constructor(INTERNAL);\n  if (this.state !== PENDING) {\n    var resolver = this.state === FULFILLED ? onFulfilled : onRejected;\n    unwrap(promise, resolver, this.outcome);\n  } else {\n    this.queue.push(new QueueItem(promise, onFulfilled, onRejected));\n  }\n\n  return promise;\n};\nfunction QueueItem(promise, onFulfilled, onRejected) {\n  this.promise = promise;\n  if (typeof onFulfilled === 'function') {\n    this.onFulfilled = onFulfilled;\n    this.callFulfilled = this.otherCallFulfilled;\n  }\n  if (typeof onRejected === 'function') {\n    this.onRejected = onRejected;\n    this.callRejected = this.otherCallRejected;\n  }\n}\nQueueItem.prototype.callFulfilled = function (value) {\n  handlers.resolve(this.promise, value);\n};\nQueueItem.prototype.otherCallFulfilled = function (value) {\n  unwrap(this.promise, this.onFulfilled, value);\n};\nQueueItem.prototype.callRejected = function (value) {\n  handlers.reject(this.promise, value);\n};\nQueueItem.prototype.otherCallRejected = function (value) {\n  unwrap(this.promise, this.onRejected, value);\n};\n\nfunction unwrap(promise, func, value) {\n  immediate(function () {\n    var returnValue;\n    try {\n      returnValue = func(value);\n    } catch (e) {\n      return handlers.reject(promise, e);\n    }\n    if (returnValue === promise) {\n      handlers.reject(promise, new TypeError('Cannot resolve promise with itself'));\n    } else {\n      handlers.resolve(promise, returnValue);\n    }\n  });\n}\n\nhandlers.resolve = function (self, value) {\n  var result = tryCatch(getThen, value);\n  if (result.status === 'error') {\n    return handlers.reject(self, result.value);\n  }\n  var thenable = result.value;\n\n  if (thenable) {\n    safelyResolveThenable(self, thenable);\n  } else {\n    self.state = FULFILLED;\n    self.outcome = value;\n    var i = -1;\n    var len = self.queue.length;\n    while (++i < len) {\n      self.queue[i].callFulfilled(value);\n    }\n  }\n  return self;\n};\nhandlers.reject = function (self, error) {\n  self.state = REJECTED;\n  self.outcome = error;\n  var i = -1;\n  var len = self.queue.length;\n  while (++i < len) {\n    self.queue[i].callRejected(error);\n  }\n  return self;\n};\n\nfunction getThen(obj) {\n  // Make sure we only access the accessor once as required by the spec\n  var then = obj && obj.then;\n  if (obj && (typeof obj === 'object' || typeof obj === 'function') && typeof then === 'function') {\n    return function appyThen() {\n      then.apply(obj, arguments);\n    };\n  }\n}\n\nfunction safelyResolveThenable(self, thenable) {\n  // Either fulfill, reject or reject with error\n  var called = false;\n  function onError(value) {\n    if (called) {\n      return;\n    }\n    called = true;\n    handlers.reject(self, value);\n  }\n\n  function onSuccess(value) {\n    if (called) {\n      return;\n    }\n    called = true;\n    handlers.resolve(self, value);\n  }\n\n  function tryToUnwrap() {\n    thenable(onSuccess, onError);\n  }\n\n  var result = tryCatch(tryToUnwrap);\n  if (result.status === 'error') {\n    onError(result.value);\n  }\n}\n\nfunction tryCatch(func, value) {\n  var out = {};\n  try {\n    out.value = func(value);\n    out.status = 'success';\n  } catch (e) {\n    out.status = 'error';\n    out.value = e;\n  }\n  return out;\n}\n\nPromise.resolve = resolve;\nfunction resolve(value) {\n  if (value instanceof this) {\n    return value;\n  }\n  return handlers.resolve(new this(INTERNAL), value);\n}\n\nPromise.reject = reject;\nfunction reject(reason) {\n  var promise = new this(INTERNAL);\n  return handlers.reject(promise, reason);\n}\n\nPromise.all = all;\nfunction all(iterable) {\n  var self = this;\n  if (Object.prototype.toString.call(iterable) !== '[object Array]') {\n    return this.reject(new TypeError('must be an array'));\n  }\n\n  var len = iterable.length;\n  var called = false;\n  if (!len) {\n    return this.resolve([]);\n  }\n\n  var values = new Array(len);\n  var resolved = 0;\n  var i = -1;\n  var promise = new this(INTERNAL);\n\n  while (++i < len) {\n    allResolver(iterable[i], i);\n  }\n  return promise;\n  function allResolver(value, i) {\n    self.resolve(value).then(resolveFromAll, function (error) {\n      if (!called) {\n        called = true;\n        handlers.reject(promise, error);\n      }\n    });\n    function resolveFromAll(outValue) {\n      values[i] = outValue;\n      if (++resolved === len && !called) {\n        called = true;\n        handlers.resolve(promise, values);\n      }\n    }\n  }\n}\n\nPromise.race = race;\nfunction race(iterable) {\n  var self = this;\n  if (Object.prototype.toString.call(iterable) !== '[object Array]') {\n    return this.reject(new TypeError('must be an array'));\n  }\n\n  var len = iterable.length;\n  var called = false;\n  if (!len) {\n    return this.resolve([]);\n  }\n\n  var i = -1;\n  var promise = new this(INTERNAL);\n\n  while (++i < len) {\n    resolver(iterable[i]);\n  }\n  return promise;\n  function resolver(value) {\n    self.resolve(value).then(function (response) {\n      if (!called) {\n        called = true;\n        handlers.resolve(promise, response);\n      }\n    }, function (error) {\n      if (!called) {\n        called = true;\n        handlers.reject(promise, error);\n      }\n    });\n  }\n}\n\n},{\"immediate\":36}],38:[function(require,module,exports){\n// Top level file is just a mixin of submodules & constants\n'use strict';\n\nvar assign    = require('./lib/utils/common').assign;\n\nvar deflate   = require('./lib/deflate');\nvar inflate   = require('./lib/inflate');\nvar constants = require('./lib/zlib/constants');\n\nvar pako = {};\n\nassign(pako, deflate, inflate, constants);\n\nmodule.exports = pako;\n\n},{\"./lib/deflate\":39,\"./lib/inflate\":40,\"./lib/utils/common\":41,\"./lib/zlib/constants\":44}],39:[function(require,module,exports){\n'use strict';\n\n\nvar zlib_deflate = require('./zlib/deflate');\nvar utils        = require('./utils/common');\nvar strings      = require('./utils/strings');\nvar msg          = require('./zlib/messages');\nvar ZStream      = require('./zlib/zstream');\n\nvar toString = Object.prototype.toString;\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\nvar Z_NO_FLUSH      = 0;\nvar Z_FINISH        = 4;\n\nvar Z_OK            = 0;\nvar Z_STREAM_END    = 1;\nvar Z_SYNC_FLUSH    = 2;\n\nvar Z_DEFAULT_COMPRESSION = -1;\n\nvar Z_DEFAULT_STRATEGY    = 0;\n\nvar Z_DEFLATED  = 8;\n\n/* ===========================================================================*/\n\n\n/**\n * class Deflate\n *\n * Generic JS-style wrapper for zlib calls. If you don't need\n * streaming behaviour - use more simple functions: [[deflate]],\n * [[deflateRaw]] and [[gzip]].\n **/\n\n/* internal\n * Deflate.chunks -> Array\n *\n * Chunks of output data, if [[Deflate#onData]] not overriden.\n **/\n\n/**\n * Deflate.result -> Uint8Array|Array\n *\n * Compressed result, generated by default [[Deflate#onData]]\n * and [[Deflate#onEnd]] handlers. Filled after you push last chunk\n * (call [[Deflate#push]] with `Z_FINISH` / `true` param)  or if you\n * push a chunk with explicit flush (call [[Deflate#push]] with\n * `Z_SYNC_FLUSH` param).\n **/\n\n/**\n * Deflate.err -> Number\n *\n * Error code after deflate finished. 0 (Z_OK) on success.\n * You will not need it in real life, because deflate errors\n * are possible only on wrong options or bad `onData` / `onEnd`\n * custom handlers.\n **/\n\n/**\n * Deflate.msg -> String\n *\n * Error message, if [[Deflate.err]] != 0\n **/\n\n\n/**\n * new Deflate(options)\n * - options (Object): zlib deflate options.\n *\n * Creates new deflator instance with specified params. Throws exception\n * on bad params. Supported options:\n *\n * - `level`\n * - `windowBits`\n * - `memLevel`\n * - `strategy`\n * - `dictionary`\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Additional options, for internal needs:\n *\n * - `chunkSize` - size of generated data chunks (16K by default)\n * - `raw` (Boolean) - do raw deflate\n * - `gzip` (Boolean) - create gzip wrapper\n * - `to` (String) - if equal to 'string', then result will be \"binary string\"\n *    (each char code [0..255])\n * - `header` (Object) - custom header for gzip\n *   - `text` (Boolean) - true if compressed data believed to be text\n *   - `time` (Number) - modification time, unix timestamp\n *   - `os` (Number) - operation system code\n *   - `extra` (Array) - array of bytes with extra data (max 65536)\n *   - `name` (String) - file name (binary string)\n *   - `comment` (String) - comment (binary string)\n *   - `hcrc` (Boolean) - true if header crc should be added\n *\n * ##### Example:\n *\n * ```javascript\n * var pako = require('pako')\n *   , chunk1 = Uint8Array([1,2,3,4,5,6,7,8,9])\n *   , chunk2 = Uint8Array([10,11,12,13,14,15,16,17,18,19]);\n *\n * var deflate = new pako.Deflate({ level: 3});\n *\n * deflate.push(chunk1, false);\n * deflate.push(chunk2, true);  // true -> last chunk\n *\n * if (deflate.err) { throw new Error(deflate.err); }\n *\n * console.log(deflate.result);\n * ```\n **/\nfunction Deflate(options) {\n  if (!(this instanceof Deflate)) return new Deflate(options);\n\n  this.options = utils.assign({\n    level: Z_DEFAULT_COMPRESSION,\n    method: Z_DEFLATED,\n    chunkSize: 16384,\n    windowBits: 15,\n    memLevel: 8,\n    strategy: Z_DEFAULT_STRATEGY,\n    to: ''\n  }, options || {});\n\n  var opt = this.options;\n\n  if (opt.raw && (opt.windowBits > 0)) {\n    opt.windowBits = -opt.windowBits;\n  }\n\n  else if (opt.gzip && (opt.windowBits > 0) && (opt.windowBits < 16)) {\n    opt.windowBits += 16;\n  }\n\n  this.err    = 0;      // error code, if happens (0 = Z_OK)\n  this.msg    = '';     // error message\n  this.ended  = false;  // used to avoid multiple onEnd() calls\n  this.chunks = [];     // chunks of compressed data\n\n  this.strm = new ZStream();\n  this.strm.avail_out = 0;\n\n  var status = zlib_deflate.deflateInit2(\n    this.strm,\n    opt.level,\n    opt.method,\n    opt.windowBits,\n    opt.memLevel,\n    opt.strategy\n  );\n\n  if (status !== Z_OK) {\n    throw new Error(msg[status]);\n  }\n\n  if (opt.header) {\n    zlib_deflate.deflateSetHeader(this.strm, opt.header);\n  }\n\n  if (opt.dictionary) {\n    var dict;\n    // Convert data if needed\n    if (typeof opt.dictionary === 'string') {\n      // If we need to compress text, change encoding to utf8.\n      dict = strings.string2buf(opt.dictionary);\n    } else if (toString.call(opt.dictionary) === '[object ArrayBuffer]') {\n      dict = new Uint8Array(opt.dictionary);\n    } else {\n      dict = opt.dictionary;\n    }\n\n    status = zlib_deflate.deflateSetDictionary(this.strm, dict);\n\n    if (status !== Z_OK) {\n      throw new Error(msg[status]);\n    }\n\n    this._dict_set = true;\n  }\n}\n\n/**\n * Deflate#push(data[, mode]) -> Boolean\n * - data (Uint8Array|Array|ArrayBuffer|String): input data. Strings will be\n *   converted to utf8 byte sequence.\n * - mode (Number|Boolean): 0..6 for corresponding Z_NO_FLUSH..Z_TREE modes.\n *   See constants. Skipped or `false` means Z_NO_FLUSH, `true` meansh Z_FINISH.\n *\n * Sends input data to deflate pipe, generating [[Deflate#onData]] calls with\n * new compressed chunks. Returns `true` on success. The last data block must have\n * mode Z_FINISH (or `true`). That will flush internal pending buffers and call\n * [[Deflate#onEnd]]. For interim explicit flushes (without ending the stream) you\n * can use mode Z_SYNC_FLUSH, keeping the compression context.\n *\n * On fail call [[Deflate#onEnd]] with error code and return false.\n *\n * We strongly recommend to use `Uint8Array` on input for best speed (output\n * array format is detected automatically). Also, don't skip last param and always\n * use the same type in your code (boolean or number). That will improve JS speed.\n *\n * For regular `Array`-s make sure all elements are [0..255].\n *\n * ##### Example\n *\n * ```javascript\n * push(chunk, false); // push one of data chunks\n * ...\n * push(chunk, true);  // push last chunk\n * ```\n **/\nDeflate.prototype.push = function (data, mode) {\n  var strm = this.strm;\n  var chunkSize = this.options.chunkSize;\n  var status, _mode;\n\n  if (this.ended) { return false; }\n\n  _mode = (mode === ~~mode) ? mode : ((mode === true) ? Z_FINISH : Z_NO_FLUSH);\n\n  // Convert data if needed\n  if (typeof data === 'string') {\n    // If we need to compress text, change encoding to utf8.\n    strm.input = strings.string2buf(data);\n  } else if (toString.call(data) === '[object ArrayBuffer]') {\n    strm.input = new Uint8Array(data);\n  } else {\n    strm.input = data;\n  }\n\n  strm.next_in = 0;\n  strm.avail_in = strm.input.length;\n\n  do {\n    if (strm.avail_out === 0) {\n      strm.output = new utils.Buf8(chunkSize);\n      strm.next_out = 0;\n      strm.avail_out = chunkSize;\n    }\n    status = zlib_deflate.deflate(strm, _mode);    /* no bad return value */\n\n    if (status !== Z_STREAM_END && status !== Z_OK) {\n      this.onEnd(status);\n      this.ended = true;\n      return false;\n    }\n    if (strm.avail_out === 0 || (strm.avail_in === 0 && (_mode === Z_FINISH || _mode === Z_SYNC_FLUSH))) {\n      if (this.options.to === 'string') {\n        this.onData(strings.buf2binstring(utils.shrinkBuf(strm.output, strm.next_out)));\n      } else {\n        this.onData(utils.shrinkBuf(strm.output, strm.next_out));\n      }\n    }\n  } while ((strm.avail_in > 0 || strm.avail_out === 0) && status !== Z_STREAM_END);\n\n  // Finalize on the last chunk.\n  if (_mode === Z_FINISH) {\n    status = zlib_deflate.deflateEnd(this.strm);\n    this.onEnd(status);\n    this.ended = true;\n    return status === Z_OK;\n  }\n\n  // callback interim results if Z_SYNC_FLUSH.\n  if (_mode === Z_SYNC_FLUSH) {\n    this.onEnd(Z_OK);\n    strm.avail_out = 0;\n    return true;\n  }\n\n  return true;\n};\n\n\n/**\n * Deflate#onData(chunk) -> Void\n * - chunk (Uint8Array|Array|String): ouput data. Type of array depends\n *   on js engine support. When string output requested, each chunk\n *   will be string.\n *\n * By default, stores data blocks in `chunks[]` property and glue\n * those in `onEnd`. Override this handler, if you need another behaviour.\n **/\nDeflate.prototype.onData = function (chunk) {\n  this.chunks.push(chunk);\n};\n\n\n/**\n * Deflate#onEnd(status) -> Void\n * - status (Number): deflate status. 0 (Z_OK) on success,\n *   other if not.\n *\n * Called once after you tell deflate that the input stream is\n * complete (Z_FINISH) or should be flushed (Z_SYNC_FLUSH)\n * or if an error happened. By default - join collected chunks,\n * free memory and fill `results` / `err` properties.\n **/\nDeflate.prototype.onEnd = function (status) {\n  // On success - join\n  if (status === Z_OK) {\n    if (this.options.to === 'string') {\n      this.result = this.chunks.join('');\n    } else {\n      this.result = utils.flattenChunks(this.chunks);\n    }\n  }\n  this.chunks = [];\n  this.err = status;\n  this.msg = this.strm.msg;\n};\n\n\n/**\n * deflate(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * Compress `data` with deflate algorithm and `options`.\n *\n * Supported options are:\n *\n * - level\n * - windowBits\n * - memLevel\n * - strategy\n * - dictionary\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Sugar (options):\n *\n * - `raw` (Boolean) - say that we work with raw stream, if you don't wish to specify\n *   negative windowBits implicitly.\n * - `to` (String) - if equal to 'string', then result will be \"binary string\"\n *    (each char code [0..255])\n *\n * ##### Example:\n *\n * ```javascript\n * var pako = require('pako')\n *   , data = Uint8Array([1,2,3,4,5,6,7,8,9]);\n *\n * console.log(pako.deflate(data));\n * ```\n **/\nfunction deflate(input, options) {\n  var deflator = new Deflate(options);\n\n  deflator.push(input, true);\n\n  // That will never happens, if you don't cheat with options :)\n  if (deflator.err) { throw deflator.msg || msg[deflator.err]; }\n\n  return deflator.result;\n}\n\n\n/**\n * deflateRaw(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * The same as [[deflate]], but creates raw data, without wrapper\n * (header and adler32 crc).\n **/\nfunction deflateRaw(input, options) {\n  options = options || {};\n  options.raw = true;\n  return deflate(input, options);\n}\n\n\n/**\n * gzip(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * The same as [[deflate]], but create gzip wrapper instead of\n * deflate one.\n **/\nfunction gzip(input, options) {\n  options = options || {};\n  options.gzip = true;\n  return deflate(input, options);\n}\n\n\nexports.Deflate = Deflate;\nexports.deflate = deflate;\nexports.deflateRaw = deflateRaw;\nexports.gzip = gzip;\n\n},{\"./utils/common\":41,\"./utils/strings\":42,\"./zlib/deflate\":46,\"./zlib/messages\":51,\"./zlib/zstream\":53}],40:[function(require,module,exports){\n'use strict';\n\n\nvar zlib_inflate = require('./zlib/inflate');\nvar utils        = require('./utils/common');\nvar strings      = require('./utils/strings');\nvar c            = require('./zlib/constants');\nvar msg          = require('./zlib/messages');\nvar ZStream      = require('./zlib/zstream');\nvar GZheader     = require('./zlib/gzheader');\n\nvar toString = Object.prototype.toString;\n\n/**\n * class Inflate\n *\n * Generic JS-style wrapper for zlib calls. If you don't need\n * streaming behaviour - use more simple functions: [[inflate]]\n * and [[inflateRaw]].\n **/\n\n/* internal\n * inflate.chunks -> Array\n *\n * Chunks of output data, if [[Inflate#onData]] not overriden.\n **/\n\n/**\n * Inflate.result -> Uint8Array|Array|String\n *\n * Uncompressed result, generated by default [[Inflate#onData]]\n * and [[Inflate#onEnd]] handlers. Filled after you push last chunk\n * (call [[Inflate#push]] with `Z_FINISH` / `true` param) or if you\n * push a chunk with explicit flush (call [[Inflate#push]] with\n * `Z_SYNC_FLUSH` param).\n **/\n\n/**\n * Inflate.err -> Number\n *\n * Error code after inflate finished. 0 (Z_OK) on success.\n * Should be checked if broken data possible.\n **/\n\n/**\n * Inflate.msg -> String\n *\n * Error message, if [[Inflate.err]] != 0\n **/\n\n\n/**\n * new Inflate(options)\n * - options (Object): zlib inflate options.\n *\n * Creates new inflator instance with specified params. Throws exception\n * on bad params. Supported options:\n *\n * - `windowBits`\n * - `dictionary`\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Additional options, for internal needs:\n *\n * - `chunkSize` - size of generated data chunks (16K by default)\n * - `raw` (Boolean) - do raw inflate\n * - `to` (String) - if equal to 'string', then result will be converted\n *   from utf8 to utf16 (javascript) string. When string output requested,\n *   chunk length can differ from `chunkSize`, depending on content.\n *\n * By default, when no options set, autodetect deflate/gzip data format via\n * wrapper header.\n *\n * ##### Example:\n *\n * ```javascript\n * var pako = require('pako')\n *   , chunk1 = Uint8Array([1,2,3,4,5,6,7,8,9])\n *   , chunk2 = Uint8Array([10,11,12,13,14,15,16,17,18,19]);\n *\n * var inflate = new pako.Inflate({ level: 3});\n *\n * inflate.push(chunk1, false);\n * inflate.push(chunk2, true);  // true -> last chunk\n *\n * if (inflate.err) { throw new Error(inflate.err); }\n *\n * console.log(inflate.result);\n * ```\n **/\nfunction Inflate(options) {\n  if (!(this instanceof Inflate)) return new Inflate(options);\n\n  this.options = utils.assign({\n    chunkSize: 16384,\n    windowBits: 0,\n    to: ''\n  }, options || {});\n\n  var opt = this.options;\n\n  // Force window size for `raw` data, if not set directly,\n  // because we have no header for autodetect.\n  if (opt.raw && (opt.windowBits >= 0) && (opt.windowBits < 16)) {\n    opt.windowBits = -opt.windowBits;\n    if (opt.windowBits === 0) { opt.windowBits = -15; }\n  }\n\n  // If `windowBits` not defined (and mode not raw) - set autodetect flag for gzip/deflate\n  if ((opt.windowBits >= 0) && (opt.windowBits < 16) &&\n      !(options && options.windowBits)) {\n    opt.windowBits += 32;\n  }\n\n  // Gzip header has no info about windows size, we can do autodetect only\n  // for deflate. So, if window size not set, force it to max when gzip possible\n  if ((opt.windowBits > 15) && (opt.windowBits < 48)) {\n    // bit 3 (16) -> gzipped data\n    // bit 4 (32) -> autodetect gzip/deflate\n    if ((opt.windowBits & 15) === 0) {\n      opt.windowBits |= 15;\n    }\n  }\n\n  this.err    = 0;      // error code, if happens (0 = Z_OK)\n  this.msg    = '';     // error message\n  this.ended  = false;  // used to avoid multiple onEnd() calls\n  this.chunks = [];     // chunks of compressed data\n\n  this.strm   = new ZStream();\n  this.strm.avail_out = 0;\n\n  var status  = zlib_inflate.inflateInit2(\n    this.strm,\n    opt.windowBits\n  );\n\n  if (status !== c.Z_OK) {\n    throw new Error(msg[status]);\n  }\n\n  this.header = new GZheader();\n\n  zlib_inflate.inflateGetHeader(this.strm, this.header);\n}\n\n/**\n * Inflate#push(data[, mode]) -> Boolean\n * - data (Uint8Array|Array|ArrayBuffer|String): input data\n * - mode (Number|Boolean): 0..6 for corresponding Z_NO_FLUSH..Z_TREE modes.\n *   See constants. Skipped or `false` means Z_NO_FLUSH, `true` meansh Z_FINISH.\n *\n * Sends input data to inflate pipe, generating [[Inflate#onData]] calls with\n * new output chunks. Returns `true` on success. The last data block must have\n * mode Z_FINISH (or `true`). That will flush internal pending buffers and call\n * [[Inflate#onEnd]]. For interim explicit flushes (without ending the stream) you\n * can use mode Z_SYNC_FLUSH, keeping the decompression context.\n *\n * On fail call [[Inflate#onEnd]] with error code and return false.\n *\n * We strongly recommend to use `Uint8Array` on input for best speed (output\n * format is detected automatically). Also, don't skip last param and always\n * use the same type in your code (boolean or number). That will improve JS speed.\n *\n * For regular `Array`-s make sure all elements are [0..255].\n *\n * ##### Example\n *\n * ```javascript\n * push(chunk, false); // push one of data chunks\n * ...\n * push(chunk, true);  // push last chunk\n * ```\n **/\nInflate.prototype.push = function (data, mode) {\n  var strm = this.strm;\n  var chunkSize = this.options.chunkSize;\n  var dictionary = this.options.dictionary;\n  var status, _mode;\n  var next_out_utf8, tail, utf8str;\n  var dict;\n\n  // Flag to properly process Z_BUF_ERROR on testing inflate call\n  // when we check that all output data was flushed.\n  var allowBufError = false;\n\n  if (this.ended) { return false; }\n  _mode = (mode === ~~mode) ? mode : ((mode === true) ? c.Z_FINISH : c.Z_NO_FLUSH);\n\n  // Convert data if needed\n  if (typeof data === 'string') {\n    // Only binary strings can be decompressed on practice\n    strm.input = strings.binstring2buf(data);\n  } else if (toString.call(data) === '[object ArrayBuffer]') {\n    strm.input = new Uint8Array(data);\n  } else {\n    strm.input = data;\n  }\n\n  strm.next_in = 0;\n  strm.avail_in = strm.input.length;\n\n  do {\n    if (strm.avail_out === 0) {\n      strm.output = new utils.Buf8(chunkSize);\n      strm.next_out = 0;\n      strm.avail_out = chunkSize;\n    }\n\n    status = zlib_inflate.inflate(strm, c.Z_NO_FLUSH);    /* no bad return value */\n\n    if (status === c.Z_NEED_DICT && dictionary) {\n      // Convert data if needed\n      if (typeof dictionary === 'string') {\n        dict = strings.string2buf(dictionary);\n      } else if (toString.call(dictionary) === '[object ArrayBuffer]') {\n        dict = new Uint8Array(dictionary);\n      } else {\n        dict = dictionary;\n      }\n\n      status = zlib_inflate.inflateSetDictionary(this.strm, dict);\n\n    }\n\n    if (status === c.Z_BUF_ERROR && allowBufError === true) {\n      status = c.Z_OK;\n      allowBufError = false;\n    }\n\n    if (status !== c.Z_STREAM_END && status !== c.Z_OK) {\n      this.onEnd(status);\n      this.ended = true;\n      return false;\n    }\n\n    if (strm.next_out) {\n      if (strm.avail_out === 0 || status === c.Z_STREAM_END || (strm.avail_in === 0 && (_mode === c.Z_FINISH || _mode === c.Z_SYNC_FLUSH))) {\n\n        if (this.options.to === 'string') {\n\n          next_out_utf8 = strings.utf8border(strm.output, strm.next_out);\n\n          tail = strm.next_out - next_out_utf8;\n          utf8str = strings.buf2string(strm.output, next_out_utf8);\n\n          // move tail\n          strm.next_out = tail;\n          strm.avail_out = chunkSize - tail;\n          if (tail) { utils.arraySet(strm.output, strm.output, next_out_utf8, tail, 0); }\n\n          this.onData(utf8str);\n\n        } else {\n          this.onData(utils.shrinkBuf(strm.output, strm.next_out));\n        }\n      }\n    }\n\n    // When no more input data, we should check that internal inflate buffers\n    // are flushed. The only way to do it when avail_out = 0 - run one more\n    // inflate pass. But if output data not exists, inflate return Z_BUF_ERROR.\n    // Here we set flag to process this error properly.\n    //\n    // NOTE. Deflate does not return error in this case and does not needs such\n    // logic.\n    if (strm.avail_in === 0 && strm.avail_out === 0) {\n      allowBufError = true;\n    }\n\n  } while ((strm.avail_in > 0 || strm.avail_out === 0) && status !== c.Z_STREAM_END);\n\n  if (status === c.Z_STREAM_END) {\n    _mode = c.Z_FINISH;\n  }\n\n  // Finalize on the last chunk.\n  if (_mode === c.Z_FINISH) {\n    status = zlib_inflate.inflateEnd(this.strm);\n    this.onEnd(status);\n    this.ended = true;\n    return status === c.Z_OK;\n  }\n\n  // callback interim results if Z_SYNC_FLUSH.\n  if (_mode === c.Z_SYNC_FLUSH) {\n    this.onEnd(c.Z_OK);\n    strm.avail_out = 0;\n    return true;\n  }\n\n  return true;\n};\n\n\n/**\n * Inflate#onData(chunk) -> Void\n * - chunk (Uint8Array|Array|String): ouput data. Type of array depends\n *   on js engine support. When string output requested, each chunk\n *   will be string.\n *\n * By default, stores data blocks in `chunks[]` property and glue\n * those in `onEnd`. Override this handler, if you need another behaviour.\n **/\nInflate.prototype.onData = function (chunk) {\n  this.chunks.push(chunk);\n};\n\n\n/**\n * Inflate#onEnd(status) -> Void\n * - status (Number): inflate status. 0 (Z_OK) on success,\n *   other if not.\n *\n * Called either after you tell inflate that the input stream is\n * complete (Z_FINISH) or should be flushed (Z_SYNC_FLUSH)\n * or if an error happened. By default - join collected chunks,\n * free memory and fill `results` / `err` properties.\n **/\nInflate.prototype.onEnd = function (status) {\n  // On success - join\n  if (status === c.Z_OK) {\n    if (this.options.to === 'string') {\n      // Glue & convert here, until we teach pako to send\n      // utf8 alligned strings to onData\n      this.result = this.chunks.join('');\n    } else {\n      this.result = utils.flattenChunks(this.chunks);\n    }\n  }\n  this.chunks = [];\n  this.err = status;\n  this.msg = this.strm.msg;\n};\n\n\n/**\n * inflate(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * Decompress `data` with inflate/ungzip and `options`. Autodetect\n * format via wrapper header by default. That's why we don't provide\n * separate `ungzip` method.\n *\n * Supported options are:\n *\n * - windowBits\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information.\n *\n * Sugar (options):\n *\n * - `raw` (Boolean) - say that we work with raw stream, if you don't wish to specify\n *   negative windowBits implicitly.\n * - `to` (String) - if equal to 'string', then result will be converted\n *   from utf8 to utf16 (javascript) string. When string output requested,\n *   chunk length can differ from `chunkSize`, depending on content.\n *\n *\n * ##### Example:\n *\n * ```javascript\n * var pako = require('pako')\n *   , input = pako.deflate([1,2,3,4,5,6,7,8,9])\n *   , output;\n *\n * try {\n *   output = pako.inflate(input);\n * } catch (err)\n *   console.log(err);\n * }\n * ```\n **/\nfunction inflate(input, options) {\n  var inflator = new Inflate(options);\n\n  inflator.push(input, true);\n\n  // That will never happens, if you don't cheat with options :)\n  if (inflator.err) { throw inflator.msg || msg[inflator.err]; }\n\n  return inflator.result;\n}\n\n\n/**\n * inflateRaw(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * The same as [[inflate]], but creates raw data, without wrapper\n * (header and adler32 crc).\n **/\nfunction inflateRaw(input, options) {\n  options = options || {};\n  options.raw = true;\n  return inflate(input, options);\n}\n\n\n/**\n * ungzip(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * Just shortcut to [[inflate]], because it autodetects format\n * by header.content. Done for convenience.\n **/\n\n\nexports.Inflate = Inflate;\nexports.inflate = inflate;\nexports.inflateRaw = inflateRaw;\nexports.ungzip  = inflate;\n\n},{\"./utils/common\":41,\"./utils/strings\":42,\"./zlib/constants\":44,\"./zlib/gzheader\":47,\"./zlib/inflate\":49,\"./zlib/messages\":51,\"./zlib/zstream\":53}],41:[function(require,module,exports){\n'use strict';\n\n\nvar TYPED_OK =  (typeof Uint8Array !== 'undefined') &&\n                (typeof Uint16Array !== 'undefined') &&\n                (typeof Int32Array !== 'undefined');\n\n\nexports.assign = function (obj /*from1, from2, from3, ...*/) {\n  var sources = Array.prototype.slice.call(arguments, 1);\n  while (sources.length) {\n    var source = sources.shift();\n    if (!source) { continue; }\n\n    if (typeof source !== 'object') {\n      throw new TypeError(source + 'must be non-object');\n    }\n\n    for (var p in source) {\n      if (source.hasOwnProperty(p)) {\n        obj[p] = source[p];\n      }\n    }\n  }\n\n  return obj;\n};\n\n\n// reduce buffer size, avoiding mem copy\nexports.shrinkBuf = function (buf, size) {\n  if (buf.length === size) { return buf; }\n  if (buf.subarray) { return buf.subarray(0, size); }\n  buf.length = size;\n  return buf;\n};\n\n\nvar fnTyped = {\n  arraySet: function (dest, src, src_offs, len, dest_offs) {\n    if (src.subarray && dest.subarray) {\n      dest.set(src.subarray(src_offs, src_offs + len), dest_offs);\n      return;\n    }\n    // Fallback to ordinary array\n    for (var i = 0; i < len; i++) {\n      dest[dest_offs + i] = src[src_offs + i];\n    }\n  },\n  // Join array of chunks to single array.\n  flattenChunks: function (chunks) {\n    var i, l, len, pos, chunk, result;\n\n    // calculate data length\n    len = 0;\n    for (i = 0, l = chunks.length; i < l; i++) {\n      len += chunks[i].length;\n    }\n\n    // join chunks\n    result = new Uint8Array(len);\n    pos = 0;\n    for (i = 0, l = chunks.length; i < l; i++) {\n      chunk = chunks[i];\n      result.set(chunk, pos);\n      pos += chunk.length;\n    }\n\n    return result;\n  }\n};\n\nvar fnUntyped = {\n  arraySet: function (dest, src, src_offs, len, dest_offs) {\n    for (var i = 0; i < len; i++) {\n      dest[dest_offs + i] = src[src_offs + i];\n    }\n  },\n  // Join array of chunks to single array.\n  flattenChunks: function (chunks) {\n    return [].concat.apply([], chunks);\n  }\n};\n\n\n// Enable/Disable typed arrays use, for testing\n//\nexports.setTyped = function (on) {\n  if (on) {\n    exports.Buf8  = Uint8Array;\n    exports.Buf16 = Uint16Array;\n    exports.Buf32 = Int32Array;\n    exports.assign(exports, fnTyped);\n  } else {\n    exports.Buf8  = Array;\n    exports.Buf16 = Array;\n    exports.Buf32 = Array;\n    exports.assign(exports, fnUntyped);\n  }\n};\n\nexports.setTyped(TYPED_OK);\n\n},{}],42:[function(require,module,exports){\n// String encode/decode helpers\n'use strict';\n\n\nvar utils = require('./common');\n\n\n// Quick check if we can use fast array to bin string conversion\n//\n// - apply(Array) can fail on Android 2.2\n// - apply(Uint8Array) can fail on iOS 5.1 Safary\n//\nvar STR_APPLY_OK = true;\nvar STR_APPLY_UIA_OK = true;\n\ntry { String.fromCharCode.apply(null, [ 0 ]); } catch (__) { STR_APPLY_OK = false; }\ntry { String.fromCharCode.apply(null, new Uint8Array(1)); } catch (__) { STR_APPLY_UIA_OK = false; }\n\n\n// Table with utf8 lengths (calculated by first byte of sequence)\n// Note, that 5 & 6-byte values and some 4-byte values can not be represented in JS,\n// because max possible codepoint is 0x10ffff\nvar _utf8len = new utils.Buf8(256);\nfor (var q = 0; q < 256; q++) {\n  _utf8len[q] = (q >= 252 ? 6 : q >= 248 ? 5 : q >= 240 ? 4 : q >= 224 ? 3 : q >= 192 ? 2 : 1);\n}\n_utf8len[254] = _utf8len[254] = 1; // Invalid sequence start\n\n\n// convert string to array (typed, when possible)\nexports.string2buf = function (str) {\n  var buf, c, c2, m_pos, i, str_len = str.length, buf_len = 0;\n\n  // count binary size\n  for (m_pos = 0; m_pos < str_len; m_pos++) {\n    c = str.charCodeAt(m_pos);\n    if ((c & 0xfc00) === 0xd800 && (m_pos + 1 < str_len)) {\n      c2 = str.charCodeAt(m_pos + 1);\n      if ((c2 & 0xfc00) === 0xdc00) {\n        c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);\n        m_pos++;\n      }\n    }\n    buf_len += c < 0x80 ? 1 : c < 0x800 ? 2 : c < 0x10000 ? 3 : 4;\n  }\n\n  // allocate buffer\n  buf = new utils.Buf8(buf_len);\n\n  // convert\n  for (i = 0, m_pos = 0; i < buf_len; m_pos++) {\n    c = str.charCodeAt(m_pos);\n    if ((c & 0xfc00) === 0xd800 && (m_pos + 1 < str_len)) {\n      c2 = str.charCodeAt(m_pos + 1);\n      if ((c2 & 0xfc00) === 0xdc00) {\n        c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);\n        m_pos++;\n      }\n    }\n    if (c < 0x80) {\n      /* one byte */\n      buf[i++] = c;\n    } else if (c < 0x800) {\n      /* two bytes */\n      buf[i++] = 0xC0 | (c >>> 6);\n      buf[i++] = 0x80 | (c & 0x3f);\n    } else if (c < 0x10000) {\n      /* three bytes */\n      buf[i++] = 0xE0 | (c >>> 12);\n      buf[i++] = 0x80 | (c >>> 6 & 0x3f);\n      buf[i++] = 0x80 | (c & 0x3f);\n    } else {\n      /* four bytes */\n      buf[i++] = 0xf0 | (c >>> 18);\n      buf[i++] = 0x80 | (c >>> 12 & 0x3f);\n      buf[i++] = 0x80 | (c >>> 6 & 0x3f);\n      buf[i++] = 0x80 | (c & 0x3f);\n    }\n  }\n\n  return buf;\n};\n\n// Helper (used in 2 places)\nfunction buf2binstring(buf, len) {\n  // use fallback for big arrays to avoid stack overflow\n  if (len < 65537) {\n    if ((buf.subarray && STR_APPLY_UIA_OK) || (!buf.subarray && STR_APPLY_OK)) {\n      return String.fromCharCode.apply(null, utils.shrinkBuf(buf, len));\n    }\n  }\n\n  var result = '';\n  for (var i = 0; i < len; i++) {\n    result += String.fromCharCode(buf[i]);\n  }\n  return result;\n}\n\n\n// Convert byte array to binary string\nexports.buf2binstring = function (buf) {\n  return buf2binstring(buf, buf.length);\n};\n\n\n// Convert binary string (typed, when possible)\nexports.binstring2buf = function (str) {\n  var buf = new utils.Buf8(str.length);\n  for (var i = 0, len = buf.length; i < len; i++) {\n    buf[i] = str.charCodeAt(i);\n  }\n  return buf;\n};\n\n\n// convert array to string\nexports.buf2string = function (buf, max) {\n  var i, out, c, c_len;\n  var len = max || buf.length;\n\n  // Reserve max possible length (2 words per char)\n  // NB: by unknown reasons, Array is significantly faster for\n  //     String.fromCharCode.apply than Uint16Array.\n  var utf16buf = new Array(len * 2);\n\n  for (out = 0, i = 0; i < len;) {\n    c = buf[i++];\n    // quick process ascii\n    if (c < 0x80) { utf16buf[out++] = c; continue; }\n\n    c_len = _utf8len[c];\n    // skip 5 & 6 byte codes\n    if (c_len > 4) { utf16buf[out++] = 0xfffd; i += c_len - 1; continue; }\n\n    // apply mask on first byte\n    c &= c_len === 2 ? 0x1f : c_len === 3 ? 0x0f : 0x07;\n    // join the rest\n    while (c_len > 1 && i < len) {\n      c = (c << 6) | (buf[i++] & 0x3f);\n      c_len--;\n    }\n\n    // terminated by end of string?\n    if (c_len > 1) { utf16buf[out++] = 0xfffd; continue; }\n\n    if (c < 0x10000) {\n      utf16buf[out++] = c;\n    } else {\n      c -= 0x10000;\n      utf16buf[out++] = 0xd800 | ((c >> 10) & 0x3ff);\n      utf16buf[out++] = 0xdc00 | (c & 0x3ff);\n    }\n  }\n\n  return buf2binstring(utf16buf, out);\n};\n\n\n// Calculate max possible position in utf8 buffer,\n// that will not break sequence. If that's not possible\n// - (very small limits) return max size as is.\n//\n// buf[] - utf8 bytes array\n// max   - length limit (mandatory);\nexports.utf8border = function (buf, max) {\n  var pos;\n\n  max = max || buf.length;\n  if (max > buf.length) { max = buf.length; }\n\n  // go back from last position, until start of sequence found\n  pos = max - 1;\n  while (pos >= 0 && (buf[pos] & 0xC0) === 0x80) { pos--; }\n\n  // Fuckup - very small and broken sequence,\n  // return max, because we should return something anyway.\n  if (pos < 0) { return max; }\n\n  // If we came to start of buffer - that means vuffer is too small,\n  // return max too.\n  if (pos === 0) { return max; }\n\n  return (pos + _utf8len[buf[pos]] > max) ? pos : max;\n};\n\n},{\"./common\":41}],43:[function(require,module,exports){\n'use strict';\n\n// Note: adler32 takes 12% for level 0 and 2% for level 6.\n// It doesn't worth to make additional optimizationa as in original.\n// Small size is preferable.\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n//   claim that you wrote the original software. If you use this software\n//   in a product, an acknowledgment in the product documentation would be\n//   appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n//   misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nfunction adler32(adler, buf, len, pos) {\n  var s1 = (adler & 0xffff) |0,\n      s2 = ((adler >>> 16) & 0xffff) |0,\n      n = 0;\n\n  while (len !== 0) {\n    // Set limit ~ twice less than 5552, to keep\n    // s2 in 31-bits, because we force signed ints.\n    // in other case %= will fail.\n    n = len > 2000 ? 2000 : len;\n    len -= n;\n\n    do {\n      s1 = (s1 + buf[pos++]) |0;\n      s2 = (s2 + s1) |0;\n    } while (--n);\n\n    s1 %= 65521;\n    s2 %= 65521;\n  }\n\n  return (s1 | (s2 << 16)) |0;\n}\n\n\nmodule.exports = adler32;\n\n},{}],44:[function(require,module,exports){\n'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n//   claim that you wrote the original software. If you use this software\n//   in a product, an acknowledgment in the product documentation would be\n//   appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n//   misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nmodule.exports = {\n\n  /* Allowed flush values; see deflate() and inflate() below for details */\n  Z_NO_FLUSH:         0,\n  Z_PARTIAL_FLUSH:    1,\n  Z_SYNC_FLUSH:       2,\n  Z_FULL_FLUSH:       3,\n  Z_FINISH:           4,\n  Z_BLOCK:            5,\n  Z_TREES:            6,\n\n  /* Return codes for the compression/decompression functions. Negative values\n  * are errors, positive values are used for special but normal events.\n  */\n  Z_OK:               0,\n  Z_STREAM_END:       1,\n  Z_NEED_DICT:        2,\n  Z_ERRNO:           -1,\n  Z_STREAM_ERROR:    -2,\n  Z_DATA_ERROR:      -3,\n  //Z_MEM_ERROR:     -4,\n  Z_BUF_ERROR:       -5,\n  //Z_VERSION_ERROR: -6,\n\n  /* compression levels */\n  Z_NO_COMPRESSION:         0,\n  Z_BEST_SPEED:             1,\n  Z_BEST_COMPRESSION:       9,\n  Z_DEFAULT_COMPRESSION:   -1,\n\n\n  Z_FILTERED:               1,\n  Z_HUFFMAN_ONLY:           2,\n  Z_RLE:                    3,\n  Z_FIXED:                  4,\n  Z_DEFAULT_STRATEGY:       0,\n\n  /* Possible values of the data_type field (though see inflate()) */\n  Z_BINARY:                 0,\n  Z_TEXT:                   1,\n  //Z_ASCII:                1, // = Z_TEXT (deprecated)\n  Z_UNKNOWN:                2,\n\n  /* The deflate compression method */\n  Z_DEFLATED:               8\n  //Z_NULL:                 null // Use -1 or null inline, depending on var type\n};\n\n},{}],45:[function(require,module,exports){\n'use strict';\n\n// Note: we can't get significant speed boost here.\n// So write code to minimize size - no pregenerated tables\n// and array tools dependencies.\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n//   claim that you wrote the original software. If you use this software\n//   in a product, an acknowledgment in the product documentation would be\n//   appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n//   misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n// Use ordinary array, since untyped makes no boost here\nfunction makeTable() {\n  var c, table = [];\n\n  for (var n = 0; n < 256; n++) {\n    c = n;\n    for (var k = 0; k < 8; k++) {\n      c = ((c & 1) ? (0xEDB88320 ^ (c >>> 1)) : (c >>> 1));\n    }\n    table[n] = c;\n  }\n\n  return table;\n}\n\n// Create table on load. Just 255 signed longs. Not a problem.\nvar crcTable = makeTable();\n\n\nfunction crc32(crc, buf, len, pos) {\n  var t = crcTable,\n      end = pos + len;\n\n  crc ^= -1;\n\n  for (var i = pos; i < end; i++) {\n    crc = (crc >>> 8) ^ t[(crc ^ buf[i]) & 0xFF];\n  }\n\n  return (crc ^ (-1)); // >>> 0;\n}\n\n\nmodule.exports = crc32;\n\n},{}],46:[function(require,module,exports){\n'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n//   claim that you wrote the original software. If you use this software\n//   in a product, an acknowledgment in the product documentation would be\n//   appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n//   misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nvar utils   = require('../utils/common');\nvar trees   = require('./trees');\nvar adler32 = require('./adler32');\nvar crc32   = require('./crc32');\nvar msg     = require('./messages');\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\n\n/* Allowed flush values; see deflate() and inflate() below for details */\nvar Z_NO_FLUSH      = 0;\nvar Z_PARTIAL_FLUSH = 1;\n//var Z_SYNC_FLUSH    = 2;\nvar Z_FULL_FLUSH    = 3;\nvar Z_FINISH        = 4;\nvar Z_BLOCK         = 5;\n//var Z_TREES         = 6;\n\n\n/* Return codes for the compression/decompression functions. Negative values\n * are errors, positive values are used for special but normal events.\n */\nvar Z_OK            = 0;\nvar Z_STREAM_END    = 1;\n//var Z_NEED_DICT     = 2;\n//var Z_ERRNO         = -1;\nvar Z_STREAM_ERROR  = -2;\nvar Z_DATA_ERROR    = -3;\n//var Z_MEM_ERROR     = -4;\nvar Z_BUF_ERROR     = -5;\n//var Z_VERSION_ERROR = -6;\n\n\n/* compression levels */\n//var Z_NO_COMPRESSION      = 0;\n//var Z_BEST_SPEED          = 1;\n//var Z_BEST_COMPRESSION    = 9;\nvar Z_DEFAULT_COMPRESSION = -1;\n\n\nvar Z_FILTERED            = 1;\nvar Z_HUFFMAN_ONLY        = 2;\nvar Z_RLE                 = 3;\nvar Z_FIXED               = 4;\nvar Z_DEFAULT_STRATEGY    = 0;\n\n/* Possible values of the data_type field (though see inflate()) */\n//var Z_BINARY              = 0;\n//var Z_TEXT                = 1;\n//var Z_ASCII               = 1; // = Z_TEXT\nvar Z_UNKNOWN             = 2;\n\n\n/* The deflate compression method */\nvar Z_DEFLATED  = 8;\n\n/*============================================================================*/\n\n\nvar MAX_MEM_LEVEL = 9;\n/* Maximum value for memLevel in deflateInit2 */\nvar MAX_WBITS = 15;\n/* 32K LZ77 window */\nvar DEF_MEM_LEVEL = 8;\n\n\nvar LENGTH_CODES  = 29;\n/* number of length codes, not counting the special END_BLOCK code */\nvar LITERALS      = 256;\n/* number of literal bytes 0..255 */\nvar L_CODES       = LITERALS + 1 + LENGTH_CODES;\n/* number of Literal or Length codes, including the END_BLOCK code */\nvar D_CODES       = 30;\n/* number of distance codes */\nvar BL_CODES      = 19;\n/* number of codes used to transfer the bit lengths */\nvar HEAP_SIZE     = 2 * L_CODES + 1;\n/* maximum heap size */\nvar MAX_BITS  = 15;\n/* All codes must not exceed MAX_BITS bits */\n\nvar MIN_MATCH = 3;\nvar MAX_MATCH = 258;\nvar MIN_LOOKAHEAD = (MAX_MATCH + MIN_MATCH + 1);\n\nvar PRESET_DICT = 0x20;\n\nvar INIT_STATE = 42;\nvar EXTRA_STATE = 69;\nvar NAME_STATE = 73;\nvar COMMENT_STATE = 91;\nvar HCRC_STATE = 103;\nvar BUSY_STATE = 113;\nvar FINISH_STATE = 666;\n\nvar BS_NEED_MORE      = 1; /* block not completed, need more input or more output */\nvar BS_BLOCK_DONE     = 2; /* block flush performed */\nvar BS_FINISH_STARTED = 3; /* finish started, need only more output at next deflate */\nvar BS_FINISH_DONE    = 4; /* finish done, accept no more input or output */\n\nvar OS_CODE = 0x03; // Unix :) . Don't detect, use this default.\n\nfunction err(strm, errorCode) {\n  strm.msg = msg[errorCode];\n  return errorCode;\n}\n\nfunction rank(f) {\n  return ((f) << 1) - ((f) > 4 ? 9 : 0);\n}\n\nfunction zero(buf) { var len = buf.length; while (--len >= 0) { buf[len] = 0; } }\n\n\n/* =========================================================================\n * Flush as much pending output as possible. All deflate() output goes\n * through this function so some applications may wish to modify it\n * to avoid allocating a large strm->output buffer and copying into it.\n * (See also read_buf()).\n */\nfunction flush_pending(strm) {\n  var s = strm.state;\n\n  //_tr_flush_bits(s);\n  var len = s.pending;\n  if (len > strm.avail_out) {\n    len = strm.avail_out;\n  }\n  if (len === 0) { return; }\n\n  utils.arraySet(strm.output, s.pending_buf, s.pending_out, len, strm.next_out);\n  strm.next_out += len;\n  s.pending_out += len;\n  strm.total_out += len;\n  strm.avail_out -= len;\n  s.pending -= len;\n  if (s.pending === 0) {\n    s.pending_out = 0;\n  }\n}\n\n\nfunction flush_block_only(s, last) {\n  trees._tr_flush_block(s, (s.block_start >= 0 ? s.block_start : -1), s.strstart - s.block_start, last);\n  s.block_start = s.strstart;\n  flush_pending(s.strm);\n}\n\n\nfunction put_byte(s, b) {\n  s.pending_buf[s.pending++] = b;\n}\n\n\n/* =========================================================================\n * Put a short in the pending buffer. The 16-bit value is put in MSB order.\n * IN assertion: the stream state is correct and there is enough room in\n * pending_buf.\n */\nfunction putShortMSB(s, b) {\n//  put_byte(s, (Byte)(b >> 8));\n//  put_byte(s, (Byte)(b & 0xff));\n  s.pending_buf[s.pending++] = (b >>> 8) & 0xff;\n  s.pending_buf[s.pending++] = b & 0xff;\n}\n\n\n/* ===========================================================================\n * Read a new buffer from the current input stream, update the adler32\n * and total number of bytes read.  All deflate() input goes through\n * this function so some applications may wish to modify it to avoid\n * allocating a large strm->input buffer and copying from it.\n * (See also flush_pending()).\n */\nfunction read_buf(strm, buf, start, size) {\n  var len = strm.avail_in;\n\n  if (len > size) { len = size; }\n  if (len === 0) { return 0; }\n\n  strm.avail_in -= len;\n\n  // zmemcpy(buf, strm->next_in, len);\n  utils.arraySet(buf, strm.input, strm.next_in, len, start);\n  if (strm.state.wrap === 1) {\n    strm.adler = adler32(strm.adler, buf, len, start);\n  }\n\n  else if (strm.state.wrap === 2) {\n    strm.adler = crc32(strm.adler, buf, len, start);\n  }\n\n  strm.next_in += len;\n  strm.total_in += len;\n\n  return len;\n}\n\n\n/* ===========================================================================\n * Set match_start to the longest match starting at the given string and\n * return its length. Matches shorter or equal to prev_length are discarded,\n * in which case the result is equal to prev_length and match_start is\n * garbage.\n * IN assertions: cur_match is the head of the hash chain for the current\n *   string (strstart) and its distance is <= MAX_DIST, and prev_length >= 1\n * OUT assertion: the match length is not greater than s->lookahead.\n */\nfunction longest_match(s, cur_match) {\n  var chain_length = s.max_chain_length;      /* max hash chain length */\n  var scan = s.strstart; /* current string */\n  var match;                       /* matched string */\n  var len;                           /* length of current match */\n  var best_len = s.prev_length;              /* best match length so far */\n  var nice_match = s.nice_match;             /* stop if match long enough */\n  var limit = (s.strstart > (s.w_size - MIN_LOOKAHEAD)) ?\n      s.strstart - (s.w_size - MIN_LOOKAHEAD) : 0/*NIL*/;\n\n  var _win = s.window; // shortcut\n\n  var wmask = s.w_mask;\n  var prev  = s.prev;\n\n  /* Stop when cur_match becomes <= limit. To simplify the code,\n   * we prevent matches with the string of window index 0.\n   */\n\n  var strend = s.strstart + MAX_MATCH;\n  var scan_end1  = _win[scan + best_len - 1];\n  var scan_end   = _win[scan + best_len];\n\n  /* The code is optimized for HASH_BITS >= 8 and MAX_MATCH-2 multiple of 16.\n   * It is easy to get rid of this optimization if necessary.\n   */\n  // Assert(s->hash_bits >= 8 && MAX_MATCH == 258, \"Code too clever\");\n\n  /* Do not waste too much time if we already have a good match: */\n  if (s.prev_length >= s.good_match) {\n    chain_length >>= 2;\n  }\n  /* Do not look for matches beyond the end of the input. This is necessary\n   * to make deflate deterministic.\n   */\n  if (nice_match > s.lookahead) { nice_match = s.lookahead; }\n\n  // Assert((ulg)s->strstart <= s->window_size-MIN_LOOKAHEAD, \"need lookahead\");\n\n  do {\n    // Assert(cur_match < s->strstart, \"no future\");\n    match = cur_match;\n\n    /* Skip to next match if the match length cannot increase\n     * or if the match length is less than 2.  Note that the checks below\n     * for insufficient lookahead only occur occasionally for performance\n     * reasons.  Therefore uninitialized memory will be accessed, and\n     * conditional jumps will be made that depend on those values.\n     * However the length of the match is limited to the lookahead, so\n     * the output of deflate is not affected by the uninitialized values.\n     */\n\n    if (_win[match + best_len]     !== scan_end  ||\n        _win[match + best_len - 1] !== scan_end1 ||\n        _win[match]                !== _win[scan] ||\n        _win[++match]              !== _win[scan + 1]) {\n      continue;\n    }\n\n    /* The check at best_len-1 can be removed because it will be made\n     * again later. (This heuristic is not always a win.)\n     * It is not necessary to compare scan[2] and match[2] since they\n     * are always equal when the other bytes match, given that\n     * the hash keys are equal and that HASH_BITS >= 8.\n     */\n    scan += 2;\n    match++;\n    // Assert(*scan == *match, \"match[2]?\");\n\n    /* We check for insufficient lookahead only every 8th comparison;\n     * the 256th check will be made at strstart+258.\n     */\n    do {\n      /*jshint noempty:false*/\n    } while (_win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n             _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n             _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n             _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n             scan < strend);\n\n    // Assert(scan <= s->window+(unsigned)(s->window_size-1), \"wild scan\");\n\n    len = MAX_MATCH - (strend - scan);\n    scan = strend - MAX_MATCH;\n\n    if (len > best_len) {\n      s.match_start = cur_match;\n      best_len = len;\n      if (len >= nice_match) {\n        break;\n      }\n      scan_end1  = _win[scan + best_len - 1];\n      scan_end   = _win[scan + best_len];\n    }\n  } while ((cur_match = prev[cur_match & wmask]) > limit && --chain_length !== 0);\n\n  if (best_len <= s.lookahead) {\n    return best_len;\n  }\n  return s.lookahead;\n}\n\n\n/* ===========================================================================\n * Fill the window when the lookahead becomes insufficient.\n * Updates strstart and lookahead.\n *\n * IN assertion: lookahead < MIN_LOOKAHEAD\n * OUT assertions: strstart <= window_size-MIN_LOOKAHEAD\n *    At least one byte has been read, or avail_in == 0; reads are\n *    performed for at least two bytes (required for the zip translate_eol\n *    option -- not supported here).\n */\nfunction fill_window(s) {\n  var _w_size = s.w_size;\n  var p, n, m, more, str;\n\n  //Assert(s->lookahead < MIN_LOOKAHEAD, \"already enough lookahead\");\n\n  do {\n    more = s.window_size - s.lookahead - s.strstart;\n\n    // JS ints have 32 bit, block below not needed\n    /* Deal with !@#$% 64K limit: */\n    //if (sizeof(int) <= 2) {\n    //    if (more == 0 && s->strstart == 0 && s->lookahead == 0) {\n    //        more = wsize;\n    //\n    //  } else if (more == (unsigned)(-1)) {\n    //        /* Very unlikely, but possible on 16 bit machine if\n    //         * strstart == 0 && lookahead == 1 (input done a byte at time)\n    //         */\n    //        more--;\n    //    }\n    //}\n\n\n    /* If the window is almost full and there is insufficient lookahead,\n     * move the upper half to the lower one to make room in the upper half.\n     */\n    if (s.strstart >= _w_size + (_w_size - MIN_LOOKAHEAD)) {\n\n      utils.arraySet(s.window, s.window, _w_size, _w_size, 0);\n      s.match_start -= _w_size;\n      s.strstart -= _w_size;\n      /* we now have strstart >= MAX_DIST */\n      s.block_start -= _w_size;\n\n      /* Slide the hash table (could be avoided with 32 bit values\n       at the expense of memory usage). We slide even when level == 0\n       to keep the hash table consistent if we switch back to level > 0\n       later. (Using level 0 permanently is not an optimal usage of\n       zlib, so we don't care about this pathological case.)\n       */\n\n      n = s.hash_size;\n      p = n;\n      do {\n        m = s.head[--p];\n        s.head[p] = (m >= _w_size ? m - _w_size : 0);\n      } while (--n);\n\n      n = _w_size;\n      p = n;\n      do {\n        m = s.prev[--p];\n        s.prev[p] = (m >= _w_size ? m - _w_size : 0);\n        /* If n is not on any hash chain, prev[n] is garbage but\n         * its value will never be used.\n         */\n      } while (--n);\n\n      more += _w_size;\n    }\n    if (s.strm.avail_in === 0) {\n      break;\n    }\n\n    /* If there was no sliding:\n     *    strstart <= WSIZE+MAX_DIST-1 && lookahead <= MIN_LOOKAHEAD - 1 &&\n     *    more == window_size - lookahead - strstart\n     * => more >= window_size - (MIN_LOOKAHEAD-1 + WSIZE + MAX_DIST-1)\n     * => more >= window_size - 2*WSIZE + 2\n     * In the BIG_MEM or MMAP case (not yet supported),\n     *   window_size == input_size + MIN_LOOKAHEAD  &&\n     *   strstart + s->lookahead <= input_size => more >= MIN_LOOKAHEAD.\n     * Otherwise, window_size == 2*WSIZE so more >= 2.\n     * If there was sliding, more >= WSIZE. So in all cases, more >= 2.\n     */\n    //Assert(more >= 2, \"more < 2\");\n    n = read_buf(s.strm, s.window, s.strstart + s.lookahead, more);\n    s.lookahead += n;\n\n    /* Initialize the hash value now that we have some input: */\n    if (s.lookahead + s.insert >= MIN_MATCH) {\n      str = s.strstart - s.insert;\n      s.ins_h = s.window[str];\n\n      /* UPDATE_HASH(s, s->ins_h, s->window[str + 1]); */\n      s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + 1]) & s.hash_mask;\n//#if MIN_MATCH != 3\n//        Call update_hash() MIN_MATCH-3 more times\n//#endif\n      while (s.insert) {\n        /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */\n        s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + MIN_MATCH - 1]) & s.hash_mask;\n\n        s.prev[str & s.w_mask] = s.head[s.ins_h];\n        s.head[s.ins_h] = str;\n        str++;\n        s.insert--;\n        if (s.lookahead + s.insert < MIN_MATCH) {\n          break;\n        }\n      }\n    }\n    /* If the whole input has less than MIN_MATCH bytes, ins_h is garbage,\n     * but this is not important since only literal bytes will be emitted.\n     */\n\n  } while (s.lookahead < MIN_LOOKAHEAD && s.strm.avail_in !== 0);\n\n  /* If the WIN_INIT bytes after the end of the current data have never been\n   * written, then zero those bytes in order to avoid memory check reports of\n   * the use of uninitialized (or uninitialised as Julian writes) bytes by\n   * the longest match routines.  Update the high water mark for the next\n   * time through here.  WIN_INIT is set to MAX_MATCH since the longest match\n   * routines allow scanning to strstart + MAX_MATCH, ignoring lookahead.\n   */\n//  if (s.high_water < s.window_size) {\n//    var curr = s.strstart + s.lookahead;\n//    var init = 0;\n//\n//    if (s.high_water < curr) {\n//      /* Previous high water mark below current data -- zero WIN_INIT\n//       * bytes or up to end of window, whichever is less.\n//       */\n//      init = s.window_size - curr;\n//      if (init > WIN_INIT)\n//        init = WIN_INIT;\n//      zmemzero(s->window + curr, (unsigned)init);\n//      s->high_water = curr + init;\n//    }\n//    else if (s->high_water < (ulg)curr + WIN_INIT) {\n//      /* High water mark at or above current data, but below current data\n//       * plus WIN_INIT -- zero out to current data plus WIN_INIT, or up\n//       * to end of window, whichever is less.\n//       */\n//      init = (ulg)curr + WIN_INIT - s->high_water;\n//      if (init > s->window_size - s->high_water)\n//        init = s->window_size - s->high_water;\n//      zmemzero(s->window + s->high_water, (unsigned)init);\n//      s->high_water += init;\n//    }\n//  }\n//\n//  Assert((ulg)s->strstart <= s->window_size - MIN_LOOKAHEAD,\n//    \"not enough room for search\");\n}\n\n/* ===========================================================================\n * Copy without compression as much as possible from the input stream, return\n * the current block state.\n * This function does not insert new strings in the dictionary since\n * uncompressible data is probably not useful. This function is used\n * only for the level=0 compression option.\n * NOTE: this function should be optimized to avoid extra copying from\n * window to pending_buf.\n */\nfunction deflate_stored(s, flush) {\n  /* Stored blocks are limited to 0xffff bytes, pending_buf is limited\n   * to pending_buf_size, and each stored block has a 5 byte header:\n   */\n  var max_block_size = 0xffff;\n\n  if (max_block_size > s.pending_buf_size - 5) {\n    max_block_size = s.pending_buf_size - 5;\n  }\n\n  /* Copy as much as possible from input to output: */\n  for (;;) {\n    /* Fill the window as much as possible: */\n    if (s.lookahead <= 1) {\n\n      //Assert(s->strstart < s->w_size+MAX_DIST(s) ||\n      //  s->block_start >= (long)s->w_size, \"slide too late\");\n//      if (!(s.strstart < s.w_size + (s.w_size - MIN_LOOKAHEAD) ||\n//        s.block_start >= s.w_size)) {\n//        throw  new Error(\"slide too late\");\n//      }\n\n      fill_window(s);\n      if (s.lookahead === 0 && flush === Z_NO_FLUSH) {\n        return BS_NEED_MORE;\n      }\n\n      if (s.lookahead === 0) {\n        break;\n      }\n      /* flush the current block */\n    }\n    //Assert(s->block_start >= 0L, \"block gone\");\n//    if (s.block_start < 0) throw new Error(\"block gone\");\n\n    s.strstart += s.lookahead;\n    s.lookahead = 0;\n\n    /* Emit a stored block if pending_buf will be full: */\n    var max_start = s.block_start + max_block_size;\n\n    if (s.strstart === 0 || s.strstart >= max_start) {\n      /* strstart == 0 is possible when wraparound on 16-bit machine */\n      s.lookahead = s.strstart - max_start;\n      s.strstart = max_start;\n      /*** FLUSH_BLOCK(s, 0); ***/\n      flush_block_only(s, false);\n      if (s.strm.avail_out === 0) {\n        return BS_NEED_MORE;\n      }\n      /***/\n\n\n    }\n    /* Flush if we may have to slide, otherwise block_start may become\n     * negative and the data will be gone:\n     */\n    if (s.strstart - s.block_start >= (s.w_size - MIN_LOOKAHEAD)) {\n      /*** FLUSH_BLOCK(s, 0); ***/\n      flush_block_only(s, false);\n      if (s.strm.avail_out === 0) {\n        return BS_NEED_MORE;\n      }\n      /***/\n    }\n  }\n\n  s.insert = 0;\n\n  if (flush === Z_FINISH) {\n    /*** FLUSH_BLOCK(s, 1); ***/\n    flush_block_only(s, true);\n    if (s.strm.avail_out === 0) {\n      return BS_FINISH_STARTED;\n    }\n    /***/\n    return BS_FINISH_DONE;\n  }\n\n  if (s.strstart > s.block_start) {\n    /*** FLUSH_BLOCK(s, 0); ***/\n    flush_block_only(s, false);\n    if (s.strm.avail_out === 0) {\n      return BS_NEED_MORE;\n    }\n    /***/\n  }\n\n  return BS_NEED_MORE;\n}\n\n/* ===========================================================================\n * Compress as much as possible from the input stream, return the current\n * block state.\n * This function does not perform lazy evaluation of matches and inserts\n * new strings in the dictionary only for unmatched strings or for short\n * matches. It is used only for the fast compression options.\n */\nfunction deflate_fast(s, flush) {\n  var hash_head;        /* head of the hash chain */\n  var bflush;           /* set if current block must be flushed */\n\n  for (;;) {\n    /* Make sure that we always have enough lookahead, except\n     * at the end of the input file. We need MAX_MATCH bytes\n     * for the next match, plus MIN_MATCH bytes to insert the\n     * string following the next match.\n     */\n    if (s.lookahead < MIN_LOOKAHEAD) {\n      fill_window(s);\n      if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) {\n        return BS_NEED_MORE;\n      }\n      if (s.lookahead === 0) {\n        break; /* flush the current block */\n      }\n    }\n\n    /* Insert the string window[strstart .. strstart+2] in the\n     * dictionary, and set hash_head to the head of the hash chain:\n     */\n    hash_head = 0/*NIL*/;\n    if (s.lookahead >= MIN_MATCH) {\n      /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n      s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;\n      hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n      s.head[s.ins_h] = s.strstart;\n      /***/\n    }\n\n    /* Find the longest match, discarding those <= prev_length.\n     * At this point we have always match_length < MIN_MATCH\n     */\n    if (hash_head !== 0/*NIL*/ && ((s.strstart - hash_head) <= (s.w_size - MIN_LOOKAHEAD))) {\n      /* To simplify the code, we prevent matches with the string\n       * of window index 0 (in particular we have to avoid a match\n       * of the string with itself at the start of the input file).\n       */\n      s.match_length = longest_match(s, hash_head);\n      /* longest_match() sets match_start */\n    }\n    if (s.match_length >= MIN_MATCH) {\n      // check_match(s, s.strstart, s.match_start, s.match_length); // for debug only\n\n      /*** _tr_tally_dist(s, s.strstart - s.match_start,\n                     s.match_length - MIN_MATCH, bflush); ***/\n      bflush = trees._tr_tally(s, s.strstart - s.match_start, s.match_length - MIN_MATCH);\n\n      s.lookahead -= s.match_length;\n\n      /* Insert new strings in the hash table only if the match length\n       * is not too large. This saves time but degrades compression.\n       */\n      if (s.match_length <= s.max_lazy_match/*max_insert_length*/ && s.lookahead >= MIN_MATCH) {\n        s.match_length--; /* string at strstart already in table */\n        do {\n          s.strstart++;\n          /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n          s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;\n          hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n          s.head[s.ins_h] = s.strstart;\n          /***/\n          /* strstart never exceeds WSIZE-MAX_MATCH, so there are\n           * always MIN_MATCH bytes ahead.\n           */\n        } while (--s.match_length !== 0);\n        s.strstart++;\n      } else\n      {\n        s.strstart += s.match_length;\n        s.match_length = 0;\n        s.ins_h = s.window[s.strstart];\n        /* UPDATE_HASH(s, s.ins_h, s.window[s.strstart+1]); */\n        s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + 1]) & s.hash_mask;\n\n//#if MIN_MATCH != 3\n//                Call UPDATE_HASH() MIN_MATCH-3 more times\n//#endif\n        /* If lookahead < MIN_MATCH, ins_h is garbage, but it does not\n         * matter since it will be recomputed at next deflate call.\n         */\n      }\n    } else {\n      /* No match, output a literal byte */\n      //Tracevv((stderr,\"%c\", s.window[s.strstart]));\n      /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n      bflush = trees._tr_tally(s, 0, s.window[s.strstart]);\n\n      s.lookahead--;\n      s.strstart++;\n    }\n    if (bflush) {\n      /*** FLUSH_BLOCK(s, 0); ***/\n      flush_block_only(s, false);\n      if (s.strm.avail_out === 0) {\n        return BS_NEED_MORE;\n      }\n      /***/\n    }\n  }\n  s.insert = ((s.strstart < (MIN_MATCH - 1)) ? s.strstart : MIN_MATCH - 1);\n  if (flush === Z_FINISH) {\n    /*** FLUSH_BLOCK(s, 1); ***/\n    flush_block_only(s, true);\n    if (s.strm.avail_out === 0) {\n      return BS_FINISH_STARTED;\n    }\n    /***/\n    return BS_FINISH_DONE;\n  }\n  if (s.last_lit) {\n    /*** FLUSH_BLOCK(s, 0); ***/\n    flush_block_only(s, false);\n    if (s.strm.avail_out === 0) {\n      return BS_NEED_MORE;\n    }\n    /***/\n  }\n  return BS_BLOCK_DONE;\n}\n\n/* ===========================================================================\n * Same as above, but achieves better compression. We use a lazy\n * evaluation for matches: a match is finally adopted only if there is\n * no better match at the next window position.\n */\nfunction deflate_slow(s, flush) {\n  var hash_head;          /* head of hash chain */\n  var bflush;              /* set if current block must be flushed */\n\n  var max_insert;\n\n  /* Process the input block. */\n  for (;;) {\n    /* Make sure that we always have enough lookahead, except\n     * at the end of the input file. We need MAX_MATCH bytes\n     * for the next match, plus MIN_MATCH bytes to insert the\n     * string following the next match.\n     */\n    if (s.lookahead < MIN_LOOKAHEAD) {\n      fill_window(s);\n      if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) {\n        return BS_NEED_MORE;\n      }\n      if (s.lookahead === 0) { break; } /* flush the current block */\n    }\n\n    /* Insert the string window[strstart .. strstart+2] in the\n     * dictionary, and set hash_head to the head of the hash chain:\n     */\n    hash_head = 0/*NIL*/;\n    if (s.lookahead >= MIN_MATCH) {\n      /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n      s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;\n      hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n      s.head[s.ins_h] = s.strstart;\n      /***/\n    }\n\n    /* Find the longest match, discarding those <= prev_length.\n     */\n    s.prev_length = s.match_length;\n    s.prev_match = s.match_start;\n    s.match_length = MIN_MATCH - 1;\n\n    if (hash_head !== 0/*NIL*/ && s.prev_length < s.max_lazy_match &&\n        s.strstart - hash_head <= (s.w_size - MIN_LOOKAHEAD)/*MAX_DIST(s)*/) {\n      /* To simplify the code, we prevent matches with the string\n       * of window index 0 (in particular we have to avoid a match\n       * of the string with itself at the start of the input file).\n       */\n      s.match_length = longest_match(s, hash_head);\n      /* longest_match() sets match_start */\n\n      if (s.match_length <= 5 &&\n         (s.strategy === Z_FILTERED || (s.match_length === MIN_MATCH && s.strstart - s.match_start > 4096/*TOO_FAR*/))) {\n\n        /* If prev_match is also MIN_MATCH, match_start is garbage\n         * but we will ignore the current match anyway.\n         */\n        s.match_length = MIN_MATCH - 1;\n      }\n    }\n    /* If there was a match at the previous step and the current\n     * match is not better, output the previous match:\n     */\n    if (s.prev_length >= MIN_MATCH && s.match_length <= s.prev_length) {\n      max_insert = s.strstart + s.lookahead - MIN_MATCH;\n      /* Do not insert strings in hash table beyond this. */\n\n      //check_match(s, s.strstart-1, s.prev_match, s.prev_length);\n\n      /***_tr_tally_dist(s, s.strstart - 1 - s.prev_match,\n                     s.prev_length - MIN_MATCH, bflush);***/\n      bflush = trees._tr_tally(s, s.strstart - 1 - s.prev_match, s.prev_length - MIN_MATCH);\n      /* Insert in hash table all strings up to the end of the match.\n       * strstart-1 and strstart are already inserted. If there is not\n       * enough lookahead, the last two strings are not inserted in\n       * the hash table.\n       */\n      s.lookahead -= s.prev_length - 1;\n      s.prev_length -= 2;\n      do {\n        if (++s.strstart <= max_insert) {\n          /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n          s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;\n          hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n          s.head[s.ins_h] = s.strstart;\n          /***/\n        }\n      } while (--s.prev_length !== 0);\n      s.match_available = 0;\n      s.match_length = MIN_MATCH - 1;\n      s.strstart++;\n\n      if (bflush) {\n        /*** FLUSH_BLOCK(s, 0); ***/\n        flush_block_only(s, false);\n        if (s.strm.avail_out === 0) {\n          return BS_NEED_MORE;\n        }\n        /***/\n      }\n\n    } else if (s.match_available) {\n      /* If there was no match at the previous position, output a\n       * single literal. If there was a match but the current match\n       * is longer, truncate the previous match to a single literal.\n       */\n      //Tracevv((stderr,\"%c\", s->window[s->strstart-1]));\n      /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/\n      bflush = trees._tr_tally(s, 0, s.window[s.strstart - 1]);\n\n      if (bflush) {\n        /*** FLUSH_BLOCK_ONLY(s, 0) ***/\n        flush_block_only(s, false);\n        /***/\n      }\n      s.strstart++;\n      s.lookahead--;\n      if (s.strm.avail_out === 0) {\n        return BS_NEED_MORE;\n      }\n    } else {\n      /* There is no previous match to compare with, wait for\n       * the next step to decide.\n       */\n      s.match_available = 1;\n      s.strstart++;\n      s.lookahead--;\n    }\n  }\n  //Assert (flush != Z_NO_FLUSH, \"no flush?\");\n  if (s.match_available) {\n    //Tracevv((stderr,\"%c\", s->window[s->strstart-1]));\n    /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/\n    bflush = trees._tr_tally(s, 0, s.window[s.strstart - 1]);\n\n    s.match_available = 0;\n  }\n  s.insert = s.strstart < MIN_MATCH - 1 ? s.strstart : MIN_MATCH - 1;\n  if (flush === Z_FINISH) {\n    /*** FLUSH_BLOCK(s, 1); ***/\n    flush_block_only(s, true);\n    if (s.strm.avail_out === 0) {\n      return BS_FINISH_STARTED;\n    }\n    /***/\n    return BS_FINISH_DONE;\n  }\n  if (s.last_lit) {\n    /*** FLUSH_BLOCK(s, 0); ***/\n    flush_block_only(s, false);\n    if (s.strm.avail_out === 0) {\n      return BS_NEED_MORE;\n    }\n    /***/\n  }\n\n  return BS_BLOCK_DONE;\n}\n\n\n/* ===========================================================================\n * For Z_RLE, simply look for runs of bytes, generate matches only of distance\n * one.  Do not maintain a hash table.  (It will be regenerated if this run of\n * deflate switches away from Z_RLE.)\n */\nfunction deflate_rle(s, flush) {\n  var bflush;            /* set if current block must be flushed */\n  var prev;              /* byte at distance one to match */\n  var scan, strend;      /* scan goes up to strend for length of run */\n\n  var _win = s.window;\n\n  for (;;) {\n    /* Make sure that we always have enough lookahead, except\n     * at the end of the input file. We need MAX_MATCH bytes\n     * for the longest run, plus one for the unrolled loop.\n     */\n    if (s.lookahead <= MAX_MATCH) {\n      fill_window(s);\n      if (s.lookahead <= MAX_MATCH && flush === Z_NO_FLUSH) {\n        return BS_NEED_MORE;\n      }\n      if (s.lookahead === 0) { break; } /* flush the current block */\n    }\n\n    /* See how many times the previous byte repeats */\n    s.match_length = 0;\n    if (s.lookahead >= MIN_MATCH && s.strstart > 0) {\n      scan = s.strstart - 1;\n      prev = _win[scan];\n      if (prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan]) {\n        strend = s.strstart + MAX_MATCH;\n        do {\n          /*jshint noempty:false*/\n        } while (prev === _win[++scan] && prev === _win[++scan] &&\n                 prev === _win[++scan] && prev === _win[++scan] &&\n                 prev === _win[++scan] && prev === _win[++scan] &&\n                 prev === _win[++scan] && prev === _win[++scan] &&\n                 scan < strend);\n        s.match_length = MAX_MATCH - (strend - scan);\n        if (s.match_length > s.lookahead) {\n          s.match_length = s.lookahead;\n        }\n      }\n      //Assert(scan <= s->window+(uInt)(s->window_size-1), \"wild scan\");\n    }\n\n    /* Emit match if have run of MIN_MATCH or longer, else emit literal */\n    if (s.match_length >= MIN_MATCH) {\n      //check_match(s, s.strstart, s.strstart - 1, s.match_length);\n\n      /*** _tr_tally_dist(s, 1, s.match_length - MIN_MATCH, bflush); ***/\n      bflush = trees._tr_tally(s, 1, s.match_length - MIN_MATCH);\n\n      s.lookahead -= s.match_length;\n      s.strstart += s.match_length;\n      s.match_length = 0;\n    } else {\n      /* No match, output a literal byte */\n      //Tracevv((stderr,\"%c\", s->window[s->strstart]));\n      /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n      bflush = trees._tr_tally(s, 0, s.window[s.strstart]);\n\n      s.lookahead--;\n      s.strstart++;\n    }\n    if (bflush) {\n      /*** FLUSH_BLOCK(s, 0); ***/\n      flush_block_only(s, false);\n      if (s.strm.avail_out === 0) {\n        return BS_NEED_MORE;\n      }\n      /***/\n    }\n  }\n  s.insert = 0;\n  if (flush === Z_FINISH) {\n    /*** FLUSH_BLOCK(s, 1); ***/\n    flush_block_only(s, true);\n    if (s.strm.avail_out === 0) {\n      return BS_FINISH_STARTED;\n    }\n    /***/\n    return BS_FINISH_DONE;\n  }\n  if (s.last_lit) {\n    /*** FLUSH_BLOCK(s, 0); ***/\n    flush_block_only(s, false);\n    if (s.strm.avail_out === 0) {\n      return BS_NEED_MORE;\n    }\n    /***/\n  }\n  return BS_BLOCK_DONE;\n}\n\n/* ===========================================================================\n * For Z_HUFFMAN_ONLY, do not look for matches.  Do not maintain a hash table.\n * (It will be regenerated if this run of deflate switches away from Huffman.)\n */\nfunction deflate_huff(s, flush) {\n  var bflush;             /* set if current block must be flushed */\n\n  for (;;) {\n    /* Make sure that we have a literal to write. */\n    if (s.lookahead === 0) {\n      fill_window(s);\n      if (s.lookahead === 0) {\n        if (flush === Z_NO_FLUSH) {\n          return BS_NEED_MORE;\n        }\n        break;      /* flush the current block */\n      }\n    }\n\n    /* Output a literal byte */\n    s.match_length = 0;\n    //Tracevv((stderr,\"%c\", s->window[s->strstart]));\n    /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n    bflush = trees._tr_tally(s, 0, s.window[s.strstart]);\n    s.lookahead--;\n    s.strstart++;\n    if (bflush) {\n      /*** FLUSH_BLOCK(s, 0); ***/\n      flush_block_only(s, false);\n      if (s.strm.avail_out === 0) {\n        return BS_NEED_MORE;\n      }\n      /***/\n    }\n  }\n  s.insert = 0;\n  if (flush === Z_FINISH) {\n    /*** FLUSH_BLOCK(s, 1); ***/\n    flush_block_only(s, true);\n    if (s.strm.avail_out === 0) {\n      return BS_FINISH_STARTED;\n    }\n    /***/\n    return BS_FINISH_DONE;\n  }\n  if (s.last_lit) {\n    /*** FLUSH_BLOCK(s, 0); ***/\n    flush_block_only(s, false);\n    if (s.strm.avail_out === 0) {\n      return BS_NEED_MORE;\n    }\n    /***/\n  }\n  return BS_BLOCK_DONE;\n}\n\n/* Values for max_lazy_match, good_match and max_chain_length, depending on\n * the desired pack level (0..9). The values given below have been tuned to\n * exclude worst case performance for pathological files. Better values may be\n * found for specific files.\n */\nfunction Config(good_length, max_lazy, nice_length, max_chain, func) {\n  this.good_length = good_length;\n  this.max_lazy = max_lazy;\n  this.nice_length = nice_length;\n  this.max_chain = max_chain;\n  this.func = func;\n}\n\nvar configuration_table;\n\nconfiguration_table = [\n  /*      good lazy nice chain */\n  new Config(0, 0, 0, 0, deflate_stored),          /* 0 store only */\n  new Config(4, 4, 8, 4, deflate_fast),            /* 1 max speed, no lazy matches */\n  new Config(4, 5, 16, 8, deflate_fast),           /* 2 */\n  new Config(4, 6, 32, 32, deflate_fast),          /* 3 */\n\n  new Config(4, 4, 16, 16, deflate_slow),          /* 4 lazy matches */\n  new Config(8, 16, 32, 32, deflate_slow),         /* 5 */\n  new Config(8, 16, 128, 128, deflate_slow),       /* 6 */\n  new Config(8, 32, 128, 256, deflate_slow),       /* 7 */\n  new Config(32, 128, 258, 1024, deflate_slow),    /* 8 */\n  new Config(32, 258, 258, 4096, deflate_slow)     /* 9 max compression */\n];\n\n\n/* ===========================================================================\n * Initialize the \"longest match\" routines for a new zlib stream\n */\nfunction lm_init(s) {\n  s.window_size = 2 * s.w_size;\n\n  /*** CLEAR_HASH(s); ***/\n  zero(s.head); // Fill with NIL (= 0);\n\n  /* Set the default configuration parameters:\n   */\n  s.max_lazy_match = configuration_table[s.level].max_lazy;\n  s.good_match = configuration_table[s.level].good_length;\n  s.nice_match = configuration_table[s.level].nice_length;\n  s.max_chain_length = configuration_table[s.level].max_chain;\n\n  s.strstart = 0;\n  s.block_start = 0;\n  s.lookahead = 0;\n  s.insert = 0;\n  s.match_length = s.prev_length = MIN_MATCH - 1;\n  s.match_available = 0;\n  s.ins_h = 0;\n}\n\n\nfunction DeflateState() {\n  this.strm = null;            /* pointer back to this zlib stream */\n  this.status = 0;            /* as the name implies */\n  this.pending_buf = null;      /* output still pending */\n  this.pending_buf_size = 0;  /* size of pending_buf */\n  this.pending_out = 0;       /* next pending byte to output to the stream */\n  this.pending = 0;           /* nb of bytes in the pending buffer */\n  this.wrap = 0;              /* bit 0 true for zlib, bit 1 true for gzip */\n  this.gzhead = null;         /* gzip header information to write */\n  this.gzindex = 0;           /* where in extra, name, or comment */\n  this.method = Z_DEFLATED; /* can only be DEFLATED */\n  this.last_flush = -1;   /* value of flush param for previous deflate call */\n\n  this.w_size = 0;  /* LZ77 window size (32K by default) */\n  this.w_bits = 0;  /* log2(w_size)  (8..16) */\n  this.w_mask = 0;  /* w_size - 1 */\n\n  this.window = null;\n  /* Sliding window. Input bytes are read into the second half of the window,\n   * and move to the first half later to keep a dictionary of at least wSize\n   * bytes. With this organization, matches are limited to a distance of\n   * wSize-MAX_MATCH bytes, but this ensures that IO is always\n   * performed with a length multiple of the block size.\n   */\n\n  this.window_size = 0;\n  /* Actual size of window: 2*wSize, except when the user input buffer\n   * is directly used as sliding window.\n   */\n\n  this.prev = null;\n  /* Link to older string with same hash index. To limit the size of this\n   * array to 64K, this link is maintained only for the last 32K strings.\n   * An index in this array is thus a window index modulo 32K.\n   */\n\n  this.head = null;   /* Heads of the hash chains or NIL. */\n\n  this.ins_h = 0;       /* hash index of string to be inserted */\n  this.hash_size = 0;   /* number of elements in hash table */\n  this.hash_bits = 0;   /* log2(hash_size) */\n  this.hash_mask = 0;   /* hash_size-1 */\n\n  this.hash_shift = 0;\n  /* Number of bits by which ins_h must be shifted at each input\n   * step. It must be such that after MIN_MATCH steps, the oldest\n   * byte no longer takes part in the hash key, that is:\n   *   hash_shift * MIN_MATCH >= hash_bits\n   */\n\n  this.block_start = 0;\n  /* Window position at the beginning of the current output block. Gets\n   * negative when the window is moved backwards.\n   */\n\n  this.match_length = 0;      /* length of best match */\n  this.prev_match = 0;        /* previous match */\n  this.match_available = 0;   /* set if previous match exists */\n  this.strstart = 0;          /* start of string to insert */\n  this.match_start = 0;       /* start of matching string */\n  this.lookahead = 0;         /* number of valid bytes ahead in window */\n\n  this.prev_length = 0;\n  /* Length of the best match at previous step. Matches not greater than this\n   * are discarded. This is used in the lazy match evaluation.\n   */\n\n  this.max_chain_length = 0;\n  /* To speed up deflation, hash chains are never searched beyond this\n   * length.  A higher limit improves compression ratio but degrades the\n   * speed.\n   */\n\n  this.max_lazy_match = 0;\n  /* Attempt to find a better match only when the current match is strictly\n   * smaller than this value. This mechanism is used only for compression\n   * levels >= 4.\n   */\n  // That's alias to max_lazy_match, don't use directly\n  //this.max_insert_length = 0;\n  /* Insert new strings in the hash table only if the match length is not\n   * greater than this length. This saves time but degrades compression.\n   * max_insert_length is used only for compression levels <= 3.\n   */\n\n  this.level = 0;     /* compression level (1..9) */\n  this.strategy = 0;  /* favor or force Huffman coding*/\n\n  this.good_match = 0;\n  /* Use a faster search when the previous match is longer than this */\n\n  this.nice_match = 0; /* Stop searching when current match exceeds this */\n\n              /* used by trees.c: */\n\n  /* Didn't use ct_data typedef below to suppress compiler warning */\n\n  // struct ct_data_s dyn_ltree[HEAP_SIZE];   /* literal and length tree */\n  // struct ct_data_s dyn_dtree[2*D_CODES+1]; /* distance tree */\n  // struct ct_data_s bl_tree[2*BL_CODES+1];  /* Huffman tree for bit lengths */\n\n  // Use flat array of DOUBLE size, with interleaved fata,\n  // because JS does not support effective\n  this.dyn_ltree  = new utils.Buf16(HEAP_SIZE * 2);\n  this.dyn_dtree  = new utils.Buf16((2 * D_CODES + 1) * 2);\n  this.bl_tree    = new utils.Buf16((2 * BL_CODES + 1) * 2);\n  zero(this.dyn_ltree);\n  zero(this.dyn_dtree);\n  zero(this.bl_tree);\n\n  this.l_desc   = null;         /* desc. for literal tree */\n  this.d_desc   = null;         /* desc. for distance tree */\n  this.bl_desc  = null;         /* desc. for bit length tree */\n\n  //ush bl_count[MAX_BITS+1];\n  this.bl_count = new utils.Buf16(MAX_BITS + 1);\n  /* number of codes at each bit length for an optimal tree */\n\n  //int heap[2*L_CODES+1];      /* heap used to build the Huffman trees */\n  this.heap = new utils.Buf16(2 * L_CODES + 1);  /* heap used to build the Huffman trees */\n  zero(this.heap);\n\n  this.heap_len = 0;               /* number of elements in the heap */\n  this.heap_max = 0;               /* element of largest frequency */\n  /* The sons of heap[n] are heap[2*n] and heap[2*n+1]. heap[0] is not used.\n   * The same heap array is used to build all trees.\n   */\n\n  this.depth = new utils.Buf16(2 * L_CODES + 1); //uch depth[2*L_CODES+1];\n  zero(this.depth);\n  /* Depth of each subtree used as tie breaker for trees of equal frequency\n   */\n\n  this.l_buf = 0;          /* buffer index for literals or lengths */\n\n  this.lit_bufsize = 0;\n  /* Size of match buffer for literals/lengths.  There are 4 reasons for\n   * limiting lit_bufsize to 64K:\n   *   - frequencies can be kept in 16 bit counters\n   *   - if compression is not successful for the first block, all input\n   *     data is still in the window so we can still emit a stored block even\n   *     when input comes from standard input.  (This can also be done for\n   *     all blocks if lit_bufsize is not greater than 32K.)\n   *   - if compression is not successful for a file smaller than 64K, we can\n   *     even emit a stored file instead of a stored block (saving 5 bytes).\n   *     This is applicable only for zip (not gzip or zlib).\n   *   - creating new Huffman trees less frequently may not provide fast\n   *     adaptation to changes in the input data statistics. (Take for\n   *     example a binary file with poorly compressible code followed by\n   *     a highly compressible string table.) Smaller buffer sizes give\n   *     fast adaptation but have of course the overhead of transmitting\n   *     trees more frequently.\n   *   - I can't count above 4\n   */\n\n  this.last_lit = 0;      /* running index in l_buf */\n\n  this.d_buf = 0;\n  /* Buffer index for distances. To simplify the code, d_buf and l_buf have\n   * the same number of elements. To use different lengths, an extra flag\n   * array would be necessary.\n   */\n\n  this.opt_len = 0;       /* bit length of current block with optimal trees */\n  this.static_len = 0;    /* bit length of current block with static trees */\n  this.matches = 0;       /* number of string matches in current block */\n  this.insert = 0;        /* bytes at end of window left to insert */\n\n\n  this.bi_buf = 0;\n  /* Output buffer. bits are inserted starting at the bottom (least\n   * significant bits).\n   */\n  this.bi_valid = 0;\n  /* Number of valid bits in bi_buf.  All bits above the last valid bit\n   * are always zero.\n   */\n\n  // Used for window memory init. We safely ignore it for JS. That makes\n  // sense only for pointers and memory check tools.\n  //this.high_water = 0;\n  /* High water mark offset in window for initialized bytes -- bytes above\n   * this are set to zero in order to avoid memory check warnings when\n   * longest match routines access bytes past the input.  This is then\n   * updated to the new high water mark.\n   */\n}\n\n\nfunction deflateResetKeep(strm) {\n  var s;\n\n  if (!strm || !strm.state) {\n    return err(strm, Z_STREAM_ERROR);\n  }\n\n  strm.total_in = strm.total_out = 0;\n  strm.data_type = Z_UNKNOWN;\n\n  s = strm.state;\n  s.pending = 0;\n  s.pending_out = 0;\n\n  if (s.wrap < 0) {\n    s.wrap = -s.wrap;\n    /* was made negative by deflate(..., Z_FINISH); */\n  }\n  s.status = (s.wrap ? INIT_STATE : BUSY_STATE);\n  strm.adler = (s.wrap === 2) ?\n    0  // crc32(0, Z_NULL, 0)\n  :\n    1; // adler32(0, Z_NULL, 0)\n  s.last_flush = Z_NO_FLUSH;\n  trees._tr_init(s);\n  return Z_OK;\n}\n\n\nfunction deflateReset(strm) {\n  var ret = deflateResetKeep(strm);\n  if (ret === Z_OK) {\n    lm_init(strm.state);\n  }\n  return ret;\n}\n\n\nfunction deflateSetHeader(strm, head) {\n  if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n  if (strm.state.wrap !== 2) { return Z_STREAM_ERROR; }\n  strm.state.gzhead = head;\n  return Z_OK;\n}\n\n\nfunction deflateInit2(strm, level, method, windowBits, memLevel, strategy) {\n  if (!strm) { // === Z_NULL\n    return Z_STREAM_ERROR;\n  }\n  var wrap = 1;\n\n  if (level === Z_DEFAULT_COMPRESSION) {\n    level = 6;\n  }\n\n  if (windowBits < 0) { /* suppress zlib wrapper */\n    wrap = 0;\n    windowBits = -windowBits;\n  }\n\n  else if (windowBits > 15) {\n    wrap = 2;           /* write gzip wrapper instead */\n    windowBits -= 16;\n  }\n\n\n  if (memLevel < 1 || memLevel > MAX_MEM_LEVEL || method !== Z_DEFLATED ||\n    windowBits < 8 || windowBits > 15 || level < 0 || level > 9 ||\n    strategy < 0 || strategy > Z_FIXED) {\n    return err(strm, Z_STREAM_ERROR);\n  }\n\n\n  if (windowBits === 8) {\n    windowBits = 9;\n  }\n  /* until 256-byte window bug fixed */\n\n  var s = new DeflateState();\n\n  strm.state = s;\n  s.strm = strm;\n\n  s.wrap = wrap;\n  s.gzhead = null;\n  s.w_bits = windowBits;\n  s.w_size = 1 << s.w_bits;\n  s.w_mask = s.w_size - 1;\n\n  s.hash_bits = memLevel + 7;\n  s.hash_size = 1 << s.hash_bits;\n  s.hash_mask = s.hash_size - 1;\n  s.hash_shift = ~~((s.hash_bits + MIN_MATCH - 1) / MIN_MATCH);\n\n  s.window = new utils.Buf8(s.w_size * 2);\n  s.head = new utils.Buf16(s.hash_size);\n  s.prev = new utils.Buf16(s.w_size);\n\n  // Don't need mem init magic for JS.\n  //s.high_water = 0;  /* nothing written to s->window yet */\n\n  s.lit_bufsize = 1 << (memLevel + 6); /* 16K elements by default */\n\n  s.pending_buf_size = s.lit_bufsize * 4;\n\n  //overlay = (ushf *) ZALLOC(strm, s->lit_bufsize, sizeof(ush)+2);\n  //s->pending_buf = (uchf *) overlay;\n  s.pending_buf = new utils.Buf8(s.pending_buf_size);\n\n  // It is offset from `s.pending_buf` (size is `s.lit_bufsize * 2`)\n  //s->d_buf = overlay + s->lit_bufsize/sizeof(ush);\n  s.d_buf = 1 * s.lit_bufsize;\n\n  //s->l_buf = s->pending_buf + (1+sizeof(ush))*s->lit_bufsize;\n  s.l_buf = (1 + 2) * s.lit_bufsize;\n\n  s.level = level;\n  s.strategy = strategy;\n  s.method = method;\n\n  return deflateReset(strm);\n}\n\nfunction deflateInit(strm, level) {\n  return deflateInit2(strm, level, Z_DEFLATED, MAX_WBITS, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY);\n}\n\n\nfunction deflate(strm, flush) {\n  var old_flush, s;\n  var beg, val; // for gzip header write only\n\n  if (!strm || !strm.state ||\n    flush > Z_BLOCK || flush < 0) {\n    return strm ? err(strm, Z_STREAM_ERROR) : Z_STREAM_ERROR;\n  }\n\n  s = strm.state;\n\n  if (!strm.output ||\n      (!strm.input && strm.avail_in !== 0) ||\n      (s.status === FINISH_STATE && flush !== Z_FINISH)) {\n    return err(strm, (strm.avail_out === 0) ? Z_BUF_ERROR : Z_STREAM_ERROR);\n  }\n\n  s.strm = strm; /* just in case */\n  old_flush = s.last_flush;\n  s.last_flush = flush;\n\n  /* Write the header */\n  if (s.status === INIT_STATE) {\n\n    if (s.wrap === 2) { // GZIP header\n      strm.adler = 0;  //crc32(0L, Z_NULL, 0);\n      put_byte(s, 31);\n      put_byte(s, 139);\n      put_byte(s, 8);\n      if (!s.gzhead) { // s->gzhead == Z_NULL\n        put_byte(s, 0);\n        put_byte(s, 0);\n        put_byte(s, 0);\n        put_byte(s, 0);\n        put_byte(s, 0);\n        put_byte(s, s.level === 9 ? 2 :\n                    (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?\n                     4 : 0));\n        put_byte(s, OS_CODE);\n        s.status = BUSY_STATE;\n      }\n      else {\n        put_byte(s, (s.gzhead.text ? 1 : 0) +\n                    (s.gzhead.hcrc ? 2 : 0) +\n                    (!s.gzhead.extra ? 0 : 4) +\n                    (!s.gzhead.name ? 0 : 8) +\n                    (!s.gzhead.comment ? 0 : 16)\n                );\n        put_byte(s, s.gzhead.time & 0xff);\n        put_byte(s, (s.gzhead.time >> 8) & 0xff);\n        put_byte(s, (s.gzhead.time >> 16) & 0xff);\n        put_byte(s, (s.gzhead.time >> 24) & 0xff);\n        put_byte(s, s.level === 9 ? 2 :\n                    (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?\n                     4 : 0));\n        put_byte(s, s.gzhead.os & 0xff);\n        if (s.gzhead.extra && s.gzhead.extra.length) {\n          put_byte(s, s.gzhead.extra.length & 0xff);\n          put_byte(s, (s.gzhead.extra.length >> 8) & 0xff);\n        }\n        if (s.gzhead.hcrc) {\n          strm.adler = crc32(strm.adler, s.pending_buf, s.pending, 0);\n        }\n        s.gzindex = 0;\n        s.status = EXTRA_STATE;\n      }\n    }\n    else // DEFLATE header\n    {\n      var header = (Z_DEFLATED + ((s.w_bits - 8) << 4)) << 8;\n      var level_flags = -1;\n\n      if (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2) {\n        level_flags = 0;\n      } else if (s.level < 6) {\n        level_flags = 1;\n      } else if (s.level === 6) {\n        level_flags = 2;\n      } else {\n        level_flags = 3;\n      }\n      header |= (level_flags << 6);\n      if (s.strstart !== 0) { header |= PRESET_DICT; }\n      header += 31 - (header % 31);\n\n      s.status = BUSY_STATE;\n      putShortMSB(s, header);\n\n      /* Save the adler32 of the preset dictionary: */\n      if (s.strstart !== 0) {\n        putShortMSB(s, strm.adler >>> 16);\n        putShortMSB(s, strm.adler & 0xffff);\n      }\n      strm.adler = 1; // adler32(0L, Z_NULL, 0);\n    }\n  }\n\n//#ifdef GZIP\n  if (s.status === EXTRA_STATE) {\n    if (s.gzhead.extra/* != Z_NULL*/) {\n      beg = s.pending;  /* start of bytes to update crc */\n\n      while (s.gzindex < (s.gzhead.extra.length & 0xffff)) {\n        if (s.pending === s.pending_buf_size) {\n          if (s.gzhead.hcrc && s.pending > beg) {\n            strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n          }\n          flush_pending(strm);\n          beg = s.pending;\n          if (s.pending === s.pending_buf_size) {\n            break;\n          }\n        }\n        put_byte(s, s.gzhead.extra[s.gzindex] & 0xff);\n        s.gzindex++;\n      }\n      if (s.gzhead.hcrc && s.pending > beg) {\n        strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n      }\n      if (s.gzindex === s.gzhead.extra.length) {\n        s.gzindex = 0;\n        s.status = NAME_STATE;\n      }\n    }\n    else {\n      s.status = NAME_STATE;\n    }\n  }\n  if (s.status === NAME_STATE) {\n    if (s.gzhead.name/* != Z_NULL*/) {\n      beg = s.pending;  /* start of bytes to update crc */\n      //int val;\n\n      do {\n        if (s.pending === s.pending_buf_size) {\n          if (s.gzhead.hcrc && s.pending > beg) {\n            strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n          }\n          flush_pending(strm);\n          beg = s.pending;\n          if (s.pending === s.pending_buf_size) {\n            val = 1;\n            break;\n          }\n        }\n        // JS specific: little magic to add zero terminator to end of string\n        if (s.gzindex < s.gzhead.name.length) {\n          val = s.gzhead.name.charCodeAt(s.gzindex++) & 0xff;\n        } else {\n          val = 0;\n        }\n        put_byte(s, val);\n      } while (val !== 0);\n\n      if (s.gzhead.hcrc && s.pending > beg) {\n        strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n      }\n      if (val === 0) {\n        s.gzindex = 0;\n        s.status = COMMENT_STATE;\n      }\n    }\n    else {\n      s.status = COMMENT_STATE;\n    }\n  }\n  if (s.status === COMMENT_STATE) {\n    if (s.gzhead.comment/* != Z_NULL*/) {\n      beg = s.pending;  /* start of bytes to update crc */\n      //int val;\n\n      do {\n        if (s.pending === s.pending_buf_size) {\n          if (s.gzhead.hcrc && s.pending > beg) {\n            strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n          }\n          flush_pending(strm);\n          beg = s.pending;\n          if (s.pending === s.pending_buf_size) {\n            val = 1;\n            break;\n          }\n        }\n        // JS specific: little magic to add zero terminator to end of string\n        if (s.gzindex < s.gzhead.comment.length) {\n          val = s.gzhead.comment.charCodeAt(s.gzindex++) & 0xff;\n        } else {\n          val = 0;\n        }\n        put_byte(s, val);\n      } while (val !== 0);\n\n      if (s.gzhead.hcrc && s.pending > beg) {\n        strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n      }\n      if (val === 0) {\n        s.status = HCRC_STATE;\n      }\n    }\n    else {\n      s.status = HCRC_STATE;\n    }\n  }\n  if (s.status === HCRC_STATE) {\n    if (s.gzhead.hcrc) {\n      if (s.pending + 2 > s.pending_buf_size) {\n        flush_pending(strm);\n      }\n      if (s.pending + 2 <= s.pending_buf_size) {\n        put_byte(s, strm.adler & 0xff);\n        put_byte(s, (strm.adler >> 8) & 0xff);\n        strm.adler = 0; //crc32(0L, Z_NULL, 0);\n        s.status = BUSY_STATE;\n      }\n    }\n    else {\n      s.status = BUSY_STATE;\n    }\n  }\n//#endif\n\n  /* Flush as much pending output as possible */\n  if (s.pending !== 0) {\n    flush_pending(strm);\n    if (strm.avail_out === 0) {\n      /* Since avail_out is 0, deflate will be called again with\n       * more output space, but possibly with both pending and\n       * avail_in equal to zero. There won't be anything to do,\n       * but this is not an error situation so make sure we\n       * return OK instead of BUF_ERROR at next call of deflate:\n       */\n      s.last_flush = -1;\n      return Z_OK;\n    }\n\n    /* Make sure there is something to do and avoid duplicate consecutive\n     * flushes. For repeated and useless calls with Z_FINISH, we keep\n     * returning Z_STREAM_END instead of Z_BUF_ERROR.\n     */\n  } else if (strm.avail_in === 0 && rank(flush) <= rank(old_flush) &&\n    flush !== Z_FINISH) {\n    return err(strm, Z_BUF_ERROR);\n  }\n\n  /* User must not provide more input after the first FINISH: */\n  if (s.status === FINISH_STATE && strm.avail_in !== 0) {\n    return err(strm, Z_BUF_ERROR);\n  }\n\n  /* Start a new block or continue the current one.\n   */\n  if (strm.avail_in !== 0 || s.lookahead !== 0 ||\n    (flush !== Z_NO_FLUSH && s.status !== FINISH_STATE)) {\n    var bstate = (s.strategy === Z_HUFFMAN_ONLY) ? deflate_huff(s, flush) :\n      (s.strategy === Z_RLE ? deflate_rle(s, flush) :\n        configuration_table[s.level].func(s, flush));\n\n    if (bstate === BS_FINISH_STARTED || bstate === BS_FINISH_DONE) {\n      s.status = FINISH_STATE;\n    }\n    if (bstate === BS_NEED_MORE || bstate === BS_FINISH_STARTED) {\n      if (strm.avail_out === 0) {\n        s.last_flush = -1;\n        /* avoid BUF_ERROR next call, see above */\n      }\n      return Z_OK;\n      /* If flush != Z_NO_FLUSH && avail_out == 0, the next call\n       * of deflate should use the same flush parameter to make sure\n       * that the flush is complete. So we don't have to output an\n       * empty block here, this will be done at next call. This also\n       * ensures that for a very small output buffer, we emit at most\n       * one empty block.\n       */\n    }\n    if (bstate === BS_BLOCK_DONE) {\n      if (flush === Z_PARTIAL_FLUSH) {\n        trees._tr_align(s);\n      }\n      else if (flush !== Z_BLOCK) { /* FULL_FLUSH or SYNC_FLUSH */\n\n        trees._tr_stored_block(s, 0, 0, false);\n        /* For a full flush, this empty block will be recognized\n         * as a special marker by inflate_sync().\n         */\n        if (flush === Z_FULL_FLUSH) {\n          /*** CLEAR_HASH(s); ***/             /* forget history */\n          zero(s.head); // Fill with NIL (= 0);\n\n          if (s.lookahead === 0) {\n            s.strstart = 0;\n            s.block_start = 0;\n            s.insert = 0;\n          }\n        }\n      }\n      flush_pending(strm);\n      if (strm.avail_out === 0) {\n        s.last_flush = -1; /* avoid BUF_ERROR at next call, see above */\n        return Z_OK;\n      }\n    }\n  }\n  //Assert(strm->avail_out > 0, \"bug2\");\n  //if (strm.avail_out <= 0) { throw new Error(\"bug2\");}\n\n  if (flush !== Z_FINISH) { return Z_OK; }\n  if (s.wrap <= 0) { return Z_STREAM_END; }\n\n  /* Write the trailer */\n  if (s.wrap === 2) {\n    put_byte(s, strm.adler & 0xff);\n    put_byte(s, (strm.adler >> 8) & 0xff);\n    put_byte(s, (strm.adler >> 16) & 0xff);\n    put_byte(s, (strm.adler >> 24) & 0xff);\n    put_byte(s, strm.total_in & 0xff);\n    put_byte(s, (strm.total_in >> 8) & 0xff);\n    put_byte(s, (strm.total_in >> 16) & 0xff);\n    put_byte(s, (strm.total_in >> 24) & 0xff);\n  }\n  else\n  {\n    putShortMSB(s, strm.adler >>> 16);\n    putShortMSB(s, strm.adler & 0xffff);\n  }\n\n  flush_pending(strm);\n  /* If avail_out is zero, the application will call deflate again\n   * to flush the rest.\n   */\n  if (s.wrap > 0) { s.wrap = -s.wrap; }\n  /* write the trailer only once! */\n  return s.pending !== 0 ? Z_OK : Z_STREAM_END;\n}\n\nfunction deflateEnd(strm) {\n  var status;\n\n  if (!strm/*== Z_NULL*/ || !strm.state/*== Z_NULL*/) {\n    return Z_STREAM_ERROR;\n  }\n\n  status = strm.state.status;\n  if (status !== INIT_STATE &&\n    status !== EXTRA_STATE &&\n    status !== NAME_STATE &&\n    status !== COMMENT_STATE &&\n    status !== HCRC_STATE &&\n    status !== BUSY_STATE &&\n    status !== FINISH_STATE\n  ) {\n    return err(strm, Z_STREAM_ERROR);\n  }\n\n  strm.state = null;\n\n  return status === BUSY_STATE ? err(strm, Z_DATA_ERROR) : Z_OK;\n}\n\n\n/* =========================================================================\n * Initializes the compression dictionary from the given byte\n * sequence without producing any compressed output.\n */\nfunction deflateSetDictionary(strm, dictionary) {\n  var dictLength = dictionary.length;\n\n  var s;\n  var str, n;\n  var wrap;\n  var avail;\n  var next;\n  var input;\n  var tmpDict;\n\n  if (!strm/*== Z_NULL*/ || !strm.state/*== Z_NULL*/) {\n    return Z_STREAM_ERROR;\n  }\n\n  s = strm.state;\n  wrap = s.wrap;\n\n  if (wrap === 2 || (wrap === 1 && s.status !== INIT_STATE) || s.lookahead) {\n    return Z_STREAM_ERROR;\n  }\n\n  /* when using zlib wrappers, compute Adler-32 for provided dictionary */\n  if (wrap === 1) {\n    /* adler32(strm->adler, dictionary, dictLength); */\n    strm.adler = adler32(strm.adler, dictionary, dictLength, 0);\n  }\n\n  s.wrap = 0;   /* avoid computing Adler-32 in read_buf */\n\n  /* if dictionary would fill window, just replace the history */\n  if (dictLength >= s.w_size) {\n    if (wrap === 0) {            /* already empty otherwise */\n      /*** CLEAR_HASH(s); ***/\n      zero(s.head); // Fill with NIL (= 0);\n      s.strstart = 0;\n      s.block_start = 0;\n      s.insert = 0;\n    }\n    /* use the tail */\n    // dictionary = dictionary.slice(dictLength - s.w_size);\n    tmpDict = new utils.Buf8(s.w_size);\n    utils.arraySet(tmpDict, dictionary, dictLength - s.w_size, s.w_size, 0);\n    dictionary = tmpDict;\n    dictLength = s.w_size;\n  }\n  /* insert dictionary into window and hash */\n  avail = strm.avail_in;\n  next = strm.next_in;\n  input = strm.input;\n  strm.avail_in = dictLength;\n  strm.next_in = 0;\n  strm.input = dictionary;\n  fill_window(s);\n  while (s.lookahead >= MIN_MATCH) {\n    str = s.strstart;\n    n = s.lookahead - (MIN_MATCH - 1);\n    do {\n      /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */\n      s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + MIN_MATCH - 1]) & s.hash_mask;\n\n      s.prev[str & s.w_mask] = s.head[s.ins_h];\n\n      s.head[s.ins_h] = str;\n      str++;\n    } while (--n);\n    s.strstart = str;\n    s.lookahead = MIN_MATCH - 1;\n    fill_window(s);\n  }\n  s.strstart += s.lookahead;\n  s.block_start = s.strstart;\n  s.insert = s.lookahead;\n  s.lookahead = 0;\n  s.match_length = s.prev_length = MIN_MATCH - 1;\n  s.match_available = 0;\n  strm.next_in = next;\n  strm.input = input;\n  strm.avail_in = avail;\n  s.wrap = wrap;\n  return Z_OK;\n}\n\n\nexports.deflateInit = deflateInit;\nexports.deflateInit2 = deflateInit2;\nexports.deflateReset = deflateReset;\nexports.deflateResetKeep = deflateResetKeep;\nexports.deflateSetHeader = deflateSetHeader;\nexports.deflate = deflate;\nexports.deflateEnd = deflateEnd;\nexports.deflateSetDictionary = deflateSetDictionary;\nexports.deflateInfo = 'pako deflate (from Nodeca project)';\n\n/* Not implemented\nexports.deflateBound = deflateBound;\nexports.deflateCopy = deflateCopy;\nexports.deflateParams = deflateParams;\nexports.deflatePending = deflatePending;\nexports.deflatePrime = deflatePrime;\nexports.deflateTune = deflateTune;\n*/\n\n},{\"../utils/common\":41,\"./adler32\":43,\"./crc32\":45,\"./messages\":51,\"./trees\":52}],47:[function(require,module,exports){\n'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n//   claim that you wrote the original software. If you use this software\n//   in a product, an acknowledgment in the product documentation would be\n//   appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n//   misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nfunction GZheader() {\n  /* true if compressed data believed to be text */\n  this.text       = 0;\n  /* modification time */\n  this.time       = 0;\n  /* extra flags (not used when writing a gzip file) */\n  this.xflags     = 0;\n  /* operating system */\n  this.os         = 0;\n  /* pointer to extra field or Z_NULL if none */\n  this.extra      = null;\n  /* extra field length (valid if extra != Z_NULL) */\n  this.extra_len  = 0; // Actually, we don't need it in JS,\n                       // but leave for few code modifications\n\n  //\n  // Setup limits is not necessary because in js we should not preallocate memory\n  // for inflate use constant limit in 65536 bytes\n  //\n\n  /* space at extra (only when reading header) */\n  // this.extra_max  = 0;\n  /* pointer to zero-terminated file name or Z_NULL */\n  this.name       = '';\n  /* space at name (only when reading header) */\n  // this.name_max   = 0;\n  /* pointer to zero-terminated comment or Z_NULL */\n  this.comment    = '';\n  /* space at comment (only when reading header) */\n  // this.comm_max   = 0;\n  /* true if there was or will be a header crc */\n  this.hcrc       = 0;\n  /* true when done reading gzip header (not used when writing a gzip file) */\n  this.done       = false;\n}\n\nmodule.exports = GZheader;\n\n},{}],48:[function(require,module,exports){\n'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n//   claim that you wrote the original software. If you use this software\n//   in a product, an acknowledgment in the product documentation would be\n//   appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n//   misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n// See state defs from inflate.js\nvar BAD = 30;       /* got a data error -- remain here until reset */\nvar TYPE = 12;      /* i: waiting for type bits, including last-flag bit */\n\n/*\n   Decode literal, length, and distance codes and write out the resulting\n   literal and match bytes until either not enough input or output is\n   available, an end-of-block is encountered, or a data error is encountered.\n   When large enough input and output buffers are supplied to inflate(), for\n   example, a 16K input buffer and a 64K output buffer, more than 95% of the\n   inflate execution time is spent in this routine.\n\n   Entry assumptions:\n\n        state.mode === LEN\n        strm.avail_in >= 6\n        strm.avail_out >= 258\n        start >= strm.avail_out\n        state.bits < 8\n\n   On return, state.mode is one of:\n\n        LEN -- ran out of enough output space or enough available input\n        TYPE -- reached end of block code, inflate() to interpret next block\n        BAD -- error in block data\n\n   Notes:\n\n    - The maximum input bits used by a length/distance pair is 15 bits for the\n      length code, 5 bits for the length extra, 15 bits for the distance code,\n      and 13 bits for the distance extra.  This totals 48 bits, or six bytes.\n      Therefore if strm.avail_in >= 6, then there is enough input to avoid\n      checking for available input while decoding.\n\n    - The maximum bytes that a single length/distance pair can output is 258\n      bytes, which is the maximum length that can be coded.  inflate_fast()\n      requires strm.avail_out >= 258 for each loop to avoid checking for\n      output space.\n */\nmodule.exports = function inflate_fast(strm, start) {\n  var state;\n  var _in;                    /* local strm.input */\n  var last;                   /* have enough input while in < last */\n  var _out;                   /* local strm.output */\n  var beg;                    /* inflate()'s initial strm.output */\n  var end;                    /* while out < end, enough space available */\n//#ifdef INFLATE_STRICT\n  var dmax;                   /* maximum distance from zlib header */\n//#endif\n  var wsize;                  /* window size or zero if not using window */\n  var whave;                  /* valid bytes in the window */\n  var wnext;                  /* window write index */\n  // Use `s_window` instead `window`, avoid conflict with instrumentation tools\n  var s_window;               /* allocated sliding window, if wsize != 0 */\n  var hold;                   /* local strm.hold */\n  var bits;                   /* local strm.bits */\n  var lcode;                  /* local strm.lencode */\n  var dcode;                  /* local strm.distcode */\n  var lmask;                  /* mask for first level of length codes */\n  var dmask;                  /* mask for first level of distance codes */\n  var here;                   /* retrieved table entry */\n  var op;                     /* code bits, operation, extra bits, or */\n                              /*  window position, window bytes to copy */\n  var len;                    /* match length, unused bytes */\n  var dist;                   /* match distance */\n  var from;                   /* where to copy match from */\n  var from_source;\n\n\n  var input, output; // JS specific, because we have no pointers\n\n  /* copy state to local variables */\n  state = strm.state;\n  //here = state.here;\n  _in = strm.next_in;\n  input = strm.input;\n  last = _in + (strm.avail_in - 5);\n  _out = strm.next_out;\n  output = strm.output;\n  beg = _out - (start - strm.avail_out);\n  end = _out + (strm.avail_out - 257);\n//#ifdef INFLATE_STRICT\n  dmax = state.dmax;\n//#endif\n  wsize = state.wsize;\n  whave = state.whave;\n  wnext = state.wnext;\n  s_window = state.window;\n  hold = state.hold;\n  bits = state.bits;\n  lcode = state.lencode;\n  dcode = state.distcode;\n  lmask = (1 << state.lenbits) - 1;\n  dmask = (1 << state.distbits) - 1;\n\n\n  /* decode literals and length/distances until end-of-block or not enough\n     input data or output space */\n\n  top:\n  do {\n    if (bits < 15) {\n      hold += input[_in++] << bits;\n      bits += 8;\n      hold += input[_in++] << bits;\n      bits += 8;\n    }\n\n    here = lcode[hold & lmask];\n\n    dolen:\n    for (;;) { // Goto emulation\n      op = here >>> 24/*here.bits*/;\n      hold >>>= op;\n      bits -= op;\n      op = (here >>> 16) & 0xff/*here.op*/;\n      if (op === 0) {                          /* literal */\n        //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?\n        //        \"inflate:         literal '%c'\\n\" :\n        //        \"inflate:         literal 0x%02x\\n\", here.val));\n        output[_out++] = here & 0xffff/*here.val*/;\n      }\n      else if (op & 16) {                     /* length base */\n        len = here & 0xffff/*here.val*/;\n        op &= 15;                           /* number of extra bits */\n        if (op) {\n          if (bits < op) {\n            hold += input[_in++] << bits;\n            bits += 8;\n          }\n          len += hold & ((1 << op) - 1);\n          hold >>>= op;\n          bits -= op;\n        }\n        //Tracevv((stderr, \"inflate:         length %u\\n\", len));\n        if (bits < 15) {\n          hold += input[_in++] << bits;\n          bits += 8;\n          hold += input[_in++] << bits;\n          bits += 8;\n        }\n        here = dcode[hold & dmask];\n\n        dodist:\n        for (;;) { // goto emulation\n          op = here >>> 24/*here.bits*/;\n          hold >>>= op;\n          bits -= op;\n          op = (here >>> 16) & 0xff/*here.op*/;\n\n          if (op & 16) {                      /* distance base */\n            dist = here & 0xffff/*here.val*/;\n            op &= 15;                       /* number of extra bits */\n            if (bits < op) {\n              hold += input[_in++] << bits;\n              bits += 8;\n              if (bits < op) {\n                hold += input[_in++] << bits;\n                bits += 8;\n              }\n            }\n            dist += hold & ((1 << op) - 1);\n//#ifdef INFLATE_STRICT\n            if (dist > dmax) {\n              strm.msg = 'invalid distance too far back';\n              state.mode = BAD;\n              break top;\n            }\n//#endif\n            hold >>>= op;\n            bits -= op;\n            //Tracevv((stderr, \"inflate:         distance %u\\n\", dist));\n            op = _out - beg;                /* max distance in output */\n            if (dist > op) {                /* see if copy from window */\n              op = dist - op;               /* distance back in window */\n              if (op > whave) {\n                if (state.sane) {\n                  strm.msg = 'invalid distance too far back';\n                  state.mode = BAD;\n                  break top;\n                }\n\n// (!) This block is disabled in zlib defailts,\n// don't enable it for binary compatibility\n//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR\n//                if (len <= op - whave) {\n//                  do {\n//                    output[_out++] = 0;\n//                  } while (--len);\n//                  continue top;\n//                }\n//                len -= op - whave;\n//                do {\n//                  output[_out++] = 0;\n//                } while (--op > whave);\n//                if (op === 0) {\n//                  from = _out - dist;\n//                  do {\n//                    output[_out++] = output[from++];\n//                  } while (--len);\n//                  continue top;\n//                }\n//#endif\n              }\n              from = 0; // window index\n              from_source = s_window;\n              if (wnext === 0) {           /* very common case */\n                from += wsize - op;\n                if (op < len) {         /* some from window */\n                  len -= op;\n                  do {\n                    output[_out++] = s_window[from++];\n                  } while (--op);\n                  from = _out - dist;  /* rest from output */\n                  from_source = output;\n                }\n              }\n              else if (wnext < op) {      /* wrap around window */\n                from += wsize + wnext - op;\n                op -= wnext;\n                if (op < len) {         /* some from end of window */\n                  len -= op;\n                  do {\n                    output[_out++] = s_window[from++];\n                  } while (--op);\n                  from = 0;\n                  if (wnext < len) {  /* some from start of window */\n                    op = wnext;\n                    len -= op;\n                    do {\n                      output[_out++] = s_window[from++];\n                    } while (--op);\n                    from = _out - dist;      /* rest from output */\n                    from_source = output;\n                  }\n                }\n              }\n              else {                      /* contiguous in window */\n                from += wnext - op;\n                if (op < len) {         /* some from window */\n                  len -= op;\n                  do {\n                    output[_out++] = s_window[from++];\n                  } while (--op);\n                  from = _out - dist;  /* rest from output */\n                  from_source = output;\n                }\n              }\n              while (len > 2) {\n                output[_out++] = from_source[from++];\n                output[_out++] = from_source[from++];\n                output[_out++] = from_source[from++];\n                len -= 3;\n              }\n              if (len) {\n                output[_out++] = from_source[from++];\n                if (len > 1) {\n                  output[_out++] = from_source[from++];\n                }\n              }\n            }\n            else {\n              from = _out - dist;          /* copy direct from output */\n              do {                        /* minimum length is three */\n                output[_out++] = output[from++];\n                output[_out++] = output[from++];\n                output[_out++] = output[from++];\n                len -= 3;\n              } while (len > 2);\n              if (len) {\n                output[_out++] = output[from++];\n                if (len > 1) {\n                  output[_out++] = output[from++];\n                }\n              }\n            }\n          }\n          else if ((op & 64) === 0) {          /* 2nd level distance code */\n            here = dcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))];\n            continue dodist;\n          }\n          else {\n            strm.msg = 'invalid distance code';\n            state.mode = BAD;\n            break top;\n          }\n\n          break; // need to emulate goto via \"continue\"\n        }\n      }\n      else if ((op & 64) === 0) {              /* 2nd level length code */\n        here = lcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))];\n        continue dolen;\n      }\n      else if (op & 32) {                     /* end-of-block */\n        //Tracevv((stderr, \"inflate:         end of block\\n\"));\n        state.mode = TYPE;\n        break top;\n      }\n      else {\n        strm.msg = 'invalid literal/length code';\n        state.mode = BAD;\n        break top;\n      }\n\n      break; // need to emulate goto via \"continue\"\n    }\n  } while (_in < last && _out < end);\n\n  /* return unused bytes (on entry, bits < 8, so in won't go too far back) */\n  len = bits >> 3;\n  _in -= len;\n  bits -= len << 3;\n  hold &= (1 << bits) - 1;\n\n  /* update state and return */\n  strm.next_in = _in;\n  strm.next_out = _out;\n  strm.avail_in = (_in < last ? 5 + (last - _in) : 5 - (_in - last));\n  strm.avail_out = (_out < end ? 257 + (end - _out) : 257 - (_out - end));\n  state.hold = hold;\n  state.bits = bits;\n  return;\n};\n\n},{}],49:[function(require,module,exports){\n'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n//   claim that you wrote the original software. If you use this software\n//   in a product, an acknowledgment in the product documentation would be\n//   appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n//   misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nvar utils         = require('../utils/common');\nvar adler32       = require('./adler32');\nvar crc32         = require('./crc32');\nvar inflate_fast  = require('./inffast');\nvar inflate_table = require('./inftrees');\n\nvar CODES = 0;\nvar LENS = 1;\nvar DISTS = 2;\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\n\n/* Allowed flush values; see deflate() and inflate() below for details */\n//var Z_NO_FLUSH      = 0;\n//var Z_PARTIAL_FLUSH = 1;\n//var Z_SYNC_FLUSH    = 2;\n//var Z_FULL_FLUSH    = 3;\nvar Z_FINISH        = 4;\nvar Z_BLOCK         = 5;\nvar Z_TREES         = 6;\n\n\n/* Return codes for the compression/decompression functions. Negative values\n * are errors, positive values are used for special but normal events.\n */\nvar Z_OK            = 0;\nvar Z_STREAM_END    = 1;\nvar Z_NEED_DICT     = 2;\n//var Z_ERRNO         = -1;\nvar Z_STREAM_ERROR  = -2;\nvar Z_DATA_ERROR    = -3;\nvar Z_MEM_ERROR     = -4;\nvar Z_BUF_ERROR     = -5;\n//var Z_VERSION_ERROR = -6;\n\n/* The deflate compression method */\nvar Z_DEFLATED  = 8;\n\n\n/* STATES ====================================================================*/\n/* ===========================================================================*/\n\n\nvar    HEAD = 1;       /* i: waiting for magic header */\nvar    FLAGS = 2;      /* i: waiting for method and flags (gzip) */\nvar    TIME = 3;       /* i: waiting for modification time (gzip) */\nvar    OS = 4;         /* i: waiting for extra flags and operating system (gzip) */\nvar    EXLEN = 5;      /* i: waiting for extra length (gzip) */\nvar    EXTRA = 6;      /* i: waiting for extra bytes (gzip) */\nvar    NAME = 7;       /* i: waiting for end of file name (gzip) */\nvar    COMMENT = 8;    /* i: waiting for end of comment (gzip) */\nvar    HCRC = 9;       /* i: waiting for header crc (gzip) */\nvar    DICTID = 10;    /* i: waiting for dictionary check value */\nvar    DICT = 11;      /* waiting for inflateSetDictionary() call */\nvar        TYPE = 12;      /* i: waiting for type bits, including last-flag bit */\nvar        TYPEDO = 13;    /* i: same, but skip check to exit inflate on new block */\nvar        STORED = 14;    /* i: waiting for stored size (length and complement) */\nvar        COPY_ = 15;     /* i/o: same as COPY below, but only first time in */\nvar        COPY = 16;      /* i/o: waiting for input or output to copy stored block */\nvar        TABLE = 17;     /* i: waiting for dynamic block table lengths */\nvar        LENLENS = 18;   /* i: waiting for code length code lengths */\nvar        CODELENS = 19;  /* i: waiting for length/lit and distance code lengths */\nvar            LEN_ = 20;      /* i: same as LEN below, but only first time in */\nvar            LEN = 21;       /* i: waiting for length/lit/eob code */\nvar            LENEXT = 22;    /* i: waiting for length extra bits */\nvar            DIST = 23;      /* i: waiting for distance code */\nvar            DISTEXT = 24;   /* i: waiting for distance extra bits */\nvar            MATCH = 25;     /* o: waiting for output space to copy string */\nvar            LIT = 26;       /* o: waiting for output space to write literal */\nvar    CHECK = 27;     /* i: waiting for 32-bit check value */\nvar    LENGTH = 28;    /* i: waiting for 32-bit length (gzip) */\nvar    DONE = 29;      /* finished check, done -- remain here until reset */\nvar    BAD = 30;       /* got a data error -- remain here until reset */\nvar    MEM = 31;       /* got an inflate() memory error -- remain here until reset */\nvar    SYNC = 32;      /* looking for synchronization bytes to restart inflate() */\n\n/* ===========================================================================*/\n\n\n\nvar ENOUGH_LENS = 852;\nvar ENOUGH_DISTS = 592;\n//var ENOUGH =  (ENOUGH_LENS+ENOUGH_DISTS);\n\nvar MAX_WBITS = 15;\n/* 32K LZ77 window */\nvar DEF_WBITS = MAX_WBITS;\n\n\nfunction zswap32(q) {\n  return  (((q >>> 24) & 0xff) +\n          ((q >>> 8) & 0xff00) +\n          ((q & 0xff00) << 8) +\n          ((q & 0xff) << 24));\n}\n\n\nfunction InflateState() {\n  this.mode = 0;             /* current inflate mode */\n  this.last = false;          /* true if processing last block */\n  this.wrap = 0;              /* bit 0 true for zlib, bit 1 true for gzip */\n  this.havedict = false;      /* true if dictionary provided */\n  this.flags = 0;             /* gzip header method and flags (0 if zlib) */\n  this.dmax = 0;              /* zlib header max distance (INFLATE_STRICT) */\n  this.check = 0;             /* protected copy of check value */\n  this.total = 0;             /* protected copy of output count */\n  // TODO: may be {}\n  this.head = null;           /* where to save gzip header information */\n\n  /* sliding window */\n  this.wbits = 0;             /* log base 2 of requested window size */\n  this.wsize = 0;             /* window size or zero if not using window */\n  this.whave = 0;             /* valid bytes in the window */\n  this.wnext = 0;             /* window write index */\n  this.window = null;         /* allocated sliding window, if needed */\n\n  /* bit accumulator */\n  this.hold = 0;              /* input bit accumulator */\n  this.bits = 0;              /* number of bits in \"in\" */\n\n  /* for string and stored block copying */\n  this.length = 0;            /* literal or length of data to copy */\n  this.offset = 0;            /* distance back to copy string from */\n\n  /* for table and code decoding */\n  this.extra = 0;             /* extra bits needed */\n\n  /* fixed and dynamic code tables */\n  this.lencode = null;          /* starting table for length/literal codes */\n  this.distcode = null;         /* starting table for distance codes */\n  this.lenbits = 0;           /* index bits for lencode */\n  this.distbits = 0;          /* index bits for distcode */\n\n  /* dynamic table building */\n  this.ncode = 0;             /* number of code length code lengths */\n  this.nlen = 0;              /* number of length code lengths */\n  this.ndist = 0;             /* number of distance code lengths */\n  this.have = 0;              /* number of code lengths in lens[] */\n  this.next = null;              /* next available space in codes[] */\n\n  this.lens = new utils.Buf16(320); /* temporary storage for code lengths */\n  this.work = new utils.Buf16(288); /* work area for code table building */\n\n  /*\n   because we don't have pointers in js, we use lencode and distcode directly\n   as buffers so we don't need codes\n  */\n  //this.codes = new utils.Buf32(ENOUGH);       /* space for code tables */\n  this.lendyn = null;              /* dynamic table for length/literal codes (JS specific) */\n  this.distdyn = null;             /* dynamic table for distance codes (JS specific) */\n  this.sane = 0;                   /* if false, allow invalid distance too far */\n  this.back = 0;                   /* bits back of last unprocessed length/lit */\n  this.was = 0;                    /* initial length of match */\n}\n\nfunction inflateResetKeep(strm) {\n  var state;\n\n  if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n  state = strm.state;\n  strm.total_in = strm.total_out = state.total = 0;\n  strm.msg = ''; /*Z_NULL*/\n  if (state.wrap) {       /* to support ill-conceived Java test suite */\n    strm.adler = state.wrap & 1;\n  }\n  state.mode = HEAD;\n  state.last = 0;\n  state.havedict = 0;\n  state.dmax = 32768;\n  state.head = null/*Z_NULL*/;\n  state.hold = 0;\n  state.bits = 0;\n  //state.lencode = state.distcode = state.next = state.codes;\n  state.lencode = state.lendyn = new utils.Buf32(ENOUGH_LENS);\n  state.distcode = state.distdyn = new utils.Buf32(ENOUGH_DISTS);\n\n  state.sane = 1;\n  state.back = -1;\n  //Tracev((stderr, \"inflate: reset\\n\"));\n  return Z_OK;\n}\n\nfunction inflateReset(strm) {\n  var state;\n\n  if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n  state = strm.state;\n  state.wsize = 0;\n  state.whave = 0;\n  state.wnext = 0;\n  return inflateResetKeep(strm);\n\n}\n\nfunction inflateReset2(strm, windowBits) {\n  var wrap;\n  var state;\n\n  /* get the state */\n  if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n  state = strm.state;\n\n  /* extract wrap request from windowBits parameter */\n  if (windowBits < 0) {\n    wrap = 0;\n    windowBits = -windowBits;\n  }\n  else {\n    wrap = (windowBits >> 4) + 1;\n    if (windowBits < 48) {\n      windowBits &= 15;\n    }\n  }\n\n  /* set number of window bits, free window if different */\n  if (windowBits && (windowBits < 8 || windowBits > 15)) {\n    return Z_STREAM_ERROR;\n  }\n  if (state.window !== null && state.wbits !== windowBits) {\n    state.window = null;\n  }\n\n  /* update state and reset the rest of it */\n  state.wrap = wrap;\n  state.wbits = windowBits;\n  return inflateReset(strm);\n}\n\nfunction inflateInit2(strm, windowBits) {\n  var ret;\n  var state;\n\n  if (!strm) { return Z_STREAM_ERROR; }\n  //strm.msg = Z_NULL;                 /* in case we return an error */\n\n  state = new InflateState();\n\n  //if (state === Z_NULL) return Z_MEM_ERROR;\n  //Tracev((stderr, \"inflate: allocated\\n\"));\n  strm.state = state;\n  state.window = null/*Z_NULL*/;\n  ret = inflateReset2(strm, windowBits);\n  if (ret !== Z_OK) {\n    strm.state = null/*Z_NULL*/;\n  }\n  return ret;\n}\n\nfunction inflateInit(strm) {\n  return inflateInit2(strm, DEF_WBITS);\n}\n\n\n/*\n Return state with length and distance decoding tables and index sizes set to\n fixed code decoding.  Normally this returns fixed tables from inffixed.h.\n If BUILDFIXED is defined, then instead this routine builds the tables the\n first time it's called, and returns those tables the first time and\n thereafter.  This reduces the size of the code by about 2K bytes, in\n exchange for a little execution time.  However, BUILDFIXED should not be\n used for threaded applications, since the rewriting of the tables and virgin\n may not be thread-safe.\n */\nvar virgin = true;\n\nvar lenfix, distfix; // We have no pointers in JS, so keep tables separate\n\nfunction fixedtables(state) {\n  /* build fixed huffman tables if first call (may not be thread safe) */\n  if (virgin) {\n    var sym;\n\n    lenfix = new utils.Buf32(512);\n    distfix = new utils.Buf32(32);\n\n    /* literal/length table */\n    sym = 0;\n    while (sym < 144) { state.lens[sym++] = 8; }\n    while (sym < 256) { state.lens[sym++] = 9; }\n    while (sym < 280) { state.lens[sym++] = 7; }\n    while (sym < 288) { state.lens[sym++] = 8; }\n\n    inflate_table(LENS,  state.lens, 0, 288, lenfix,   0, state.work, { bits: 9 });\n\n    /* distance table */\n    sym = 0;\n    while (sym < 32) { state.lens[sym++] = 5; }\n\n    inflate_table(DISTS, state.lens, 0, 32,   distfix, 0, state.work, { bits: 5 });\n\n    /* do this just once */\n    virgin = false;\n  }\n\n  state.lencode = lenfix;\n  state.lenbits = 9;\n  state.distcode = distfix;\n  state.distbits = 5;\n}\n\n\n/*\n Update the window with the last wsize (normally 32K) bytes written before\n returning.  If window does not exist yet, create it.  This is only called\n when a window is already in use, or when output has been written during this\n inflate call, but the end of the deflate stream has not been reached yet.\n It is also called to create a window for dictionary data when a dictionary\n is loaded.\n\n Providing output buffers larger than 32K to inflate() should provide a speed\n advantage, since only the last 32K of output is copied to the sliding window\n upon return from inflate(), and since all distances after the first 32K of\n output will fall in the output data, making match copies simpler and faster.\n The advantage may be dependent on the size of the processor's data caches.\n */\nfunction updatewindow(strm, src, end, copy) {\n  var dist;\n  var state = strm.state;\n\n  /* if it hasn't been done already, allocate space for the window */\n  if (state.window === null) {\n    state.wsize = 1 << state.wbits;\n    state.wnext = 0;\n    state.whave = 0;\n\n    state.window = new utils.Buf8(state.wsize);\n  }\n\n  /* copy state->wsize or less output bytes into the circular window */\n  if (copy >= state.wsize) {\n    utils.arraySet(state.window, src, end - state.wsize, state.wsize, 0);\n    state.wnext = 0;\n    state.whave = state.wsize;\n  }\n  else {\n    dist = state.wsize - state.wnext;\n    if (dist > copy) {\n      dist = copy;\n    }\n    //zmemcpy(state->window + state->wnext, end - copy, dist);\n    utils.arraySet(state.window, src, end - copy, dist, state.wnext);\n    copy -= dist;\n    if (copy) {\n      //zmemcpy(state->window, end - copy, copy);\n      utils.arraySet(state.window, src, end - copy, copy, 0);\n      state.wnext = copy;\n      state.whave = state.wsize;\n    }\n    else {\n      state.wnext += dist;\n      if (state.wnext === state.wsize) { state.wnext = 0; }\n      if (state.whave < state.wsize) { state.whave += dist; }\n    }\n  }\n  return 0;\n}\n\nfunction inflate(strm, flush) {\n  var state;\n  var input, output;          // input/output buffers\n  var next;                   /* next input INDEX */\n  var put;                    /* next output INDEX */\n  var have, left;             /* available input and output */\n  var hold;                   /* bit buffer */\n  var bits;                   /* bits in bit buffer */\n  var _in, _out;              /* save starting available input and output */\n  var copy;                   /* number of stored or match bytes to copy */\n  var from;                   /* where to copy match bytes from */\n  var from_source;\n  var here = 0;               /* current decoding table entry */\n  var here_bits, here_op, here_val; // paked \"here\" denormalized (JS specific)\n  //var last;                   /* parent table entry */\n  var last_bits, last_op, last_val; // paked \"last\" denormalized (JS specific)\n  var len;                    /* length to copy for repeats, bits to drop */\n  var ret;                    /* return code */\n  var hbuf = new utils.Buf8(4);    /* buffer for gzip header crc calculation */\n  var opts;\n\n  var n; // temporary var for NEED_BITS\n\n  var order = /* permutation of code lengths */\n    [ 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 ];\n\n\n  if (!strm || !strm.state || !strm.output ||\n      (!strm.input && strm.avail_in !== 0)) {\n    return Z_STREAM_ERROR;\n  }\n\n  state = strm.state;\n  if (state.mode === TYPE) { state.mode = TYPEDO; }    /* skip check */\n\n\n  //--- LOAD() ---\n  put = strm.next_out;\n  output = strm.output;\n  left = strm.avail_out;\n  next = strm.next_in;\n  input = strm.input;\n  have = strm.avail_in;\n  hold = state.hold;\n  bits = state.bits;\n  //---\n\n  _in = have;\n  _out = left;\n  ret = Z_OK;\n\n  inf_leave: // goto emulation\n  for (;;) {\n    switch (state.mode) {\n    case HEAD:\n      if (state.wrap === 0) {\n        state.mode = TYPEDO;\n        break;\n      }\n      //=== NEEDBITS(16);\n      while (bits < 16) {\n        if (have === 0) { break inf_leave; }\n        have--;\n        hold += input[next++] << bits;\n        bits += 8;\n      }\n      //===//\n      if ((state.wrap & 2) && hold === 0x8b1f) {  /* gzip header */\n        state.check = 0/*crc32(0L, Z_NULL, 0)*/;\n        //=== CRC2(state.check, hold);\n        hbuf[0] = hold & 0xff;\n        hbuf[1] = (hold >>> 8) & 0xff;\n        state.check = crc32(state.check, hbuf, 2, 0);\n        //===//\n\n        //=== INITBITS();\n        hold = 0;\n        bits = 0;\n        //===//\n        state.mode = FLAGS;\n        break;\n      }\n      state.flags = 0;           /* expect zlib header */\n      if (state.head) {\n        state.head.done = false;\n      }\n      if (!(state.wrap & 1) ||   /* check if zlib header allowed */\n        (((hold & 0xff)/*BITS(8)*/ << 8) + (hold >> 8)) % 31) {\n        strm.msg = 'incorrect header check';\n        state.mode = BAD;\n        break;\n      }\n      if ((hold & 0x0f)/*BITS(4)*/ !== Z_DEFLATED) {\n        strm.msg = 'unknown compression method';\n        state.mode = BAD;\n        break;\n      }\n      //--- DROPBITS(4) ---//\n      hold >>>= 4;\n      bits -= 4;\n      //---//\n      len = (hold & 0x0f)/*BITS(4)*/ + 8;\n      if (state.wbits === 0) {\n        state.wbits = len;\n      }\n      else if (len > state.wbits) {\n        strm.msg = 'invalid window size';\n        state.mode = BAD;\n        break;\n      }\n      state.dmax = 1 << len;\n      //Tracev((stderr, \"inflate:   zlib header ok\\n\"));\n      strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;\n      state.mode = hold & 0x200 ? DICTID : TYPE;\n      //=== INITBITS();\n      hold = 0;\n      bits = 0;\n      //===//\n      break;\n    case FLAGS:\n      //=== NEEDBITS(16); */\n      while (bits < 16) {\n        if (have === 0) { break inf_leave; }\n        have--;\n        hold += input[next++] << bits;\n        bits += 8;\n      }\n      //===//\n      state.flags = hold;\n      if ((state.flags & 0xff) !== Z_DEFLATED) {\n        strm.msg = 'unknown compression method';\n        state.mode = BAD;\n        break;\n      }\n      if (state.flags & 0xe000) {\n        strm.msg = 'unknown header flags set';\n        state.mode = BAD;\n        break;\n      }\n      if (state.head) {\n        state.head.text = ((hold >> 8) & 1);\n      }\n      if (state.flags & 0x0200) {\n        //=== CRC2(state.check, hold);\n        hbuf[0] = hold & 0xff;\n        hbuf[1] = (hold >>> 8) & 0xff;\n        state.check = crc32(state.check, hbuf, 2, 0);\n        //===//\n      }\n      //=== INITBITS();\n      hold = 0;\n      bits = 0;\n      //===//\n      state.mode = TIME;\n      /* falls through */\n    case TIME:\n      //=== NEEDBITS(32); */\n      while (bits < 32) {\n        if (have === 0) { break inf_leave; }\n        have--;\n        hold += input[next++] << bits;\n        bits += 8;\n      }\n      //===//\n      if (state.head) {\n        state.head.time = hold;\n      }\n      if (state.flags & 0x0200) {\n        //=== CRC4(state.check, hold)\n        hbuf[0] = hold & 0xff;\n        hbuf[1] = (hold >>> 8) & 0xff;\n        hbuf[2] = (hold >>> 16) & 0xff;\n        hbuf[3] = (hold >>> 24) & 0xff;\n        state.check = crc32(state.check, hbuf, 4, 0);\n        //===\n      }\n      //=== INITBITS();\n      hold = 0;\n      bits = 0;\n      //===//\n      state.mode = OS;\n      /* falls through */\n    case OS:\n      //=== NEEDBITS(16); */\n      while (bits < 16) {\n        if (have === 0) { break inf_leave; }\n        have--;\n        hold += input[next++] << bits;\n        bits += 8;\n      }\n      //===//\n      if (state.head) {\n        state.head.xflags = (hold & 0xff);\n        state.head.os = (hold >> 8);\n      }\n      if (state.flags & 0x0200) {\n        //=== CRC2(state.check, hold);\n        hbuf[0] = hold & 0xff;\n        hbuf[1] = (hold >>> 8) & 0xff;\n        state.check = crc32(state.check, hbuf, 2, 0);\n        //===//\n      }\n      //=== INITBITS();\n      hold = 0;\n      bits = 0;\n      //===//\n      state.mode = EXLEN;\n      /* falls through */\n    case EXLEN:\n      if (state.flags & 0x0400) {\n        //=== NEEDBITS(16); */\n        while (bits < 16) {\n          if (have === 0) { break inf_leave; }\n          have--;\n          hold += input[next++] << bits;\n          bits += 8;\n        }\n        //===//\n        state.length = hold;\n        if (state.head) {\n          state.head.extra_len = hold;\n        }\n        if (state.flags & 0x0200) {\n          //=== CRC2(state.check, hold);\n          hbuf[0] = hold & 0xff;\n          hbuf[1] = (hold >>> 8) & 0xff;\n          state.check = crc32(state.check, hbuf, 2, 0);\n          //===//\n        }\n        //=== INITBITS();\n        hold = 0;\n        bits = 0;\n        //===//\n      }\n      else if (state.head) {\n        state.head.extra = null/*Z_NULL*/;\n      }\n      state.mode = EXTRA;\n      /* falls through */\n    case EXTRA:\n      if (state.flags & 0x0400) {\n        copy = state.length;\n        if (copy > have) { copy = have; }\n        if (copy) {\n          if (state.head) {\n            len = state.head.extra_len - state.length;\n            if (!state.head.extra) {\n              // Use untyped array for more conveniend processing later\n              state.head.extra = new Array(state.head.extra_len);\n            }\n            utils.arraySet(\n              state.head.extra,\n              input,\n              next,\n              // extra field is limited to 65536 bytes\n              // - no need for additional size check\n              copy,\n              /*len + copy > state.head.extra_max - len ? state.head.extra_max : copy,*/\n              len\n            );\n            //zmemcpy(state.head.extra + len, next,\n            //        len + copy > state.head.extra_max ?\n            //        state.head.extra_max - len : copy);\n          }\n          if (state.flags & 0x0200) {\n            state.check = crc32(state.check, input, copy, next);\n          }\n          have -= copy;\n          next += copy;\n          state.length -= copy;\n        }\n        if (state.length) { break inf_leave; }\n      }\n      state.length = 0;\n      state.mode = NAME;\n      /* falls through */\n    case NAME:\n      if (state.flags & 0x0800) {\n        if (have === 0) { break inf_leave; }\n        copy = 0;\n        do {\n          // TODO: 2 or 1 bytes?\n          len = input[next + copy++];\n          /* use constant limit because in js we should not preallocate memory */\n          if (state.head && len &&\n              (state.length < 65536 /*state.head.name_max*/)) {\n            state.head.name += String.fromCharCode(len);\n          }\n        } while (len && copy < have);\n\n        if (state.flags & 0x0200) {\n          state.check = crc32(state.check, input, copy, next);\n        }\n        have -= copy;\n        next += copy;\n        if (len) { break inf_leave; }\n      }\n      else if (state.head) {\n        state.head.name = null;\n      }\n      state.length = 0;\n      state.mode = COMMENT;\n      /* falls through */\n    case COMMENT:\n      if (state.flags & 0x1000) {\n        if (have === 0) { break inf_leave; }\n        copy = 0;\n        do {\n          len = input[next + copy++];\n          /* use constant limit because in js we should not preallocate memory */\n          if (state.head && len &&\n              (state.length < 65536 /*state.head.comm_max*/)) {\n            state.head.comment += String.fromCharCode(len);\n          }\n        } while (len && copy < have);\n        if (state.flags & 0x0200) {\n          state.check = crc32(state.check, input, copy, next);\n        }\n        have -= copy;\n        next += copy;\n        if (len) { break inf_leave; }\n      }\n      else if (state.head) {\n        state.head.comment = null;\n      }\n      state.mode = HCRC;\n      /* falls through */\n    case HCRC:\n      if (state.flags & 0x0200) {\n        //=== NEEDBITS(16); */\n        while (bits < 16) {\n          if (have === 0) { break inf_leave; }\n          have--;\n          hold += input[next++] << bits;\n          bits += 8;\n        }\n        //===//\n        if (hold !== (state.check & 0xffff)) {\n          strm.msg = 'header crc mismatch';\n          state.mode = BAD;\n          break;\n        }\n        //=== INITBITS();\n        hold = 0;\n        bits = 0;\n        //===//\n      }\n      if (state.head) {\n        state.head.hcrc = ((state.flags >> 9) & 1);\n        state.head.done = true;\n      }\n      strm.adler = state.check = 0;\n      state.mode = TYPE;\n      break;\n    case DICTID:\n      //=== NEEDBITS(32); */\n      while (bits < 32) {\n        if (have === 0) { break inf_leave; }\n        have--;\n        hold += input[next++] << bits;\n        bits += 8;\n      }\n      //===//\n      strm.adler = state.check = zswap32(hold);\n      //=== INITBITS();\n      hold = 0;\n      bits = 0;\n      //===//\n      state.mode = DICT;\n      /* falls through */\n    case DICT:\n      if (state.havedict === 0) {\n        //--- RESTORE() ---\n        strm.next_out = put;\n        strm.avail_out = left;\n        strm.next_in = next;\n        strm.avail_in = have;\n        state.hold = hold;\n        state.bits = bits;\n        //---\n        return Z_NEED_DICT;\n      }\n      strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;\n      state.mode = TYPE;\n      /* falls through */\n    case TYPE:\n      if (flush === Z_BLOCK || flush === Z_TREES) { break inf_leave; }\n      /* falls through */\n    case TYPEDO:\n      if (state.last) {\n        //--- BYTEBITS() ---//\n        hold >>>= bits & 7;\n        bits -= bits & 7;\n        //---//\n        state.mode = CHECK;\n        break;\n      }\n      //=== NEEDBITS(3); */\n      while (bits < 3) {\n        if (have === 0) { break inf_leave; }\n        have--;\n        hold += input[next++] << bits;\n        bits += 8;\n      }\n      //===//\n      state.last = (hold & 0x01)/*BITS(1)*/;\n      //--- DROPBITS(1) ---//\n      hold >>>= 1;\n      bits -= 1;\n      //---//\n\n      switch ((hold & 0x03)/*BITS(2)*/) {\n      case 0:                             /* stored block */\n        //Tracev((stderr, \"inflate:     stored block%s\\n\",\n        //        state.last ? \" (last)\" : \"\"));\n        state.mode = STORED;\n        break;\n      case 1:                             /* fixed block */\n        fixedtables(state);\n        //Tracev((stderr, \"inflate:     fixed codes block%s\\n\",\n        //        state.last ? \" (last)\" : \"\"));\n        state.mode = LEN_;             /* decode codes */\n        if (flush === Z_TREES) {\n          //--- DROPBITS(2) ---//\n          hold >>>= 2;\n          bits -= 2;\n          //---//\n          break inf_leave;\n        }\n        break;\n      case 2:                             /* dynamic block */\n        //Tracev((stderr, \"inflate:     dynamic codes block%s\\n\",\n        //        state.last ? \" (last)\" : \"\"));\n        state.mode = TABLE;\n        break;\n      case 3:\n        strm.msg = 'invalid block type';\n        state.mode = BAD;\n      }\n      //--- DROPBITS(2) ---//\n      hold >>>= 2;\n      bits -= 2;\n      //---//\n      break;\n    case STORED:\n      //--- BYTEBITS() ---// /* go to byte boundary */\n      hold >>>= bits & 7;\n      bits -= bits & 7;\n      //---//\n      //=== NEEDBITS(32); */\n      while (bits < 32) {\n        if (have === 0) { break inf_leave; }\n        have--;\n        hold += input[next++] << bits;\n        bits += 8;\n      }\n      //===//\n      if ((hold & 0xffff) !== ((hold >>> 16) ^ 0xffff)) {\n        strm.msg = 'invalid stored block lengths';\n        state.mode = BAD;\n        break;\n      }\n      state.length = hold & 0xffff;\n      //Tracev((stderr, \"inflate:       stored length %u\\n\",\n      //        state.length));\n      //=== INITBITS();\n      hold = 0;\n      bits = 0;\n      //===//\n      state.mode = COPY_;\n      if (flush === Z_TREES) { break inf_leave; }\n      /* falls through */\n    case COPY_:\n      state.mode = COPY;\n      /* falls through */\n    case COPY:\n      copy = state.length;\n      if (copy) {\n        if (copy > have) { copy = have; }\n        if (copy > left) { copy = left; }\n        if (copy === 0) { break inf_leave; }\n        //--- zmemcpy(put, next, copy); ---\n        utils.arraySet(output, input, next, copy, put);\n        //---//\n        have -= copy;\n        next += copy;\n        left -= copy;\n        put += copy;\n        state.length -= copy;\n        break;\n      }\n      //Tracev((stderr, \"inflate:       stored end\\n\"));\n      state.mode = TYPE;\n      break;\n    case TABLE:\n      //=== NEEDBITS(14); */\n      while (bits < 14) {\n        if (have === 0) { break inf_leave; }\n        have--;\n        hold += input[next++] << bits;\n        bits += 8;\n      }\n      //===//\n      state.nlen = (hold & 0x1f)/*BITS(5)*/ + 257;\n      //--- DROPBITS(5) ---//\n      hold >>>= 5;\n      bits -= 5;\n      //---//\n      state.ndist = (hold & 0x1f)/*BITS(5)*/ + 1;\n      //--- DROPBITS(5) ---//\n      hold >>>= 5;\n      bits -= 5;\n      //---//\n      state.ncode = (hold & 0x0f)/*BITS(4)*/ + 4;\n      //--- DROPBITS(4) ---//\n      hold >>>= 4;\n      bits -= 4;\n      //---//\n//#ifndef PKZIP_BUG_WORKAROUND\n      if (state.nlen > 286 || state.ndist > 30) {\n        strm.msg = 'too many length or distance symbols';\n        state.mode = BAD;\n        break;\n      }\n//#endif\n      //Tracev((stderr, \"inflate:       table sizes ok\\n\"));\n      state.have = 0;\n      state.mode = LENLENS;\n      /* falls through */\n    case LENLENS:\n      while (state.have < state.ncode) {\n        //=== NEEDBITS(3);\n        while (bits < 3) {\n          if (have === 0) { break inf_leave; }\n          have--;\n          hold += input[next++] << bits;\n          bits += 8;\n        }\n        //===//\n        state.lens[order[state.have++]] = (hold & 0x07);//BITS(3);\n        //--- DROPBITS(3) ---//\n        hold >>>= 3;\n        bits -= 3;\n        //---//\n      }\n      while (state.have < 19) {\n        state.lens[order[state.have++]] = 0;\n      }\n      // We have separate tables & no pointers. 2 commented lines below not needed.\n      //state.next = state.codes;\n      //state.lencode = state.next;\n      // Switch to use dynamic table\n      state.lencode = state.lendyn;\n      state.lenbits = 7;\n\n      opts = { bits: state.lenbits };\n      ret = inflate_table(CODES, state.lens, 0, 19, state.lencode, 0, state.work, opts);\n      state.lenbits = opts.bits;\n\n      if (ret) {\n        strm.msg = 'invalid code lengths set';\n        state.mode = BAD;\n        break;\n      }\n      //Tracev((stderr, \"inflate:       code lengths ok\\n\"));\n      state.have = 0;\n      state.mode = CODELENS;\n      /* falls through */\n    case CODELENS:\n      while (state.have < state.nlen + state.ndist) {\n        for (;;) {\n          here = state.lencode[hold & ((1 << state.lenbits) - 1)];/*BITS(state.lenbits)*/\n          here_bits = here >>> 24;\n          here_op = (here >>> 16) & 0xff;\n          here_val = here & 0xffff;\n\n          if ((here_bits) <= bits) { break; }\n          //--- PULLBYTE() ---//\n          if (have === 0) { break inf_leave; }\n          have--;\n          hold += input[next++] << bits;\n          bits += 8;\n          //---//\n        }\n        if (here_val < 16) {\n          //--- DROPBITS(here.bits) ---//\n          hold >>>= here_bits;\n          bits -= here_bits;\n          //---//\n          state.lens[state.have++] = here_val;\n        }\n        else {\n          if (here_val === 16) {\n            //=== NEEDBITS(here.bits + 2);\n            n = here_bits + 2;\n            while (bits < n) {\n              if (have === 0) { break inf_leave; }\n              have--;\n              hold += input[next++] << bits;\n              bits += 8;\n            }\n            //===//\n            //--- DROPBITS(here.bits) ---//\n            hold >>>= here_bits;\n            bits -= here_bits;\n            //---//\n            if (state.have === 0) {\n              strm.msg = 'invalid bit length repeat';\n              state.mode = BAD;\n              break;\n            }\n            len = state.lens[state.have - 1];\n            copy = 3 + (hold & 0x03);//BITS(2);\n            //--- DROPBITS(2) ---//\n            hold >>>= 2;\n            bits -= 2;\n            //---//\n          }\n          else if (here_val === 17) {\n            //=== NEEDBITS(here.bits + 3);\n            n = here_bits + 3;\n            while (bits < n) {\n              if (have === 0) { break inf_leave; }\n              have--;\n              hold += input[next++] << bits;\n              bits += 8;\n            }\n            //===//\n            //--- DROPBITS(here.bits) ---//\n            hold >>>= here_bits;\n            bits -= here_bits;\n            //---//\n            len = 0;\n            copy = 3 + (hold & 0x07);//BITS(3);\n            //--- DROPBITS(3) ---//\n            hold >>>= 3;\n            bits -= 3;\n            //---//\n          }\n          else {\n            //=== NEEDBITS(here.bits + 7);\n            n = here_bits + 7;\n            while (bits < n) {\n              if (have === 0) { break inf_leave; }\n              have--;\n              hold += input[next++] << bits;\n              bits += 8;\n            }\n            //===//\n            //--- DROPBITS(here.bits) ---//\n            hold >>>= here_bits;\n            bits -= here_bits;\n            //---//\n            len = 0;\n            copy = 11 + (hold & 0x7f);//BITS(7);\n            //--- DROPBITS(7) ---//\n            hold >>>= 7;\n            bits -= 7;\n            //---//\n          }\n          if (state.have + copy > state.nlen + state.ndist) {\n            strm.msg = 'invalid bit length repeat';\n            state.mode = BAD;\n            break;\n          }\n          while (copy--) {\n            state.lens[state.have++] = len;\n          }\n        }\n      }\n\n      /* handle error breaks in while */\n      if (state.mode === BAD) { break; }\n\n      /* check for end-of-block code (better have one) */\n      if (state.lens[256] === 0) {\n        strm.msg = 'invalid code -- missing end-of-block';\n        state.mode = BAD;\n        break;\n      }\n\n      /* build code tables -- note: do not change the lenbits or distbits\n         values here (9 and 6) without reading the comments in inftrees.h\n         concerning the ENOUGH constants, which depend on those values */\n      state.lenbits = 9;\n\n      opts = { bits: state.lenbits };\n      ret = inflate_table(LENS, state.lens, 0, state.nlen, state.lencode, 0, state.work, opts);\n      // We have separate tables & no pointers. 2 commented lines below not needed.\n      // state.next_index = opts.table_index;\n      state.lenbits = opts.bits;\n      // state.lencode = state.next;\n\n      if (ret) {\n        strm.msg = 'invalid literal/lengths set';\n        state.mode = BAD;\n        break;\n      }\n\n      state.distbits = 6;\n      //state.distcode.copy(state.codes);\n      // Switch to use dynamic table\n      state.distcode = state.distdyn;\n      opts = { bits: state.distbits };\n      ret = inflate_table(DISTS, state.lens, state.nlen, state.ndist, state.distcode, 0, state.work, opts);\n      // We have separate tables & no pointers. 2 commented lines below not needed.\n      // state.next_index = opts.table_index;\n      state.distbits = opts.bits;\n      // state.distcode = state.next;\n\n      if (ret) {\n        strm.msg = 'invalid distances set';\n        state.mode = BAD;\n        break;\n      }\n      //Tracev((stderr, 'inflate:       codes ok\\n'));\n      state.mode = LEN_;\n      if (flush === Z_TREES) { break inf_leave; }\n      /* falls through */\n    case LEN_:\n      state.mode = LEN;\n      /* falls through */\n    case LEN:\n      if (have >= 6 && left >= 258) {\n        //--- RESTORE() ---\n        strm.next_out = put;\n        strm.avail_out = left;\n        strm.next_in = next;\n        strm.avail_in = have;\n        state.hold = hold;\n        state.bits = bits;\n        //---\n        inflate_fast(strm, _out);\n        //--- LOAD() ---\n        put = strm.next_out;\n        output = strm.output;\n        left = strm.avail_out;\n        next = strm.next_in;\n        input = strm.input;\n        have = strm.avail_in;\n        hold = state.hold;\n        bits = state.bits;\n        //---\n\n        if (state.mode === TYPE) {\n          state.back = -1;\n        }\n        break;\n      }\n      state.back = 0;\n      for (;;) {\n        here = state.lencode[hold & ((1 << state.lenbits) - 1)];  /*BITS(state.lenbits)*/\n        here_bits = here >>> 24;\n        here_op = (here >>> 16) & 0xff;\n        here_val = here & 0xffff;\n\n        if (here_bits <= bits) { break; }\n        //--- PULLBYTE() ---//\n        if (have === 0) { break inf_leave; }\n        have--;\n        hold += input[next++] << bits;\n        bits += 8;\n        //---//\n      }\n      if (here_op && (here_op & 0xf0) === 0) {\n        last_bits = here_bits;\n        last_op = here_op;\n        last_val = here_val;\n        for (;;) {\n          here = state.lencode[last_val +\n                  ((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)];\n          here_bits = here >>> 24;\n          here_op = (here >>> 16) & 0xff;\n          here_val = here & 0xffff;\n\n          if ((last_bits + here_bits) <= bits) { break; }\n          //--- PULLBYTE() ---//\n          if (have === 0) { break inf_leave; }\n          have--;\n          hold += input[next++] << bits;\n          bits += 8;\n          //---//\n        }\n        //--- DROPBITS(last.bits) ---//\n        hold >>>= last_bits;\n        bits -= last_bits;\n        //---//\n        state.back += last_bits;\n      }\n      //--- DROPBITS(here.bits) ---//\n      hold >>>= here_bits;\n      bits -= here_bits;\n      //---//\n      state.back += here_bits;\n      state.length = here_val;\n      if (here_op === 0) {\n        //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?\n        //        \"inflate:         literal '%c'\\n\" :\n        //        \"inflate:         literal 0x%02x\\n\", here.val));\n        state.mode = LIT;\n        break;\n      }\n      if (here_op & 32) {\n        //Tracevv((stderr, \"inflate:         end of block\\n\"));\n        state.back = -1;\n        state.mode = TYPE;\n        break;\n      }\n      if (here_op & 64) {\n        strm.msg = 'invalid literal/length code';\n        state.mode = BAD;\n        break;\n      }\n      state.extra = here_op & 15;\n      state.mode = LENEXT;\n      /* falls through */\n    case LENEXT:\n      if (state.extra) {\n        //=== NEEDBITS(state.extra);\n        n = state.extra;\n        while (bits < n) {\n          if (have === 0) { break inf_leave; }\n          have--;\n          hold += input[next++] << bits;\n          bits += 8;\n        }\n        //===//\n        state.length += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/;\n        //--- DROPBITS(state.extra) ---//\n        hold >>>= state.extra;\n        bits -= state.extra;\n        //---//\n        state.back += state.extra;\n      }\n      //Tracevv((stderr, \"inflate:         length %u\\n\", state.length));\n      state.was = state.length;\n      state.mode = DIST;\n      /* falls through */\n    case DIST:\n      for (;;) {\n        here = state.distcode[hold & ((1 << state.distbits) - 1)];/*BITS(state.distbits)*/\n        here_bits = here >>> 24;\n        here_op = (here >>> 16) & 0xff;\n        here_val = here & 0xffff;\n\n        if ((here_bits) <= bits) { break; }\n        //--- PULLBYTE() ---//\n        if (have === 0) { break inf_leave; }\n        have--;\n        hold += input[next++] << bits;\n        bits += 8;\n        //---//\n      }\n      if ((here_op & 0xf0) === 0) {\n        last_bits = here_bits;\n        last_op = here_op;\n        last_val = here_val;\n        for (;;) {\n          here = state.distcode[last_val +\n                  ((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)];\n          here_bits = here >>> 24;\n          here_op = (here >>> 16) & 0xff;\n          here_val = here & 0xffff;\n\n          if ((last_bits + here_bits) <= bits) { break; }\n          //--- PULLBYTE() ---//\n          if (have === 0) { break inf_leave; }\n          have--;\n          hold += input[next++] << bits;\n          bits += 8;\n          //---//\n        }\n        //--- DROPBITS(last.bits) ---//\n        hold >>>= last_bits;\n        bits -= last_bits;\n        //---//\n        state.back += last_bits;\n      }\n      //--- DROPBITS(here.bits) ---//\n      hold >>>= here_bits;\n      bits -= here_bits;\n      //---//\n      state.back += here_bits;\n      if (here_op & 64) {\n        strm.msg = 'invalid distance code';\n        state.mode = BAD;\n        break;\n      }\n      state.offset = here_val;\n      state.extra = (here_op) & 15;\n      state.mode = DISTEXT;\n      /* falls through */\n    case DISTEXT:\n      if (state.extra) {\n        //=== NEEDBITS(state.extra);\n        n = state.extra;\n        while (bits < n) {\n          if (have === 0) { break inf_leave; }\n          have--;\n          hold += input[next++] << bits;\n          bits += 8;\n        }\n        //===//\n        state.offset += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/;\n        //--- DROPBITS(state.extra) ---//\n        hold >>>= state.extra;\n        bits -= state.extra;\n        //---//\n        state.back += state.extra;\n      }\n//#ifdef INFLATE_STRICT\n      if (state.offset > state.dmax) {\n        strm.msg = 'invalid distance too far back';\n        state.mode = BAD;\n        break;\n      }\n//#endif\n      //Tracevv((stderr, \"inflate:         distance %u\\n\", state.offset));\n      state.mode = MATCH;\n      /* falls through */\n    case MATCH:\n      if (left === 0) { break inf_leave; }\n      copy = _out - left;\n      if (state.offset > copy) {         /* copy from window */\n        copy = state.offset - copy;\n        if (copy > state.whave) {\n          if (state.sane) {\n            strm.msg = 'invalid distance too far back';\n            state.mode = BAD;\n            break;\n          }\n// (!) This block is disabled in zlib defailts,\n// don't enable it for binary compatibility\n//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR\n//          Trace((stderr, \"inflate.c too far\\n\"));\n//          copy -= state.whave;\n//          if (copy > state.length) { copy = state.length; }\n//          if (copy > left) { copy = left; }\n//          left -= copy;\n//          state.length -= copy;\n//          do {\n//            output[put++] = 0;\n//          } while (--copy);\n//          if (state.length === 0) { state.mode = LEN; }\n//          break;\n//#endif\n        }\n        if (copy > state.wnext) {\n          copy -= state.wnext;\n          from = state.wsize - copy;\n        }\n        else {\n          from = state.wnext - copy;\n        }\n        if (copy > state.length) { copy = state.length; }\n        from_source = state.window;\n      }\n      else {                              /* copy from output */\n        from_source = output;\n        from = put - state.offset;\n        copy = state.length;\n      }\n      if (copy > left) { copy = left; }\n      left -= copy;\n      state.length -= copy;\n      do {\n        output[put++] = from_source[from++];\n      } while (--copy);\n      if (state.length === 0) { state.mode = LEN; }\n      break;\n    case LIT:\n      if (left === 0) { break inf_leave; }\n      output[put++] = state.length;\n      left--;\n      state.mode = LEN;\n      break;\n    case CHECK:\n      if (state.wrap) {\n        //=== NEEDBITS(32);\n        while (bits < 32) {\n          if (have === 0) { break inf_leave; }\n          have--;\n          // Use '|' insdead of '+' to make sure that result is signed\n          hold |= input[next++] << bits;\n          bits += 8;\n        }\n        //===//\n        _out -= left;\n        strm.total_out += _out;\n        state.total += _out;\n        if (_out) {\n          strm.adler = state.check =\n              /*UPDATE(state.check, put - _out, _out);*/\n              (state.flags ? crc32(state.check, output, _out, put - _out) : adler32(state.check, output, _out, put - _out));\n\n        }\n        _out = left;\n        // NB: crc32 stored as signed 32-bit int, zswap32 returns signed too\n        if ((state.flags ? hold : zswap32(hold)) !== state.check) {\n          strm.msg = 'incorrect data check';\n          state.mode = BAD;\n          break;\n        }\n        //=== INITBITS();\n        hold = 0;\n        bits = 0;\n        //===//\n        //Tracev((stderr, \"inflate:   check matches trailer\\n\"));\n      }\n      state.mode = LENGTH;\n      /* falls through */\n    case LENGTH:\n      if (state.wrap && state.flags) {\n        //=== NEEDBITS(32);\n        while (bits < 32) {\n          if (have === 0) { break inf_leave; }\n          have--;\n          hold += input[next++] << bits;\n          bits += 8;\n        }\n        //===//\n        if (hold !== (state.total & 0xffffffff)) {\n          strm.msg = 'incorrect length check';\n          state.mode = BAD;\n          break;\n        }\n        //=== INITBITS();\n        hold = 0;\n        bits = 0;\n        //===//\n        //Tracev((stderr, \"inflate:   length matches trailer\\n\"));\n      }\n      state.mode = DONE;\n      /* falls through */\n    case DONE:\n      ret = Z_STREAM_END;\n      break inf_leave;\n    case BAD:\n      ret = Z_DATA_ERROR;\n      break inf_leave;\n    case MEM:\n      return Z_MEM_ERROR;\n    case SYNC:\n      /* falls through */\n    default:\n      return Z_STREAM_ERROR;\n    }\n  }\n\n  // inf_leave <- here is real place for \"goto inf_leave\", emulated via \"break inf_leave\"\n\n  /*\n     Return from inflate(), updating the total counts and the check value.\n     If there was no progress during the inflate() call, return a buffer\n     error.  Call updatewindow() to create and/or update the window state.\n     Note: a memory error from inflate() is non-recoverable.\n   */\n\n  //--- RESTORE() ---\n  strm.next_out = put;\n  strm.avail_out = left;\n  strm.next_in = next;\n  strm.avail_in = have;\n  state.hold = hold;\n  state.bits = bits;\n  //---\n\n  if (state.wsize || (_out !== strm.avail_out && state.mode < BAD &&\n                      (state.mode < CHECK || flush !== Z_FINISH))) {\n    if (updatewindow(strm, strm.output, strm.next_out, _out - strm.avail_out)) {\n      state.mode = MEM;\n      return Z_MEM_ERROR;\n    }\n  }\n  _in -= strm.avail_in;\n  _out -= strm.avail_out;\n  strm.total_in += _in;\n  strm.total_out += _out;\n  state.total += _out;\n  if (state.wrap && _out) {\n    strm.adler = state.check = /*UPDATE(state.check, strm.next_out - _out, _out);*/\n      (state.flags ? crc32(state.check, output, _out, strm.next_out - _out) : adler32(state.check, output, _out, strm.next_out - _out));\n  }\n  strm.data_type = state.bits + (state.last ? 64 : 0) +\n                    (state.mode === TYPE ? 128 : 0) +\n                    (state.mode === LEN_ || state.mode === COPY_ ? 256 : 0);\n  if (((_in === 0 && _out === 0) || flush === Z_FINISH) && ret === Z_OK) {\n    ret = Z_BUF_ERROR;\n  }\n  return ret;\n}\n\nfunction inflateEnd(strm) {\n\n  if (!strm || !strm.state /*|| strm->zfree == (free_func)0*/) {\n    return Z_STREAM_ERROR;\n  }\n\n  var state = strm.state;\n  if (state.window) {\n    state.window = null;\n  }\n  strm.state = null;\n  return Z_OK;\n}\n\nfunction inflateGetHeader(strm, head) {\n  var state;\n\n  /* check state */\n  if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n  state = strm.state;\n  if ((state.wrap & 2) === 0) { return Z_STREAM_ERROR; }\n\n  /* save header structure */\n  state.head = head;\n  head.done = false;\n  return Z_OK;\n}\n\nfunction inflateSetDictionary(strm, dictionary) {\n  var dictLength = dictionary.length;\n\n  var state;\n  var dictid;\n  var ret;\n\n  /* check state */\n  if (!strm /* == Z_NULL */ || !strm.state /* == Z_NULL */) { return Z_STREAM_ERROR; }\n  state = strm.state;\n\n  if (state.wrap !== 0 && state.mode !== DICT) {\n    return Z_STREAM_ERROR;\n  }\n\n  /* check for correct dictionary identifier */\n  if (state.mode === DICT) {\n    dictid = 1; /* adler32(0, null, 0)*/\n    /* dictid = adler32(dictid, dictionary, dictLength); */\n    dictid = adler32(dictid, dictionary, dictLength, 0);\n    if (dictid !== state.check) {\n      return Z_DATA_ERROR;\n    }\n  }\n  /* copy dictionary to window using updatewindow(), which will amend the\n   existing dictionary if appropriate */\n  ret = updatewindow(strm, dictionary, dictLength, dictLength);\n  if (ret) {\n    state.mode = MEM;\n    return Z_MEM_ERROR;\n  }\n  state.havedict = 1;\n  // Tracev((stderr, \"inflate:   dictionary set\\n\"));\n  return Z_OK;\n}\n\nexports.inflateReset = inflateReset;\nexports.inflateReset2 = inflateReset2;\nexports.inflateResetKeep = inflateResetKeep;\nexports.inflateInit = inflateInit;\nexports.inflateInit2 = inflateInit2;\nexports.inflate = inflate;\nexports.inflateEnd = inflateEnd;\nexports.inflateGetHeader = inflateGetHeader;\nexports.inflateSetDictionary = inflateSetDictionary;\nexports.inflateInfo = 'pako inflate (from Nodeca project)';\n\n/* Not implemented\nexports.inflateCopy = inflateCopy;\nexports.inflateGetDictionary = inflateGetDictionary;\nexports.inflateMark = inflateMark;\nexports.inflatePrime = inflatePrime;\nexports.inflateSync = inflateSync;\nexports.inflateSyncPoint = inflateSyncPoint;\nexports.inflateUndermine = inflateUndermine;\n*/\n\n},{\"../utils/common\":41,\"./adler32\":43,\"./crc32\":45,\"./inffast\":48,\"./inftrees\":50}],50:[function(require,module,exports){\n'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n//   claim that you wrote the original software. If you use this software\n//   in a product, an acknowledgment in the product documentation would be\n//   appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n//   misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nvar utils = require('../utils/common');\n\nvar MAXBITS = 15;\nvar ENOUGH_LENS = 852;\nvar ENOUGH_DISTS = 592;\n//var ENOUGH = (ENOUGH_LENS+ENOUGH_DISTS);\n\nvar CODES = 0;\nvar LENS = 1;\nvar DISTS = 2;\n\nvar lbase = [ /* Length codes 257..285 base */\n  3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31,\n  35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0\n];\n\nvar lext = [ /* Length codes 257..285 extra */\n  16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18,\n  19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 72, 78\n];\n\nvar dbase = [ /* Distance codes 0..29 base */\n  1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193,\n  257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145,\n  8193, 12289, 16385, 24577, 0, 0\n];\n\nvar dext = [ /* Distance codes 0..29 extra */\n  16, 16, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22,\n  23, 23, 24, 24, 25, 25, 26, 26, 27, 27,\n  28, 28, 29, 29, 64, 64\n];\n\nmodule.exports = function inflate_table(type, lens, lens_index, codes, table, table_index, work, opts)\n{\n  var bits = opts.bits;\n      //here = opts.here; /* table entry for duplication */\n\n  var len = 0;               /* a code's length in bits */\n  var sym = 0;               /* index of code symbols */\n  var min = 0, max = 0;          /* minimum and maximum code lengths */\n  var root = 0;              /* number of index bits for root table */\n  var curr = 0;              /* number of index bits for current table */\n  var drop = 0;              /* code bits to drop for sub-table */\n  var left = 0;                   /* number of prefix codes available */\n  var used = 0;              /* code entries in table used */\n  var huff = 0;              /* Huffman code */\n  var incr;              /* for incrementing code, index */\n  var fill;              /* index for replicating entries */\n  var low;               /* low bits for current root entry */\n  var mask;              /* mask for low root bits */\n  var next;             /* next available space in table */\n  var base = null;     /* base value table to use */\n  var base_index = 0;\n//  var shoextra;    /* extra bits table to use */\n  var end;                    /* use base and extra for symbol > end */\n  var count = new utils.Buf16(MAXBITS + 1); //[MAXBITS+1];    /* number of codes of each length */\n  var offs = new utils.Buf16(MAXBITS + 1); //[MAXBITS+1];     /* offsets in table for each length */\n  var extra = null;\n  var extra_index = 0;\n\n  var here_bits, here_op, here_val;\n\n  /*\n   Process a set of code lengths to create a canonical Huffman code.  The\n   code lengths are lens[0..codes-1].  Each length corresponds to the\n   symbols 0..codes-1.  The Huffman code is generated by first sorting the\n   symbols by length from short to long, and retaining the symbol order\n   for codes with equal lengths.  Then the code starts with all zero bits\n   for the first code of the shortest length, and the codes are integer\n   increments for the same length, and zeros are appended as the length\n   increases.  For the deflate format, these bits are stored backwards\n   from their more natural integer increment ordering, and so when the\n   decoding tables are built in the large loop below, the integer codes\n   are incremented backwards.\n\n   This routine assumes, but does not check, that all of the entries in\n   lens[] are in the range 0..MAXBITS.  The caller must assure this.\n   1..MAXBITS is interpreted as that code length.  zero means that that\n   symbol does not occur in this code.\n\n   The codes are sorted by computing a count of codes for each length,\n   creating from that a table of starting indices for each length in the\n   sorted table, and then entering the symbols in order in the sorted\n   table.  The sorted table is work[], with that space being provided by\n   the caller.\n\n   The length counts are used for other purposes as well, i.e. finding\n   the minimum and maximum length codes, determining if there are any\n   codes at all, checking for a valid set of lengths, and looking ahead\n   at length counts to determine sub-table sizes when building the\n   decoding tables.\n   */\n\n  /* accumulate lengths for codes (assumes lens[] all in 0..MAXBITS) */\n  for (len = 0; len <= MAXBITS; len++) {\n    count[len] = 0;\n  }\n  for (sym = 0; sym < codes; sym++) {\n    count[lens[lens_index + sym]]++;\n  }\n\n  /* bound code lengths, force root to be within code lengths */\n  root = bits;\n  for (max = MAXBITS; max >= 1; max--) {\n    if (count[max] !== 0) { break; }\n  }\n  if (root > max) {\n    root = max;\n  }\n  if (max === 0) {                     /* no symbols to code at all */\n    //table.op[opts.table_index] = 64;  //here.op = (var char)64;    /* invalid code marker */\n    //table.bits[opts.table_index] = 1;   //here.bits = (var char)1;\n    //table.val[opts.table_index++] = 0;   //here.val = (var short)0;\n    table[table_index++] = (1 << 24) | (64 << 16) | 0;\n\n\n    //table.op[opts.table_index] = 64;\n    //table.bits[opts.table_index] = 1;\n    //table.val[opts.table_index++] = 0;\n    table[table_index++] = (1 << 24) | (64 << 16) | 0;\n\n    opts.bits = 1;\n    return 0;     /* no symbols, but wait for decoding to report error */\n  }\n  for (min = 1; min < max; min++) {\n    if (count[min] !== 0) { break; }\n  }\n  if (root < min) {\n    root = min;\n  }\n\n  /* check for an over-subscribed or incomplete set of lengths */\n  left = 1;\n  for (len = 1; len <= MAXBITS; len++) {\n    left <<= 1;\n    left -= count[len];\n    if (left < 0) {\n      return -1;\n    }        /* over-subscribed */\n  }\n  if (left > 0 && (type === CODES || max !== 1)) {\n    return -1;                      /* incomplete set */\n  }\n\n  /* generate offsets into symbol table for each length for sorting */\n  offs[1] = 0;\n  for (len = 1; len < MAXBITS; len++) {\n    offs[len + 1] = offs[len] + count[len];\n  }\n\n  /* sort symbols by length, by symbol order within each length */\n  for (sym = 0; sym < codes; sym++) {\n    if (lens[lens_index + sym] !== 0) {\n      work[offs[lens[lens_index + sym]]++] = sym;\n    }\n  }\n\n  /*\n   Create and fill in decoding tables.  In this loop, the table being\n   filled is at next and has curr index bits.  The code being used is huff\n   with length len.  That code is converted to an index by dropping drop\n   bits off of the bottom.  For codes where len is less than drop + curr,\n   those top drop + curr - len bits are incremented through all values to\n   fill the table with replicated entries.\n\n   root is the number of index bits for the root table.  When len exceeds\n   root, sub-tables are created pointed to by the root entry with an index\n   of the low root bits of huff.  This is saved in low to check for when a\n   new sub-table should be started.  drop is zero when the root table is\n   being filled, and drop is root when sub-tables are being filled.\n\n   When a new sub-table is needed, it is necessary to look ahead in the\n   code lengths to determine what size sub-table is needed.  The length\n   counts are used for this, and so count[] is decremented as codes are\n   entered in the tables.\n\n   used keeps track of how many table entries have been allocated from the\n   provided *table space.  It is checked for LENS and DIST tables against\n   the constants ENOUGH_LENS and ENOUGH_DISTS to guard against changes in\n   the initial root table size constants.  See the comments in inftrees.h\n   for more information.\n\n   sym increments through all symbols, and the loop terminates when\n   all codes of length max, i.e. all codes, have been processed.  This\n   routine permits incomplete codes, so another loop after this one fills\n   in the rest of the decoding tables with invalid code markers.\n   */\n\n  /* set up for code type */\n  // poor man optimization - use if-else instead of switch,\n  // to avoid deopts in old v8\n  if (type === CODES) {\n    base = extra = work;    /* dummy value--not used */\n    end = 19;\n\n  } else if (type === LENS) {\n    base = lbase;\n    base_index -= 257;\n    extra = lext;\n    extra_index -= 257;\n    end = 256;\n\n  } else {                    /* DISTS */\n    base = dbase;\n    extra = dext;\n    end = -1;\n  }\n\n  /* initialize opts for loop */\n  huff = 0;                   /* starting code */\n  sym = 0;                    /* starting code symbol */\n  len = min;                  /* starting code length */\n  next = table_index;              /* current table to fill in */\n  curr = root;                /* current table index bits */\n  drop = 0;                   /* current bits to drop from code for index */\n  low = -1;                   /* trigger new sub-table when len > root */\n  used = 1 << root;          /* use root table entries */\n  mask = used - 1;            /* mask for comparing low */\n\n  /* check available table space */\n  if ((type === LENS && used > ENOUGH_LENS) ||\n    (type === DISTS && used > ENOUGH_DISTS)) {\n    return 1;\n  }\n\n  /* process all codes and make table entries */\n  for (;;) {\n    /* create table entry */\n    here_bits = len - drop;\n    if (work[sym] < end) {\n      here_op = 0;\n      here_val = work[sym];\n    }\n    else if (work[sym] > end) {\n      here_op = extra[extra_index + work[sym]];\n      here_val = base[base_index + work[sym]];\n    }\n    else {\n      here_op = 32 + 64;         /* end of block */\n      here_val = 0;\n    }\n\n    /* replicate for those indices with low len bits equal to huff */\n    incr = 1 << (len - drop);\n    fill = 1 << curr;\n    min = fill;                 /* save offset to next table */\n    do {\n      fill -= incr;\n      table[next + (huff >> drop) + fill] = (here_bits << 24) | (here_op << 16) | here_val |0;\n    } while (fill !== 0);\n\n    /* backwards increment the len-bit code huff */\n    incr = 1 << (len - 1);\n    while (huff & incr) {\n      incr >>= 1;\n    }\n    if (incr !== 0) {\n      huff &= incr - 1;\n      huff += incr;\n    } else {\n      huff = 0;\n    }\n\n    /* go to next symbol, update count, len */\n    sym++;\n    if (--count[len] === 0) {\n      if (len === max) { break; }\n      len = lens[lens_index + work[sym]];\n    }\n\n    /* create new sub-table if needed */\n    if (len > root && (huff & mask) !== low) {\n      /* if first time, transition to sub-tables */\n      if (drop === 0) {\n        drop = root;\n      }\n\n      /* increment past last table */\n      next += min;            /* here min is 1 << curr */\n\n      /* determine length of next table */\n      curr = len - drop;\n      left = 1 << curr;\n      while (curr + drop < max) {\n        left -= count[curr + drop];\n        if (left <= 0) { break; }\n        curr++;\n        left <<= 1;\n      }\n\n      /* check for enough space */\n      used += 1 << curr;\n      if ((type === LENS && used > ENOUGH_LENS) ||\n        (type === DISTS && used > ENOUGH_DISTS)) {\n        return 1;\n      }\n\n      /* point entry in root table to sub-table */\n      low = huff & mask;\n      /*table.op[low] = curr;\n      table.bits[low] = root;\n      table.val[low] = next - opts.table_index;*/\n      table[low] = (root << 24) | (curr << 16) | (next - table_index) |0;\n    }\n  }\n\n  /* fill in remaining table entry if code is incomplete (guaranteed to have\n   at most one remaining entry, since if the code is incomplete, the\n   maximum code length that was allowed to get this far is one bit) */\n  if (huff !== 0) {\n    //table.op[next + huff] = 64;            /* invalid code marker */\n    //table.bits[next + huff] = len - drop;\n    //table.val[next + huff] = 0;\n    table[next + huff] = ((len - drop) << 24) | (64 << 16) |0;\n  }\n\n  /* set return parameters */\n  //opts.table_index += used;\n  opts.bits = root;\n  return 0;\n};\n\n},{\"../utils/common\":41}],51:[function(require,module,exports){\n'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n//   claim that you wrote the original software. If you use this software\n//   in a product, an acknowledgment in the product documentation would be\n//   appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n//   misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nmodule.exports = {\n  2:      'need dictionary',     /* Z_NEED_DICT       2  */\n  1:      'stream end',          /* Z_STREAM_END      1  */\n  0:      '',                    /* Z_OK              0  */\n  '-1':   'file error',          /* Z_ERRNO         (-1) */\n  '-2':   'stream error',        /* Z_STREAM_ERROR  (-2) */\n  '-3':   'data error',          /* Z_DATA_ERROR    (-3) */\n  '-4':   'insufficient memory', /* Z_MEM_ERROR     (-4) */\n  '-5':   'buffer error',        /* Z_BUF_ERROR     (-5) */\n  '-6':   'incompatible version' /* Z_VERSION_ERROR (-6) */\n};\n\n},{}],52:[function(require,module,exports){\n'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n//   claim that you wrote the original software. If you use this software\n//   in a product, an acknowledgment in the product documentation would be\n//   appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n//   misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nvar utils = require('../utils/common');\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\n\n//var Z_FILTERED          = 1;\n//var Z_HUFFMAN_ONLY      = 2;\n//var Z_RLE               = 3;\nvar Z_FIXED               = 4;\n//var Z_DEFAULT_STRATEGY  = 0;\n\n/* Possible values of the data_type field (though see inflate()) */\nvar Z_BINARY              = 0;\nvar Z_TEXT                = 1;\n//var Z_ASCII             = 1; // = Z_TEXT\nvar Z_UNKNOWN             = 2;\n\n/*============================================================================*/\n\n\nfunction zero(buf) { var len = buf.length; while (--len >= 0) { buf[len] = 0; } }\n\n// From zutil.h\n\nvar STORED_BLOCK = 0;\nvar STATIC_TREES = 1;\nvar DYN_TREES    = 2;\n/* The three kinds of block type */\n\nvar MIN_MATCH    = 3;\nvar MAX_MATCH    = 258;\n/* The minimum and maximum match lengths */\n\n// From deflate.h\n/* ===========================================================================\n * Internal compression state.\n */\n\nvar LENGTH_CODES  = 29;\n/* number of length codes, not counting the special END_BLOCK code */\n\nvar LITERALS      = 256;\n/* number of literal bytes 0..255 */\n\nvar L_CODES       = LITERALS + 1 + LENGTH_CODES;\n/* number of Literal or Length codes, including the END_BLOCK code */\n\nvar D_CODES       = 30;\n/* number of distance codes */\n\nvar BL_CODES      = 19;\n/* number of codes used to transfer the bit lengths */\n\nvar HEAP_SIZE     = 2 * L_CODES + 1;\n/* maximum heap size */\n\nvar MAX_BITS      = 15;\n/* All codes must not exceed MAX_BITS bits */\n\nvar Buf_size      = 16;\n/* size of bit buffer in bi_buf */\n\n\n/* ===========================================================================\n * Constants\n */\n\nvar MAX_BL_BITS = 7;\n/* Bit length codes must not exceed MAX_BL_BITS bits */\n\nvar END_BLOCK   = 256;\n/* end of block literal code */\n\nvar REP_3_6     = 16;\n/* repeat previous bit length 3-6 times (2 bits of repeat count) */\n\nvar REPZ_3_10   = 17;\n/* repeat a zero length 3-10 times  (3 bits of repeat count) */\n\nvar REPZ_11_138 = 18;\n/* repeat a zero length 11-138 times  (7 bits of repeat count) */\n\n/* eslint-disable comma-spacing,array-bracket-spacing */\nvar extra_lbits =   /* extra bits for each length code */\n  [0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0];\n\nvar extra_dbits =   /* extra bits for each distance code */\n  [0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13];\n\nvar extra_blbits =  /* extra bits for each bit length code */\n  [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7];\n\nvar bl_order =\n  [16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];\n/* eslint-enable comma-spacing,array-bracket-spacing */\n\n/* The lengths of the bit length codes are sent in order of decreasing\n * probability, to avoid transmitting the lengths for unused bit length codes.\n */\n\n/* ===========================================================================\n * Local data. These are initialized only once.\n */\n\n// We pre-fill arrays with 0 to avoid uninitialized gaps\n\nvar DIST_CODE_LEN = 512; /* see definition of array dist_code below */\n\n// !!!! Use flat array insdead of structure, Freq = i*2, Len = i*2+1\nvar static_ltree  = new Array((L_CODES + 2) * 2);\nzero(static_ltree);\n/* The static literal tree. Since the bit lengths are imposed, there is no\n * need for the L_CODES extra codes used during heap construction. However\n * The codes 286 and 287 are needed to build a canonical tree (see _tr_init\n * below).\n */\n\nvar static_dtree  = new Array(D_CODES * 2);\nzero(static_dtree);\n/* The static distance tree. (Actually a trivial tree since all codes use\n * 5 bits.)\n */\n\nvar _dist_code    = new Array(DIST_CODE_LEN);\nzero(_dist_code);\n/* Distance codes. The first 256 values correspond to the distances\n * 3 .. 258, the last 256 values correspond to the top 8 bits of\n * the 15 bit distances.\n */\n\nvar _length_code  = new Array(MAX_MATCH - MIN_MATCH + 1);\nzero(_length_code);\n/* length code for each normalized match length (0 == MIN_MATCH) */\n\nvar base_length   = new Array(LENGTH_CODES);\nzero(base_length);\n/* First normalized length for each code (0 = MIN_MATCH) */\n\nvar base_dist     = new Array(D_CODES);\nzero(base_dist);\n/* First normalized distance for each code (0 = distance of 1) */\n\n\nfunction StaticTreeDesc(static_tree, extra_bits, extra_base, elems, max_length) {\n\n  this.static_tree  = static_tree;  /* static tree or NULL */\n  this.extra_bits   = extra_bits;   /* extra bits for each code or NULL */\n  this.extra_base   = extra_base;   /* base index for extra_bits */\n  this.elems        = elems;        /* max number of elements in the tree */\n  this.max_length   = max_length;   /* max bit length for the codes */\n\n  // show if `static_tree` has data or dummy - needed for monomorphic objects\n  this.has_stree    = static_tree && static_tree.length;\n}\n\n\nvar static_l_desc;\nvar static_d_desc;\nvar static_bl_desc;\n\n\nfunction TreeDesc(dyn_tree, stat_desc) {\n  this.dyn_tree = dyn_tree;     /* the dynamic tree */\n  this.max_code = 0;            /* largest code with non zero frequency */\n  this.stat_desc = stat_desc;   /* the corresponding static tree */\n}\n\n\n\nfunction d_code(dist) {\n  return dist < 256 ? _dist_code[dist] : _dist_code[256 + (dist >>> 7)];\n}\n\n\n/* ===========================================================================\n * Output a short LSB first on the stream.\n * IN assertion: there is enough room in pendingBuf.\n */\nfunction put_short(s, w) {\n//    put_byte(s, (uch)((w) & 0xff));\n//    put_byte(s, (uch)((ush)(w) >> 8));\n  s.pending_buf[s.pending++] = (w) & 0xff;\n  s.pending_buf[s.pending++] = (w >>> 8) & 0xff;\n}\n\n\n/* ===========================================================================\n * Send a value on a given number of bits.\n * IN assertion: length <= 16 and value fits in length bits.\n */\nfunction send_bits(s, value, length) {\n  if (s.bi_valid > (Buf_size - length)) {\n    s.bi_buf |= (value << s.bi_valid) & 0xffff;\n    put_short(s, s.bi_buf);\n    s.bi_buf = value >> (Buf_size - s.bi_valid);\n    s.bi_valid += length - Buf_size;\n  } else {\n    s.bi_buf |= (value << s.bi_valid) & 0xffff;\n    s.bi_valid += length;\n  }\n}\n\n\nfunction send_code(s, c, tree) {\n  send_bits(s, tree[c * 2]/*.Code*/, tree[c * 2 + 1]/*.Len*/);\n}\n\n\n/* ===========================================================================\n * Reverse the first len bits of a code, using straightforward code (a faster\n * method would use a table)\n * IN assertion: 1 <= len <= 15\n */\nfunction bi_reverse(code, len) {\n  var res = 0;\n  do {\n    res |= code & 1;\n    code >>>= 1;\n    res <<= 1;\n  } while (--len > 0);\n  return res >>> 1;\n}\n\n\n/* ===========================================================================\n * Flush the bit buffer, keeping at most 7 bits in it.\n */\nfunction bi_flush(s) {\n  if (s.bi_valid === 16) {\n    put_short(s, s.bi_buf);\n    s.bi_buf = 0;\n    s.bi_valid = 0;\n\n  } else if (s.bi_valid >= 8) {\n    s.pending_buf[s.pending++] = s.bi_buf & 0xff;\n    s.bi_buf >>= 8;\n    s.bi_valid -= 8;\n  }\n}\n\n\n/* ===========================================================================\n * Compute the optimal bit lengths for a tree and update the total bit length\n * for the current block.\n * IN assertion: the fields freq and dad are set, heap[heap_max] and\n *    above are the tree nodes sorted by increasing frequency.\n * OUT assertions: the field len is set to the optimal bit length, the\n *     array bl_count contains the frequencies for each bit length.\n *     The length opt_len is updated; static_len is also updated if stree is\n *     not null.\n */\nfunction gen_bitlen(s, desc)\n//    deflate_state *s;\n//    tree_desc *desc;    /* the tree descriptor */\n{\n  var tree            = desc.dyn_tree;\n  var max_code        = desc.max_code;\n  var stree           = desc.stat_desc.static_tree;\n  var has_stree       = desc.stat_desc.has_stree;\n  var extra           = desc.stat_desc.extra_bits;\n  var base            = desc.stat_desc.extra_base;\n  var max_length      = desc.stat_desc.max_length;\n  var h;              /* heap index */\n  var n, m;           /* iterate over the tree elements */\n  var bits;           /* bit length */\n  var xbits;          /* extra bits */\n  var f;              /* frequency */\n  var overflow = 0;   /* number of elements with bit length too large */\n\n  for (bits = 0; bits <= MAX_BITS; bits++) {\n    s.bl_count[bits] = 0;\n  }\n\n  /* In a first pass, compute the optimal bit lengths (which may\n   * overflow in the case of the bit length tree).\n   */\n  tree[s.heap[s.heap_max] * 2 + 1]/*.Len*/ = 0; /* root of the heap */\n\n  for (h = s.heap_max + 1; h < HEAP_SIZE; h++) {\n    n = s.heap[h];\n    bits = tree[tree[n * 2 + 1]/*.Dad*/ * 2 + 1]/*.Len*/ + 1;\n    if (bits > max_length) {\n      bits = max_length;\n      overflow++;\n    }\n    tree[n * 2 + 1]/*.Len*/ = bits;\n    /* We overwrite tree[n].Dad which is no longer needed */\n\n    if (n > max_code) { continue; } /* not a leaf node */\n\n    s.bl_count[bits]++;\n    xbits = 0;\n    if (n >= base) {\n      xbits = extra[n - base];\n    }\n    f = tree[n * 2]/*.Freq*/;\n    s.opt_len += f * (bits + xbits);\n    if (has_stree) {\n      s.static_len += f * (stree[n * 2 + 1]/*.Len*/ + xbits);\n    }\n  }\n  if (overflow === 0) { return; }\n\n  // Trace((stderr,\"\\nbit length overflow\\n\"));\n  /* This happens for example on obj2 and pic of the Calgary corpus */\n\n  /* Find the first bit length which could increase: */\n  do {\n    bits = max_length - 1;\n    while (s.bl_count[bits] === 0) { bits--; }\n    s.bl_count[bits]--;      /* move one leaf down the tree */\n    s.bl_count[bits + 1] += 2; /* move one overflow item as its brother */\n    s.bl_count[max_length]--;\n    /* The brother of the overflow item also moves one step up,\n     * but this does not affect bl_count[max_length]\n     */\n    overflow -= 2;\n  } while (overflow > 0);\n\n  /* Now recompute all bit lengths, scanning in increasing frequency.\n   * h is still equal to HEAP_SIZE. (It is simpler to reconstruct all\n   * lengths instead of fixing only the wrong ones. This idea is taken\n   * from 'ar' written by Haruhiko Okumura.)\n   */\n  for (bits = max_length; bits !== 0; bits--) {\n    n = s.bl_count[bits];\n    while (n !== 0) {\n      m = s.heap[--h];\n      if (m > max_code) { continue; }\n      if (tree[m * 2 + 1]/*.Len*/ !== bits) {\n        // Trace((stderr,\"code %d bits %d->%d\\n\", m, tree[m].Len, bits));\n        s.opt_len += (bits - tree[m * 2 + 1]/*.Len*/) * tree[m * 2]/*.Freq*/;\n        tree[m * 2 + 1]/*.Len*/ = bits;\n      }\n      n--;\n    }\n  }\n}\n\n\n/* ===========================================================================\n * Generate the codes for a given tree and bit counts (which need not be\n * optimal).\n * IN assertion: the array bl_count contains the bit length statistics for\n * the given tree and the field len is set for all tree elements.\n * OUT assertion: the field code is set for all tree elements of non\n *     zero code length.\n */\nfunction gen_codes(tree, max_code, bl_count)\n//    ct_data *tree;             /* the tree to decorate */\n//    int max_code;              /* largest code with non zero frequency */\n//    ushf *bl_count;            /* number of codes at each bit length */\n{\n  var next_code = new Array(MAX_BITS + 1); /* next code value for each bit length */\n  var code = 0;              /* running code value */\n  var bits;                  /* bit index */\n  var n;                     /* code index */\n\n  /* The distribution counts are first used to generate the code values\n   * without bit reversal.\n   */\n  for (bits = 1; bits <= MAX_BITS; bits++) {\n    next_code[bits] = code = (code + bl_count[bits - 1]) << 1;\n  }\n  /* Check that the bit counts in bl_count are consistent. The last code\n   * must be all ones.\n   */\n  //Assert (code + bl_count[MAX_BITS]-1 == (1<<MAX_BITS)-1,\n  //        \"inconsistent bit counts\");\n  //Tracev((stderr,\"\\ngen_codes: max_code %d \", max_code));\n\n  for (n = 0;  n <= max_code; n++) {\n    var len = tree[n * 2 + 1]/*.Len*/;\n    if (len === 0) { continue; }\n    /* Now reverse the bits */\n    tree[n * 2]/*.Code*/ = bi_reverse(next_code[len]++, len);\n\n    //Tracecv(tree != static_ltree, (stderr,\"\\nn %3d %c l %2d c %4x (%x) \",\n    //     n, (isgraph(n) ? n : ' '), len, tree[n].Code, next_code[len]-1));\n  }\n}\n\n\n/* ===========================================================================\n * Initialize the various 'constant' tables.\n */\nfunction tr_static_init() {\n  var n;        /* iterates over tree elements */\n  var bits;     /* bit counter */\n  var length;   /* length value */\n  var code;     /* code value */\n  var dist;     /* distance index */\n  var bl_count = new Array(MAX_BITS + 1);\n  /* number of codes at each bit length for an optimal tree */\n\n  // do check in _tr_init()\n  //if (static_init_done) return;\n\n  /* For some embedded targets, global variables are not initialized: */\n/*#ifdef NO_INIT_GLOBAL_POINTERS\n  static_l_desc.static_tree = static_ltree;\n  static_l_desc.extra_bits = extra_lbits;\n  static_d_desc.static_tree = static_dtree;\n  static_d_desc.extra_bits = extra_dbits;\n  static_bl_desc.extra_bits = extra_blbits;\n#endif*/\n\n  /* Initialize the mapping length (0..255) -> length code (0..28) */\n  length = 0;\n  for (code = 0; code < LENGTH_CODES - 1; code++) {\n    base_length[code] = length;\n    for (n = 0; n < (1 << extra_lbits[code]); n++) {\n      _length_code[length++] = code;\n    }\n  }\n  //Assert (length == 256, \"tr_static_init: length != 256\");\n  /* Note that the length 255 (match length 258) can be represented\n   * in two different ways: code 284 + 5 bits or code 285, so we\n   * overwrite length_code[255] to use the best encoding:\n   */\n  _length_code[length - 1] = code;\n\n  /* Initialize the mapping dist (0..32K) -> dist code (0..29) */\n  dist = 0;\n  for (code = 0; code < 16; code++) {\n    base_dist[code] = dist;\n    for (n = 0; n < (1 << extra_dbits[code]); n++) {\n      _dist_code[dist++] = code;\n    }\n  }\n  //Assert (dist == 256, \"tr_static_init: dist != 256\");\n  dist >>= 7; /* from now on, all distances are divided by 128 */\n  for (; code < D_CODES; code++) {\n    base_dist[code] = dist << 7;\n    for (n = 0; n < (1 << (extra_dbits[code] - 7)); n++) {\n      _dist_code[256 + dist++] = code;\n    }\n  }\n  //Assert (dist == 256, \"tr_static_init: 256+dist != 512\");\n\n  /* Construct the codes of the static literal tree */\n  for (bits = 0; bits <= MAX_BITS; bits++) {\n    bl_count[bits] = 0;\n  }\n\n  n = 0;\n  while (n <= 143) {\n    static_ltree[n * 2 + 1]/*.Len*/ = 8;\n    n++;\n    bl_count[8]++;\n  }\n  while (n <= 255) {\n    static_ltree[n * 2 + 1]/*.Len*/ = 9;\n    n++;\n    bl_count[9]++;\n  }\n  while (n <= 279) {\n    static_ltree[n * 2 + 1]/*.Len*/ = 7;\n    n++;\n    bl_count[7]++;\n  }\n  while (n <= 287) {\n    static_ltree[n * 2 + 1]/*.Len*/ = 8;\n    n++;\n    bl_count[8]++;\n  }\n  /* Codes 286 and 287 do not exist, but we must include them in the\n   * tree construction to get a canonical Huffman tree (longest code\n   * all ones)\n   */\n  gen_codes(static_ltree, L_CODES + 1, bl_count);\n\n  /* The static distance tree is trivial: */\n  for (n = 0; n < D_CODES; n++) {\n    static_dtree[n * 2 + 1]/*.Len*/ = 5;\n    static_dtree[n * 2]/*.Code*/ = bi_reverse(n, 5);\n  }\n\n  // Now data ready and we can init static trees\n  static_l_desc = new StaticTreeDesc(static_ltree, extra_lbits, LITERALS + 1, L_CODES, MAX_BITS);\n  static_d_desc = new StaticTreeDesc(static_dtree, extra_dbits, 0,          D_CODES, MAX_BITS);\n  static_bl_desc = new StaticTreeDesc(new Array(0), extra_blbits, 0,         BL_CODES, MAX_BL_BITS);\n\n  //static_init_done = true;\n}\n\n\n/* ===========================================================================\n * Initialize a new block.\n */\nfunction init_block(s) {\n  var n; /* iterates over tree elements */\n\n  /* Initialize the trees. */\n  for (n = 0; n < L_CODES;  n++) { s.dyn_ltree[n * 2]/*.Freq*/ = 0; }\n  for (n = 0; n < D_CODES;  n++) { s.dyn_dtree[n * 2]/*.Freq*/ = 0; }\n  for (n = 0; n < BL_CODES; n++) { s.bl_tree[n * 2]/*.Freq*/ = 0; }\n\n  s.dyn_ltree[END_BLOCK * 2]/*.Freq*/ = 1;\n  s.opt_len = s.static_len = 0;\n  s.last_lit = s.matches = 0;\n}\n\n\n/* ===========================================================================\n * Flush the bit buffer and align the output on a byte boundary\n */\nfunction bi_windup(s)\n{\n  if (s.bi_valid > 8) {\n    put_short(s, s.bi_buf);\n  } else if (s.bi_valid > 0) {\n    //put_byte(s, (Byte)s->bi_buf);\n    s.pending_buf[s.pending++] = s.bi_buf;\n  }\n  s.bi_buf = 0;\n  s.bi_valid = 0;\n}\n\n/* ===========================================================================\n * Copy a stored block, storing first the length and its\n * one's complement if requested.\n */\nfunction copy_block(s, buf, len, header)\n//DeflateState *s;\n//charf    *buf;    /* the input data */\n//unsigned len;     /* its length */\n//int      header;  /* true if block header must be written */\n{\n  bi_windup(s);        /* align on byte boundary */\n\n  if (header) {\n    put_short(s, len);\n    put_short(s, ~len);\n  }\n//  while (len--) {\n//    put_byte(s, *buf++);\n//  }\n  utils.arraySet(s.pending_buf, s.window, buf, len, s.pending);\n  s.pending += len;\n}\n\n/* ===========================================================================\n * Compares to subtrees, using the tree depth as tie breaker when\n * the subtrees have equal frequency. This minimizes the worst case length.\n */\nfunction smaller(tree, n, m, depth) {\n  var _n2 = n * 2;\n  var _m2 = m * 2;\n  return (tree[_n2]/*.Freq*/ < tree[_m2]/*.Freq*/ ||\n         (tree[_n2]/*.Freq*/ === tree[_m2]/*.Freq*/ && depth[n] <= depth[m]));\n}\n\n/* ===========================================================================\n * Restore the heap property by moving down the tree starting at node k,\n * exchanging a node with the smallest of its two sons if necessary, stopping\n * when the heap property is re-established (each father smaller than its\n * two sons).\n */\nfunction pqdownheap(s, tree, k)\n//    deflate_state *s;\n//    ct_data *tree;  /* the tree to restore */\n//    int k;               /* node to move down */\n{\n  var v = s.heap[k];\n  var j = k << 1;  /* left son of k */\n  while (j <= s.heap_len) {\n    /* Set j to the smallest of the two sons: */\n    if (j < s.heap_len &&\n      smaller(tree, s.heap[j + 1], s.heap[j], s.depth)) {\n      j++;\n    }\n    /* Exit if v is smaller than both sons */\n    if (smaller(tree, v, s.heap[j], s.depth)) { break; }\n\n    /* Exchange v with the smallest son */\n    s.heap[k] = s.heap[j];\n    k = j;\n\n    /* And continue down the tree, setting j to the left son of k */\n    j <<= 1;\n  }\n  s.heap[k] = v;\n}\n\n\n// inlined manually\n// var SMALLEST = 1;\n\n/* ===========================================================================\n * Send the block data compressed using the given Huffman trees\n */\nfunction compress_block(s, ltree, dtree)\n//    deflate_state *s;\n//    const ct_data *ltree; /* literal tree */\n//    const ct_data *dtree; /* distance tree */\n{\n  var dist;           /* distance of matched string */\n  var lc;             /* match length or unmatched char (if dist == 0) */\n  var lx = 0;         /* running index in l_buf */\n  var code;           /* the code to send */\n  var extra;          /* number of extra bits to send */\n\n  if (s.last_lit !== 0) {\n    do {\n      dist = (s.pending_buf[s.d_buf + lx * 2] << 8) | (s.pending_buf[s.d_buf + lx * 2 + 1]);\n      lc = s.pending_buf[s.l_buf + lx];\n      lx++;\n\n      if (dist === 0) {\n        send_code(s, lc, ltree); /* send a literal byte */\n        //Tracecv(isgraph(lc), (stderr,\" '%c' \", lc));\n      } else {\n        /* Here, lc is the match length - MIN_MATCH */\n        code = _length_code[lc];\n        send_code(s, code + LITERALS + 1, ltree); /* send the length code */\n        extra = extra_lbits[code];\n        if (extra !== 0) {\n          lc -= base_length[code];\n          send_bits(s, lc, extra);       /* send the extra length bits */\n        }\n        dist--; /* dist is now the match distance - 1 */\n        code = d_code(dist);\n        //Assert (code < D_CODES, \"bad d_code\");\n\n        send_code(s, code, dtree);       /* send the distance code */\n        extra = extra_dbits[code];\n        if (extra !== 0) {\n          dist -= base_dist[code];\n          send_bits(s, dist, extra);   /* send the extra distance bits */\n        }\n      } /* literal or match pair ? */\n\n      /* Check that the overlay between pending_buf and d_buf+l_buf is ok: */\n      //Assert((uInt)(s->pending) < s->lit_bufsize + 2*lx,\n      //       \"pendingBuf overflow\");\n\n    } while (lx < s.last_lit);\n  }\n\n  send_code(s, END_BLOCK, ltree);\n}\n\n\n/* ===========================================================================\n * Construct one Huffman tree and assigns the code bit strings and lengths.\n * Update the total bit length for the current block.\n * IN assertion: the field freq is set for all tree elements.\n * OUT assertions: the fields len and code are set to the optimal bit length\n *     and corresponding code. The length opt_len is updated; static_len is\n *     also updated if stree is not null. The field max_code is set.\n */\nfunction build_tree(s, desc)\n//    deflate_state *s;\n//    tree_desc *desc; /* the tree descriptor */\n{\n  var tree     = desc.dyn_tree;\n  var stree    = desc.stat_desc.static_tree;\n  var has_stree = desc.stat_desc.has_stree;\n  var elems    = desc.stat_desc.elems;\n  var n, m;          /* iterate over heap elements */\n  var max_code = -1; /* largest code with non zero frequency */\n  var node;          /* new node being created */\n\n  /* Construct the initial heap, with least frequent element in\n   * heap[SMALLEST]. The sons of heap[n] are heap[2*n] and heap[2*n+1].\n   * heap[0] is not used.\n   */\n  s.heap_len = 0;\n  s.heap_max = HEAP_SIZE;\n\n  for (n = 0; n < elems; n++) {\n    if (tree[n * 2]/*.Freq*/ !== 0) {\n      s.heap[++s.heap_len] = max_code = n;\n      s.depth[n] = 0;\n\n    } else {\n      tree[n * 2 + 1]/*.Len*/ = 0;\n    }\n  }\n\n  /* The pkzip format requires that at least one distance code exists,\n   * and that at least one bit should be sent even if there is only one\n   * possible code. So to avoid special checks later on we force at least\n   * two codes of non zero frequency.\n   */\n  while (s.heap_len < 2) {\n    node = s.heap[++s.heap_len] = (max_code < 2 ? ++max_code : 0);\n    tree[node * 2]/*.Freq*/ = 1;\n    s.depth[node] = 0;\n    s.opt_len--;\n\n    if (has_stree) {\n      s.static_len -= stree[node * 2 + 1]/*.Len*/;\n    }\n    /* node is 0 or 1 so it does not have extra bits */\n  }\n  desc.max_code = max_code;\n\n  /* The elements heap[heap_len/2+1 .. heap_len] are leaves of the tree,\n   * establish sub-heaps of increasing lengths:\n   */\n  for (n = (s.heap_len >> 1/*int /2*/); n >= 1; n--) { pqdownheap(s, tree, n); }\n\n  /* Construct the Huffman tree by repeatedly combining the least two\n   * frequent nodes.\n   */\n  node = elems;              /* next internal node of the tree */\n  do {\n    //pqremove(s, tree, n);  /* n = node of least frequency */\n    /*** pqremove ***/\n    n = s.heap[1/*SMALLEST*/];\n    s.heap[1/*SMALLEST*/] = s.heap[s.heap_len--];\n    pqdownheap(s, tree, 1/*SMALLEST*/);\n    /***/\n\n    m = s.heap[1/*SMALLEST*/]; /* m = node of next least frequency */\n\n    s.heap[--s.heap_max] = n; /* keep the nodes sorted by frequency */\n    s.heap[--s.heap_max] = m;\n\n    /* Create a new node father of n and m */\n    tree[node * 2]/*.Freq*/ = tree[n * 2]/*.Freq*/ + tree[m * 2]/*.Freq*/;\n    s.depth[node] = (s.depth[n] >= s.depth[m] ? s.depth[n] : s.depth[m]) + 1;\n    tree[n * 2 + 1]/*.Dad*/ = tree[m * 2 + 1]/*.Dad*/ = node;\n\n    /* and insert the new node in the heap */\n    s.heap[1/*SMALLEST*/] = node++;\n    pqdownheap(s, tree, 1/*SMALLEST*/);\n\n  } while (s.heap_len >= 2);\n\n  s.heap[--s.heap_max] = s.heap[1/*SMALLEST*/];\n\n  /* At this point, the fields freq and dad are set. We can now\n   * generate the bit lengths.\n   */\n  gen_bitlen(s, desc);\n\n  /* The field len is now set, we can generate the bit codes */\n  gen_codes(tree, max_code, s.bl_count);\n}\n\n\n/* ===========================================================================\n * Scan a literal or distance tree to determine the frequencies of the codes\n * in the bit length tree.\n */\nfunction scan_tree(s, tree, max_code)\n//    deflate_state *s;\n//    ct_data *tree;   /* the tree to be scanned */\n//    int max_code;    /* and its largest code of non zero frequency */\n{\n  var n;                     /* iterates over all tree elements */\n  var prevlen = -1;          /* last emitted length */\n  var curlen;                /* length of current code */\n\n  var nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */\n\n  var count = 0;             /* repeat count of the current code */\n  var max_count = 7;         /* max repeat count */\n  var min_count = 4;         /* min repeat count */\n\n  if (nextlen === 0) {\n    max_count = 138;\n    min_count = 3;\n  }\n  tree[(max_code + 1) * 2 + 1]/*.Len*/ = 0xffff; /* guard */\n\n  for (n = 0; n <= max_code; n++) {\n    curlen = nextlen;\n    nextlen = tree[(n + 1) * 2 + 1]/*.Len*/;\n\n    if (++count < max_count && curlen === nextlen) {\n      continue;\n\n    } else if (count < min_count) {\n      s.bl_tree[curlen * 2]/*.Freq*/ += count;\n\n    } else if (curlen !== 0) {\n\n      if (curlen !== prevlen) { s.bl_tree[curlen * 2]/*.Freq*/++; }\n      s.bl_tree[REP_3_6 * 2]/*.Freq*/++;\n\n    } else if (count <= 10) {\n      s.bl_tree[REPZ_3_10 * 2]/*.Freq*/++;\n\n    } else {\n      s.bl_tree[REPZ_11_138 * 2]/*.Freq*/++;\n    }\n\n    count = 0;\n    prevlen = curlen;\n\n    if (nextlen === 0) {\n      max_count = 138;\n      min_count = 3;\n\n    } else if (curlen === nextlen) {\n      max_count = 6;\n      min_count = 3;\n\n    } else {\n      max_count = 7;\n      min_count = 4;\n    }\n  }\n}\n\n\n/* ===========================================================================\n * Send a literal or distance tree in compressed form, using the codes in\n * bl_tree.\n */\nfunction send_tree(s, tree, max_code)\n//    deflate_state *s;\n//    ct_data *tree; /* the tree to be scanned */\n//    int max_code;       /* and its largest code of non zero frequency */\n{\n  var n;                     /* iterates over all tree elements */\n  var prevlen = -1;          /* last emitted length */\n  var curlen;                /* length of current code */\n\n  var nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */\n\n  var count = 0;             /* repeat count of the current code */\n  var max_count = 7;         /* max repeat count */\n  var min_count = 4;         /* min repeat count */\n\n  /* tree[max_code+1].Len = -1; */  /* guard already set */\n  if (nextlen === 0) {\n    max_count = 138;\n    min_count = 3;\n  }\n\n  for (n = 0; n <= max_code; n++) {\n    curlen = nextlen;\n    nextlen = tree[(n + 1) * 2 + 1]/*.Len*/;\n\n    if (++count < max_count && curlen === nextlen) {\n      continue;\n\n    } else if (count < min_count) {\n      do { send_code(s, curlen, s.bl_tree); } while (--count !== 0);\n\n    } else if (curlen !== 0) {\n      if (curlen !== prevlen) {\n        send_code(s, curlen, s.bl_tree);\n        count--;\n      }\n      //Assert(count >= 3 && count <= 6, \" 3_6?\");\n      send_code(s, REP_3_6, s.bl_tree);\n      send_bits(s, count - 3, 2);\n\n    } else if (count <= 10) {\n      send_code(s, REPZ_3_10, s.bl_tree);\n      send_bits(s, count - 3, 3);\n\n    } else {\n      send_code(s, REPZ_11_138, s.bl_tree);\n      send_bits(s, count - 11, 7);\n    }\n\n    count = 0;\n    prevlen = curlen;\n    if (nextlen === 0) {\n      max_count = 138;\n      min_count = 3;\n\n    } else if (curlen === nextlen) {\n      max_count = 6;\n      min_count = 3;\n\n    } else {\n      max_count = 7;\n      min_count = 4;\n    }\n  }\n}\n\n\n/* ===========================================================================\n * Construct the Huffman tree for the bit lengths and return the index in\n * bl_order of the last bit length code to send.\n */\nfunction build_bl_tree(s) {\n  var max_blindex;  /* index of last bit length code of non zero freq */\n\n  /* Determine the bit length frequencies for literal and distance trees */\n  scan_tree(s, s.dyn_ltree, s.l_desc.max_code);\n  scan_tree(s, s.dyn_dtree, s.d_desc.max_code);\n\n  /* Build the bit length tree: */\n  build_tree(s, s.bl_desc);\n  /* opt_len now includes the length of the tree representations, except\n   * the lengths of the bit lengths codes and the 5+5+4 bits for the counts.\n   */\n\n  /* Determine the number of bit length codes to send. The pkzip format\n   * requires that at least 4 bit length codes be sent. (appnote.txt says\n   * 3 but the actual value used is 4.)\n   */\n  for (max_blindex = BL_CODES - 1; max_blindex >= 3; max_blindex--) {\n    if (s.bl_tree[bl_order[max_blindex] * 2 + 1]/*.Len*/ !== 0) {\n      break;\n    }\n  }\n  /* Update opt_len to include the bit length tree and counts */\n  s.opt_len += 3 * (max_blindex + 1) + 5 + 5 + 4;\n  //Tracev((stderr, \"\\ndyn trees: dyn %ld, stat %ld\",\n  //        s->opt_len, s->static_len));\n\n  return max_blindex;\n}\n\n\n/* ===========================================================================\n * Send the header for a block using dynamic Huffman trees: the counts, the\n * lengths of the bit length codes, the literal tree and the distance tree.\n * IN assertion: lcodes >= 257, dcodes >= 1, blcodes >= 4.\n */\nfunction send_all_trees(s, lcodes, dcodes, blcodes)\n//    deflate_state *s;\n//    int lcodes, dcodes, blcodes; /* number of codes for each tree */\n{\n  var rank;                    /* index in bl_order */\n\n  //Assert (lcodes >= 257 && dcodes >= 1 && blcodes >= 4, \"not enough codes\");\n  //Assert (lcodes <= L_CODES && dcodes <= D_CODES && blcodes <= BL_CODES,\n  //        \"too many codes\");\n  //Tracev((stderr, \"\\nbl counts: \"));\n  send_bits(s, lcodes - 257, 5); /* not +255 as stated in appnote.txt */\n  send_bits(s, dcodes - 1,   5);\n  send_bits(s, blcodes - 4,  4); /* not -3 as stated in appnote.txt */\n  for (rank = 0; rank < blcodes; rank++) {\n    //Tracev((stderr, \"\\nbl code %2d \", bl_order[rank]));\n    send_bits(s, s.bl_tree[bl_order[rank] * 2 + 1]/*.Len*/, 3);\n  }\n  //Tracev((stderr, \"\\nbl tree: sent %ld\", s->bits_sent));\n\n  send_tree(s, s.dyn_ltree, lcodes - 1); /* literal tree */\n  //Tracev((stderr, \"\\nlit tree: sent %ld\", s->bits_sent));\n\n  send_tree(s, s.dyn_dtree, dcodes - 1); /* distance tree */\n  //Tracev((stderr, \"\\ndist tree: sent %ld\", s->bits_sent));\n}\n\n\n/* ===========================================================================\n * Check if the data type is TEXT or BINARY, using the following algorithm:\n * - TEXT if the two conditions below are satisfied:\n *    a) There are no non-portable control characters belonging to the\n *       \"black list\" (0..6, 14..25, 28..31).\n *    b) There is at least one printable character belonging to the\n *       \"white list\" (9 {TAB}, 10 {LF}, 13 {CR}, 32..255).\n * - BINARY otherwise.\n * - The following partially-portable control characters form a\n *   \"gray list\" that is ignored in this detection algorithm:\n *   (7 {BEL}, 8 {BS}, 11 {VT}, 12 {FF}, 26 {SUB}, 27 {ESC}).\n * IN assertion: the fields Freq of dyn_ltree are set.\n */\nfunction detect_data_type(s) {\n  /* black_mask is the bit mask of black-listed bytes\n   * set bits 0..6, 14..25, and 28..31\n   * 0xf3ffc07f = binary 11110011111111111100000001111111\n   */\n  var black_mask = 0xf3ffc07f;\n  var n;\n\n  /* Check for non-textual (\"black-listed\") bytes. */\n  for (n = 0; n <= 31; n++, black_mask >>>= 1) {\n    if ((black_mask & 1) && (s.dyn_ltree[n * 2]/*.Freq*/ !== 0)) {\n      return Z_BINARY;\n    }\n  }\n\n  /* Check for textual (\"white-listed\") bytes. */\n  if (s.dyn_ltree[9 * 2]/*.Freq*/ !== 0 || s.dyn_ltree[10 * 2]/*.Freq*/ !== 0 ||\n      s.dyn_ltree[13 * 2]/*.Freq*/ !== 0) {\n    return Z_TEXT;\n  }\n  for (n = 32; n < LITERALS; n++) {\n    if (s.dyn_ltree[n * 2]/*.Freq*/ !== 0) {\n      return Z_TEXT;\n    }\n  }\n\n  /* There are no \"black-listed\" or \"white-listed\" bytes:\n   * this stream either is empty or has tolerated (\"gray-listed\") bytes only.\n   */\n  return Z_BINARY;\n}\n\n\nvar static_init_done = false;\n\n/* ===========================================================================\n * Initialize the tree data structures for a new zlib stream.\n */\nfunction _tr_init(s)\n{\n\n  if (!static_init_done) {\n    tr_static_init();\n    static_init_done = true;\n  }\n\n  s.l_desc  = new TreeDesc(s.dyn_ltree, static_l_desc);\n  s.d_desc  = new TreeDesc(s.dyn_dtree, static_d_desc);\n  s.bl_desc = new TreeDesc(s.bl_tree, static_bl_desc);\n\n  s.bi_buf = 0;\n  s.bi_valid = 0;\n\n  /* Initialize the first block of the first file: */\n  init_block(s);\n}\n\n\n/* ===========================================================================\n * Send a stored block\n */\nfunction _tr_stored_block(s, buf, stored_len, last)\n//DeflateState *s;\n//charf *buf;       /* input block */\n//ulg stored_len;   /* length of input block */\n//int last;         /* one if this is the last block for a file */\n{\n  send_bits(s, (STORED_BLOCK << 1) + (last ? 1 : 0), 3);    /* send block type */\n  copy_block(s, buf, stored_len, true); /* with header */\n}\n\n\n/* ===========================================================================\n * Send one empty static block to give enough lookahead for inflate.\n * This takes 10 bits, of which 7 may remain in the bit buffer.\n */\nfunction _tr_align(s) {\n  send_bits(s, STATIC_TREES << 1, 3);\n  send_code(s, END_BLOCK, static_ltree);\n  bi_flush(s);\n}\n\n\n/* ===========================================================================\n * Determine the best encoding for the current block: dynamic trees, static\n * trees or store, and output the encoded block to the zip file.\n */\nfunction _tr_flush_block(s, buf, stored_len, last)\n//DeflateState *s;\n//charf *buf;       /* input block, or NULL if too old */\n//ulg stored_len;   /* length of input block */\n//int last;         /* one if this is the last block for a file */\n{\n  var opt_lenb, static_lenb;  /* opt_len and static_len in bytes */\n  var max_blindex = 0;        /* index of last bit length code of non zero freq */\n\n  /* Build the Huffman trees unless a stored block is forced */\n  if (s.level > 0) {\n\n    /* Check if the file is binary or text */\n    if (s.strm.data_type === Z_UNKNOWN) {\n      s.strm.data_type = detect_data_type(s);\n    }\n\n    /* Construct the literal and distance trees */\n    build_tree(s, s.l_desc);\n    // Tracev((stderr, \"\\nlit data: dyn %ld, stat %ld\", s->opt_len,\n    //        s->static_len));\n\n    build_tree(s, s.d_desc);\n    // Tracev((stderr, \"\\ndist data: dyn %ld, stat %ld\", s->opt_len,\n    //        s->static_len));\n    /* At this point, opt_len and static_len are the total bit lengths of\n     * the compressed block data, excluding the tree representations.\n     */\n\n    /* Build the bit length tree for the above two trees, and get the index\n     * in bl_order of the last bit length code to send.\n     */\n    max_blindex = build_bl_tree(s);\n\n    /* Determine the best encoding. Compute the block lengths in bytes. */\n    opt_lenb = (s.opt_len + 3 + 7) >>> 3;\n    static_lenb = (s.static_len + 3 + 7) >>> 3;\n\n    // Tracev((stderr, \"\\nopt %lu(%lu) stat %lu(%lu) stored %lu lit %u \",\n    //        opt_lenb, s->opt_len, static_lenb, s->static_len, stored_len,\n    //        s->last_lit));\n\n    if (static_lenb <= opt_lenb) { opt_lenb = static_lenb; }\n\n  } else {\n    // Assert(buf != (char*)0, \"lost buf\");\n    opt_lenb = static_lenb = stored_len + 5; /* force a stored block */\n  }\n\n  if ((stored_len + 4 <= opt_lenb) && (buf !== -1)) {\n    /* 4: two words for the lengths */\n\n    /* The test buf != NULL is only necessary if LIT_BUFSIZE > WSIZE.\n     * Otherwise we can't have processed more than WSIZE input bytes since\n     * the last block flush, because compression would have been\n     * successful. If LIT_BUFSIZE <= WSIZE, it is never too late to\n     * transform a block into a stored block.\n     */\n    _tr_stored_block(s, buf, stored_len, last);\n\n  } else if (s.strategy === Z_FIXED || static_lenb === opt_lenb) {\n\n    send_bits(s, (STATIC_TREES << 1) + (last ? 1 : 0), 3);\n    compress_block(s, static_ltree, static_dtree);\n\n  } else {\n    send_bits(s, (DYN_TREES << 1) + (last ? 1 : 0), 3);\n    send_all_trees(s, s.l_desc.max_code + 1, s.d_desc.max_code + 1, max_blindex + 1);\n    compress_block(s, s.dyn_ltree, s.dyn_dtree);\n  }\n  // Assert (s->compressed_len == s->bits_sent, \"bad compressed size\");\n  /* The above check is made mod 2^32, for files larger than 512 MB\n   * and uLong implemented on 32 bits.\n   */\n  init_block(s);\n\n  if (last) {\n    bi_windup(s);\n  }\n  // Tracev((stderr,\"\\ncomprlen %lu(%lu) \", s->compressed_len>>3,\n  //       s->compressed_len-7*last));\n}\n\n/* ===========================================================================\n * Save the match info and tally the frequency counts. Return true if\n * the current block must be flushed.\n */\nfunction _tr_tally(s, dist, lc)\n//    deflate_state *s;\n//    unsigned dist;  /* distance of matched string */\n//    unsigned lc;    /* match length-MIN_MATCH or unmatched char (if dist==0) */\n{\n  //var out_length, in_length, dcode;\n\n  s.pending_buf[s.d_buf + s.last_lit * 2]     = (dist >>> 8) & 0xff;\n  s.pending_buf[s.d_buf + s.last_lit * 2 + 1] = dist & 0xff;\n\n  s.pending_buf[s.l_buf + s.last_lit] = lc & 0xff;\n  s.last_lit++;\n\n  if (dist === 0) {\n    /* lc is the unmatched char */\n    s.dyn_ltree[lc * 2]/*.Freq*/++;\n  } else {\n    s.matches++;\n    /* Here, lc is the match length - MIN_MATCH */\n    dist--;             /* dist = match distance - 1 */\n    //Assert((ush)dist < (ush)MAX_DIST(s) &&\n    //       (ush)lc <= (ush)(MAX_MATCH-MIN_MATCH) &&\n    //       (ush)d_code(dist) < (ush)D_CODES,  \"_tr_tally: bad match\");\n\n    s.dyn_ltree[(_length_code[lc] + LITERALS + 1) * 2]/*.Freq*/++;\n    s.dyn_dtree[d_code(dist) * 2]/*.Freq*/++;\n  }\n\n// (!) This block is disabled in zlib defailts,\n// don't enable it for binary compatibility\n\n//#ifdef TRUNCATE_BLOCK\n//  /* Try to guess if it is profitable to stop the current block here */\n//  if ((s.last_lit & 0x1fff) === 0 && s.level > 2) {\n//    /* Compute an upper bound for the compressed length */\n//    out_length = s.last_lit*8;\n//    in_length = s.strstart - s.block_start;\n//\n//    for (dcode = 0; dcode < D_CODES; dcode++) {\n//      out_length += s.dyn_dtree[dcode*2]/*.Freq*/ * (5 + extra_dbits[dcode]);\n//    }\n//    out_length >>>= 3;\n//    //Tracev((stderr,\"\\nlast_lit %u, in %ld, out ~%ld(%ld%%) \",\n//    //       s->last_lit, in_length, out_length,\n//    //       100L - out_length*100L/in_length));\n//    if (s.matches < (s.last_lit>>1)/*int /2*/ && out_length < (in_length>>1)/*int /2*/) {\n//      return true;\n//    }\n//  }\n//#endif\n\n  return (s.last_lit === s.lit_bufsize - 1);\n  /* We avoid equality with lit_bufsize because of wraparound at 64K\n   * on 16 bit machines and because stored blocks are restricted to\n   * 64K-1 bytes.\n   */\n}\n\nexports._tr_init  = _tr_init;\nexports._tr_stored_block = _tr_stored_block;\nexports._tr_flush_block  = _tr_flush_block;\nexports._tr_tally = _tr_tally;\nexports._tr_align = _tr_align;\n\n},{\"../utils/common\":41}],53:[function(require,module,exports){\n'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n//   claim that you wrote the original software. If you use this software\n//   in a product, an acknowledgment in the product documentation would be\n//   appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n//   misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nfunction ZStream() {\n  /* next input byte */\n  this.input = null; // JS specific, because we have no pointers\n  this.next_in = 0;\n  /* number of bytes available at input */\n  this.avail_in = 0;\n  /* total number of input bytes read so far */\n  this.total_in = 0;\n  /* next output byte should be put there */\n  this.output = null; // JS specific, because we have no pointers\n  this.next_out = 0;\n  /* remaining free space at output */\n  this.avail_out = 0;\n  /* total number of bytes output so far */\n  this.total_out = 0;\n  /* last error message, NULL if no error */\n  this.msg = ''/*Z_NULL*/;\n  /* not visible by applications */\n  this.state = null;\n  /* best guess about the data type: binary or text */\n  this.data_type = 2/*Z_UNKNOWN*/;\n  /* adler32 value of the uncompressed data */\n  this.adler = 0;\n}\n\nmodule.exports = ZStream;\n\n},{}],54:[function(require,module,exports){\n'use strict';\nmodule.exports = typeof setImmediate === 'function' ? setImmediate :\n\tfunction setImmediate() {\n\t\tvar args = [].slice.apply(arguments);\n\t\targs.splice(1, 0, 0);\n\t\tsetTimeout.apply(null, args);\n\t};\n\n},{}]},{},[10])(10)\n});","\"use strict\";\n\n// ref: https://github.com/tc39/proposal-global\nvar getGlobal = function () {\n\t// the only reliable means to get the global object is\n\t// `Function('return this')()`\n\t// However, this causes CSP violations in Chrome apps.\n\tif (typeof self !== 'undefined') { return self; }\n\tif (typeof window !== 'undefined') { return window; }\n\tif (typeof global !== 'undefined') { return global; }\n\tthrow new Error('unable to locate global object');\n}\n\nvar global = getGlobal();\n\nmodule.exports = exports = global.fetch;\n\n// Needed for TypeScript and Webpack.\nif (global.fetch) {\n\texports.default = global.fetch.bind(global);\n}\n\nexports.Headers = global.Headers;\nexports.Request = global.Request;\nexports.Response = global.Response;","'use strict';\n\nconst fetch = require('node-fetch');\n\nmodule.exports = async function fetchArrayBufferBrowser(url) {\n  const result = await fetch(url);\n  return result.arrayBuffer();\n};\n","'use strict';\n\nconst JSZip = require('jszip/dist/jszip');\n\nconst fetch = require('./util/fetchArrayBuffer');\n\nconst loadingPromises = {};\n\nmodule.exports = async function loadCommercials(options = {}) {\n  const {\n    url = 'https://couch.cheminfo.org/cheminfo-public/d2eb480198c80275a1d05dd3609414f9/upload/commercials.zip',\n  } = options;\n\n  if (!loadingPromises[url]) {\n    loadingPromises[url] = fetch(url);\n  }\n  const buffer = await loadingPromises[url];\n\n  const jsZip = new JSZip();\n  let zip = await jsZip.loadAsync(buffer);\n  let fileData = await zip.files['commercials.json'].async('string');\n  let data = JSON.parse(fileData);\n\n  data.sort((a, b) => a.em - b.em);\n\n  return data;\n};\n","'use strict';\n\nmodule.exports = {\n  ELECTRON_MASS: 5.4857990907e-4,\n};\n","'use strict';\n/**\n * Define static variable corresponding to the various Kinds of a molecular formula part.\n */\n\nmodule.exports = {\n  BEGIN: 'begin',\n  ATOM: 'atom',\n  MULTIPLIER_RANGE: 'multiplierRange',\n  ISOTOPE: 'isotope',\n  ISOTOPE_RATIO: 'isotopeRatio',\n  CHARGE: 'charge',\n  SALT: 'salt',\n  OPENING_PARENTHESIS: 'openingParenthesis',\n  CLOSING_PARENTHESIS: 'closingParenthesis',\n  PRE_MULTIPLIER: 'preMultiplier',\n  MULTIPLIER: 'multiplier',\n  TEXT: 'text',\n  COMMENT: 'comment',\n};\n","'use strict';\n\n/**\n * Parse a string to extract the charge\n * The charge may be in the form --, +++, +3, -2, 4+, 2-\n * @param {*} charge\n */\n\nmodule.exports = function parseCharge(charge) {\n  charge = charge.replace(/[()]/g, '');\n  let chargeNumber = 0;\n  if (charge.match(/^[+-]+$/)) {\n    for (let i = 0; i < charge.length; i++) {\n      if (charge.charAt(i) === '+') chargeNumber++;\n      else chargeNumber--;\n    }\n  } else if (charge.match(/^[0-9]+[+-]$/)) {\n    chargeNumber = Number(\n      charge.charAt(charge.length - 1) + charge.substring(0, charge.length - 1),\n    );\n  } else {\n    chargeNumber = Number(charge);\n  }\n  return chargeNumber;\n};\n","'use strict';\n\nconst Kind = require('./Kind');\nconst parseCharge = require('./util/parseCharge');\n\n/**\n * Parse a mf to an array of kind / value\n * @param {String} mf\n */\n\nmodule.exports = function parse(mf) {\n  return new MFParser().parse(mf);\n};\n\nclass MFParser {\n  parse(mf = '') {\n    this.mf = mf;\n    this.i = 0;\n    this.result = [];\n\n    let lastKind = Kind.BEGIN;\n    while (this.i < mf.length) {\n      if (\n        this.result.length > 0 &&\n        this.result[this.result.length - 1].kind !== Kind.TEXT\n      ) {\n        lastKind = this.result[this.result.length - 1].kind;\n      }\n      let char = mf.charAt(this.i);\n      let ascii = mf.charCodeAt(this.i);\n      let nextAscii = 0;\n      if (this.i + 1 < mf.length) nextAscii = mf.charCodeAt(this.i + 1);\n\n      if (\n        (ascii > 47 && ascii < 58) ||\n        (char === '-' && nextAscii > 47 && nextAscii < 58)\n      ) {\n        // a number\n        let value = this.getNumber(ascii);\n        if (\n          lastKind === Kind.SALT ||\n          lastKind === Kind.BEGIN ||\n          lastKind === Kind.OPENING_PARENTHESIS\n        ) {\n          if (value.to) {\n            throw new MFError(\n              this.mf,\n              this.i,\n              'Premultiplier may not contain a -',\n            );\n          }\n          this.result.push({ kind: Kind.PRE_MULTIPLIER, value: value.from });\n        } else {\n          if (value.to) {\n            this.result.push({\n              kind: Kind.MULTIPLIER_RANGE,\n              value: {\n                from: Math.min(value.from, value.to),\n                to: Math.max(value.from, value.to),\n              },\n            });\n          } else {\n            this.result.push({ kind: Kind.MULTIPLIER, value: value.from });\n          }\n        }\n\n        continue;\n      } else if (char === '.') {\n        // a point\n        this.result.push({ kind: Kind.SALT, value: char });\n        // it is not in a number otherwise it would have been taken before\n        // it must be in a salt\n      } else if (ascii > 64 && ascii < 91) {\n        // an uppercase = new atom\n        let value = this.getAtom(ascii);\n        this.result.push({ kind: Kind.ATOM, value });\n        continue;\n      } else if (ascii > 96 && ascii < 123) {\n        // a lowercase\n        throw new MFError(\n          this.mf,\n          this.i,\n          'found a lowercase not following an uppercase',\n        );\n      } else if (char === '(') {\n        let charge = this.getParenthesisCharge(ascii);\n        if (charge) {\n          this.result.push({ kind: Kind.CHARGE, value: charge });\n        } else {\n          this.result.push({ kind: Kind.OPENING_PARENTHESIS, value: '(' });\n        }\n      } else if (char === ')') {\n        this.result.push({ kind: Kind.CLOSING_PARENTHESIS, value: ')' });\n      } else if (char === '[') {\n        // defines an isotope\n        let isotope = this.getIsotope(ascii);\n        this.result.push({ kind: Kind.ISOTOPE, value: isotope });\n      } else if (char === ']') {\n        throw new MFError(\n          this.mf,\n          this.i,\n          'should never meet an closing bracket not in isotopes',\n        );\n      } else if (char === '{') {\n        // can define an exotic isotopic ratio or mixtures of groups\n        let isotopeRatio = this.getCurlyBracketIsotopeRatio(ascii);\n        if (lastKind === Kind.ATOM) {\n          let lastResult = this.result[this.result.length - 1];\n          lastResult.kind = Kind.ISOTOPE_RATIO;\n          lastResult.value = {\n            atom: lastResult.value,\n            ratio: isotopeRatio,\n          };\n        } else {\n          throw new MFError(\n            this.mf,\n            this.i,\n            'isotopic composition has to follow an atom',\n          );\n        }\n      } else if (char === '}') {\n        throw new MFError(\n          this.mf,\n          this.i,\n          'found a unexpected closing curly bracket',\n        );\n      } else if (char === '+') {\n        // charge not in parenthesis\n        let charge = this.getNonParenthesisCharge(ascii);\n        this.result.push({ kind: Kind.CHARGE, value: charge });\n      } else if (char === '-') {\n        // charge not in parenthesis\n        let charge = this.getNonParenthesisCharge(ascii);\n        this.result.push({ kind: Kind.CHARGE, value: charge });\n      } else if (char === '$') {\n        // it is a comment after\n        this.result.push({\n          kind: Kind.COMMENT,\n          value: this.mf.substring(this.i + 1),\n        });\n        break;\n      } else {\n        this.result.push({ kind: Kind.TEXT, value: char });\n      }\n      this.i++;\n    }\n\n    this.checkParenthesis();\n    return this.result;\n  }\n\n  checkParenthesis() {\n    let counter = 0;\n    for (let line of this.result) {\n      if (line.kind === Kind.OPENING_PARENTHESIS) counter++;\n      if (line.kind === Kind.CLOSING_PARENTHESIS) counter--;\n    }\n    if (counter !== 0) {\n      throw new MFError(\n        this.mf,\n        this.i,\n        'number of opening and closing parenthesis not equal',\n      );\n    }\n  }\n\n  getNumber(ascii) {\n    let number = '';\n    let previous;\n    do {\n      previous = ascii;\n      number += String.fromCharCode(ascii);\n      this.i++;\n      ascii = this.mf.charCodeAt(this.i);\n    } while ((ascii > 47 && ascii < 58) || ascii === 46 || ascii === 45); // number, . or -\n    // we need to deal with the case there is a from / to\n    if (previous === 46) this.i--;\n    let indexOfDash = number.indexOf('-', 1);\n\n    if (indexOfDash > -1) {\n      return {\n        from: Number(number.substr(0, indexOfDash)),\n        to: Number(number.substr(indexOfDash + 1)),\n      };\n    }\n    return { from: Number(number) };\n  }\n\n  getAtom(ascii) {\n    let atom = '';\n    do {\n      atom += String.fromCharCode(ascii);\n      this.i++;\n      ascii = this.mf.charCodeAt(this.i);\n    } while (ascii > 96 && ascii < 123);\n    return atom;\n  }\n\n  getIsotope(ascii) {\n    // [13C]\n    let substring = '';\n    do {\n      substring += String.fromCharCode(ascii);\n      this.i++;\n      ascii = this.mf.charCodeAt(this.i);\n    } while (ascii !== 93 && this.i <= this.mf.length);\n\n    let atom = substring.replace(/[^a-zA-Z]/g, '');\n    let isotope = Number(substring.replace(/[^0-9]/g, ''));\n    return { atom, isotope };\n  }\n\n  getCurlyBracketIsotopeRatio(ascii) {\n    let substring = '';\n    let first = true;\n    do {\n      if (!first) {\n        substring += String.fromCharCode(ascii);\n      } else {\n        first = false;\n      }\n      this.i++;\n      ascii = this.mf.charCodeAt(this.i);\n    } while (ascii !== 125 && this.i <= this.mf.length); // closing curly bracket\n    if (substring.match(/^[0-9,]+$/)) {\n      return substring.split(',').map((a) => Number(a));\n    }\n    throw new MFError(\n      this.mf,\n      this.i,\n      'Curly brackets should contain only number and comma',\n    );\n  }\n\n  getParenthesisCharge(ascii) {\n    let substring = '';\n    let begin = this.i;\n    do {\n      substring += String.fromCharCode(ascii);\n      this.i++;\n      ascii = this.mf.charCodeAt(this.i);\n    } while (ascii !== 41 && this.i <= this.mf.length); // closing parenthesis\n    if (substring.match(/^\\([0-9+-]+$/)) {\n      return parseCharge(substring.substring(1));\n    } else {\n      this.i = begin;\n      return undefined;\n    }\n  }\n\n  getNonParenthesisCharge(ascii) {\n    let substring = '';\n    do {\n      substring += String.fromCharCode(ascii);\n      this.i++;\n      ascii = this.mf.charCodeAt(this.i);\n    } while (ascii === 43 || ascii === 45 || (ascii > 47 && ascii < 58));\n    this.i--;\n    return parseCharge(substring);\n  }\n}\nclass MFError extends SyntaxError {\n  constructor(mf, i, message) {\n    let text = `${message}\\n\\n${mf}\\n${' '.repeat(i)}^`;\n    super(text);\n  }\n}\n","'use strict';\n\n/**\n * Defines static variables corresponding to the various formatting possibilities\n */\n\nmodule.exports = {\n  SUBSCRIPT: 'subscript',\n  SUPERSCRIPT: 'superscript',\n  SUPERIMPOSE: 'superimpose',\n  TEXT: 'text',\n};\n","'use strict';\n\nmodule.exports = function formatCharge(charge) {\n  if (charge === 1) return '+';\n  if (charge > 1) return `+${charge}`;\n  if (charge < 0) return String(charge);\n  return '';\n};\n","'use strict';\n\nconst Format = require('../Format');\nconst Kind = require('../Kind');\n\nconst formatCharge = require('./formatCharge');\n\n/**\n * Converts an array of mf elements to an array of formatting information\n * @param {Array<Object>} result of the parse method\n */\n\nmodule.exports = function convertForDisplay(lines) {\n  let results = [];\n  let result = {};\n  for (let line of lines) {\n    switch (line.kind) {\n      case Kind.MULTIPLIER:\n        if (line.value !== 1) {\n          result = {\n            kind: Format.SUBSCRIPT,\n            value: String(line.value),\n          };\n          results.push(result);\n        }\n        break;\n      case Kind.MULTIPLIER_RANGE:\n        result = {\n          kind: Format.SUBSCRIPT,\n          value: `${String(line.value.from)}-${line.value.to}`,\n        };\n        results.push(result);\n        break;\n      case Kind.CHARGE:\n        if (result.kind === Format.SUBSCRIPT) {\n          result.kind = Format.SUPERIMPOSE;\n          result.over = formatCharge(line.value);\n          result.under = result.value;\n          result.value = undefined;\n        } else {\n          result = {\n            kind: Format.SUPERSCRIPT,\n            value: formatCharge(line.value),\n          };\n          results.push(result);\n        }\n\n        break;\n\n      case Kind.ISOTOPE:\n        result = {\n          kind: Format.SUPERSCRIPT,\n          value: line.value.isotope,\n        };\n        results.push(result);\n        result = {\n          kind: Format.TEXT,\n          value: line.value.atom,\n        };\n        results.push(result);\n        break;\n\n      case Kind.ISOTOPE_RATIO:\n        if (result.kind === Format.TEXT) {\n          result.value += line.value.atom;\n        } else {\n          result = {\n            kind: Format.TEXT,\n            value: line.value.atom,\n          };\n          results.push(result);\n        }\n        result = {\n          kind: Format.SUPERSCRIPT,\n          value: `{${line.value.ratio.join(',')}}`,\n        };\n        results.push(result);\n        break;\n      case Kind.SALT:\n        if (result.kind === Format.TEXT) {\n          result.value += ' • ';\n        } else {\n          result = {\n            kind: Format.TEXT,\n            value: ' • ',\n          };\n          results.push(result);\n        }\n        break;\n      default:\n        if (result.kind === Format.TEXT) {\n          result.value += line.value;\n        } else {\n          result = {\n            kind: Format.TEXT,\n            value: line.value,\n          };\n          results.push(result);\n        }\n    }\n  }\n  return results;\n};\n","'use strict';\n\nmodule.exports = {\n  SUPERIMPOSE:\n    'flex-direction: column;display: inline-flex;justify-content: center;text-align: left;vertical-align: middle;',\n  SUPERIMPOSE_SUP_SUB: 'line-height: 1; font-size: 70%',\n};\n","'use strict';\n\nconst Format = require('../Format');\nconst Style = require('../Style');\n\nmodule.exports = function getHtml(lines) {\n  let html = [];\n  for (let line of lines) {\n    switch (line.kind) {\n      case Format.SUBSCRIPT:\n        html.push(`<sub>${line.value}</sub>`);\n        break;\n      case Format.SUPERSCRIPT:\n        html.push(`<sup>${line.value}</sup>`);\n        break;\n      case Format.SUPERIMPOSE:\n        html.push(`<span style=\"${Style.SUPERIMPOSE}\">`);\n        html.push(\n          `<sup style=\"${Style.SUPERIMPOSE_SUP_SUB}\">${line.over}</sup>`,\n        );\n        html.push(\n          `<sub style=\"${Style.SUPERIMPOSE_SUP_SUB}\">${line.under}</sub>`,\n        );\n        html.push('</span>');\n        break;\n      default:\n        html.push(line.value);\n    }\n  }\n  return html.join('');\n};\n","'use strict';\n\nconst elements = JSON.parse(JSON.stringify(require('./elements.json')));\n\nelements.forEach((element) => {\n  element.isotopes = element.isotopes.filter((i) => i.abundance > 0);\n});\n\nmodule.exports = elements;\n","'use strict';\n\nconst elementsAndStableIsotopes = require('./elementsAndStableIsotopes.js');\n\nlet elementsAndStableIsotopesObject = {};\nelementsAndStableIsotopes.forEach((element) => {\n  elementsAndStableIsotopesObject[element.symbol] = element;\n});\n\nmodule.exports = elementsAndStableIsotopesObject;\n","'use strict';\n\nconst elements = Object.keys(\n  require('chemical-elements/src/elementsAndStableIsotopesObject.js'),\n).sort((a, b) => b.length - a.length);\n\n/**\n * Ensure that the mf has been entered with capital letters and not only lowercase\n * If there is only lowercase we try to capitalize the mf\n * @param {string} mf\n */\n\nfunction capitalize(mf) {\n  for (let i = 0; i < mf.length; i++) {\n    if (mf.charCodeAt(i) > 64 && mf.charCodeAt(i) < 91) {\n      return mf;\n    }\n  }\n  let parts = mf.replace(/([a-z]*)([^a-z]*)/g, '$1 $2 ').split(/ +/);\n  for (let i = 0; i < parts.length; i++) {\n    if (parts[i].match(/^[a-z]$/)) {\n      parts[i] = parts[i].toUpperCase();\n    } else if (parts[i].match(/^[a-z]+$/)) {\n      let newPart = '';\n      for (let j = 0; j < parts[i].length; j++) {\n        let two = parts[i].substr(j, 2);\n        let one = parts[i].charAt(j).toUpperCase();\n        if (\n          ['c', 'h', 'o', 'n'].includes(two.charAt(0)) &&\n          ['h', 'o', 'n'].includes(two.charAt(1))\n        ) {\n          newPart += two.toUpperCase();\n          j++;\n        } else {\n          two = two.charAt(0).toUpperCase() + two.charAt(1);\n          if (elements.includes(two)) {\n            newPart += two;\n            j++;\n          } else {\n            if (elements.includes(one)) {\n              newPart += one;\n            } else {\n              return mf;\n            }\n          }\n        }\n      }\n      parts[i] = newPart;\n    }\n  }\n  return parts.join('');\n}\n\nmodule.exports = capitalize;\n","'use strict';\n\nconst elements = require('./elements.json');\n\nconst data = elements.map((element) => ({\n  number: element.number,\n  symbol: element.symbol,\n  mass: element.mass,\n  name: element.name,\n  monoisotopicMass: element.monoisotopicMass,\n}));\n\nmodule.exports = data;\n","'use strict';\n\nmodule.exports = require('./elements.json');\n","'use strict';\n\nconst elements = require('./elements.json');\n\nlet elementsAndIsotopesObject = {};\nelements.forEach((element) => {\n  elementsAndIsotopesObject[element.symbol] = element;\n});\n\nmodule.exports = elementsAndIsotopesObject;\n","'use strict';\n\nconst elements = require('./elements.js');\n\nlet elementsObject = {};\nelements.forEach((element) => {\n  elementsObject[element.symbol] = element;\n});\n\nmodule.exports = elementsObject;\n","'use strict';\n\nconst { ELECTRON_MASS } = require('./constants');\nconst elements = require('./elements.js');\nconst elementsAndIsotopes = require('./elementsAndIsotopes.js');\nconst elementsAndIsotopesObject = require('./elementsAndIsotopesObject.js');\nconst elementsAndStableIsotopes = require('./elementsAndStableIsotopes.js');\nconst elementsAndStableIsotopesObject = require('./elementsAndStableIsotopesObject.js');\nconst elementsObject = require('./elementsObject.js');\n\nmodule.exports = {\n  elements,\n  elementsObject,\n  elementsAndIsotopes,\n  elementsAndIsotopesObject,\n  elementsAndStableIsotopes,\n  elementsAndStableIsotopesObject,\n  ELECTRON_MASS,\n};\n","'use strict';\nmodule.exports={\"Abu\":{\"name\":\"2-Aminobutyric acid diradical\",\"mf\":\"C4H7NO\",\"kind\":\"\",\"ocl\":{\"value\":\"dazHPBPOEgEInVZjcH@\",\"coordinates\":\"!Bb@I~@Ha}_c~H@m]}bGt\"},\"mass\":85.10463700109551,\"monoisotopicMass\":85.05276384961,\"unsaturation\":2,\"elements\":[{\"symbol\":\"C\",\"number\":4},{\"symbol\":\"H\",\"number\":7},{\"symbol\":\"N\",\"number\":1},{\"symbol\":\"O\",\"number\":1}]},\"Acet\":{\"name\":\"Acetyl\",\"mf\":\"C2H3O\",\"kind\":\"\",\"ocl\":{\"value\":\"gCaHDEeIi`@\",\"coordinates\":\"!BbOq~@Ha}\"},\"mass\":43.04469897995611,\"monoisotopicMass\":43.01838971626,\"unsaturation\":1,\"elements\":[{\"symbol\":\"C\",\"number\":2},{\"symbol\":\"H\",\"number\":3},{\"symbol\":\"O\",\"number\":1}]},\"Acm\":{\"name\":\"Acetamidomethyl\",\"mf\":\"C3H6NO\",\"kind\":\"\",\"ocl\":{\"value\":\"gGYHDPliJuS@@\",\"coordinates\":\"!BbOrH_Xc|_`BH_P\"},\"mass\":72.08596035030448,\"monoisotopicMass\":72.04493881738,\"unsaturation\":1,\"elements\":[{\"symbol\":\"C\",\"number\":3},{\"symbol\":\"H\",\"number\":6},{\"symbol\":\"N\",\"number\":1},{\"symbol\":\"O\",\"number\":1}]},\"Adao\":{\"name\":\"Adamantyloxy\",\"mf\":\"C10H15O\",\"kind\":\"\",\"ocl\":{\"value\":\"dc\\\\H`HAYRVeV^dUGZjjjj@@\",\"coordinates\":\"!B]BOXN`EP}CdB\\\\tbZ@Ijh~hRELdOBBp\"},\"mass\":151.2258752025074,\"monoisotopicMass\":151.11229010302,\"unsaturation\":5,\"elements\":[{\"symbol\":\"C\",\"number\":10},{\"symbol\":\"H\",\"number\":15},{\"symbol\":\"O\",\"number\":1}]},\"Aib\":{\"name\":\"alpha-Aminoisobutyric acid diradical\",\"mf\":\"C4H7NO\",\"kind\":\"\",\"ocl\":{\"value\":\"dazHPBPOGgEInfZj@@\",\"coordinates\":\"!Bb@I~@Ha}b@K|uwwWbGt\"},\"mass\":85.10463700109551,\"monoisotopicMass\":85.05276384961,\"unsaturation\":2,\"elements\":[{\"symbol\":\"C\",\"number\":4},{\"symbol\":\"H\",\"number\":7},{\"symbol\":\"N\",\"number\":1},{\"symbol\":\"O\",\"number\":1}]},\"Ala\":{\"name\":\"Alanine diradical\",\"mf\":\"C3H5NO\",\"kind\":\"aa\",\"oneLetter\":\"A\",\"alternativeOneLetter\":\"α\",\"ocl\":{\"value\":\"gNyDBaxmqR[fZjZ@\",\"coordinates\":\"!Bb@I~@Hb}b@I~Oxa}\"},\"mass\":71.07801959624871,\"monoisotopicMass\":71.03711378515,\"unsaturation\":2,\"elements\":[{\"symbol\":\"C\",\"number\":3},{\"symbol\":\"H\",\"number\":5},{\"symbol\":\"N\",\"number\":1},{\"symbol\":\"O\",\"number\":1}]},\"Arg\":{\"name\":\"Arginine diradical\",\"mf\":\"C6H12N4O\",\"kind\":\"aa\",\"oneLetter\":\"R\",\"alternativeOneLetter\":\"ρ\",\"ocl\":{\"value\":\"dkLhPBgSPOEgEInWUijjihr@@\",\"coordinates\":\"!Bb@I~@Ha}_c~H@m]}bGvHHa}b@I~@Ha}\"},\"mass\":156.18592219918227,\"monoisotopicMass\":156.10111102405,\"unsaturation\":4,\"elements\":[{\"symbol\":\"C\",\"number\":6},{\"symbol\":\"H\",\"number\":12},{\"symbol\":\"N\",\"number\":4},{\"symbol\":\"O\",\"number\":1}]},\"Argp\":{\"name\":\"Arginine triradical\",\"mf\":\"C6H11N4O\",\"kind\":\"\",\"ocl\":{\"value\":\"dglhpHpil@gWDEI[UYZfjji`T@\",\"coordinates\":\"!BbGvHGx@bGvH@ha}bOrH_Wxb@KW_Wx@bGt\"},\"mass\":155.1779814451265,\"monoisotopicMass\":155.09328599182,\"unsaturation\":5,\"elements\":[{\"symbol\":\"C\",\"number\":6},{\"symbol\":\"H\",\"number\":11},{\"symbol\":\"N\",\"number\":4},{\"symbol\":\"O\",\"number\":1}]},\"Asn\":{\"name\":\"Asparagine diradical\",\"mf\":\"C4H6N2O2\",\"kind\":\"aa\",\"oneLetter\":\"N\",\"alternativeOneLetter\":\"η\",\"ocl\":{\"value\":\"deeDPBeACqYqR[ezZjZL`@\",\"coordinates\":\"!BbGu~Ox`B_`BH_X`Bb@I~@Ha}\"},\"mass\":114.10280438280381,\"monoisotopicMass\":114.04292744137999,\"unsaturation\":4,\"elements\":[{\"symbol\":\"C\",\"number\":4},{\"symbol\":\"H\",\"number\":6},{\"symbol\":\"N\",\"number\":2},{\"symbol\":\"O\",\"number\":2}]},\"Asnp\":{\"name\":\"Asparagine triradical\",\"mf\":\"C4H5N2O2\",\"kind\":\"\",\"ocl\":{\"value\":\"dmUDpH[E@IEqgqRVvVijjXi@@\",\"coordinates\":\"!Bb@JH_Wxb@JH_Wxb@KW_Wx@bGt\"},\"mass\":113.09486362874803,\"monoisotopicMass\":113.03510240915,\"unsaturation\":5,\"elements\":[{\"symbol\":\"C\",\"number\":4},{\"symbol\":\"H\",\"number\":5},{\"symbol\":\"N\",\"number\":2},{\"symbol\":\"O\",\"number\":2}]},\"Asp\":{\"name\":\"Aspartic acid diradical\",\"mf\":\"C4H5NO3\",\"kind\":\"aa\",\"oneLetter\":\"D\",\"alternativeOneLetter\":\"δ\",\"ocl\":{\"value\":\"defLPBPYCqYqR[ezZjZL`@\",\"coordinates\":\"!BbGu~Ox`B_`BH_X`Bb@I~@Ha}\"},\"mass\":115.08756534162052,\"monoisotopicMass\":115.02694302429,\"unsaturation\":4,\"elements\":[{\"symbol\":\"C\",\"number\":4},{\"symbol\":\"H\",\"number\":5},{\"symbol\":\"N\",\"number\":1},{\"symbol\":\"O\",\"number\":3}]},\"Aspp\":{\"name\":\"Aspartic acid triradical\",\"mf\":\"C4H4NO3\",\"kind\":\"\",\"ocl\":{\"value\":\"dmVLpFcE@IEqgqRVvVijjXi@@\",\"coordinates\":\"!Bb@JH_Wxb@JH_Wxb@KW_Wx@bGt\"},\"mass\":114.07962458756472,\"monoisotopicMass\":114.01911799206,\"unsaturation\":5,\"elements\":[{\"symbol\":\"C\",\"number\":4},{\"symbol\":\"H\",\"number\":4},{\"symbol\":\"N\",\"number\":1},{\"symbol\":\"O\",\"number\":3}]},\"Asu\":{\"name\":\"alpha-Aminosuberic acid diradical\",\"mf\":\"C8H13NO3\",\"kind\":\"\",\"ocl\":{\"value\":\"dgnLPBP{CqYqR[euVfjjihr@@\",\"coordinates\":\"!BbGu~Ox`B_`BH_Xc|bOrH_X`BbGvHGx@bGt\"},\"mass\":171.19403496100773,\"monoisotopicMass\":171.08954328213002,\"unsaturation\":4,\"elements\":[{\"symbol\":\"C\",\"number\":8},{\"symbol\":\"H\",\"number\":13},{\"symbol\":\"N\",\"number\":1},{\"symbol\":\"O\",\"number\":3}]},\"Asup\":{\"name\":\"alpha-Aminosuberic acid triradical\",\"mf\":\"C8H12NO3\",\"kind\":\"\",\"ocl\":{\"value\":\"do^LpEcG@IMqoqRVuUejZjjibT@\",\"coordinates\":\"!BbOrH_Wxb@JH_Xc|bGvHHa}_c~H@m]}_`BH_P\"},\"mass\":170.18609420695194,\"monoisotopicMass\":170.0817182499,\"unsaturation\":5,\"elements\":[{\"symbol\":\"C\",\"number\":8},{\"symbol\":\"H\",\"number\":12},{\"symbol\":\"N\",\"number\":1},{\"symbol\":\"O\",\"number\":3}]},\"Boc\":{\"name\":\"t-Butoxycarbonyl\",\"mf\":\"C5H9O2\",\"kind\":\"\",\"ocl\":{\"value\":\"daxD`DpEeImjZj@@\",\"coordinates\":\"!B|Ou~_A||Ow}mC}_O@\"},\"mass\":101.12395611881479,\"monoisotopicMass\":101.06025452921,\"unsaturation\":1,\"elements\":[{\"symbol\":\"C\",\"number\":5},{\"symbol\":\"H\",\"number\":9},{\"symbol\":\"O\",\"number\":2}]},\"Bom\":{\"name\":\"Benzyloxymethyl\",\"mf\":\"C8H9O\",\"kind\":\"\",\"ocl\":{\"value\":\"deTH`DAYRUYTYj`@@@\",\"coordinates\":\"!B|Gsp__A||Owp_Gy|Gwp_Wy\"},\"mass\":121.15675888470227,\"monoisotopicMass\":121.06533990964,\"unsaturation\":7,\"elements\":[{\"symbol\":\"C\",\"number\":8},{\"symbol\":\"H\",\"number\":9},{\"symbol\":\"O\",\"number\":1}]},\"Brz\":{\"name\":\"2-Bromobenzyloxycarbonyl\",\"mf\":\"C8H6BrO2\",\"kind\":\"\",\"ocl\":{\"value\":\"dcLDPDpEd\\\\QImYgWYjB@@@\",\"coordinates\":\"!Bb@I~@Hb}b@JH_X`B_c}~@Hb}bGu~Op\"},\"mass\":214.03586932736317,\"monoisotopicMass\":212.95511703252,\"unsaturation\":9,\"elements\":[{\"symbol\":\"C\",\"number\":8},{\"symbol\":\"H\",\"number\":6},{\"symbol\":\"Br\",\"number\":1},{\"symbol\":\"O\",\"number\":2}]},\"Bu\":{\"name\":\"Butyl\",\"mf\":\"C4H9\",\"kind\":\"\",\"ocl\":{\"value\":\"gJPH@liJuP@\",\"coordinates\":\"!B@Fp@XpAl@FL\"},\"mass\":57.114410373442986,\"monoisotopicMass\":57.07042529007,\"unsaturation\":-1,\"elements\":[{\"symbol\":\"C\",\"number\":4},{\"symbol\":\"H\",\"number\":9}]},\"Bum\":{\"name\":\"t-Butoxymethyl\",\"mf\":\"C5H11O\",\"kind\":\"\",\"ocl\":{\"value\":\"gNqHDEeIVjj`@\",\"coordinates\":\"!B@FL@[@AcXs|@Xvp@\"},\"mass\":87.14043270260808,\"monoisotopicMass\":87.08098997409999,\"unsaturation\":-1,\"elements\":[{\"symbol\":\"C\",\"number\":5},{\"symbol\":\"H\",\"number\":11},{\"symbol\":\"O\",\"number\":1}]},\"Bz\":{\"name\":\"Benzoyl\",\"mf\":\"C7H5O\",\"kind\":\"\",\"ocl\":{\"value\":\"didH`DAYR[e^FX@@@@\",\"coordinates\":\"!BbOq~@Ha}b@I~Oxa}bGu~Op\"},\"mass\":105.1142599717439,\"monoisotopicMass\":105.03403978072,\"unsaturation\":9,\"elements\":[{\"symbol\":\"C\",\"number\":7},{\"symbol\":\"H\",\"number\":5},{\"symbol\":\"O\",\"number\":1}]},\"Bzl\":{\"name\":\"Benzyl\",\"mf\":\"C7H7\",\"kind\":\"\",\"ocl\":{\"value\":\"daD@`@VTeeVz`@@@\",\"coordinates\":\"!B|Gsp_A|_gp_A}_g|\"},\"mass\":91.13073655553718,\"monoisotopicMass\":91.05477522561,\"unsaturation\":7,\"elements\":[{\"symbol\":\"C\",\"number\":7},{\"symbol\":\"H\",\"number\":7}]},\"Bn\":{\"name\":\"Benzyl\",\"mf\":\"C7H7\",\"kind\":\"\",\"ocl\":{\"value\":\"daD@`@VTeeVz`@@@\",\"coordinates\":\"!B|Gsp_A|_gp_A}_g|\"},\"mass\":91.13073655553718,\"monoisotopicMass\":91.05477522561,\"unsaturation\":7,\"elements\":[{\"symbol\":\"C\",\"number\":7},{\"symbol\":\"H\",\"number\":7}]},\"Bzlo\":{\"name\":\"Benzyloxy\",\"mf\":\"C7H7O\",\"kind\":\"\",\"ocl\":{\"value\":\"didH`HAYRUe^Fh@@@@\",\"coordinates\":\"!B|Gwp_OC}|Gq~_A}|Gu~_p\"},\"mass\":107.13014147985547,\"monoisotopicMass\":107.04968984518,\"unsaturation\":7,\"elements\":[{\"symbol\":\"C\",\"number\":7},{\"symbol\":\"H\",\"number\":7},{\"symbol\":\"O\",\"number\":1}]},\"Cha\":{\"name\":\"beta-Cyclohexylalanine diradical\",\"mf\":\"C9H15NO\",\"kind\":\"\",\"ocl\":{\"value\":\"dknHPBPOEgEInWe]NZjjjcH@\",\"coordinates\":\"!Bb@I~@Ha}_c~H@m]}bGvH@gxbGvH_Wx\"},\"mass\":153.22184251721796,\"monoisotopicMass\":153.11536410745,\"unsaturation\":4,\"elements\":[{\"symbol\":\"C\",\"number\":9},{\"symbol\":\"H\",\"number\":15},{\"symbol\":\"N\",\"number\":1},{\"symbol\":\"O\",\"number\":1}]},\"Chxo\":{\"name\":\"Cyclohexyloxy\",\"mf\":\"C6H11O\",\"kind\":\"\",\"ocl\":{\"value\":\"daDH`HAYRVU[jjj@@\",\"coordinates\":\"!B|Gsp_A|_gp_A}_g|\"},\"mass\":99.15116859934332,\"monoisotopicMass\":99.08098997409999,\"unsaturation\":1,\"elements\":[{\"symbol\":\"C\",\"number\":6},{\"symbol\":\"H\",\"number\":11},{\"symbol\":\"O\",\"number\":1}]},\"Cit\":{\"name\":\"Citrulline diradical\",\"mf\":\"C6H11N3O2\",\"kind\":\"\",\"ocl\":{\"value\":\"dkODPBdttOEgEInWUijjihr@@\",\"coordinates\":\"!Bb@I~@Ha}_c~H@m]}bGvHHa}b@I~@Ha}\"},\"mass\":157.170683157999,\"monoisotopicMass\":157.08512660696,\"unsaturation\":4,\"elements\":[{\"symbol\":\"C\",\"number\":6},{\"symbol\":\"H\",\"number\":11},{\"symbol\":\"N\",\"number\":3},{\"symbol\":\"O\",\"number\":2}]},\"Citp\":{\"name\":\"Citrulline triradical\",\"mf\":\"C6H10N3O2\",\"kind\":\"\",\"ocl\":{\"value\":\"dgoDpHJ\\\\l@gWDEI[UYZfjji`T@\",\"coordinates\":\"!BbGvHGx@bGvH@ha}bOrH_Wxb@KW_Wx@bGt\"},\"mass\":156.16274240394318,\"monoisotopicMass\":156.07730157473,\"unsaturation\":5,\"elements\":[{\"symbol\":\"C\",\"number\":6},{\"symbol\":\"H\",\"number\":10},{\"symbol\":\"N\",\"number\":3},{\"symbol\":\"O\",\"number\":2}]},\"Clz\":{\"name\":\"2-Chlorobenzyloxycarbonyl\",\"mf\":\"C8H6ClO2\",\"kind\":\"\",\"ocl\":{\"value\":\"dcLDPDpEdXaImYgWYjB@@@\",\"coordinates\":\"!Bb@I~@Hb}b@JH_X`B_c}~@Hb}bGu~Op\"},\"mass\":169.58527912946118,\"monoisotopicMass\":169.00563211451998,\"unsaturation\":9,\"elements\":[{\"symbol\":\"C\",\"number\":8},{\"symbol\":\"H\",\"number\":6},{\"symbol\":\"Cl\",\"number\":1},{\"symbol\":\"O\",\"number\":2}]},\"Cp\":{\"name\":\"Cyclopentadienyl\",\"mf\":\"C5H5\",\"kind\":\"\",\"ocl\":{\"value\":\"gFpH@liLimRp@\",\"coordinates\":\"!B\\\\OtPThyEGl@fP\"},\"mass\":65.09338325395512,\"monoisotopicMass\":65.03912516115,\"unsaturation\":5,\"elements\":[{\"symbol\":\"C\",\"number\":5},{\"symbol\":\"H\",\"number\":5}]},\"Cys\":{\"name\":\"Cysteine diradical\",\"mf\":\"C3H5NOS\",\"kind\":\"aa\",\"oneLetter\":\"C\",\"alternativeOneLetter\":\"ς\",\"ocl\":{\"value\":\"dazHpBPOEgG`aInVZjcH@\",\"coordinates\":\"!Bb@I~@Ha}_c~H@m]}bGt\"},\"mass\":103.14280700237578,\"monoisotopicMass\":103.00918495955,\"unsaturation\":2,\"elements\":[{\"symbol\":\"C\",\"number\":3},{\"symbol\":\"H\",\"number\":5},{\"symbol\":\"N\",\"number\":1},{\"symbol\":\"O\",\"number\":1},{\"symbol\":\"S\",\"number\":1}]},\"Cysp\":{\"name\":\"Cysteine triradical\",\"mf\":\"C3H4NOS\",\"kind\":\"\",\"ocl\":{\"value\":\"diFHHBD@f@agGoEIVVjjfLP@\",\"coordinates\":\"!BbGvHHa}_c~HM]}_`BH_P\"},\"mass\":102.13486624831998,\"monoisotopicMass\":102.00135992732,\"unsaturation\":3,\"elements\":[{\"symbol\":\"C\",\"number\":3},{\"symbol\":\"H\",\"number\":4},{\"symbol\":\"N\",\"number\":1},{\"symbol\":\"O\",\"number\":1},{\"symbol\":\"S\",\"number\":1}]},\"D\":{\"name\":\"Deuterium\",\"mf\":\"[2H]\",\"kind\":\"\",\"ocl\":{\"value\":\"eFAAYhBLCEH@\",\"coordinates\":\"!B@FL\"},\"mass\":2.01410177812,\"monoisotopicMass\":2.01410177812,\"unsaturation\":-1,\"elements\":[{\"symbol\":\"H\",\"number\":1,\"isotope\":2}]},\"Dde\":{\"name\":\"Dde\",\"mf\":\"C10H13O2\",\"kind\":\"\",\"ocl\":{\"value\":\"dklD`FDEgHhihicIVZfZj@@\",\"coordinates\":\"!Bb@I~@Ha}upJH@m]}_`BH_Wx@b@I}bOrH\"},\"mass\":165.20939861871415,\"monoisotopicMass\":165.09155465812998,\"unsaturation\":7,\"elements\":[{\"symbol\":\"C\",\"number\":10},{\"symbol\":\"H\",\"number\":13},{\"symbol\":\"O\",\"number\":2}]},\"Dnp\":{\"name\":\"2,4-Dinitrophenyl\",\"mf\":\"C6H3N2O4\",\"kind\":\"\",\"ocl\":{\"value\":\"dkmB`bWatpVRd^VS{HhheEUFfBAbX@@\",\"coordinates\":\"!B_c~H_]]}b@I~Owx_`BH_]]}_c~H_]]}\"},\"mass\":167.09926376274353,\"monoisotopicMass\":167.00928158383,\"unsaturation\":11,\"elements\":[{\"symbol\":\"C\",\"number\":6},{\"symbol\":\"H\",\"number\":3},{\"symbol\":\"N\",\"number\":2},{\"symbol\":\"O\",\"number\":4}]},\"Et\":{\"name\":\"Ethyl\",\"mf\":\"C2H5\",\"kind\":\"\",\"ocl\":{\"value\":\"eMBAYRZ@\",\"coordinates\":\"!B@Fp@Xp\"},\"mass\":29.061175563749384,\"monoisotopicMass\":29.03912516115,\"unsaturation\":-1,\"elements\":[{\"symbol\":\"C\",\"number\":2},{\"symbol\":\"H\",\"number\":5}]},\"Fmoc\":{\"name\":\"Fluorenylmethoxycarbonyl\",\"mf\":\"C15H11O2\",\"kind\":\"\",\"ocl\":{\"value\":\"fde@b@DX@liMkLrjxeVCzLuT@@@P@@@\",\"coordinates\":\"!BbOq~@Ha}bOrH_]ARcm}Tv~i`pAeKv|@fpB[j[~iozfAKvp\"},\"mass\":223.24719659427882,\"monoisotopicMass\":223.07590459367,\"unsaturation\":19,\"elements\":[{\"symbol\":\"C\",\"number\":15},{\"symbol\":\"H\",\"number\":11},{\"symbol\":\"O\",\"number\":2}]},\"For\":{\"name\":\"Formyl\",\"mf\":\"CHO\",\"kind\":\"\",\"ocl\":{\"value\":\"eMJDVTfP@\",\"coordinates\":\"!B@Fp@Xp\"},\"mass\":29.018081575109303,\"monoisotopicMass\":29.0027396518,\"unsaturation\":1,\"elements\":[{\"symbol\":\"C\",\"number\":1},{\"symbol\":\"H\",\"number\":1},{\"symbol\":\"O\",\"number\":1}]},\"Gln\":{\"name\":\"Glutamine diradical\",\"mf\":\"C5H8N2O2\",\"kind\":\"aa\",\"oneLetter\":\"Q\",\"alternativeOneLetter\":\"ξ\",\"ocl\":{\"value\":\"dmUDPBUICqYqR[evfjihr@@\",\"coordinates\":\"!Bb@I~@Ha}_c~H@m]}bGvHGx@bGt\"},\"mass\":128.12942178765059,\"monoisotopicMass\":128.05857750584,\"unsaturation\":4,\"elements\":[{\"symbol\":\"C\",\"number\":5},{\"symbol\":\"H\",\"number\":8},{\"symbol\":\"N\",\"number\":2},{\"symbol\":\"O\",\"number\":2}]},\"Glnp\":{\"name\":\"Glutamine triradical\",\"mf\":\"C5H7N2O2\",\"kind\":\"\",\"ocl\":{\"value\":\"dcuDpH{MAYeqWqRVuejZjiad@\",\"coordinates\":\"!BbGvHGx@bGvH@ha}_c~HM]}_`BH_P\"},\"mass\":127.12148103359483,\"monoisotopicMass\":127.05075247361,\"unsaturation\":5,\"elements\":[{\"symbol\":\"C\",\"number\":5},{\"symbol\":\"H\",\"number\":7},{\"symbol\":\"N\",\"number\":2},{\"symbol\":\"O\",\"number\":2}]},\"Glp\":{\"name\":\"Pyroglutamine\",\"mf\":\"C5H5NO2\",\"kind\":\"\",\"ocl\":{\"value\":\"deVDPBRP|V\\\\TfygxYjjZL`@\",\"coordinates\":\"!Bb@I~@Ha}tEJNwr[@UMo@FXBN\"},\"mass\":111.09889631403748,\"monoisotopicMass\":111.03202840472,\"unsaturation\":6,\"elements\":[{\"symbol\":\"C\",\"number\":5},{\"symbol\":\"H\",\"number\":5},{\"symbol\":\"N\",\"number\":1},{\"symbol\":\"O\",\"number\":2}]},\"Glu\":{\"name\":\"Glutamic acid diradical\",\"mf\":\"C5H7NO3\",\"kind\":\"aa\",\"oneLetter\":\"E\",\"alternativeOneLetter\":\"ε\",\"ocl\":{\"value\":\"dmVLPBRUCqYqR[evfjihr@@\",\"coordinates\":\"!Bb@I~@Ha}_c~H@m]}bGvHGx@bGt\"},\"mass\":129.11418274646732,\"monoisotopicMass\":129.04259308875,\"unsaturation\":4,\"elements\":[{\"symbol\":\"C\",\"number\":5},{\"symbol\":\"H\",\"number\":7},{\"symbol\":\"N\",\"number\":1},{\"symbol\":\"O\",\"number\":3}]},\"Glup\":{\"name\":\"Glutamic acid triradical\",\"mf\":\"C5H6NO3\",\"kind\":\"\",\"ocl\":{\"value\":\"dcvLpNcM@IeqWqRVuejZjiad@\",\"coordinates\":\"!BbGvHGx@bGvH@ha}_c~HM]}_`BH_P\"},\"mass\":128.10624199241153,\"monoisotopicMass\":128.03476805652002,\"unsaturation\":5,\"elements\":[{\"symbol\":\"C\",\"number\":5},{\"symbol\":\"H\",\"number\":6},{\"symbol\":\"N\",\"number\":1},{\"symbol\":\"O\",\"number\":3}]},\"Gly\":{\"name\":\"Glycine diradical\",\"mf\":\"C2H3NO\",\"kind\":\"aa\",\"oneLetter\":\"G\",\"alternativeOneLetter\":\"γ\",\"ocl\":{\"value\":\"gGYDBaxuqR[Yj@@\",\"coordinates\":\"!BbOq~@Ha}bOrH_P\"},\"mass\":57.051402191401905,\"monoisotopicMass\":57.021463720689994,\"unsaturation\":2,\"elements\":[{\"symbol\":\"C\",\"number\":2},{\"symbol\":\"H\",\"number\":3},{\"symbol\":\"N\",\"number\":1},{\"symbol\":\"O\",\"number\":1}]},\"Hci\":{\"name\":\"Homocitrulline diradical\",\"mf\":\"C7H13N3O2\",\"kind\":\"\",\"ocl\":{\"value\":\"dgoDPBVtLOEgEInWUZZjjfcH@\",\"coordinates\":\"!BbGu~Ox`B_`BH_Xc|bOrH_X`BbGvHGx@bGt\"},\"mass\":171.19730056284578,\"monoisotopicMass\":171.10077667142,\"unsaturation\":4,\"elements\":[{\"symbol\":\"C\",\"number\":7},{\"symbol\":\"H\",\"number\":13},{\"symbol\":\"N\",\"number\":3},{\"symbol\":\"O\",\"number\":2}]},\"Hcip\":{\"name\":\"Homocitrulline triradical\",\"mf\":\"C7H12N3O2\",\"kind\":\"\",\"ocl\":{\"value\":\"do_DpHI\\\\\\\\EdwFEI[UVVijjjfIP@\",\"coordinates\":\"!BbOrH_Wxb@JH_Xc|bGvHHa}_c~H@m]}_`BH_P\"},\"mass\":170.18935980879002,\"monoisotopicMass\":170.09295163918998,\"unsaturation\":5,\"elements\":[{\"symbol\":\"C\",\"number\":7},{\"symbol\":\"H\",\"number\":12},{\"symbol\":\"N\",\"number\":3},{\"symbol\":\"O\",\"number\":2}]},\"His\":{\"name\":\"Histidine diradical\",\"mf\":\"C6H7N3O\",\"kind\":\"aa\",\"oneLetter\":\"H\",\"alternativeOneLetter\":\"ζ\",\"ocl\":{\"value\":\"dcOHPBGTCqYqR[eyUvZjejL`@\",\"coordinates\":\"!Bb@I~@Ha}_c~H@m]}bGwPTh{_UMo@FP\"},\"mass\":137.13951521745759,\"monoisotopicMass\":137.05891185847,\"unsaturation\":8,\"elements\":[{\"symbol\":\"C\",\"number\":6},{\"symbol\":\"H\",\"number\":7},{\"symbol\":\"N\",\"number\":3},{\"symbol\":\"O\",\"number\":1}]},\"Hisp\":{\"name\":\"Histidine triradical\",\"mf\":\"C6H6N3O\",\"kind\":\"\",\"ocl\":{\"value\":\"dkoHpHHSAYUqwqRY]YXjjVjihy@@\",\"coordinates\":\"!BTmA}bL@fUHRN`H`BbGu~Ox`Buwu~@Ha}\"},\"mass\":136.13157446340182,\"monoisotopicMass\":136.05108682624,\"unsaturation\":9,\"elements\":[{\"symbol\":\"C\",\"number\":6},{\"symbol\":\"H\",\"number\":6},{\"symbol\":\"N\",\"number\":3},{\"symbol\":\"O\",\"number\":1}]},\"Hser\":{\"name\":\"Homoserine diradical\",\"mf\":\"C4H7NO2\",\"kind\":\"\",\"ocl\":{\"value\":\"diFDPBPP|V\\\\Tfy^Zjhr@@\",\"coordinates\":\"!BbGu~Ox`B_`BH_X`Bb@JH_P\"},\"mass\":101.10404192541378,\"monoisotopicMass\":101.04767846918,\"unsaturation\":2,\"elements\":[{\"symbol\":\"C\",\"number\":4},{\"symbol\":\"H\",\"number\":7},{\"symbol\":\"N\",\"number\":1},{\"symbol\":\"O\",\"number\":2}]},\"Hserp\":{\"name\":\"Homoserine triradical\",\"mf\":\"C4H6NO2\",\"kind\":\"\",\"ocl\":{\"value\":\"defDpJbPV^\\\\Q|TeVVjji`d@\",\"coordinates\":\"!Bb@JH_X`BbGu~Oxc|uwu~@Ha}\"},\"mass\":100.09610117135801,\"monoisotopicMass\":100.03985343695001,\"unsaturation\":3,\"elements\":[{\"symbol\":\"C\",\"number\":4},{\"symbol\":\"H\",\"number\":6},{\"symbol\":\"N\",\"number\":1},{\"symbol\":\"O\",\"number\":2}]},\"Hyp\":{\"name\":\"Hydroxyproline diradical\",\"mf\":\"C5H7NO2\",\"kind\":\"\",\"ocl\":{\"value\":\"deVDPBRP|V\\\\\\\\bfbbOCMUUIdE@@\",\"coordinates\":\"!Bb@I~@Ha}tEJNwr[@UMo@FUJO\"},\"mass\":113.11477782214904,\"monoisotopicMass\":113.04767846918,\"unsaturation\":4,\"elements\":[{\"symbol\":\"C\",\"number\":5},{\"symbol\":\"H\",\"number\":7},{\"symbol\":\"N\",\"number\":1},{\"symbol\":\"O\",\"number\":2}]},\"Hypp\":{\"name\":\"Hydroxyproline triradical\",\"mf\":\"C5H6NO2\",\"kind\":\"\",\"ocl\":{\"value\":\"dmvDpJaPB^\\\\Y|TeeWjZjjidRL`@\",\"coordinates\":\"!BBOpH_UARcc}TNtBY@HyRSpCQDr\\\\\"},\"mass\":112.10683706809326,\"monoisotopicMass\":112.03985343695001,\"unsaturation\":5,\"elements\":[{\"symbol\":\"C\",\"number\":5},{\"symbol\":\"H\",\"number\":6},{\"symbol\":\"N\",\"number\":1},{\"symbol\":\"O\",\"number\":2}]},\"Ile\":{\"name\":\"Isoleucine diradical\",\"mf\":\"C6H11NO\",\"kind\":\"aa\",\"oneLetter\":\"I\",\"alternativeOneLetter\":\"ι\",\"ocl\":{\"value\":\"defHPBPOEgEInVyjjdrT`@\",\"coordinates\":\"!BbGu~Oxc|_`BH_Xc|b@I~Oxa}\"},\"mass\":113.15787181078912,\"monoisotopicMass\":113.08406397853,\"unsaturation\":2,\"elements\":[{\"symbol\":\"C\",\"number\":6},{\"symbol\":\"H\",\"number\":11},{\"symbol\":\"N\",\"number\":1},{\"symbol\":\"O\",\"number\":1}]},\"Ivdde\":{\"name\":\"1-[4,4-dimethyl-2,6-dioxocyclohexylidene)-3-methylbutyl\",\"mf\":\"C13H19O2\",\"kind\":\"\",\"ocl\":{\"value\":\"f`a@b@NR@lyEEDhhigEVfjYjj`@@\",\"coordinates\":\"!BbOq~@Ha}urHGxuwu~@Ha}_`CW_Xa}bOq}b@JH\"},\"mass\":207.28925083325453,\"monoisotopicMass\":207.13850485151,\"unsaturation\":7,\"elements\":[{\"symbol\":\"C\",\"number\":13},{\"symbol\":\"H\",\"number\":19},{\"symbol\":\"O\",\"number\":2}]},\"Leu\":{\"name\":\"Leucine diradical\",\"mf\":\"C6H11NO\",\"kind\":\"aa\",\"oneLetter\":\"L\",\"alternativeOneLetter\":\"λ\",\"ocl\":{\"value\":\"defHPBPOEgEInWijjhr@@\",\"coordinates\":\"!BbGu~Ox`B_`BH_X`Bb@I~@Ha}\"},\"mass\":113.15787181078912,\"monoisotopicMass\":113.08406397853,\"unsaturation\":2,\"elements\":[{\"symbol\":\"C\",\"number\":6},{\"symbol\":\"H\",\"number\":11},{\"symbol\":\"N\",\"number\":1},{\"symbol\":\"O\",\"number\":1}]},\"Lys\":{\"name\":\"Lysine diradical\",\"mf\":\"C6H12N2O\",\"kind\":\"aa\",\"oneLetter\":\"K\",\"alternativeOneLetter\":\"κ\",\"ocl\":{\"value\":\"dmUHPBU@|V\\\\Tfy]YjjjL`@\",\"coordinates\":\"!BbGu~Ox`B_`BHoX`Bb@JH_X`BbKt\"},\"mass\":128.17251577629068,\"monoisotopicMass\":128.09496301519,\"unsaturation\":2,\"elements\":[{\"symbol\":\"C\",\"number\":6},{\"symbol\":\"H\",\"number\":12},{\"symbol\":\"N\",\"number\":2},{\"symbol\":\"O\",\"number\":1}]},\"Lysp\":{\"name\":\"Lysine triradical\",\"mf\":\"C6H11N2O\",\"kind\":\"\",\"ocl\":{\"value\":\"dcuHpH{PVY\\\\U|TeUYZjjjXY@@\",\"coordinates\":\"!Bb@JH_X`BbGvH@ha}_c~H@m]}_`BH_P\"},\"mass\":127.16457502223491,\"monoisotopicMass\":127.08713798295999,\"unsaturation\":3,\"elements\":[{\"symbol\":\"C\",\"number\":6},{\"symbol\":\"H\",\"number\":11},{\"symbol\":\"N\",\"number\":2},{\"symbol\":\"O\",\"number\":1}]},\"Mbh\":{\"name\":\"4,4'-Dimethoxybenzhydryl\",\"mf\":\"C15H15O2\",\"kind\":\"\",\"ocl\":{\"value\":\"fdy@b@G^@liLsJkzlcZmT@@@UP@@@\",\"coordinates\":\"!BbGvHGx_`BH_Xa}uwvHHc|_c}~Oxa}uwvHGxbGwW_P\"},\"mass\":227.27895961050194,\"monoisotopicMass\":227.10720472258998,\"unsaturation\":15,\"elements\":[{\"symbol\":\"C\",\"number\":15},{\"symbol\":\"H\",\"number\":15},{\"symbol\":\"O\",\"number\":2}]},\"Me\":{\"name\":\"Methyl\",\"mf\":\"CH3\",\"kind\":\"\",\"ocl\":{\"value\":\"eFBAYc@@\",\"coordinates\":\"!B@FL\"},\"mass\":15.03455815890258,\"monoisotopicMass\":15.02347509669,\"unsaturation\":-1,\"elements\":[{\"symbol\":\"C\",\"number\":1},{\"symbol\":\"H\",\"number\":3}]},\"Mebzl\":{\"name\":\"4-Methylbenzyl\",\"mf\":\"C8H9\",\"kind\":\"\",\"ocl\":{\"value\":\"did@`@VTee]nh@H@@\",\"coordinates\":\"!B|Gsp__A|_gp_C}_gp_P\"},\"mass\":105.15735396038399,\"monoisotopicMass\":105.07042529007,\"unsaturation\":7,\"elements\":[{\"symbol\":\"C\",\"number\":8},{\"symbol\":\"H\",\"number\":9}]},\"Meobzl\":{\"name\":\"4-Methoxybenzyl\",\"mf\":\"C8H9O\",\"kind\":\"\",\"ocl\":{\"value\":\"deTH`AAYRVUunh@J@@\",\"coordinates\":\"!B|Gsp__A|_gp_A}_gp_Wy\"},\"mass\":121.15675888470227,\"monoisotopicMass\":121.06533990964,\"unsaturation\":7,\"elements\":[{\"symbol\":\"C\",\"number\":8},{\"symbol\":\"H\",\"number\":9},{\"symbol\":\"O\",\"number\":1}]},\"Met\":{\"name\":\"Methionine diradical\",\"mf\":\"C5H9NOS\",\"kind\":\"aa\",\"oneLetter\":\"M\",\"alternativeOneLetter\":\"μ\",\"ocl\":{\"value\":\"defHpBPOEgDPaInWYjjhr@@\",\"coordinates\":\"!Bb@I~@Ha}_c~H@m]}bGvHHa}\"},\"mass\":131.19604181206938,\"monoisotopicMass\":131.04048508847,\"unsaturation\":2,\"elements\":[{\"symbol\":\"C\",\"number\":5},{\"symbol\":\"H\",\"number\":9},{\"symbol\":\"N\",\"number\":1},{\"symbol\":\"O\",\"number\":1},{\"symbol\":\"S\",\"number\":1}]},\"Mmt\":{\"name\":\"4-Methoxytrityl\",\"mf\":\"C20H17O\",\"kind\":\"\",\"ocl\":{\"value\":\"ffcAB@B`V\\\\bdTTTRRRVvIhnRGMT@@@@AP@@@\",\"coordinates\":\"!BbKvHM^}_c}~@Hb}dXWHb}j|nHHc|AqOWoWxJV^Ho]\\\\BuwvHHb}\"},\"mass\":273.3491156779715,\"monoisotopicMass\":273.12794016748,\"unsaturation\":23,\"elements\":[{\"symbol\":\"C\",\"number\":20},{\"symbol\":\"H\",\"number\":17},{\"symbol\":\"O\",\"number\":1}]},\"Mtc\":{\"name\":\"2,2,5,7,8-pentamethylchroman-6-sulphonyl\",\"mf\":\"C14H19O3S\",\"kind\":\"\",\"ocl\":{\"value\":\"fleAa@DX\\\\AY`DYEHXhhilmiKW`rpDQUUD@@\",\"coordinates\":\"!BbGtBbGwWbGvHGxbGu~@Ha}uwu~Ox`B_c~H_Xa}b@H@_osW\"},\"mass\":267.36417906043516,\"monoisotopicMass\":267.10549064548,\"unsaturation\":9,\"elements\":[{\"symbol\":\"C\",\"number\":14},{\"symbol\":\"H\",\"number\":19},{\"symbol\":\"O\",\"number\":3},{\"symbol\":\"S\",\"number\":1}]},\"Mtr\":{\"name\":\"4-Methoxy-2,3,6-trimethylbenzenesulphonyl\",\"mf\":\"C10H13O3S\",\"kind\":\"\",\"ocl\":{\"value\":\"do|LPDrpVXBLbdLTTTngYXBHj@@\",\"coordinates\":\"!BbOq}b@KWb@I~@Ha}bOsWHc|_c~H_Wx@b@JH_P\"},\"mass\":213.27359094915948,\"monoisotopicMass\":213.05854045209998,\"unsaturation\":7,\"elements\":[{\"symbol\":\"C\",\"number\":10},{\"symbol\":\"H\",\"number\":13},{\"symbol\":\"O\",\"number\":3},{\"symbol\":\"S\",\"number\":1}]},\"Mts\":{\"name\":\"Mesitylene-2-sulphonyl\",\"mf\":\"C9H11O2S\",\"kind\":\"\",\"ocl\":{\"value\":\"d@\",\"coordinates\":\"\"},\"mass\":183.24756861999438,\"monoisotopicMass\":183.04797576807,\"unsaturation\":7,\"elements\":[{\"symbol\":\"C\",\"number\":9},{\"symbol\":\"H\",\"number\":11},{\"symbol\":\"O\",\"number\":2},{\"symbol\":\"S\",\"number\":1}]},\"Mtt\":{\"name\":\"4-Methyltrityl\",\"mf\":\"C20H17\",\"kind\":\"\",\"ocl\":{\"value\":\"d@\",\"coordinates\":\"\"},\"mass\":257.3497107536532,\"monoisotopicMass\":257.13302554791,\"unsaturation\":23,\"elements\":[{\"symbol\":\"C\",\"number\":20},{\"symbol\":\"H\",\"number\":17}]},\"Nle\":{\"name\":\"Norleucine diradical\",\"mf\":\"C6H11NO\",\"kind\":\"\",\"ocl\":{\"value\":\"defHPBPOEgEInWYjjhr@@\",\"coordinates\":\"!Bb@I~@Ha}_c~H@m]}bGvHHa}\"},\"mass\":113.15787181078912,\"monoisotopicMass\":113.08406397853,\"unsaturation\":2,\"elements\":[{\"symbol\":\"C\",\"number\":6},{\"symbol\":\"H\",\"number\":11},{\"symbol\":\"N\",\"number\":1},{\"symbol\":\"O\",\"number\":1}]},\"Npys\":{\"name\":\"3-Nitro-2-pyridinesulphenyl\",\"mf\":\"C5H3N2O2S\",\"kind\":\"\",\"ocl\":{\"value\":\"d@\",\"coordinates\":\"\"},\"mass\":155.1545054234988,\"monoisotopicMass\":154.99152351908998,\"unsaturation\":9,\"elements\":[{\"symbol\":\"C\",\"number\":5},{\"symbol\":\"H\",\"number\":3},{\"symbol\":\"N\",\"number\":2},{\"symbol\":\"O\",\"number\":2},{\"symbol\":\"S\",\"number\":1}]},\"Nva\":{\"name\":\"Norvaline diradical\",\"mf\":\"C5H9NO\",\"kind\":\"\",\"ocl\":{\"value\":\"diFHPBPOEgEInWfjjL`@\",\"coordinates\":\"!BbGu~Ox`B_`BH_X`Bb@JH_P\"},\"mass\":99.13125440594231,\"monoisotopicMass\":99.06841391407,\"unsaturation\":2,\"elements\":[{\"symbol\":\"C\",\"number\":5},{\"symbol\":\"H\",\"number\":9},{\"symbol\":\"N\",\"number\":1},{\"symbol\":\"O\",\"number\":1}]},\"Odmab\":{\"name\":\"Odmab\",\"mf\":\"C20H26NO3\",\"kind\":\"\",\"ocl\":{\"value\":\"d@\",\"coordinates\":\"\"},\"mass\":328.4260955245558,\"monoisotopicMass\":328.19126870111995,\"unsaturation\":15,\"elements\":[{\"symbol\":\"C\",\"number\":20},{\"symbol\":\"H\",\"number\":26},{\"symbol\":\"N\",\"number\":1},{\"symbol\":\"O\",\"number\":3}]},\"Orn\":{\"name\":\"Ornithine diradical\",\"mf\":\"C5H10N2O\",\"kind\":\"\",\"ocl\":{\"value\":\"deeHPBe@|V\\\\Tfy]fjjcH@\",\"coordinates\":\"!Bb@I~@Ha}_c~H@m]}bGvHHa}\"},\"mass\":114.14589837144388,\"monoisotopicMass\":114.07931295072999,\"unsaturation\":2,\"elements\":[{\"symbol\":\"C\",\"number\":5},{\"symbol\":\"H\",\"number\":10},{\"symbol\":\"N\",\"number\":2},{\"symbol\":\"O\",\"number\":1}]},\"Ornp\":{\"name\":\"Ornithine triradical\",\"mf\":\"C5H9N2O\",\"kind\":\"\",\"ocl\":{\"value\":\"dmUHpHYPBQ\\\\Y|TeUejjjfJP@\",\"coordinates\":\"!BbGvHHa}b@JH_Wxb@KW_Wx@bGt\"},\"mass\":113.13795761738811,\"monoisotopicMass\":113.0714879185,\"unsaturation\":3,\"elements\":[{\"symbol\":\"C\",\"number\":5},{\"symbol\":\"H\",\"number\":9},{\"symbol\":\"N\",\"number\":2},{\"symbol\":\"O\",\"number\":1}]},\"Pbf\":{\"name\":\"2,2,4,6,7-pentamethyldihydrobenzofurane-5-sulfonyl\",\"mf\":\"C13H17O3S\",\"kind\":\"\",\"ocl\":{\"value\":\"d@\",\"coordinates\":\"\"},\"mass\":253.33756165558833,\"monoisotopicMass\":253.08984058101998,\"unsaturation\":9,\"elements\":[{\"symbol\":\"C\",\"number\":13},{\"symbol\":\"H\",\"number\":17},{\"symbol\":\"O\",\"number\":3},{\"symbol\":\"S\",\"number\":1}]},\"Pen\":{\"name\":\"Penicillamine diradical\",\"mf\":\"C5H9NOS\",\"kind\":\"\",\"ocl\":{\"value\":\"d@\",\"coordinates\":\"\"},\"mass\":131.19604181206938,\"monoisotopicMass\":131.04048508847,\"unsaturation\":2,\"elements\":[{\"symbol\":\"C\",\"number\":5},{\"symbol\":\"H\",\"number\":9},{\"symbol\":\"N\",\"number\":1},{\"symbol\":\"O\",\"number\":1},{\"symbol\":\"S\",\"number\":1}]},\"Penp\":{\"name\":\"Penicillamine triradical\",\"mf\":\"C5H8NOS\",\"kind\":\"\",\"ocl\":{\"value\":\"d@\",\"coordinates\":\"\"},\"mass\":130.1881010580136,\"monoisotopicMass\":130.03266005624,\"unsaturation\":3,\"elements\":[{\"symbol\":\"C\",\"number\":5},{\"symbol\":\"H\",\"number\":8},{\"symbol\":\"N\",\"number\":1},{\"symbol\":\"O\",\"number\":1},{\"symbol\":\"S\",\"number\":1}]},\"Ph\":{\"name\":\"Phenyl\",\"mf\":\"C6H5\",\"kind\":\"\",\"ocl\":{\"value\":\"gOpH@liLkW@@@@\",\"coordinates\":\"!B|Owp_Gy|OwpWy\"},\"mass\":77.10411915069038,\"monoisotopicMass\":77.03912516115,\"unsaturation\":7,\"elements\":[{\"symbol\":\"C\",\"number\":6},{\"symbol\":\"H\",\"number\":5}]},\"Phe\":{\"name\":\"Phenylalanine diradical\",\"mf\":\"C9H9NO\",\"kind\":\"aa\",\"oneLetter\":\"F\",\"alternativeOneLetter\":\"φ\",\"ocl\":{\"value\":\"dknHPBPOEgEInWe]NZj@@cH@\",\"coordinates\":\"!Bb@I~@Ha}_c~H@m]}bGvH@gxbGvH_Wx\"},\"mass\":147.1741979928833,\"monoisotopicMass\":147.06841391407002,\"unsaturation\":10,\"elements\":[{\"symbol\":\"C\",\"number\":9},{\"symbol\":\"H\",\"number\":9},{\"symbol\":\"N\",\"number\":1},{\"symbol\":\"O\",\"number\":1}]},\"Phepcl\":{\"name\":\"4-Chlorophenylalanine diradical\",\"mf\":\"C9H8ClNO\",\"kind\":\"\",\"ocl\":{\"value\":\"dg^HpBPOEgFxaInWe_Sfj`@bL`@\",\"coordinates\":\"!BbOq~@Ha}_c~H@m]}bGvH@gxbGvH_WxbGt\"},\"mass\":181.6191948214355,\"monoisotopicMass\":181.02944156384,\"unsaturation\":10,\"elements\":[{\"symbol\":\"C\",\"number\":9},{\"symbol\":\"H\",\"number\":8},{\"symbol\":\"Cl\",\"number\":1},{\"symbol\":\"N\",\"number\":1},{\"symbol\":\"O\",\"number\":1}]},\"Phg\":{\"name\":\"Phenylglycine\",\"mf\":\"C8H7NO\",\"kind\":\"\",\"ocl\":{\"value\":\"dcNHPBPOEgEInVuWYj`@Hr@@\",\"coordinates\":\"!BbOq~@Ha}b@I~Oxa}bGwW_Wx_cW_P\"},\"mass\":133.1475805880365,\"monoisotopicMass\":133.05276384961002,\"unsaturation\":10,\"elements\":[{\"symbol\":\"C\",\"number\":8},{\"symbol\":\"H\",\"number\":7},{\"symbol\":\"N\",\"number\":1},{\"symbol\":\"O\",\"number\":1}]},\"Pmc\":{\"name\":\"2,2,5,7,8-Pentamethylchroman-6-sulphonyl\",\"mf\":\"C14H19O3S\",\"kind\":\"\",\"ocl\":{\"value\":\"d@\",\"coordinates\":\"\"},\"mass\":267.36417906043516,\"monoisotopicMass\":267.10549064548,\"unsaturation\":9,\"elements\":[{\"symbol\":\"C\",\"number\":14},{\"symbol\":\"H\",\"number\":19},{\"symbol\":\"O\",\"number\":3},{\"symbol\":\"S\",\"number\":1}]},\"Pro\":{\"name\":\"Proline diradical\",\"mf\":\"C5H7NO\",\"kind\":\"aa\",\"oneLetter\":\"P\",\"alternativeOneLetter\":\"π\",\"ocl\":{\"value\":\"difHPBPOEgEInYxYjjhr@@\",\"coordinates\":\"!Bb@I~@Ha}tEJNwr[@UMo@FP\"},\"mass\":97.11537289783075,\"monoisotopicMass\":97.05276384961,\"unsaturation\":4,\"elements\":[{\"symbol\":\"C\",\"number\":5},{\"symbol\":\"H\",\"number\":7},{\"symbol\":\"N\",\"number\":1},{\"symbol\":\"O\",\"number\":1}]},\"Pyr\":{\"name\":\"Pyroglutamine\",\"mf\":\"C5H5NO2\",\"kind\":\"\",\"ocl\":{\"value\":\"deVDPBRP|V\\\\TfygxYjjZL`@\",\"coordinates\":\"!Bb@I~@Ha}tEJNwr[@UMo@FXBN\"},\"mass\":111.09889631403748,\"monoisotopicMass\":111.03202840472,\"unsaturation\":6,\"elements\":[{\"symbol\":\"C\",\"number\":5},{\"symbol\":\"H\",\"number\":5},{\"symbol\":\"N\",\"number\":1},{\"symbol\":\"O\",\"number\":2}]},\"Sar\":{\"name\":\"Sarcosine diradical\",\"mf\":\"C3H5NO\",\"kind\":\"\",\"ocl\":{\"value\":\"d@\",\"coordinates\":\"\"},\"mass\":71.07801959624871,\"monoisotopicMass\":71.03711378515,\"unsaturation\":2,\"elements\":[{\"symbol\":\"C\",\"number\":3},{\"symbol\":\"H\",\"number\":5},{\"symbol\":\"N\",\"number\":1},{\"symbol\":\"O\",\"number\":1}]},\"Ser\":{\"name\":\"Serine diradical\",\"mf\":\"C3H5NO2\",\"kind\":\"aa\",\"oneLetter\":\"S\",\"alternativeOneLetter\":\"σ\",\"ocl\":{\"value\":\"dazDPBS`|V\\\\TfyYjjL`@\",\"coordinates\":\"!Bb@I~@Ha}_c~H@m]}bGt\"},\"mass\":87.07742452056698,\"monoisotopicMass\":87.03202840472,\"unsaturation\":2,\"elements\":[{\"symbol\":\"C\",\"number\":3},{\"symbol\":\"H\",\"number\":5},{\"symbol\":\"N\",\"number\":1},{\"symbol\":\"O\",\"number\":2}]},\"Serp\":{\"name\":\"Serine triradical\",\"mf\":\"C3H4NO2\",\"kind\":\"\",\"ocl\":{\"value\":\"diFDpB`PBV\\\\^|TeYZjjXq@@\",\"coordinates\":\"!BbGvHHa}_c~HM]}_`BH_P\"},\"mass\":86.06948376651121,\"monoisotopicMass\":86.02420337249,\"unsaturation\":3,\"elements\":[{\"symbol\":\"C\",\"number\":3},{\"symbol\":\"H\",\"number\":4},{\"symbol\":\"N\",\"number\":1},{\"symbol\":\"O\",\"number\":2}]},\"Sta\":{\"name\":\"Statine diradical\",\"mf\":\"C8H15NO2\",\"kind\":\"\",\"ocl\":{\"value\":\"d@\",\"coordinates\":\"\"},\"mass\":157.210511544801,\"monoisotopicMass\":157.11027872702002,\"unsaturation\":2,\"elements\":[{\"symbol\":\"C\",\"number\":8},{\"symbol\":\"H\",\"number\":15},{\"symbol\":\"N\",\"number\":1},{\"symbol\":\"O\",\"number\":2}]},\"Stap\":{\"name\":\"Statine triradical\",\"mf\":\"C8H14NO2\",\"kind\":\"\",\"ocl\":{\"value\":\"d@\",\"coordinates\":\"\"},\"mass\":156.2025707907452,\"monoisotopicMass\":156.10245369479,\"unsaturation\":3,\"elements\":[{\"symbol\":\"C\",\"number\":8},{\"symbol\":\"H\",\"number\":14},{\"symbol\":\"N\",\"number\":1},{\"symbol\":\"O\",\"number\":2}]},\"Tacm\":{\"name\":\"Trimethylacetamidomethyl\",\"mf\":\"C6H12NO\",\"kind\":\"\",\"ocl\":{\"value\":\"d@\",\"coordinates\":\"\"},\"mass\":114.16581256484488,\"monoisotopicMass\":114.09188901076,\"unsaturation\":1,\"elements\":[{\"symbol\":\"C\",\"number\":6},{\"symbol\":\"H\",\"number\":12},{\"symbol\":\"N\",\"number\":1},{\"symbol\":\"O\",\"number\":1}]},\"Tbdms\":{\"name\":\"t-Butyldimethylsilyl\",\"mf\":\"C6H15Si\",\"kind\":\"\",\"ocl\":{\"value\":\"d@\",\"coordinates\":\"\"},\"mass\":115.2690253969541,\"monoisotopicMass\":115.09430201810001,\"unsaturation\":1,\"elements\":[{\"symbol\":\"C\",\"number\":6},{\"symbol\":\"H\",\"number\":15},{\"symbol\":\"Si\",\"number\":1}]},\"Tbu\":{\"name\":\"t-Butyl\",\"mf\":\"C4H9\",\"kind\":\"\",\"ocl\":{\"value\":\"d@\",\"coordinates\":\"\"},\"mass\":57.114410373442986,\"monoisotopicMass\":57.07042529007,\"unsaturation\":-1,\"elements\":[{\"symbol\":\"C\",\"number\":4},{\"symbol\":\"H\",\"number\":9}]},\"Tbuo\":{\"name\":\"t-Butoxy\",\"mf\":\"C4H9O\",\"kind\":\"\",\"ocl\":{\"value\":\"d@\",\"coordinates\":\"\"},\"mass\":73.11381529776126,\"monoisotopicMass\":73.06533990964,\"unsaturation\":-1,\"elements\":[{\"symbol\":\"C\",\"number\":4},{\"symbol\":\"H\",\"number\":9},{\"symbol\":\"O\",\"number\":1}]},\"Tbuthio\":{\"name\":\"t-Butylthio\",\"mf\":\"C4H9S\",\"kind\":\"\",\"ocl\":{\"value\":\"d@\",\"coordinates\":\"\"},\"mass\":89.17919777957005,\"monoisotopicMass\":89.04249646446999,\"unsaturation\":-1,\"elements\":[{\"symbol\":\"C\",\"number\":4},{\"symbol\":\"H\",\"number\":9},{\"symbol\":\"S\",\"number\":1}]},\"Tfa\":{\"name\":\"Trifluoroacetyl\",\"mf\":\"C2F3O\",\"kind\":\"\",\"ocl\":{\"value\":\"d@\",\"coordinates\":\"\"},\"mass\":97.01608620597878,\"monoisotopicMass\":96.99012410776,\"unsaturation\":1,\"elements\":[{\"symbol\":\"C\",\"number\":2},{\"symbol\":\"F\",\"number\":3},{\"symbol\":\"O\",\"number\":1}]},\"Thr\":{\"name\":\"Threonine diradical\",\"mf\":\"C4H7NO2\",\"kind\":\"aa\",\"oneLetter\":\"T\",\"alternativeOneLetter\":\"τ\",\"ocl\":{\"value\":\"d@\",\"coordinates\":\"\"},\"mass\":101.10404192541378,\"monoisotopicMass\":101.04767846918,\"unsaturation\":2,\"elements\":[{\"symbol\":\"C\",\"number\":4},{\"symbol\":\"H\",\"number\":7},{\"symbol\":\"N\",\"number\":1},{\"symbol\":\"O\",\"number\":2}]},\"Thrp\":{\"name\":\"Threonine triradical\",\"mf\":\"C4H6NO2\",\"kind\":\"\",\"ocl\":{\"value\":\"d@\",\"coordinates\":\"\"},\"mass\":100.09610117135801,\"monoisotopicMass\":100.03985343695001,\"unsaturation\":3,\"elements\":[{\"symbol\":\"C\",\"number\":4},{\"symbol\":\"H\",\"number\":6},{\"symbol\":\"N\",\"number\":1},{\"symbol\":\"O\",\"number\":2}]},\"Tfsi\":{\"name\":\"(Bis)(trifluoromethanesulfonyl)imide\",\"mf\":\"C2F6NO4S2\",\"kind\":\"\",\"ocl\":{\"value\":\"d@\",\"coordinates\":\"\"},\"mass\":280.1457884908235,\"monoisotopicMass\":279.91729380789,\"unsaturation\":-1,\"elements\":[{\"symbol\":\"C\",\"number\":2},{\"symbol\":\"F\",\"number\":6},{\"symbol\":\"N\",\"number\":1},{\"symbol\":\"O\",\"number\":4},{\"symbol\":\"S\",\"number\":2}]},\"Tips\":{\"name\":\"Triisopropylsilyl\",\"mf\":\"C9H21Si\",\"kind\":\"\",\"ocl\":{\"value\":\"dmT@P@VX\\\\DffYjjjh@@\",\"coordinates\":\"!B_a@gHb\\\\]FBIuWxP^zi~KwxPFAt\"},\"mass\":157.34887761149452,\"monoisotopicMass\":157.14125221148,\"unsaturation\":1,\"elements\":[{\"symbol\":\"C\",\"number\":9},{\"symbol\":\"H\",\"number\":21},{\"symbol\":\"Si\",\"number\":1}]},\"Tms\":{\"name\":\"Trimethylsilyl\",\"mf\":\"C3H9Si\",\"kind\":\"\",\"ocl\":{\"value\":\"gJPD@lqpRZj`@\",\"coordinates\":\"!BbOq~@GxbGt\"},\"mass\":73.1891731824137,\"monoisotopicMass\":73.04735182472,\"unsaturation\":1,\"elements\":[{\"symbol\":\"C\",\"number\":3},{\"symbol\":\"H\",\"number\":9},{\"symbol\":\"Si\",\"number\":1}]},\"Tos\":{\"name\":\"Tosyl\",\"mf\":\"C7H7O2S\",\"kind\":\"\",\"ocl\":{\"value\":\"dmtDPDpEf@cHiCDeafV@B@@\",\"coordinates\":\"!B|Ou||Ovw|Gwp_Gy|GwpWy|Gt\"},\"mass\":155.1943338103008,\"monoisotopicMass\":155.01667563914998,\"unsaturation\":7,\"elements\":[{\"symbol\":\"C\",\"number\":7},{\"symbol\":\"H\",\"number\":7},{\"symbol\":\"O\",\"number\":2},{\"symbol\":\"S\",\"number\":1}]},\"Trp\":{\"name\":\"Tryptophan diradical\",\"mf\":\"C11H10N2O\",\"kind\":\"aa\",\"oneLetter\":\"W\",\"alternativeOneLetter\":\"ω\",\"ocl\":{\"value\":\"f`qQA@BFPCqXxiMr|rnhsoSUTa@QCD@@\",\"coordinates\":\"!BbOq~@Ha}_c~H@m]}bGwPTh{_UMojXL@YpB[@Ini`\"},\"mass\":186.21031375185538,\"monoisotopicMass\":186.07931295073,\"unsaturation\":14,\"elements\":[{\"symbol\":\"C\",\"number\":11},{\"symbol\":\"H\",\"number\":10},{\"symbol\":\"N\",\"number\":2},{\"symbol\":\"O\",\"number\":1}]},\"Trpp\":{\"name\":\"Tryptophan triradical\",\"mf\":\"C11H9N2O\",\"kind\":\"\",\"ocl\":{\"value\":\"fhiQC@HFB@I\\\\x~|TfYU_ebLDjhDHjibFd@\",\"coordinates\":\"!BTmA}bL@fUHR_Ihz@iVBeXHc|grZH_WxbOsW_Wx@bGt\"},\"mass\":185.20237299779959,\"monoisotopicMass\":185.07148791850003,\"unsaturation\":15,\"elements\":[{\"symbol\":\"C\",\"number\":11},{\"symbol\":\"H\",\"number\":9},{\"symbol\":\"N\",\"number\":2},{\"symbol\":\"O\",\"number\":1}]},\"Trt\":{\"name\":\"Trityl\",\"mf\":\"C19H15\",\"kind\":\"\",\"ocl\":{\"value\":\"fbm@B@@KJSSLrjkyhnRGMT@@@@@@@@\",\"coordinates\":\"!BrHI~PGy_rMvW@l`BQCvWw\\\\bBAg}~PGy@]i}~W|c]cNwH`i_]_e|\"},\"mass\":243.32309334880637,\"monoisotopicMass\":243.11737548345,\"unsaturation\":23,\"elements\":[{\"symbol\":\"C\",\"number\":19},{\"symbol\":\"H\",\"number\":15}]},\"Tyr\":{\"name\":\"Tyrosine diradical\",\"mf\":\"C9H9NO2\",\"kind\":\"aa\",\"oneLetter\":\"Y\",\"alternativeOneLetter\":\"ψ\",\"ocl\":{\"value\":\"dg^DPBRp|V\\\\Tfy^U}NZj@BHr@@\",\"coordinates\":\"!BbOq~@Ha}_c~H@m]}bGvH@gxbGvH_WxbGt\"},\"mass\":163.1736029172016,\"monoisotopicMass\":163.06332853364,\"unsaturation\":10,\"elements\":[{\"symbol\":\"C\",\"number\":9},{\"symbol\":\"H\",\"number\":9},{\"symbol\":\"N\",\"number\":1},{\"symbol\":\"O\",\"number\":2}]},\"Tyrp\":{\"name\":\"Tyrosine triradical\",\"mf\":\"C9H8NO2\",\"kind\":\"\",\"ocl\":{\"value\":\"do~DpEapBS\\\\[|Tee]YYnh@JjdbT@\",\"coordinates\":\"!B_`BHGx@bGvH@h`BbKvH@ha}_c~H@m]}_`BHoP\"},\"mass\":162.16566216314578,\"monoisotopicMass\":162.05550350141,\"unsaturation\":11,\"elements\":[{\"symbol\":\"C\",\"number\":9},{\"symbol\":\"H\",\"number\":8},{\"symbol\":\"N\",\"number\":1},{\"symbol\":\"O\",\"number\":2}]},\"Val\":{\"name\":\"Valine\",\"mf\":\"C5H9NO\",\"kind\":\"aa\",\"oneLetter\":\"V\",\"alternativeOneLetter\":\"ν\",\"ocl\":{\"value\":\"diFHPBPOEgEInVfjjL`@\",\"coordinates\":\"!Bb@I~@Ha}_c~H@m]}_`BH_P\"},\"mass\":99.13125440594231,\"monoisotopicMass\":99.06841391407,\"unsaturation\":2,\"elements\":[{\"symbol\":\"C\",\"number\":5},{\"symbol\":\"H\",\"number\":9},{\"symbol\":\"N\",\"number\":1},{\"symbol\":\"O\",\"number\":1}]},\"Valoh\":{\"name\":\"beta-Hydroxyvaline diradical\",\"mf\":\"C5H9NO2\",\"kind\":\"\",\"ocl\":{\"value\":\"defDPBS`|V\\\\TfyZfjjcH@\",\"coordinates\":\"!Bb@I~@Ha}b@I~Oxa}Owy~OpA~\"},\"mass\":115.13065933026058,\"monoisotopicMass\":115.06332853364,\"unsaturation\":2,\"elements\":[{\"symbol\":\"C\",\"number\":5},{\"symbol\":\"H\",\"number\":9},{\"symbol\":\"N\",\"number\":1},{\"symbol\":\"O\",\"number\":2}]},\"Valohp\":{\"name\":\"beta-Hydroxyvaline triradical\",\"mf\":\"C5H8NO2\",\"kind\":\"\",\"ocl\":{\"value\":\"dmVDpFaPBQ\\\\Y|\\\\bTbaTjjjXq@@\",\"coordinates\":\"!BbGvHHa}_Xc|bGxb@KW_Wx@bGt\"},\"mass\":114.1227185762048,\"monoisotopicMass\":114.05550350141002,\"unsaturation\":3,\"elements\":[{\"symbol\":\"C\",\"number\":5},{\"symbol\":\"H\",\"number\":8},{\"symbol\":\"N\",\"number\":1},{\"symbol\":\"O\",\"number\":2}]},\"Xan\":{\"name\":\"Xanthyl\",\"mf\":\"C13H9O\",\"kind\":\"\",\"ocl\":{\"value\":\"d@\",\"coordinates\":\"\"},\"mass\":181.21043836837848,\"monoisotopicMass\":181.06533990964002,\"unsaturation\":17,\"elements\":[{\"symbol\":\"C\",\"number\":13},{\"symbol\":\"H\",\"number\":9},{\"symbol\":\"O\",\"number\":1}]},\"Xle\":{\"name\":\"Leucine or Isoleucine diradical\",\"mf\":\"C6H11NO\",\"kind\":\"aa\",\"oneLetter\":\"J\",\"mass\":113.15787181078912,\"monoisotopicMass\":113.08406397853,\"unsaturation\":2,\"elements\":[{\"symbol\":\"C\",\"number\":6},{\"symbol\":\"H\",\"number\":11},{\"symbol\":\"N\",\"number\":1},{\"symbol\":\"O\",\"number\":1}]},\"Z\":{\"name\":\"Benzyloxycarbonyl\",\"mf\":\"C8H7O2\",\"kind\":\"\",\"ocl\":{\"value\":\"dmtD`DpEeImYVUfh@@@@\",\"coordinates\":\"!Bb@I~@Ha}b@JH_Xc|_c~H_Xa}_c|\"},\"mass\":135.14028230090898,\"monoisotopicMass\":135.04460446475,\"unsaturation\":9,\"elements\":[{\"symbol\":\"C\",\"number\":8},{\"symbol\":\"H\",\"number\":7},{\"symbol\":\"O\",\"number\":2}]},\"Damp\":{\"name\":\"Desoxyadenosine monophosphate diradical\",\"mf\":\"C10H12N5O5P\",\"kind\":\"DNAp\",\"oneLetter\":\"A\",\"alternativeOneLetter\":\"α\",\"ocl\":{\"value\":\"fnsiS@IASUlJB]xGbkplxyDhhldhiEEUeSdTekUUUULBATXPlKd@@\",\"coordinates\":\"!Bqc}{JxyO|XoSWC}W]poGQ\\\\Ou}]rmx\\\\Ou}]{qpza|qb}MJwlk^sFO|X\"},\"mass\":313.2069506932622,\"monoisotopicMass\":313.05760550518,\"unsaturation\":14,\"elements\":[{\"symbol\":\"C\",\"number\":10},{\"symbol\":\"H\",\"number\":12},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":5},{\"symbol\":\"P\",\"number\":1}]},\"Dcmp\":{\"name\":\"Desoxycytidine monophosphate diradical\",\"mf\":\"C9H12N3O6P\",\"kind\":\"DNAp\",\"oneLetter\":\"C\",\"alternativeOneLetter\":\"ς\",\"ocl\":{\"value\":\"fjmps@IQKB`g^BCqUxV\\\\\\\\bTTVRTTbb^iqNZjjjifVkBEa\\\\`@\",\"coordinates\":\"!Bqc}{JxyO|XoSWA}_W]poGQ\\\\GuMKuMh\\\\Gu}]{qpSF]tWQTvatP\"},\"mass\":289.18221329795364,\"monoisotopicMass\":289.04637211589,\"unsaturation\":10,\"elements\":[{\"symbol\":\"C\",\"number\":9},{\"symbol\":\"H\",\"number\":12},{\"symbol\":\"N\",\"number\":3},{\"symbol\":\"O\",\"number\":6},{\"symbol\":\"P\",\"number\":1}]},\"Dgmp\":{\"name\":\"Desoxyguanosine monophosphate diradical\",\"mf\":\"C10H12N5O6P\",\"kind\":\"DNAp\",\"oneLetter\":\"G\",\"alternativeOneLetter\":\"γ\",\"ocl\":{\"value\":\"fakhs@IASUlJB]{hOEWaYqrIQQYIQRJJkQTyEIZuUUUSRtsUaBpnP@\",\"coordinates\":\"!Bqc}{JxyO|XoSWA}W]poGQ\\\\Gu}]rmx\\\\Ou}]{qpza|qb}MJwlk^sFza|q`\"},\"mass\":329.20635561758047,\"monoisotopicMass\":329.05252012475,\"unsaturation\":14,\"elements\":[{\"symbol\":\"C\",\"number\":10},{\"symbol\":\"H\",\"number\":12},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":6},{\"symbol\":\"P\",\"number\":1}]},\"Dtmp\":{\"name\":\"Desoxythymidine monophosphate diradical\",\"mf\":\"C10H13N2O7P\",\"kind\":\"DNAp\",\"oneLetter\":\"T\",\"alternativeOneLetter\":\"τ\",\"ocl\":{\"value\":\"ff}Qs@IQaPSoAjCqUxV\\\\\\\\bTTVRTTbbZUNIsUUUULsSVDKBy@@\",\"coordinates\":\"!Bqc}{JxyO|XoSWC}_W]poGQ\\\\GuMKuMh\\\\Gu}]{qpSF]tWQTvaSZGQ\"},\"mass\":304.1935916616171,\"monoisotopicMass\":304.04603776326,\"unsaturation\":10,\"elements\":[{\"symbol\":\"C\",\"number\":10},{\"symbol\":\"H\",\"number\":13},{\"symbol\":\"N\",\"number\":2},{\"symbol\":\"O\",\"number\":7},{\"symbol\":\"P\",\"number\":1}]},\"Dump\":{\"name\":\"Desoxyuridine monophosphate diradical\",\"mf\":\"C9H11N2O7P\",\"kind\":\"DNAp\",\"oneLetter\":\"U\",\"alternativeOneLetter\":\"υ\",\"ocl\":{\"value\":\"fjmQs@IQaPSoAJCqUxV\\\\\\\\bTTVRTTbb^iqNZjjjifYkBEa\\\\`@\",\"coordinates\":\"!Bqc}{JxyO|XoSWA}_W]poGQ\\\\GuMKuMh\\\\Gu}]{qpSF]tWQTvatP\"},\"mass\":290.1669742567703,\"monoisotopicMass\":290.0303876988,\"unsaturation\":10,\"elements\":[{\"symbol\":\"C\",\"number\":9},{\"symbol\":\"H\",\"number\":11},{\"symbol\":\"N\",\"number\":2},{\"symbol\":\"O\",\"number\":7},{\"symbol\":\"P\",\"number\":1}]},\"Drmp\":{\"name\":\"Desoxyribose monophosphate diradical\",\"mf\":\"C5H7O5P\",\"kind\":\"DNAp\",\"ocl\":{\"value\":\"d@\",\"coordinates\":\"\"},\"mass\":178.08005138207807,\"monoisotopicMass\":178.00311032188,\"unsaturation\":4,\"elements\":[{\"symbol\":\"C\",\"number\":5},{\"symbol\":\"H\",\"number\":7},{\"symbol\":\"O\",\"number\":5},{\"symbol\":\"P\",\"number\":1}]},\"Dadp\":{\"name\":\"Desoxyadenosine diphosphate diradical\",\"mf\":\"C10H13N5O8P2\",\"kind\":\"DNApp\",\"oneLetter\":\"A\",\"ocl\":{\"value\":\"fmwhH`IASM\\\\JBl{wQ`|U^F_AkbdlsjsSOoRtyEMYuUUUM@pSEQaBpnP@\",\"coordinates\":\"!BIi[Rx{_grZOSXa}_]^H@mQbGu}utnDM^HGwWzf~_Ih}M_`AKvto[_`@_`A~grZ_I`\"},\"mass\":393.1868682186928,\"monoisotopicMass\":393.02393639454,\"unsaturation\":14,\"elements\":[{\"symbol\":\"C\",\"number\":10},{\"symbol\":\"H\",\"number\":13},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":8},{\"symbol\":\"P\",\"number\":2}]},\"Dcdp\":{\"name\":\"Desoxycytidine diphosphate diradical\",\"mf\":\"C9H13N3O9P2\",\"kind\":\"DNApp\",\"oneLetter\":\"C\",\"ocl\":{\"value\":\"fikqH`IQGB`kN|EoP^JoCOaUqrIQQYIQRJKGRJgDejjjjZYfZkBEa\\\\`@\",\"coordinates\":\"!BIi[Rx{_grZOSXa}_]^H@mQbGuMcqLX@m^H@gwWKB__t]Q_`@SFGx@Owx@_mQ\"},\"mass\":369.16213082338425,\"monoisotopicMass\":369.01270300525005,\"unsaturation\":10,\"elements\":[{\"symbol\":\"C\",\"number\":9},{\"symbol\":\"H\",\"number\":13},{\"symbol\":\"N\",\"number\":3},{\"symbol\":\"O\",\"number\":9},{\"symbol\":\"P\",\"number\":2}]},\"Dgdp\":{\"name\":\"Desoxyguanosine diphosphate diradical\",\"mf\":\"C10H13N5O9P2\",\"kind\":\"DNApp\",\"oneLetter\":\"G\",\"ocl\":{\"value\":\"fcoiH`IASM\\\\JBl{wQ{Axj|L~CWEIYgUff_^fZ\\\\bflzjjjfiZifZlHVEr@@\",\"coordinates\":\"!BIi[Rx{_grZOSXa}_]^H@mQbGu}utnD@m^H@gwWzf~_Ih}M_`AKvto[_`@_`A~gr[j[y|f\"},\"mass\":409.186273143011,\"monoisotopicMass\":409.01885101411,\"unsaturation\":14,\"elements\":[{\"symbol\":\"C\",\"number\":10},{\"symbol\":\"H\",\"number\":13},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":9},{\"symbol\":\"P\",\"number\":2}]},\"Dtdp\":{\"name\":\"Desoxythymidine diphosphate diradical\",\"mf\":\"C10H14N2O10P2\",\"kind\":\"DNApp\",\"oneLetter\":\"T\",\"ocl\":{\"value\":\"fe{Ph`IQaPUg^Ct\\\\p^JoCO`uqrIQQYIQRJKEJQTxdmUUUSSMTsVDKBy@@\",\"coordinates\":\"!BIi[Rx{_grZOSXa}_]^HMQbGuMcqLX@m^H@gwWKB__t]Q_`@SFALX_`@_`A~w}D\"},\"mass\":384.1735091870477,\"monoisotopicMass\":384.01236865262,\"unsaturation\":10,\"elements\":[{\"symbol\":\"C\",\"number\":10},{\"symbol\":\"H\",\"number\":14},{\"symbol\":\"N\",\"number\":2},{\"symbol\":\"O\",\"number\":10},{\"symbol\":\"P\",\"number\":2}]},\"Dudp\":{\"name\":\"Desoxyuridine diphosphate diradical\",\"mf\":\"C9H12N2O10P2\",\"kind\":\"DNApp\",\"oneLetter\":\"U\",\"ocl\":{\"value\":\"fikPh`IQaPUg^Bwhp^JoCOaUqrIQQYIQRJKGRJgDejjjjZYjYkBEa\\\\`@\",\"coordinates\":\"!BIi[Rx{_grZOSXa}_]^H@mQbGuMcqLX@m^H@gwWKB__t]Q_`@SFGx@Owx@_mQ\"},\"mass\":370.1468917822009,\"monoisotopicMass\":369.99671858816,\"unsaturation\":10,\"elements\":[{\"symbol\":\"C\",\"number\":9},{\"symbol\":\"H\",\"number\":12},{\"symbol\":\"N\",\"number\":2},{\"symbol\":\"O\",\"number\":10},{\"symbol\":\"P\",\"number\":2}]},\"Datp\":{\"name\":\"Desoxyadenosine triphosphate diradical\",\"mf\":\"C10H14N5O11P3\",\"kind\":\"DNAppp\",\"oneLetter\":\"A\",\"ocl\":{\"value\":\"eohZMJ@I@diehJAKGOFnakg`OESpr|Mo@yqrIQQYIQRJKYZQKVRcbIJjZjjjihFAhjZcAAXKb@@\",\"coordinates\":\"!BIi[Rx{_grZOSXa}_]^H@mQbGu}utnDM^H@gwWzf~_Ih}M_`AKvto[@hcW@`A~grZ_Igx@_`@@_c}~\"},\"mass\":473.16678574412344,\"monoisotopicMass\":472.9902672839,\"unsaturation\":14,\"elements\":[{\"symbol\":\"C\",\"number\":10},{\"symbol\":\"H\",\"number\":14},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":11},{\"symbol\":\"P\",\"number\":3}]},\"Dctp\":{\"name\":\"Desoxycytidine triphosphate diradical\",\"mf\":\"C9H14N3O12P3\",\"kind\":\"DNAppp\",\"oneLetter\":\"C\",\"ocl\":{\"value\":\"fkopZ`IQGB`kN|Fk^{NCqUxY|I~BwGHeEEdeEHhl]HlYJ\\\\RVjjjiifVjfkBEa\\\\`@\",\"coordinates\":\"!BIi[Rx{_grZOSXa}_]^H@mQbGuMcqLX@m^H@gwWKB__t]Q_`@SFOrHupH@_mQ_`A~@@A~Owx\"},\"mass\":449.14204834881485,\"monoisotopicMass\":448.97903389461004,\"unsaturation\":10,\"elements\":[{\"symbol\":\"C\",\"number\":9},{\"symbol\":\"H\",\"number\":14},{\"symbol\":\"N\",\"number\":3},{\"symbol\":\"O\",\"number\":12},{\"symbol\":\"P\",\"number\":3}]},\"Dgtp\":{\"name\":\"Desoxyguanosine triphosphate diradical\",\"mf\":\"C10H14N5O12P3\",\"kind\":\"DNAppp\",\"oneLetter\":\"G\",\"ocl\":{\"value\":\"e`TZCJ@I@diehJAKGOFnamgo`OESpr|CoByqrIQQYIQRJKYZQQYrT\\\\QIUSUUUUMRuMLtuVBBpWD@@\",\"coordinates\":\"!BIi[Rx{_grZOSXa}_]^H@mQbGu}utnD@m^H@gwWzf~_Ih}M_`AKvto[@hcW@`A~gr[j[y|f_`A~@@A~Owx\"},\"mass\":489.16619066844174,\"monoisotopicMass\":488.98518190347005,\"unsaturation\":14,\"elements\":[{\"symbol\":\"C\",\"number\":10},{\"symbol\":\"H\",\"number\":14},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":12},{\"symbol\":\"P\",\"number\":3}]},\"Dttp\":{\"name\":\"Desoxythymidine triphosphate diradical\",\"mf\":\"C10H15N2O13P3\",\"kind\":\"DNAppp\",\"oneLetter\":\"T\",\"ocl\":{\"value\":\"fgQZ`IQaPUg^BwhygnCqUxY|E~FwGHeEEdeEHhlTiDSISbRuUUUMLuMMMVDKBy@@\",\"coordinates\":\"!BIi[Rx{_grZOSXa}_]^H@mQbGuMcqLX@m^H@gwWKB__t]Q_`@SFALXHcW@`A~w}E~@Gx@@Gx_`\"},\"mass\":464.15342671247834,\"monoisotopicMass\":463.97869954198,\"unsaturation\":10,\"elements\":[{\"symbol\":\"C\",\"number\":10},{\"symbol\":\"H\",\"number\":15},{\"symbol\":\"N\",\"number\":2},{\"symbol\":\"O\",\"number\":13},{\"symbol\":\"P\",\"number\":3}]},\"Dutp\":{\"name\":\"Desoxyuridine triphosphate diradical\",\"mf\":\"C9H13N2O13P3\",\"kind\":\"DNAppp\",\"oneLetter\":\"U\",\"ocl\":{\"value\":\"fkoQZ`IQaPUg^CUoQ{NCqUxY|I~BwGHeEEdeEHhl]HlYJ\\\\RVjjjiiffffkBEa\\\\`@\",\"coordinates\":\"!BIi[Rx{_grZOSXa}_]^H@mQbGuMcqLX@m^H@gwWKB__t]Q_`@SFOrHupH@_mQ_`A~@@A~Owx\"},\"mass\":450.1268093076315,\"monoisotopicMass\":449.96304947752,\"unsaturation\":10,\"elements\":[{\"symbol\":\"C\",\"number\":9},{\"symbol\":\"H\",\"number\":13},{\"symbol\":\"N\",\"number\":2},{\"symbol\":\"O\",\"number\":13},{\"symbol\":\"P\",\"number\":3}]},\"Dade\":{\"name\":\"Desoxyadenosine diradical\",\"mf\":\"C10H11N5O2\",\"kind\":\"DNA\",\"oneLetter\":\"A\",\"ocl\":{\"value\":\"fluha@IF]ELJ@|QNJRsN|rntyYpXuUUTBATXPlKd@@\",\"coordinates\":\"!B\\\\KqpQARcg|T^|X@@Id`zeHo@Ie}]vaLcg|T^qAMDDvN_xy\"},\"mass\":233.22703316783156,\"monoisotopicMass\":233.09127461582,\"unsaturation\":14,\"elements\":[{\"symbol\":\"C\",\"number\":10},{\"symbol\":\"H\",\"number\":11},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":2}]},\"Dcyt\":{\"name\":\"Desoxycytidine diradical\",\"mf\":\"C9H11N3O3\",\"kind\":\"DNA\",\"oneLetter\":\"C\",\"ocl\":{\"value\":\"fhiqa@IVCBa`^HgEIYg^Y~gG^jjjiejpaXWH@\",\"coordinates\":\"!BBOpH_UARcc}TN|Y@PIe`zeIO@MDSIrpXTd}RSqLgTd|\"},\"mass\":209.202295772523,\"monoisotopicMass\":209.08004122653,\"unsaturation\":10,\"elements\":[{\"symbol\":\"C\",\"number\":9},{\"symbol\":\"H\",\"number\":11},{\"symbol\":\"N\",\"number\":3},{\"symbol\":\"O\",\"number\":3}]},\"Dgua\":{\"name\":\"Desoxyguanosine diradical\",\"mf\":\"C10H11N5O3\",\"kind\":\"DNA\",\"oneLetter\":\"G\",\"ocl\":{\"value\":\"fbmia@IF]ELJYAxb\\\\Tef]ye^Z\\\\lxLZjjjeZfkBEa\\\\`@\",\"coordinates\":\"!B\\\\KqpQARcg|T^|X@@Id`zeHo@Ie}]vaLcg|T^qAMDDvN_vaLcg|\"},\"mass\":249.22643809214986,\"monoisotopicMass\":249.08618923539,\"unsaturation\":14,\"elements\":[{\"symbol\":\"C\",\"number\":10},{\"symbol\":\"H\",\"number\":11},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":3}]},\"Dthy\":{\"name\":\"Desoxythymidine diradical\",\"mf\":\"C10H12N2O4\",\"kind\":\"DNA\",\"oneLetter\":\"T\",\"ocl\":{\"value\":\"fdyPQ@IVaPtP^HgEIYg^YuiqwjjjjYikBEa\\\\`@\",\"coordinates\":\"!BBOpH_UARcc}TN|Y@PIe`zeIO@MDSIrpXTd}RSqLgDr]RSp\"},\"mass\":224.2136741361865,\"monoisotopicMass\":224.07970687390002,\"unsaturation\":10,\"elements\":[{\"symbol\":\"C\",\"number\":10},{\"symbol\":\"H\",\"number\":12},{\"symbol\":\"N\",\"number\":2},{\"symbol\":\"O\",\"number\":4}]},\"Dura\":{\"name\":\"Desoxyuridine diradical\",\"mf\":\"C9H10N2O4\",\"kind\":\"DNA\",\"oneLetter\":\"U\",\"ocl\":{\"value\":\"fhiPQ@IVaPpP^HgEIYg^Y~gG^jjjifZpaXWH@\",\"coordinates\":\"!BBOpH_UARcc}TN|Y@PIe`zeIO@MDSIrpXTd}RSqLgTd|\"},\"mass\":210.1870567313397,\"monoisotopicMass\":210.06405680944,\"unsaturation\":10,\"elements\":[{\"symbol\":\"C\",\"number\":9},{\"symbol\":\"H\",\"number\":10},{\"symbol\":\"N\",\"number\":2},{\"symbol\":\"O\",\"number\":4}]},\"Amp\":{\"name\":\"Adenosine monophosphate diradical\",\"mf\":\"C10H12N5O6P\",\"kind\":\"RNAp\",\"oneLetter\":\"A\",\"alternativeOneLetter\":\"α\",\"ocl\":{\"value\":\"fakhs@INBwlJ\\\\TgHOFwaEqrIQQSYQJIRIMLyxMVuUUUPLpEPQDqBId@@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuPBOq_qopHBGtgD}D@RpPH_Wtw@aOTd}RtPCQ@@\"},\"mass\":329.20635561758047,\"monoisotopicMass\":329.05252012475,\"unsaturation\":14,\"elements\":[{\"symbol\":\"C\",\"number\":10},{\"symbol\":\"H\",\"number\":12},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":6},{\"symbol\":\"P\",\"number\":1}]},\"Cmp\":{\"name\":\"Cytidine monophosphate diradical\",\"mf\":\"C9H12N3O7P\",\"kind\":\"RNAp\",\"oneLetter\":\"C\",\"alternativeOneLetter\":\"ς\",\"ocl\":{\"value\":\"ff}qs@I^kBgENSdGc[pbxyDhhilheDiLv\\\\BVjjjjYfZbHfHQL`@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuPBOpcbpXBGtSItuPSU@H_Wtw@`lFDuP\"},\"mass\":305.1816182222719,\"monoisotopicMass\":305.04128673546,\"unsaturation\":10,\"elements\":[{\"symbol\":\"C\",\"number\":9},{\"symbol\":\"H\",\"number\":12},{\"symbol\":\"N\",\"number\":3},{\"symbol\":\"O\",\"number\":7},{\"symbol\":\"P\",\"number\":1}]},\"Gmp\":{\"name\":\"Guanosine monophosphate diradical\",\"mf\":\"C10H12N5O7P\",\"kind\":\"RNAp\",\"oneLetter\":\"G\",\"alternativeOneLetter\":\"γ\",\"ocl\":{\"value\":\"fi{is@INBwlJ\\\\TgHp^MoBKcdRbbfrbTRdR\\\\SN^CUmUUUUKMSMQDSDHfP@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuPBOq_qopHBGtgD}D@RpPH_Wtw@aOTd}RtP@gD}D@\"},\"mass\":345.20576054189877,\"monoisotopicMass\":345.04743474432,\"unsaturation\":14,\"elements\":[{\"symbol\":\"C\",\"number\":10},{\"symbol\":\"H\",\"number\":12},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":7},{\"symbol\":\"P\",\"number\":1}]},\"Tmp\":{\"name\":\"Thymidine monophosphate diradical\",\"mf\":\"C10H13N2O8P\",\"kind\":\"RNAp\",\"oneLetter\":\"T\",\"alternativeOneLetter\":\"τ\",\"ocl\":{\"value\":\"fncPK@I^aSbgIrtGc[pbxyDhhilheDiLjs`RuUUUSLuMDQLPbY@@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuPBOpcbpXBGtSItuPSU@H_Wtw@`lFBpXSU@\"},\"mass\":320.1929965859354,\"monoisotopicMass\":320.04095238282997,\"unsaturation\":10,\"elements\":[{\"symbol\":\"C\",\"number\":10},{\"symbol\":\"H\",\"number\":13},{\"symbol\":\"N\",\"number\":2},{\"symbol\":\"O\",\"number\":8},{\"symbol\":\"P\",\"number\":1}]},\"Ump\":{\"name\":\"Uridine monophosphate diradical\",\"mf\":\"C9H11N2O8P\",\"kind\":\"RNAp\",\"oneLetter\":\"U\",\"alternativeOneLetter\":\"υ\",\"ocl\":{\"value\":\"ff}PK@I^aSbgIsTGc[pbxyDhhilheDiLv\\\\BVjjjjYffbHfHQL`@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuPBOpcbpXBGtSItuPSU@H_Wtw@`lFDuP\"},\"mass\":306.1663791810886,\"monoisotopicMass\":306.02530231837,\"unsaturation\":10,\"elements\":[{\"symbol\":\"C\",\"number\":9},{\"symbol\":\"H\",\"number\":11},{\"symbol\":\"N\",\"number\":2},{\"symbol\":\"O\",\"number\":8},{\"symbol\":\"P\",\"number\":1}]},\"Rmp\":{\"name\":\"Ribose monophosphate diradical\",\"mf\":\"C5H7O6P\",\"kind\":\"RNAp\",\"ocl\":{\"value\":\"d@\",\"coordinates\":\"\"},\"mass\":194.07945630639637,\"monoisotopicMass\":193.99802494145,\"unsaturation\":4,\"elements\":[{\"symbol\":\"C\",\"number\":5},{\"symbol\":\"H\",\"number\":7},{\"symbol\":\"O\",\"number\":6},{\"symbol\":\"P\",\"number\":1}]},\"Adp\":{\"name\":\"Adenosine diphosphate diradical\",\"mf\":\"C10H13N5O9P2\",\"kind\":\"RNApp\",\"oneLetter\":\"A\",\"ocl\":{\"value\":\"fcoiH`INCt\\\\J\\\\UENU{Axv|F~DwGHeEEMeDheHd\\\\eHsg`u{UUUU@mAEMPQDqBId@@\",\"coordinates\":\"!BvuPfpDnDtEK_t_rHtXBH_TwPbOr_IorHbGtgD}F@RxPBuxc|_]^OTh}R_`CQ`MF@_`@_`A~\"},\"mass\":409.186273143011,\"monoisotopicMass\":409.01885101411,\"unsaturation\":14,\"elements\":[{\"symbol\":\"C\",\"number\":10},{\"symbol\":\"H\",\"number\":13},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":9},{\"symbol\":\"P\",\"number\":2}]},\"Cdp\":{\"name\":\"Cytidine diphosphate diradical\",\"mf\":\"C9H13N3O10P2\",\"kind\":\"RNApp\",\"oneLetter\":\"C\",\"ocl\":{\"value\":\"fe{ph`I^[BgENbgHy`|[^E_CkcdRbbfrbTRdqrdYpIZjjjieijZbHfHQL`@\",\"coordinates\":\"!BvuPfpDnDtEK_t_rHtXBH_TwPb@K_cbpXbKtSItwPS]@Bux`Bo]\\\\lFGx@S]A~@C}~@Gx\"},\"mass\":385.1615357477025,\"monoisotopicMass\":385.00761762482,\"unsaturation\":10,\"elements\":[{\"symbol\":\"C\",\"number\":9},{\"symbol\":\"H\",\"number\":13},{\"symbol\":\"N\",\"number\":3},{\"symbol\":\"O\",\"number\":10},{\"symbol\":\"P\",\"number\":2}]},\"Gdp\":{\"name\":\"Guanosine diphosphate diradical\",\"mf\":\"C10H13N5O10P2\",\"kind\":\"RNApp\",\"oneLetter\":\"G\",\"ocl\":{\"value\":\"fkhh`INCt\\\\J\\\\UENY{NCqmxM|EnNQJJJ[JIQJQHzIRLyxM^uUUUTkUSLuQDSDHfP@\",\"coordinates\":\"!BvuPfpDnDtEK_tPJHtXBH_TwPb@J_I`JHbGtgD}F@RxPBux`B_]^OTh}R_`CQ`B\\\\StXA~@C}~@Gx\"},\"mass\":425.1856780673293,\"monoisotopicMass\":425.01376563368,\"unsaturation\":14,\"elements\":[{\"symbol\":\"C\",\"number\":10},{\"symbol\":\"H\",\"number\":13},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":10},{\"symbol\":\"P\",\"number\":2}]},\"Tdp\":{\"name\":\"Thymidine diphosphate diradical\",\"mf\":\"C10H14N2O11P2\",\"kind\":\"RNApp\",\"oneLetter\":\"T\",\"ocl\":{\"value\":\"fmgQh`I^aSbgQSglu`|[^C_@[bdls^rruo}LxDmUUUTruTsTQDqBId@@\",\"coordinates\":\"!BvuPfpDnDtEK_tPJHtXBH_TwPbOs_cbpXbGtSItwPS]@Bux`B_]\\\\lFBpX_`AMtGx@Owx@_`\"},\"mass\":400.172914111366,\"monoisotopicMass\":400.00728327219,\"unsaturation\":10,\"elements\":[{\"symbol\":\"C\",\"number\":10},{\"symbol\":\"H\",\"number\":14},{\"symbol\":\"N\",\"number\":2},{\"symbol\":\"O\",\"number\":11},{\"symbol\":\"P\",\"number\":2}]},\"Udp\":{\"name\":\"Uridine diphosphate diradical\",\"mf\":\"C9H12N2O11P2\",\"kind\":\"RNApp\",\"oneLetter\":\"U\",\"ocl\":{\"value\":\"fe{Qh`I^aSbgQSehy`|[^E_CkcdRbbfrbTRdqrdYpIZjjjiejfZbHfHQL`@\",\"coordinates\":\"!BvuPfpDnDtEK_t_rHtXBH_TwPb@K_cbpXbKtSItwPS]@Bux`Bo]\\\\lFGx@S]A~@C}~@Gx\"},\"mass\":386.14629670651925,\"monoisotopicMass\":385.99163320773005,\"unsaturation\":10,\"elements\":[{\"symbol\":\"C\",\"number\":9},{\"symbol\":\"H\",\"number\":12},{\"symbol\":\"N\",\"number\":2},{\"symbol\":\"O\",\"number\":11},{\"symbol\":\"P\",\"number\":2}]},\"Atp\":{\"name\":\"Adenosine triphosphate diradical\",\"mf\":\"C10H14N5O12P3\",\"kind\":\"RNAppp\",\"oneLetter\":\"A\",\"ocl\":{\"value\":\"e`TZCJ@IG@nahJNEHdliemgo`OFspZ|CoByqrIQQSYQJIRIGIRWRL\\\\^AU]UUUUPKPQMTuABDpaBX`@\",\"coordinates\":\"!BvuPfpDnDtEK_t_rHtXBH_TwPbOr_IorHbGtgD}F@RxS|uxc|_]^OTh}R_`CQ`MF@@hcW@A~_`A~@@A~Owx\"},\"mass\":489.16619066844174,\"monoisotopicMass\":488.98518190347005,\"unsaturation\":14,\"elements\":[{\"symbol\":\"C\",\"number\":10},{\"symbol\":\"H\",\"number\":14},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":12},{\"symbol\":\"P\",\"number\":3}]},\"Ctp\":{\"name\":\"Cytidine triphosphate diradical\",\"mf\":\"C9H14N3O13P3\",\"kind\":\"RNAppp\",\"oneLetter\":\"C\",\"ocl\":{\"value\":\"fgqZ`I^[BgENbgOQsO\\\\Gc[pkxK|MnNQJJJ[JIQJSGJPzQg@ejjjjfVffjZbHfHQL`@\",\"coordinates\":\"!BvuPfpDnDtEK_tPJHtXBH_TwPb@K_cbpXbGtSItwPS]C|ux`B_]\\\\lFGx@S]@BbM\\\\B@Gy~@Gx@@Gx_`\"},\"mass\":465.1414532731331,\"monoisotopicMass\":464.97394851418,\"unsaturation\":10,\"elements\":[{\"symbol\":\"C\",\"number\":9},{\"symbol\":\"H\",\"number\":14},{\"symbol\":\"N\",\"number\":3},{\"symbol\":\"O\",\"number\":13},{\"symbol\":\"P\",\"number\":3}]},\"Gtp\":{\"name\":\"Guanosine triphosphate diradical\",\"mf\":\"C10H14N5O13P3\",\"kind\":\"RNAppp\",\"oneLetter\":\"G\",\"ocl\":{\"value\":\"eh\\\\ZKJ@IG@nahJNEHdliemco`POFspZ|KoAyqrIQQSYQJIRIGQJQzQccpJkjjjjjeZjYZijbDIaBDq@@\",\"coordinates\":\"!BvuPfpDnDtEK_tPJHtXBH_TwPb@J_I`JHbGtgD}F@RxPBux`B_]^OTh}R_`CQ`B\\\\StX@BbM_|@Gy~@Gx@@Gx_`\"},\"mass\":505.16559559276,\"monoisotopicMass\":504.98009652304,\"unsaturation\":14,\"elements\":[{\"symbol\":\"C\",\"number\":10},{\"symbol\":\"H\",\"number\":14},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":13},{\"symbol\":\"P\",\"number\":3}]},\"Ttp\":{\"name\":\"Thymidine triphosphate diradical\",\"mf\":\"C10H15N2O14P3\",\"kind\":\"RNAppp\",\"oneLetter\":\"T\",\"ocl\":{\"value\":\"eo`TGJ@IOHJNEGHdlnaiekg`OFspZ|Mo@yqrIQQSYQJIRY[ZPzQc`HjjjjjYZjVjZbDIaBDq@@\",\"coordinates\":\"!BvuPfpDnDtEK_tPJHtXBH_TwPb@K_cbpXbGtSItwPS]@Bux`B_]\\\\lFBpX_`AMt@JHupH@_gx@_`@@_c}~\"},\"mass\":480.15283163679663,\"monoisotopicMass\":479.97361416155,\"unsaturation\":10,\"elements\":[{\"symbol\":\"C\",\"number\":10},{\"symbol\":\"H\",\"number\":15},{\"symbol\":\"N\",\"number\":2},{\"symbol\":\"O\",\"number\":14},{\"symbol\":\"P\",\"number\":3}]},\"Utp\":{\"name\":\"Uridine triphosphate diradical\",\"mf\":\"C9H13N2O14P3\",\"kind\":\"RNAppp\",\"oneLetter\":\"U\",\"ocl\":{\"value\":\"fgPz`I^aSbgQSeoQsO\\\\Gc[pkxK|MnNQJJJ[JIQJSGJPzQg@ejjjjfVjVjZbHfHQL`@\",\"coordinates\":\"!BvuPfpDnDtEK_tPJHtXBH_TwPb@K_cbpXbGtSItwPS]C|ux`B_]\\\\lFGx@S]@BbM\\\\B@Gy~@Gx@@Gx_`\"},\"mass\":466.12621423194986,\"monoisotopicMass\":465.95796409709004,\"unsaturation\":10,\"elements\":[{\"symbol\":\"C\",\"number\":9},{\"symbol\":\"H\",\"number\":13},{\"symbol\":\"N\",\"number\":2},{\"symbol\":\"O\",\"number\":14},{\"symbol\":\"P\",\"number\":3}]},\"Ade\":{\"name\":\"Adenosine diradical\",\"mf\":\"C10H11N5O3\",\"kind\":\"RNA\",\"oneLetter\":\"A\",\"ocl\":{\"value\":\"fbmia@IV|gLJ\\\\Axj\\\\Tef[vyWV\\\\]zJZjjj`PJ`bIbDSH@\",\"coordinates\":\"!BBOpH_UARccFPEP{PId{RpBN[~i|BEP{iVA@fUARU@QTADBYPId\"},\"mass\":249.22643809214986,\"monoisotopicMass\":249.08618923539,\"unsaturation\":14,\"elements\":[{\"symbol\":\"C\",\"number\":10},{\"symbol\":\"H\",\"number\":11},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":3}]},\"Cyt\":{\"name\":\"Cytidine diradical\",\"mf\":\"C9H11N3O4\",\"kind\":\"RNA\",\"oneLetter\":\"C\",\"ocl\":{\"value\":\"fdypQ@INcBgK@|UNJRsM{\\\\~sg`uUUULmQDSDHfP@\",\"coordinates\":\"!BBOpH_UARccFPEP{PId{RpBN[~iRTBpgDq`@c`BNKB\\\\@c`\"},\"mass\":225.20170069684127,\"monoisotopicMass\":225.0749558461,\"unsaturation\":10,\"elements\":[{\"symbol\":\"C\",\"number\":9},{\"symbol\":\"H\",\"number\":11},{\"symbol\":\"N\",\"number\":3},{\"symbol\":\"O\",\"number\":4}]},\"Gua\":{\"name\":\"Guanosine diradical\",\"mf\":\"C10H11N5O4\",\"kind\":\"RNA\",\"oneLetter\":\"G\",\"ocl\":{\"value\":\"fj}hQ@IV|gLJ\\\\JCqTxiKLwmroKNN}EMUUUTkTuDQLPbY@@\",\"coordinates\":\"!BBOpH_UARccFPEP{PId{RpBN[~k|BEP{iVA@fUARU@QTADBYiVA@fP\"},\"mass\":265.22584301646816,\"monoisotopicMass\":265.08110385496,\"unsaturation\":14,\"elements\":[{\"symbol\":\"C\",\"number\":10},{\"symbol\":\"H\",\"number\":11},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":4}]},\"Thy\":{\"name\":\"Thymidine diradical\",\"mf\":\"C10H12N2O5\",\"kind\":\"RNA\",\"oneLetter\":\"T\",\"ocl\":{\"value\":\"fleQQ@INaSed`|UNJRsM{\\\\zlyxMUUUSMMDQLPbY@@\",\"coordinates\":\"!BBOpH_UARccFPEP{PId{RpBN[~iRTBpgDq`@c`BNKB\\\\lIpBN\"},\"mass\":240.21307906050478,\"monoisotopicMass\":240.07462149347,\"unsaturation\":10,\"elements\":[{\"symbol\":\"C\",\"number\":10},{\"symbol\":\"H\",\"number\":12},{\"symbol\":\"N\",\"number\":2},{\"symbol\":\"O\",\"number\":5}]},\"Ura\":{\"name\":\"Uridine diradical\",\"mf\":\"C9H10N2O5\",\"kind\":\"RNA\",\"oneLetter\":\"U\",\"ocl\":{\"value\":\"fdyQQ@INaSeh`|UNJRsM{\\\\~sg`uUUULsQDSDHfP@\",\"coordinates\":\"!BBOpH_UARccFPEP{PId{RpBN[~iRTBpgDq`@c`BNKB\\\\@c`\"},\"mass\":226.18646165565798,\"monoisotopicMass\":226.05897142901,\"unsaturation\":10,\"elements\":[{\"symbol\":\"C\",\"number\":9},{\"symbol\":\"H\",\"number\":10},{\"symbol\":\"N\",\"number\":2},{\"symbol\":\"O\",\"number\":5}]},\"Dam\":{\"name\":\"1,2′-O-dimethyladenosine monophosphate diradical 01A\",\"mf\":\"C12H16N5O6P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"œ\",\"ocl\":{\"value\":\"feghs@E^ct\\\\J\\\\udhOEw`eqrIQQQKZIQJQIiLxFK^uUUUUKLtuQDSDHfP@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuOSU@HEF@`H_R\\\\StPAKA@a}_S_|BD}RSuKQ@MD@SuH\"},\"mass\":357.2595904272741,\"monoisotopicMass\":357.08382025367,\"unsaturation\":14,\"elements\":[{\"symbol\":\"C\",\"number\":12},{\"symbol\":\"H\",\"number\":16},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":6},{\"symbol\":\"P\",\"number\":1}]},\"Dgm\":{\"name\":\"1,2′-O-dimethylguanosine monophosphate diradical 01G\",\"mf\":\"C12H16N5O7P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"ε\",\"ocl\":{\"value\":\"fmwis@E^ct\\\\J\\\\udlp^KoAKcdRbbbVtRbTbSbSNAbwmUUUURsMSUDQLPbY@@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuOSU@HEF@`H_R\\\\StPAKA@a}_S_|BD}RSuKQ@B\\\\StPAOT`\"},\"mass\":373.2589953515923,\"monoisotopicMass\":373.07873487324,\"unsaturation\":14,\"elements\":[{\"symbol\":\"C\",\"number\":12},{\"symbol\":\"H\",\"number\":16},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":7},{\"symbol\":\"P\",\"number\":1}]},\"Dim\":{\"name\":\"1,2′-O-dimethylinosine monophosphate diradical 019A\",\"mf\":\"C12O7N4H15P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"ξ\",\"ocl\":{\"value\":\"fegIs@E^cvENZrTXOEw`eqrIQQQKZIQJQIiLxFK^uUUUUKLtuQDSDHfP@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuOSU@HEF@`H_R\\\\StPAKA@a}_S_|BD}RSuKQ@MD@SuH\"},\"mass\":358.2443513860907,\"monoisotopicMass\":358.06783583658,\"unsaturation\":14,\"elements\":[{\"symbol\":\"C\",\"number\":12},{\"symbol\":\"H\",\"number\":15},{\"symbol\":\"N\",\"number\":4},{\"symbol\":\"O\",\"number\":7},{\"symbol\":\"P\",\"number\":1}]},\"Tia\":{\"name\":\"2- methylthiomethylenethio-N6-isopentenyl-adenosine monophosphate diradical\",\"mf\":\"C17H24N5O6PS2\",\"kind\":\"NucleotideP\",\"oneLetter\":\"£\",\"ocl\":{\"value\":\"eh\\\\ZFJ@IG@nahJNEDl`OFspb\\\\V`cXHrIQQSYQJIRINIYIKQccpJkjjjjjAfBJjfjBDIaBDq@@\",\"coordinates\":\"!BpBYTvxBNFY|bEJObGvOS\\\\@Yt]~DUEJOctu~@Ha}`HzOSTwPTh~H@hc|_`BH_Xa}b@JH@gx@bGvH@h`B_`BH_P\"},\"mass\":489.50637075565066,\"monoisotopicMass\":489.09056286031,\"unsaturation\":16,\"elements\":[{\"symbol\":\"C\",\"number\":17},{\"symbol\":\"H\",\"number\":24},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":6},{\"symbol\":\"P\",\"number\":1},{\"symbol\":\"S\",\"number\":2}]},\"Mhc\":{\"name\":\"2′‐O‐Methyl-5-hydroxymethylcytidine monophosphate diradical\",\"mf\":\"C11H16N3O8P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"¡\",\"ocl\":{\"value\":\"fikpK@EA{BgM^rTXOEw`eqrIQQQKZIQJSJigHujjjjifYjkBHQL`@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@HoTuOSU@HC~NKA`HoQLgSUAMT@a}oS_|BBpXKAaMT@CQ\"},\"mass\":349.2342579562838,\"monoisotopicMass\":349.06750148395,\"unsaturation\":10,\"elements\":[{\"symbol\":\"C\",\"number\":11},{\"symbol\":\"H\",\"number\":16},{\"symbol\":\"N\",\"number\":3},{\"symbol\":\"O\",\"number\":8},{\"symbol\":\"P\",\"number\":1}]},\"Odg\":{\"name\":\"N2,2′-O-dimethylguanosine monophosphate diradical 02G\",\"mf\":\"C12H16N5O7P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"γ\",\"ocl\":{\"value\":\"fmwis@E^ct\\\\J\\\\udlp^KoAKcdRbbbVtRbTbSbsNAbwmUUUURsMSUDQLPbY@@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuOSU@HEF@`H_R\\\\StPAKA@a}_S_|BD}RSuKQ@B\\\\StPAOT`\"},\"mass\":373.2589953515923,\"monoisotopicMass\":373.07873487324,\"unsaturation\":14,\"elements\":[{\"symbol\":\"C\",\"number\":12},{\"symbol\":\"H\",\"number\":16},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":7},{\"symbol\":\"P\",\"number\":1}]},\"Ntg\":{\"name\":\"N2,N2,2′-O-trimethylguanosine monophosphate diradical 022G\",\"mf\":\"C13H18N5O7P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"|\",\"ocl\":{\"value\":\"fcois@E^ct\\\\J\\\\udlp^KoAKcdRbbbVtRbTbSbTYpLVcjjjjjVYjZjHbXaDr@@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuOSU@HEF@`H_R\\\\StPAKA@a}_S_|BD}RSuHgD}D@tPBNOt}R\"},\"mass\":387.2856127564392,\"monoisotopicMass\":387.0943849377,\"unsaturation\":14,\"elements\":[{\"symbol\":\"C\",\"number\":13},{\"symbol\":\"H\",\"number\":18},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":7},{\"symbol\":\"P\",\"number\":1}]},\"Otg\":{\"name\":\"N2,7,2′-O-trimethylguanosine monophosphate diradical 027G\",\"mf\":\"C13H20N5O7P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"æ\",\"ocl\":{\"value\":\"fcoisBE^bN\\\\J\\\\udjp^KoAKcFU}dRbbbVtRbTbRlQYpLVcjjjjjVYjjjHbXaDr@@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuOSU@HEF@`H_R\\\\StPAKA@a}_S_|BD}RSuKFPMD@IqOQ@D}R\"},\"mass\":389.30149426455074,\"monoisotopicMass\":389.11003500216,\"unsaturation\":12,\"elements\":[{\"symbol\":\"C\",\"number\":13},{\"symbol\":\"H\",\"number\":20},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":7},{\"symbol\":\"P\",\"number\":1}]},\"Rya\":{\"name\":\"2′-O-ribosyladenosine monophosphate diradical 00A\",\"mf\":\"C15H20N5O9P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"^\",\"ocl\":{\"value\":\"e`\\\\ZIL@DaegobFAIO@hlm`OGSp\\\\\\\\\\\\bbbfrRbdTT\\\\rbRQUCDQTrusuUUUUMUU@pET@@@\",\"coordinates\":\"!BIlAKaMARw}DBbMF@bGuMtHc|KAbH_ZU`@GzH_WwW@h`XKFjKB_jXB\\\\SiVA`zmG_Irp_hQKctvOSR\\\\lIrp\"},\"mass\":445.3217759066577,\"monoisotopicMass\":445.09986424130005,\"unsaturation\":16,\"elements\":[{\"symbol\":\"C\",\"number\":15},{\"symbol\":\"H\",\"number\":20},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":9},{\"symbol\":\"P\",\"number\":1}]},\"Ryg\":{\"name\":\"2′-O-ribosylguanosine monophosphate diradical 00G\",\"mf\":\"C15H20N5O10P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"ℑ\",\"ocl\":{\"value\":\"ehRZEL@DaegobFAIO@hlm`POGSp\\\\\\\\\\\\bbbfrRbdTT\\\\rbRQbhXbJfVn^jjjjijjjVZfj@@@\",\"coordinates\":\"!BIlAKaMARw}DBbMF@bGuMtH`BKAbH_ZU`@GzH_WwW@h`XKFjKB_jXB\\\\SiVA`zmG_Irp_hQKctvOSR\\\\lt]|gK@\"},\"mass\":461.321180830976,\"monoisotopicMass\":461.09477886087,\"unsaturation\":16,\"elements\":[{\"symbol\":\"C\",\"number\":15},{\"symbol\":\"H\",\"number\":20},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":10},{\"symbol\":\"P\",\"number\":1}]},\"Tmu\":{\"name\":\"2-thio-2′-O-methyluridine monophosphate diradical 02U\",\"mf\":\"C10H13N2O7PS\",\"kind\":\"NucleotideP\",\"oneLetter\":\"∏\",\"ocl\":{\"value\":\"fncQp`EAaSfleZCq]x^BDnNQJJJI[QJIRYlyFmUUUULsSQDSDHfP@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuOSU@HC~NKA`H_QLgSUAMT@a}_S_|BBpXSU@\"},\"mass\":336.25837906774416,\"monoisotopicMass\":336.01810893766003,\"unsaturation\":10,\"elements\":[{\"symbol\":\"C\",\"number\":10},{\"symbol\":\"H\",\"number\":13},{\"symbol\":\"N\",\"number\":2},{\"symbol\":\"O\",\"number\":7},{\"symbol\":\"P\",\"number\":1},{\"symbol\":\"S\",\"number\":1}]},\"Dmut\":{\"name\":\"3,2′-O-dimethyluridine monophosphate diradical 03U\",\"mf\":\"C11H15N2O8P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"σ\",\"ocl\":{\"value\":\"fasPK@EAaSfoYKtGb{pRxyDhhhemDheIhv\\\\cVjjjjfYjZHbXaDr@@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuOSU@HC~NKA`H_QLgSUAMT@a}_S_|BBpXOxyMT@\"},\"mass\":334.2196139907822,\"monoisotopicMass\":334.05660244729,\"unsaturation\":10,\"elements\":[{\"symbol\":\"C\",\"number\":11},{\"symbol\":\"H\",\"number\":15},{\"symbol\":\"N\",\"number\":2},{\"symbol\":\"O\",\"number\":8},{\"symbol\":\"P\",\"number\":1}]},\"Amc\":{\"name\":\"N4-acetyl-2′-O-methylcytidine monophosphate diradical 042C\",\"mf\":\"C12H16N3O8P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"ℵ\",\"ocl\":{\"value\":\"fe{pK@EA[BgM^rTXOEw`eqrIQQQKZIQJSMJLyFmUUUULsMMQDSDHfP@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuOSU@HC~NKA`H_QLgSUAMT@a}_S_|BBpXSU@caLgSU@\"},\"mass\":361.244993853019,\"monoisotopicMass\":361.06750148395,\"unsaturation\":12,\"elements\":[{\"symbol\":\"C\",\"number\":12},{\"symbol\":\"H\",\"number\":16},{\"symbol\":\"N\",\"number\":3},{\"symbol\":\"O\",\"number\":8},{\"symbol\":\"P\",\"number\":1}]},\"Tmc\":{\"name\":\"N4,N4,2′-O-trimethylcytidine monophosphate diradical 044C\",\"mf\":\"C12H18N3O7P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"β\",\"ocl\":{\"value\":\"fikqs@EA[BgM^rTGb{pRxyDhhhemDheIfhsdZuUUUTsLuTQDqBId@@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuOSU@HC~NKA`H_QLgSUAMT@a}_S_|BBpXSU@cbpX\"},\"mass\":347.2614704368123,\"monoisotopicMass\":347.08823692884005,\"unsaturation\":10,\"elements\":[{\"symbol\":\"C\",\"number\":12},{\"symbol\":\"H\",\"number\":18},{\"symbol\":\"N\",\"number\":3},{\"symbol\":\"O\",\"number\":7},{\"symbol\":\"P\",\"number\":1}]},\"Dcy\":{\"name\":\"N4,2′-O-dimethylcytidine monophosphate diradical 04C\",\"mf\":\"C11H16N3O7P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"λ\",\"ocl\":{\"value\":\"fasqs@EA[BgM^rTGb{pRxyDhhhemDheIff\\\\cVjjjjfYfjHbXaDr@@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuOSU@HC~NKA`H_QLgSUAMT@a}_S_|BBpXSU@lF@\"},\"mass\":333.23485303196554,\"monoisotopicMass\":333.07258686438,\"unsaturation\":10,\"elements\":[{\"symbol\":\"C\",\"number\":11},{\"symbol\":\"H\",\"number\":16},{\"symbol\":\"N\",\"number\":3},{\"symbol\":\"O\",\"number\":7},{\"symbol\":\"P\",\"number\":1}]},\"Muo\":{\"name\":\"2′-O-methyluridine 5-oxyacetic acid methyl ester monophosphate diradical 0503U\",\"mf\":\"C13H17N2O11P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"Ͽ\",\"ocl\":{\"value\":\"fkoQk@EAaSfoYJwj}`|W^BWGHeEEDmheDiLjlif\\\\cVjjjjfYjZZhbIbDSH@\",\"coordinates\":\"!BKAb@tURD@m\\\\YpMAMpBYMcvjbOplIwx@bGuMc}\\\\Bb@JH@dvOcuKPSXa}bGvHH`BbGu~Oxc|bGt\"},\"mass\":408.25518206531905,\"monoisotopicMass\":408.05699637046,\"unsaturation\":12,\"elements\":[{\"symbol\":\"C\",\"number\":13},{\"symbol\":\"H\",\"number\":17},{\"symbol\":\"N\",\"number\":2},{\"symbol\":\"O\",\"number\":11},{\"symbol\":\"P\",\"number\":1}]},\"Xmu\":{\"name\":\"5-carboxymethylaminomethyl-2′-O-methyluridine monophosphate diradical 051U\",\"mf\":\"C13H18N3O10P\",\"kind\":\"NucleotideP\",\"oneLetter\":\")\",\"ocl\":{\"value\":\"fkopk@EAGBgM^rWns`|W^BWGHeEEDmheDiLjleF\\\\cVjjjjfYjZfhbIbDSH@\",\"coordinates\":\"!BKAb@tURD@m\\\\YpMAMpBYMcvjb@HlIwx@bGuMc}\\\\Bb@JH@dvOcuKPSXa}bGvH@h`BbGvH@gx@bKt\"},\"mass\":407.2704211065024,\"monoisotopicMass\":407.07298078755,\"unsaturation\":12,\"elements\":[{\"symbol\":\"C\",\"number\":13},{\"symbol\":\"H\",\"number\":18},{\"symbol\":\"N\",\"number\":3},{\"symbol\":\"O\",\"number\":10},{\"symbol\":\"P\",\"number\":1}]},\"Mmu\":{\"name\":\"5-methoxycarbonylmethyl-2′-O-methyluridine monophosphate diradical 0521U\",\"mf\":\"C13H17N2O10P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"∩\",\"ocl\":{\"value\":\"fcwPk@EAaSfoYKvZp^KoAKcdRbbbVtRbTfUVfYrMZjjjjYfifjHbXaDr@@\",\"coordinates\":\"!BS]@lFJU`@Gyoza`lzf@lI}mK_`B@cm\\\\Bb@HlI}]}_`A~@BpgIqLXKH`Bb@I~@Ha}_c~HHa}\"},\"mass\":392.2557771410008,\"monoisotopicMass\":392.06208175089,\"unsaturation\":12,\"elements\":[{\"symbol\":\"C\",\"number\":13},{\"symbol\":\"H\",\"number\":17},{\"symbol\":\"N\",\"number\":2},{\"symbol\":\"O\",\"number\":10},{\"symbol\":\"P\",\"number\":1}]},\"Cue\":{\"name\":\"5-(carboxyhydroxymethyl)-2′-O-methyluridine methyl ester monophosphate diradical 0522U\",\"mf\":\"C13H17N2O11P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"∩\",\"ocl\":{\"value\":\"fkoQk@EAaSfoYKtZ}`|W^BWGHeEEDmheDiLjhYf\\\\cVjjjjfYjZZhbIbDSH@\",\"coordinates\":\"!BS]@lFJU`@Gyoza`lzf@lI}mK_`B@cm\\\\Bb@HlI}]}_`A~@BpgIqLXKH`Bb@I~@Gx@bGu~Oxc|bGt\"},\"mass\":408.25518206531905,\"monoisotopicMass\":408.05699637046,\"unsaturation\":12,\"elements\":[{\"symbol\":\"C\",\"number\":13},{\"symbol\":\"H\",\"number\":17},{\"symbol\":\"N\",\"number\":2},{\"symbol\":\"O\",\"number\":11},{\"symbol\":\"P\",\"number\":1}]},\"Cyu\":{\"name\":\"5-carbamoylmethyl-2′-O-methyluridine monophosphate diradical 053U\",\"mf\":\"C12H16N3O9P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"~\",\"ocl\":{\"value\":\"fmgqK@EAWBgM^rWlp^KoAKcdRbbbVtRbTfUVcNQkUUUUSLuLuDQLPbY@@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuOSU@HC~NKA`H_QLgSUAMT@a}_S_|BBpXKAaMTDuPOxxlF@\"},\"mass\":377.24439877733727,\"monoisotopicMass\":377.06241610352,\"unsaturation\":12,\"elements\":[{\"symbol\":\"C\",\"number\":12},{\"symbol\":\"H\",\"number\":16},{\"symbol\":\"N\",\"number\":3},{\"symbol\":\"O\",\"number\":9},{\"symbol\":\"P\",\"number\":1}]},\"Ipu\":{\"name\":\"5-(isopentenylaminomethyl)-2′-O-methyluridine monophosphate diradical 0583U\",\"mf\":\"C16H24N3O8P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"¼\",\"ocl\":{\"value\":\"fgpK@EAGBgM^rWhOEw`eqrIQQQKZIQJSJkIJLyFmUUUULsTuMTQDqBId@@\",\"coordinates\":\"!BS]@lFJU`@Gyoza`lzf@lI}mK_`B@cm\\\\Bb@HlI}]}_`A~@BpgIqLXKH`Bb@I~@Ha}b@JH_Xc|_`BH_P\"},\"mass\":417.35146347240624,\"monoisotopicMass\":417.13010174179004,\"unsaturation\":12,\"elements\":[{\"symbol\":\"C\",\"number\":16},{\"symbol\":\"H\",\"number\":24},{\"symbol\":\"N\",\"number\":3},{\"symbol\":\"O\",\"number\":8},{\"symbol\":\"P\",\"number\":1}]},\"Mcy\":{\"name\":\"5,2′-O-dimethylcytidine monophosphate diradical monophosphate diradical 05C\",\"mf\":\"C11H16N3O7P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"τ\",\"ocl\":{\"value\":\"fasqs@EA{BgM^rTGb{pRxyDhhhemDheIeV\\\\cVjjjjfYfjHbXaDr@@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuOSU@HC~NKA`H_QLgSUAMT@a}_S_|BBpXKAaMT@\"},\"mass\":333.23485303196554,\"monoisotopicMass\":333.07258686438,\"unsaturation\":10,\"elements\":[{\"symbol\":\"C\",\"number\":11},{\"symbol\":\"H\",\"number\":16},{\"symbol\":\"N\",\"number\":3},{\"symbol\":\"O\",\"number\":7},{\"symbol\":\"P\",\"number\":1}]},\"Dmuf\":{\"name\":\"5,2′-O-dimethyluridine monophosphate diradical 05U\",\"mf\":\"C11H15N2O8P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"\\\\\",\"ocl\":{\"value\":\"fasPK@EAaSfoYKtGb{pRxyDhhhemDheIeV\\\\cVjjjjfYjZHbXaDr@@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuOSU@HC~NKA`H_QLgSUAMT@a}_S_|BBpXKAaMT@\"},\"mass\":334.2196139907822,\"monoisotopicMass\":334.05660244729,\"unsaturation\":10,\"elements\":[{\"symbol\":\"C\",\"number\":11},{\"symbol\":\"H\",\"number\":15},{\"symbol\":\"N\",\"number\":2},{\"symbol\":\"O\",\"number\":8},{\"symbol\":\"P\",\"number\":1}]},\"Tma\":{\"name\":\"N6,N6,2′-O-trimethyladenosine monophosphate diradical 066A\",\"mf\":\"C13H18N5O6P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"η\",\"ocl\":{\"value\":\"fmwhs@E^ct\\\\J\\\\udhOEw`eqrIQQQKZIQJQIkQg@q[vjjjj`Y`JjBHfHQL`@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuOSU@HEF@`H_R\\\\StPAKA@a}_S_|BD}RSuKQ@MD@SuHXK@\"},\"mass\":371.2862078321209,\"monoisotopicMass\":371.09947031813005,\"unsaturation\":14,\"elements\":[{\"symbol\":\"C\",\"number\":13},{\"symbol\":\"H\",\"number\":18},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":6},{\"symbol\":\"P\",\"number\":1}]},\"Nda\":{\"name\":\"N6,2′-O-dimethyladenosine monophosphate diradical 06A\",\"mf\":\"C12H16N5O6P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"χ\",\"ocl\":{\"value\":\"feghs@E^ct\\\\J\\\\udhOEw`eqrIQQQKZIQJQIkLxFK^uUUUTCLAUADSDHfP@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuOSU@HEF@`H_R\\\\StPAKA@a}_S_|BD}RSuKQ@MD@FBp\"},\"mass\":357.2595904272741,\"monoisotopicMass\":357.08382025367,\"unsaturation\":14,\"elements\":[{\"symbol\":\"C\",\"number\":12},{\"symbol\":\"H\",\"number\":16},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":6},{\"symbol\":\"P\",\"number\":1}]},\"Fmc\":{\"name\":\"5-formyl-2′-O-methylcytidine monophosphate diradical 071C\",\"mf\":\"C10H12N3O8P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"°\",\"ocl\":{\"value\":\"faspK@I^[BgENSghOFwaEqrIQQSYQJIRYULxDmUUUTsLttQDqBId@@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuPBOpcbpXBGtSItuPSU@H_Wtw@`lFBpXSU@@tP\"},\"mass\":333.1917590433254,\"monoisotopicMass\":333.03620135502996,\"unsaturation\":12,\"elements\":[{\"symbol\":\"C\",\"number\":10},{\"symbol\":\"H\",\"number\":12},{\"symbol\":\"N\",\"number\":3},{\"symbol\":\"O\",\"number\":8},{\"symbol\":\"P\",\"number\":1}]},\"Omi\":{\"name\":\"2′-O-methylinosine monophosphate diradical 09A\",\"mf\":\"C11H13N4O7P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"≤\",\"ocl\":{\"value\":\"fi{Is@E^cvENZrTXOEw`eqrIQQQKZIQJQIig@q[vjjjjiYffhbIbDSH@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuOSU@HEF@`H_R\\\\StPAKA@a}_S_|BD}RSuKQ@MD@\"},\"mass\":344.21773398124395,\"monoisotopicMass\":344.05218577211997,\"unsaturation\":14,\"elements\":[{\"symbol\":\"C\",\"number\":11},{\"symbol\":\"H\",\"number\":13},{\"symbol\":\"N\",\"number\":4},{\"symbol\":\"O\",\"number\":7},{\"symbol\":\"P\",\"number\":1}]},\"Opu\":{\"name\":\"2′-O-methylpseudouridine monophosphate diradical 09U\",\"mf\":\"C10H13N2O8P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"Z\",\"ocl\":{\"value\":\"fncPK@@qaSfoYJtGb{pRxyDhhhemDheIfsdZuUUULuMMDQLPbY@@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuOSU@HC~NKA`H_QLgSUAMT@a}_S_|BBpXSU@\"},\"mass\":320.1929965859354,\"monoisotopicMass\":320.04095238282997,\"unsaturation\":10,\"elements\":[{\"symbol\":\"C\",\"number\":10},{\"symbol\":\"H\",\"number\":13},{\"symbol\":\"N\",\"number\":2},{\"symbol\":\"O\",\"number\":8},{\"symbol\":\"P\",\"number\":1}]},\"Oma\":{\"name\":\"2′-O-methyladenosine monophosphate diradical 0A\",\"mf\":\"C11H14N5O6P\",\"kind\":\"NucleotideP\",\"oneLetter\":\":\",\"ocl\":{\"value\":\"fi{hs@E^ct\\\\J\\\\udhOEw`eqrIQQQKZIQJQIig@q[vjjjj`Y`J`bIbDSH@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuOSU@HEF@`H_R\\\\StPAKA@a}_S_|BD}RSuKQ@MD@\"},\"mass\":343.2329730224273,\"monoisotopicMass\":343.06817018921,\"unsaturation\":14,\"elements\":[{\"symbol\":\"C\",\"number\":11},{\"symbol\":\"H\",\"number\":14},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":6},{\"symbol\":\"P\",\"number\":1}]},\"Omc\":{\"name\":\"2′-O-methylcytidine monophosphate diradical 0C\",\"mf\":\"C10H14N3O7P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"B\",\"ocl\":{\"value\":\"fncqs@EA[BgM^rTGb{pRxyDhhhemDheIfsdZuUUUTsLuDQLPbY@@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuOSU@HC~NKA`H_QLgSUAMT@a}_S_|BBpXSU@\"},\"mass\":319.2082356271187,\"monoisotopicMass\":319.05693679992004,\"unsaturation\":10,\"elements\":[{\"symbol\":\"C\",\"number\":10},{\"symbol\":\"H\",\"number\":14},{\"symbol\":\"N\",\"number\":3},{\"symbol\":\"O\",\"number\":7},{\"symbol\":\"P\",\"number\":1}]},\"Omg\":{\"name\":\"2′-O-methylguanosine monophosphate diradical 0G\",\"mf\":\"C11H14N5O7P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"#\",\"ocl\":{\"value\":\"fegis@E^ct\\\\J\\\\udlp^KoAKcdRbbbVtRbTbSbYpLV}jjjjjVYjZbHfHQL`@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@HoTuOSU@HEF@`H_R\\\\StPAKA@a}_S_|BD}RSuKQ@B\\\\StP@\"},\"mass\":359.23237794674554,\"monoisotopicMass\":359.06308480878,\"unsaturation\":14,\"elements\":[{\"symbol\":\"C\",\"number\":11},{\"symbol\":\"H\",\"number\":14},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":7},{\"symbol\":\"P\",\"number\":1}]},\"Omu\":{\"name\":\"2′-O-methyluridinemonophosphate diradical 0U\",\"mf\":\"C10H13N2O8P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"J\",\"ocl\":{\"value\":\"fncPK@EAaSfoYJtGb{pRxyDhhhemDheIfsdZuUUUTsMMDQLPbY@@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuOSU@HC~NKA`H_QLgSUAMT@a}_S_|BBpXSU@\"},\"mass\":320.1929965859354,\"monoisotopicMass\":320.04095238282997,\"unsaturation\":10,\"elements\":[{\"symbol\":\"C\",\"number\":10},{\"symbol\":\"H\",\"number\":13},{\"symbol\":\"N\",\"number\":2},{\"symbol\":\"O\",\"number\":8},{\"symbol\":\"P\",\"number\":1}]},\"Cdg\":{\"name\":\"7-cyano-7-deazaguanosine monophosphate diradical 100G\",\"mf\":\"C12H12N5O7P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"φ\",\"ocl\":{\"value\":\"fmwis@INzM\\\\J\\\\TgLp^MoBKcdRbbfrbTRdRUbSN^CWmUUUUKLuSuDQLPbY@@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuPBOq_qopHBGtgD}D@RpPH_Wtw@aOTd}RqdCQ@B\\\\StPCFP@\"},\"mass\":369.22723233536925,\"monoisotopicMass\":369.04743474432,\"unsaturation\":18,\"elements\":[{\"symbol\":\"C\",\"number\":12},{\"symbol\":\"H\",\"number\":12},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":7},{\"symbol\":\"P\",\"number\":1}]},\"Azg\":{\"name\":\"7-aminomethyl-7-deazaguanosine monophosphate diradical 101G\",\"mf\":\"C12H16N5O7P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"∉\",\"ocl\":{\"value\":\"fmwis@INzM\\\\J\\\\TgLp^MoBKcdRbbfrbTRdRUbSN^CWmUUUUKLuSUDQLPbY@@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuPBOq_qopHBGtgD}D@RpPH_Wtw@aOTd}RqdCQ@B\\\\StPA`z`\"},\"mass\":373.2589953515923,\"monoisotopicMass\":373.07873487324,\"unsaturation\":14,\"elements\":[{\"symbol\":\"C\",\"number\":12},{\"symbol\":\"H\",\"number\":16},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":7},{\"symbol\":\"P\",\"number\":1}]},\"Eqo\":{\"name\":\"epoxyqueuosine monophosphate diradical 102G\",\"mf\":\"C17H22N5O10P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"ς\",\"ocl\":{\"value\":\"el^ZEL@IGNaehJNEDlig`TPOFspb\\\\\\\\bTTTvTRbTbRlRjbbfXx|Bjz~aAajjjjiYfjZjjjjHPfDHSD@@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuPBOq_qopHBGtgD}D@RpPH_Wtw@aOTd}RqdCQ@B\\\\StP@{ULY@TEIKA@a}tPA}BOpHAEP\"},\"mass\":487.3585341325581,\"monoisotopicMass\":487.11042892533,\"unsaturation\":18,\"elements\":[{\"symbol\":\"C\",\"number\":17},{\"symbol\":\"H\",\"number\":22},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":10},{\"symbol\":\"P\",\"number\":1}]},\"Aes\":{\"name\":\"archaeosine monophosphate diradical 103G\",\"mf\":\"C12H15N6O7P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"(\",\"ocl\":{\"value\":\"fcoYs@INzM^xTxiNY`|[^DWGHeEEMeDheHdkDhsg`u{UUUURsMTmTQDqBId@@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuPBOq_qopHBGtgD}D@RpPH_Wtw@aOTd}RqdCQ@B\\\\StP@{UFCj\"},\"mass\":386.2577578089824,\"monoisotopicMass\":386.07398384544,\"unsaturation\":16,\"elements\":[{\"symbol\":\"C\",\"number\":12},{\"symbol\":\"H\",\"number\":15},{\"symbol\":\"N\",\"number\":6},{\"symbol\":\"O\",\"number\":7},{\"symbol\":\"P\",\"number\":1}]},\"Goq\":{\"name\":\"galactosyl-queuosine monophosphate diradical 104G\",\"mf\":\"C23H32N5O14P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"9\",\"ocl\":{\"value\":\"ekXzGL@IGNaehJNEDliod\\\\VU]SPOFspb\\\\\\\\bTTTvTRbTbRlRjbTrTrbfRXx|Bjz^AyEjjjjiYfjZijjjjjjbDIaBDq@@\",\"coordinates\":\"!BvuPfpDnDtEK_tPJHtXBH_TwPb@J_IorHbGtgD}F@RxRH_WwW@hbOTh}RIlCQ`B\\\\StXC[UB[@RxSPT`JHbGwQ`H`BaEQ~@Ha}bOq~Ox`BbGu~@Ha}bOrH@`\"},\"mass\":633.4999767508004,\"monoisotopicMass\":633.16833772591,\"unsaturation\":20,\"elements\":[{\"symbol\":\"C\",\"number\":23},{\"symbol\":\"H\",\"number\":32},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":14},{\"symbol\":\"P\",\"number\":1}]},\"Gaq\":{\"name\":\"glutamyl-queuosine monophosphate diradical105G\",\"mf\":\"C22H29N6O12P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"⊄\",\"ocl\":{\"value\":\"emWVCL@IGNaejXJNEDlioh\\\\YUPOFspb\\\\\\\\bTTTvTRbTbRlRjbTJTtrTXx|Bjz^AjjjjiYfjZijfjfjbDIaBDq@@\",\"coordinates\":\"!BTmB@c`JHUMmMtL@YtEHYgxQTaDoQ`L@YFY|gKMARH`Ygy|fpAfN`Hz@`H{PTb\\\\ltEIRtHBNHaTv|@YFYPTha}b@I~@Ha}_c~H@ha}bOq~@Ha}\"},\"mass\":600.473311954707,\"monoisotopicMass\":600.15810739451,\"unsaturation\":22,\"elements\":[{\"symbol\":\"C\",\"number\":22},{\"symbol\":\"H\",\"number\":29},{\"symbol\":\"N\",\"number\":6},{\"symbol\":\"O\",\"number\":12},{\"symbol\":\"P\",\"number\":1}]},\"Moq\":{\"name\":\"mannosyl-queuosine monophosphate diradical 106G\",\"mf\":\"C23H32N5O14P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"8\",\"ocl\":{\"value\":\"ekXzGL@IGNaehJNEDliod\\\\VU]SPOFspb\\\\\\\\bTTTvTRbTbRlRjbTrTrbfRXx|Bjz^AyEjjjjiYfjZijjjjjjbDIaBDq@@\",\"coordinates\":\"!BvuPfpDnDtEK_tPJHtXBH_TwPb@J_IorHbGtgD}F@RxRH_WwW@hbOTh}RIlCQ`B\\\\StXC[UB[@RxSPT`JHbGwQ`H`BaEQ~@Ha}bOq~Ox`BbGu~@Ha}bOrH@`\"},\"mass\":633.4999767508004,\"monoisotopicMass\":633.16833772591,\"unsaturation\":20,\"elements\":[{\"symbol\":\"C\",\"number\":23},{\"symbol\":\"H\",\"number\":32},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":14},{\"symbol\":\"P\",\"number\":1}]},\"Qus\":{\"name\":\"queuosine monophosphate diradical 10G\",\"mf\":\"C17H22N5O9P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"Q\",\"ocl\":{\"value\":\"edZZIL@IGNaehJNEDliohPOFspb\\\\\\\\bTTTvTRbTbRlRjbTKGG`UWSpMUUUUKLuSUMUTPaLHPfH@@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuPBOq_qopHBGtgD}D@RpPHoWtw@aOTd}RqdCQ@B\\\\StP@{ULY@RpQPTopHBGwQ@@QT\"},\"mass\":471.35912920823984,\"monoisotopicMass\":471.11551430576,\"unsaturation\":18,\"elements\":[{\"symbol\":\"C\",\"number\":17},{\"symbol\":\"H\",\"number\":22},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":9},{\"symbol\":\"P\",\"number\":1}]},\"Cpo\":{\"name\":\"1-methyl-3-(3-amino-3-carboxypropyl)pseudouridine monophosphate diradical 1309U\",\"mf\":\"C14H20N3O10P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"α\",\"ocl\":{\"value\":\"fgpk@OAWBgENSgi{`|[^DWGHeEEMeDheIhjbihs`RuUUTsTuSUMQDSDHfP@\",\"coordinates\":\"!BTh|SI~ioOwy`iR\\\\SiV|SFGxw}FH_]]}DqbH@gx_c|SFA`lIqOW_Xa}uwu~Ox`BbGu~Ox`B_`BH_P\"},\"mass\":421.2970385113492,\"monoisotopicMass\":421.08863085201,\"unsaturation\":12,\"elements\":[{\"symbol\":\"C\",\"number\":14},{\"symbol\":\"H\",\"number\":20},{\"symbol\":\"N\",\"number\":3},{\"symbol\":\"O\",\"number\":10},{\"symbol\":\"P\",\"number\":1}]},\"Mls\":{\"name\":\"1-methylinosine monophosphate diradical 19A\",\"mf\":\"C11H13N4O7P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"O\",\"ocl\":{\"value\":\"fi{Is@INBvENJSghOFwaEqrIQQSYQJIRIMIgOAjvjjjjefZZhbIbDSH@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuPBOq_qopHBGtgD}D@RpPH_Wtw@aOTd}RtPCQ@D}R\"},\"mass\":344.21773398124395,\"monoisotopicMass\":344.05218577211997,\"unsaturation\":14,\"elements\":[{\"symbol\":\"C\",\"number\":11},{\"symbol\":\"H\",\"number\":13},{\"symbol\":\"N\",\"number\":4},{\"symbol\":\"O\",\"number\":7},{\"symbol\":\"P\",\"number\":1}]},\"Mpu\":{\"name\":\"1-methylpseudouridine monophosphate diradical 19U\",\"mf\":\"C10H13N2O8P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"]\",\"ocl\":{\"value\":\"fncPK@OAaSbgIrtGc[pbxyDhhilheDiLjs`RuUUTsTuMDQLPbY@@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuPBOpcbpXBGtSItuPSU@H_Wtw@`lFBpXSU@\"},\"mass\":320.1929965859354,\"monoisotopicMass\":320.04095238282997,\"unsaturation\":10,\"elements\":[{\"symbol\":\"C\",\"number\":10},{\"symbol\":\"H\",\"number\":13},{\"symbol\":\"N\",\"number\":2},{\"symbol\":\"O\",\"number\":8},{\"symbol\":\"P\",\"number\":1}]},\"Mad\":{\"name\":\"1-methyladenosine monophosphate diradical 1A\",\"mf\":\"C11H14N5O6P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"\\\"\",\"ocl\":{\"value\":\"fi{hs@INBwlJ\\\\TgHOFwaEqrIQQSYQJIRIMIgOAjvjjjjefZZhbIbDSH@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuPBOq_qopHBGtgD}D@RpPH_Wtw@aOTd}RtPCQ@D}R\"},\"mass\":343.2329730224273,\"monoisotopicMass\":343.06817018921,\"unsaturation\":14,\"elements\":[{\"symbol\":\"C\",\"number\":11},{\"symbol\":\"H\",\"number\":14},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":6},{\"symbol\":\"P\",\"number\":1}]},\"Mgs\":{\"name\":\"1-methylguanosine monophosphate diradical 1G\",\"mf\":\"C11H14N5O7P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"K\",\"ocl\":{\"value\":\"fegis@INBwlJ\\\\TgHp^MoBKcdRbbfrbTRdR\\\\RYspZmjjjjiYfijbHfHQL`@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuPBOq_qopHBGtgD}D@RpPH_Wtw@aOTd}RtP@gD}D@SuH\"},\"mass\":359.23237794674554,\"monoisotopicMass\":359.06308480878,\"unsaturation\":14,\"elements\":[{\"symbol\":\"C\",\"number\":11},{\"symbol\":\"H\",\"number\":14},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":7},{\"symbol\":\"P\",\"number\":1}]},\"Msu\":{\"name\":\"5-aminomethyl-2-selenouridine monophosphate diradical 20510U\",\"mf\":\"C10H14N3O7PSe\",\"kind\":\"NucleotideP\",\"oneLetter\":\"π\",\"ocl\":{\"value\":\"fasqp`I^{BgEIrtGc[p\\\\bQ\\\\\\\\bTTTvTRbTfUSNAKUUUULsTuDQLPbY@@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuPBOpcbpXBGtSItuPSU@H_Wtw@`lFBpXSU@@tP\"},\"mass\":398.1676241841323,\"monoisotopicMass\":398.97345859992004,\"unsaturation\":null,\"elements\":[{\"symbol\":\"C\",\"number\":10},{\"symbol\":\"H\",\"number\":14},{\"symbol\":\"N\",\"number\":3},{\"symbol\":\"O\",\"number\":7},{\"symbol\":\"P\",\"number\":1},{\"symbol\":\"Se\",\"number\":1}]},\"Mse\":{\"name\":\"5-methylaminomethyl-2-selenouridine monophosphate diradical 20511U\",\"mf\":\"C11H16N3O7PSe\",\"kind\":\"NucleotideP\",\"oneLetter\":\"≅\",\"ocl\":{\"value\":\"fikqp`I^{BgEIrtGc[p\\\\bQ\\\\\\\\bTTTvTRbTfUVYpIZjjjifZfjHbXaDr@@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuPBOpcbpXBGtSItuPSU@H_Wtw@`lFBpXSUAMTBpX\"},\"mass\":412.19424158897914,\"monoisotopicMass\":412.98910866438,\"unsaturation\":null,\"elements\":[{\"symbol\":\"C\",\"number\":11},{\"symbol\":\"H\",\"number\":16},{\"symbol\":\"N\",\"number\":3},{\"symbol\":\"O\",\"number\":7},{\"symbol\":\"P\",\"number\":1},{\"symbol\":\"Se\",\"number\":1}]},\"Cse\":{\"name\":\"5-carboxymethylaminomethyl-2-selenouridine monophosphate diradical 2051U\",\"mf\":\"C12H16N3O9PSe\",\"kind\":\"NucleotideP\",\"oneLetter\":\"⊥\",\"ocl\":{\"value\":\"fcwqH`I^{BgEIru^p^MoArIEqrIQQSYQJIRYUYJLxDmUUUTsMSTuDQLPbY@@\",\"coordinates\":\"!BKAb@tURDM\\\\YpMAMpBYMcx`BKB]~@Ha}SXW@h`Bb@IMcx}RtDvH_Xa}b@JH@ha}b@I~@Ha}\"},\"mass\":456.20378733435086,\"monoisotopicMass\":456.97893790352,\"unsaturation\":null,\"elements\":[{\"symbol\":\"C\",\"number\":12},{\"symbol\":\"H\",\"number\":16},{\"symbol\":\"N\",\"number\":3},{\"symbol\":\"O\",\"number\":9},{\"symbol\":\"P\",\"number\":1},{\"symbol\":\"Se\",\"number\":1}]},\"Agm\":{\"name\":\"agmatidine monophosphate diradical 20C\",\"mf\":\"C14H26N7O6P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"¿\",\"ocl\":{\"value\":\"fgxs@I^BuY{piqR\\\\`|[^DWGHeEEMeDeEHmUddhsgbuUUUSTuUUMIDSDHfP@\",\"coordinates\":\"!BDqc_tTnD_]\\\\fpH}MgrYRc}_|Dr_W_Wx@ThWM_|bOqRc}ARctu~@Gx@urH@gx@b@I~@H`BbGu~@@\"},\"mass\":419.373876184194,\"monoisotopicMass\":419.16821858483,\"unsaturation\":10,\"elements\":[{\"symbol\":\"C\",\"number\":14},{\"symbol\":\"H\",\"number\":26},{\"symbol\":\"N\",\"number\":7},{\"symbol\":\"O\",\"number\":6},{\"symbol\":\"P\",\"number\":1}]},\"Sou\":{\"name\":\"2-selenouridine monophosphate diradical 20U\",\"mf\":\"C9H11N2O7PSe\",\"kind\":\"NucleotideP\",\"oneLetter\":\"ω\",\"ocl\":{\"value\":\"ff}Qp`I^aSbdyjCqmxNQHnNQJJJ[JIQJSMg@ejjjjfYihbIbDSH@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuPBOpcbpXBGtSItuPSU@H_Wtw@`lFDuP\"},\"mass\":369.1263628137839,\"monoisotopicMass\":369.9469094988,\"unsaturation\":null,\"elements\":[{\"symbol\":\"C\",\"number\":9},{\"symbol\":\"H\",\"number\":11},{\"symbol\":\"N\",\"number\":2},{\"symbol\":\"O\",\"number\":7},{\"symbol\":\"P\",\"number\":1},{\"symbol\":\"Se\",\"number\":1}]},\"Agu\":{\"name\":\"5-aminomethyl-2-geranylthiouridine monophosphate diradical 21510U\",\"mf\":\"C20H30N3O7PS\",\"kind\":\"NucleotideP\",\"oneLetter\":\"Δ\",\"ocl\":{\"value\":\"ed\\\\\\\\NB@IOIhJNEDla`OFsp\\\\BHgGHeEEMeDheHdjdcEdhqpEUUUUURsUSMTuQBDpaBXdDt@\",\"coordinates\":\"!BDr__cdo[_X`fgx}RgqeRtM]}Dqa~O}\\\\BTmBH_]]}uwuRtMAMcuI~O}\\\\BupJH_]]}_`A~Oxa}uwu~Oxa}_cW_Xa}\"},\"mass\":487.5074340654907,\"monoisotopicMass\":487.15420849000003,\"unsaturation\":14,\"elements\":[{\"symbol\":\"C\",\"number\":20},{\"symbol\":\"H\",\"number\":30},{\"symbol\":\"N\",\"number\":3},{\"symbol\":\"O\",\"number\":7},{\"symbol\":\"P\",\"number\":1},{\"symbol\":\"S\",\"number\":1}]},\"Mgu\":{\"name\":\"5-methylaminomethyl-2-geranylthiouridine monophosphate diradical 21511U\",\"mf\":\"C21H32N3O7PS\",\"kind\":\"NucleotideP\",\"oneLetter\":\"h\",\"ocl\":{\"value\":\"elR\\\\NB@IOIhJNEDla`OFsp\\\\BHgGHeEEMeDheHdjdlileFN@jjjjjjVZjYjijbDIaBDqHIh\",\"coordinates\":\"!BTv^cbn{__@fw|}RwqeRdK]}Tva~_{_|TiCp_[]}mwuRdIAMsuI~_{]|mwsp_[]}mwu~_{_||Gvw_Wy|Gu~_{]}|Gt\"},\"mass\":501.5340514703375,\"monoisotopicMass\":501.16985855446006,\"unsaturation\":14,\"elements\":[{\"symbol\":\"C\",\"number\":21},{\"symbol\":\"H\",\"number\":32},{\"symbol\":\"N\",\"number\":3},{\"symbol\":\"O\",\"number\":7},{\"symbol\":\"P\",\"number\":1},{\"symbol\":\"S\",\"number\":1}]},\"Cgu\":{\"name\":\"5-carboxymethylaminomethyl-2-geranylthiouridine monophosphate diradical 2151U\",\"mf\":\"C22H32N3O9PS\",\"kind\":\"NucleotideP\",\"oneLetter\":\"f\",\"ocl\":{\"value\":\"ef^\\\\IB@IOIhJNEDla`XPOFsp\\\\BHgGHeEEMeDheHdjdlhehbhqpEUUUUURsUSMUMMTPaLHPfIAM@\",\"coordinates\":\"!BTv^cbn{_@fw|}RwqeRdK]}Tva~_{]|TiCp[_}muRdIAMsuI~_{]|mwsp_[]}mwu~_{]||Gvw_[_}_g}~_{]||Ou~_{]}|Gt\"},\"mass\":545.5435972157093,\"monoisotopicMass\":545.1596877935999,\"unsaturation\":16,\"elements\":[{\"symbol\":\"C\",\"number\":22},{\"symbol\":\"H\",\"number\":32},{\"symbol\":\"N\",\"number\":3},{\"symbol\":\"O\",\"number\":9},{\"symbol\":\"P\",\"number\":1},{\"symbol\":\"S\",\"number\":1}]},\"Mha\":{\"name\":\"2-methylthio-N6-(cis-hydroxyisopentenyl) adenosine monophosphate diradical 2160A\",\"mf\":\"C16H22N5O7PS\",\"kind\":\"NucleotideP\",\"oneLetter\":\"≠\",\"ocl\":{\"value\":\"e`TZNB@IG@nahJNEDlo`OFspb\\\\V`cHeEEMeDheHdxeleDqqxEUuUUUU@sAETuTDHSBDIbP[P\",\"coordinates\":\"!BzfC@IeKPaDn}bHCQb@KQwuRDFALYpHCQt]WHc|TmCQw}~N`ME~@Gx@upJH@h`B_`BH_X`BbGvHGxbGt\"},\"mass\":459.41437086899504,\"monoisotopicMass\":459.09775624102,\"unsaturation\":16,\"elements\":[{\"symbol\":\"C\",\"number\":16},{\"symbol\":\"H\",\"number\":22},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":7},{\"symbol\":\"P\",\"number\":1},{\"symbol\":\"S\",\"number\":1}]},\"Mpa\":{\"name\":\"2-methylthio-N6-isopentenyladenosine monophosphate diradical 2161A\",\"mf\":\"C16H22N5O6PS\",\"kind\":\"NucleotideP\",\"oneLetter\":\"*\",\"ocl\":{\"value\":\"eohZFB@IG@nahJNEDl`OFspb\\\\V`cHeEEMeDheHdxeleFNO@jnjjjjhFXHjfjBDIaBDq@@\",\"coordinates\":\"!BpBYTvxBNFY|bEJObGvOS\\\\@Yt]~DUEJOctu~@Ha}`HzOSTwPTh~H@h`B_`BH_Xa}bOrH@ha}b@I~@Ha}\"},\"mass\":443.4149659446768,\"monoisotopicMass\":443.10284162145,\"unsaturation\":16,\"elements\":[{\"symbol\":\"C\",\"number\":16},{\"symbol\":\"H\",\"number\":22},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":6},{\"symbol\":\"P\",\"number\":1},{\"symbol\":\"S\",\"number\":1}]},\"Mca\":{\"name\":\"2-methylthio-N6-threonylcarbamoyladenosine monophosphate diradical 2162A\",\"mf\":\"C16H21N6O10PS\",\"kind\":\"NucleotideP\",\"oneLetter\":\"[\",\"ocl\":{\"value\":\"ebVVEB@IG@nachJNEDlm`XTPOFspb\\\\V`cHeEEMeDheHdxemLhhhqqxEUuUUUU@sAESUMUABDpaBX`@\",\"coordinates\":\"!BzfC@IeKPaDn}bHCQb@KQwuRDFALYpHCQt]W@h`BTmCQw}~N`ME~@Gx@upJH@h`B_`BH_Wxb@JH_WxbOrHo]^}_`BH_P\"},\"mass\":520.4113480993399,\"monoisotopicMass\":520.07774907193,\"unsaturation\":18,\"elements\":[{\"symbol\":\"C\",\"number\":16},{\"symbol\":\"H\",\"number\":21},{\"symbol\":\"N\",\"number\":6},{\"symbol\":\"O\",\"number\":10},{\"symbol\":\"P\",\"number\":1},{\"symbol\":\"S\",\"number\":1}]},\"Mva\":{\"name\":\"2-methylthio-N6-hydroxynorvalylcarbamoyladenosine monophosphate diradical 2163A\",\"mf\":\"C17H23N6O10PS\",\"kind\":\"NucleotideP\",\"oneLetter\":\"≈\",\"ocl\":{\"value\":\"ej^VEB@IG@nachJNEDlm`XTPOFspb\\\\V`cHeEEMeDheHdxemLhhiVNO@jnjjjjhFXHjZijjBDIaBDq@@\",\"coordinates\":\"!BpBYTvxBNFY|BbEJObGvOS\\\\@Yt]~DUEJOctu~@Ha}`HzOSTwPTh~H@h`B_`BH_Xa}bOrH@gx@bGvHGx@bGwW@h`B_c~H@ha}\"},\"mass\":534.4379655041866,\"monoisotopicMass\":534.09339913639,\"unsaturation\":18,\"elements\":[{\"symbol\":\"C\",\"number\":17},{\"symbol\":\"H\",\"number\":23},{\"symbol\":\"N\",\"number\":6},{\"symbol\":\"O\",\"number\":10},{\"symbol\":\"P\",\"number\":1},{\"symbol\":\"S\",\"number\":1}]},\"Mya\":{\"name\":\"2-methylthio cyclic N6-threonylcarbamoyladenosine monophosphate diradical 2164A\",\"mf\":\"C17H20N5O9PS\",\"kind\":\"NucleotideP\",\"oneLetter\":\"ÿ\",\"ocl\":{\"value\":\"elVZIB@IG@nkhJNEDlcghPOFspb\\\\V`cHeEEMeDheHdxeihiUFNO@jnkojjjjhFXHjfZjbHPfDHSD@@\",\"coordinates\":\"!BvuPfpDnDtEK_tPJHtXBH_TwPb@J_IorHbGtgD}F@RxRH_WwW@hbOTh}RIqOQ`MF@cuKW@hQTcttfpL@YS]@BbGvH@Gx\"},\"mass\":501.4080351062552,\"monoisotopicMass\":501.07193541570007,\"unsaturation\":20,\"elements\":[{\"symbol\":\"C\",\"number\":17},{\"symbol\":\"H\",\"number\":20},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":9},{\"symbol\":\"P\",\"number\":1},{\"symbol\":\"S\",\"number\":1}]},\"Hta\":{\"name\":\"hydroxy-N6-threonylcarbamoyladenosine monophosphate diradical 2165A\",\"mf\":\"C15H19N6O11P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"«\",\"ocl\":{\"value\":\"elZVML@IG@fnehJNEDligo`TPOFspb\\\\\\\\bTTTvTRbTbSVTrbbeXx|BjZjjjj`Y`JZijjBDIaBDq@@\",\"coordinates\":\"!BpBYTvxBNFY|bEJObGvOS\\\\@Yt]~DUEJOctu~@Ha}`HzOSTwPTh~HH`BbGvH_Xc|_`BH_Xc|_`BH_]_|bOq~Oxc|bGt\"},\"mass\":490.31934821268436,\"monoisotopicMass\":490.08494245264,\"unsaturation\":18,\"elements\":[{\"symbol\":\"C\",\"number\":15},{\"symbol\":\"H\",\"number\":19},{\"symbol\":\"N\",\"number\":6},{\"symbol\":\"O\",\"number\":11},{\"symbol\":\"P\",\"number\":1}]},\"Lyd\":{\"name\":\"2-lysidine monophosphate diradical 21C\",\"mf\":\"C15H24N5O8P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"}\",\"ocl\":{\"value\":\"eo`ZAL@IGOFmhJNEDlkg`OFspb\\\\\\\\bTTTvTRbTbSVRTtXxBJjjjjfYjZjfhaBXPaLP@\",\"coordinates\":\"!BTh|SI~ioOwy`iR\\\\SiV|SFGxw}FH_]]}Dqa~Oxc|_c|SFA`lIqOW_Xa}_c~HHa}bOrH_WxbOq~@Ha}\"},\"mass\":433.3541339985626,\"monoisotopicMass\":433.13624975064994,\"unsaturation\":12,\"elements\":[{\"symbol\":\"C\",\"number\":15},{\"symbol\":\"H\",\"number\":24},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":8},{\"symbol\":\"P\",\"number\":1}]},\"Gtu\":{\"name\":\"2-geranylthiouridine monophosphate diradical 21U\",\"mf\":\"C19H27N2O7PS\",\"kind\":\"NucleotideP\",\"oneLetter\":\"Γ\",\"ocl\":{\"value\":\"e`XTNB@IOHJNEDln`OFsp\\\\BHgGHeEEMeDheHdtmEdhqpEUUUUURsUKUMTPaLHPfIAu@\",\"coordinates\":\"!BTv^cbn{__@fw|}RwqeRdK]}Tva~_{_|TiCp_[]}mwuRdIAMsuI~_{]||Gvw_Wy|Gvw_Wy|Gu~_{]}|Gt\"},\"mass\":458.46617269514235,\"monoisotopicMass\":458.12765938888003,\"unsaturation\":14,\"elements\":[{\"symbol\":\"C\",\"number\":19},{\"symbol\":\"H\",\"number\":27},{\"symbol\":\"N\",\"number\":2},{\"symbol\":\"O\",\"number\":7},{\"symbol\":\"P\",\"number\":1},{\"symbol\":\"S\",\"number\":1}]},\"Tyg\":{\"name\":\"N2,N2,7-trimethylguanosine cap monophosphate diradical (cap TMG) 2279553N\",\"mf\":\"C13H20N5O10P2\",\"kind\":\"NucleotideP\",\"oneLetter\":\"¶\",\"ocl\":{\"value\":\"e`TZEBHIG@aihJNEHdleck`OFspz|MgDJTef[vVVe_gifNO@jijjjjjUijifjhaBXPaLP@\",\"coordinates\":\"!BvuPfpDnDtEK_t_rHtXBH_TwPbOr_I`JHbGtgD}F@RxS|uxc|_]^OTh}RIlA~@B\\\\StXCQ`Gx@Owx@_h{_cuH\"},\"mass\":468.2734710359255,\"monoisotopicMass\":468.06854085929,\"unsaturation\":13,\"elements\":[{\"symbol\":\"C\",\"number\":13},{\"symbol\":\"H\",\"number\":20},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":10},{\"symbol\":\"P\",\"number\":2}]},\"Tmg\":{\"name\":\"N2,N2,7-trimethylguanosine monophosphate diradical 227G\",\"mf\":\"C13H20N5O7P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"∠\",\"ocl\":{\"value\":\"fcoisBINCt\\\\J\\\\TgLp^MoBKbFY}dRbbfrbTRdRUbtYspZcjjjjiYfjjjHbXaDr@@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuPBOq_qopHBGtgD}D@RpPH_Wtw@aOTd}Rqd@gD}D@tPBNOt}R\"},\"mass\":389.30149426455074,\"monoisotopicMass\":389.11003500216,\"unsaturation\":12,\"elements\":[{\"symbol\":\"C\",\"number\":13},{\"symbol\":\"H\",\"number\":20},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":7},{\"symbol\":\"P\",\"number\":1}]},\"Dgu\":{\"name\":\"N2,N2-dimethylguanosine monophosphate diradical 22G\",\"mf\":\"C12H16N5O7P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"R\",\"ocl\":{\"value\":\"fmwis@INBwlJ\\\\TgHp^MoBKcdRbbfrbTRdR\\\\RcN^CWmUUUUKLuMUDQLPbY@@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuPBOq_qopHBGtgD}D@RpPH_Wtw@aOTd}RIqOQ@MD@cc}OT`\"},\"mass\":373.2589953515923,\"monoisotopicMass\":373.07873487324,\"unsaturation\":14,\"elements\":[{\"symbol\":\"C\",\"number\":12},{\"symbol\":\"H\",\"number\":16},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":7},{\"symbol\":\"P\",\"number\":1}]},\"Atu\":{\"name\":\"5-aminomethyl-2-thiouridine monophosphate diradical 2510U\",\"mf\":\"C10H14N3O7PS\",\"kind\":\"NucleotideP\",\"oneLetter\":\"∫\",\"ocl\":{\"value\":\"fasqp`I^{BgEIrtGc[p\\\\DQ\\\\\\\\bTTTvTRbTfUSNAKUUUULsTuDQLPbY@@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuPBOpcbpXBGtSItuPSU@H_Wtw@`lFBpXSU@@tP\"},\"mass\":351.27302303324575,\"monoisotopicMass\":351.02900797432005,\"unsaturation\":10,\"elements\":[{\"symbol\":\"C\",\"number\":10},{\"symbol\":\"H\",\"number\":14},{\"symbol\":\"N\",\"number\":3},{\"symbol\":\"O\",\"number\":7},{\"symbol\":\"P\",\"number\":1},{\"symbol\":\"S\",\"number\":1}]},\"Mou\":{\"name\":\"5-methylaminomethyl-2-thiouridine monophosphate diradical 2511U\",\"mf\":\"C11H16N3O7PS\",\"kind\":\"NucleotideP\",\"oneLetter\":\"S\",\"ocl\":{\"value\":\"fikqp`I^{BgEIrtGc[p\\\\DQ\\\\\\\\bTTTvTRbTfUVYpIZjjjifZfjHbXaDr@@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuPBOpcbpXBGtSItuPSU@H_Wtw@`lFBpXSUAMTBpX\"},\"mass\":365.2996404380926,\"monoisotopicMass\":365.04465803878,\"unsaturation\":10,\"elements\":[{\"symbol\":\"C\",\"number\":11},{\"symbol\":\"H\",\"number\":16},{\"symbol\":\"N\",\"number\":3},{\"symbol\":\"O\",\"number\":7},{\"symbol\":\"P\",\"number\":1},{\"symbol\":\"S\",\"number\":1}]},\"Ctu\":{\"name\":\"5-carboxymethylaminomethyl-2-thiouridine monophosphate diradical 251U\",\"mf\":\"C12H16N3O9PS\",\"kind\":\"NucleotideP\",\"oneLetter\":\"$\",\"ocl\":{\"value\":\"fcwqH`I^{BgEIru^p^MoApQEqrIQQSYQJIRYUYJLxDmUUUTsMSTuDQLPbY@@\",\"coordinates\":\"!BKAb@tURDM\\\\YpMAMpBYMcx`BKB]~@Ha}SXW@h`Bb@IMcx}RtDvH_Xa}b@JH@ha}b@I~@Ha}\"},\"mass\":409.3091861834643,\"monoisotopicMass\":409.03448727792,\"unsaturation\":12,\"elements\":[{\"symbol\":\"C\",\"number\":12},{\"symbol\":\"H\",\"number\":16},{\"symbol\":\"N\",\"number\":3},{\"symbol\":\"O\",\"number\":9},{\"symbol\":\"P\",\"number\":1},{\"symbol\":\"S\",\"number\":1}]},\"Myu\":{\"name\":\"5-methoxycarbonylmethyl-2-thiouridine monophosphate diradical 2521U\",\"mf\":\"C12H15N2O9PS\",\"kind\":\"NucleotideP\",\"oneLetter\":\"3\",\"ocl\":{\"value\":\"fmgQH`I^aSbdyZNXOFw`xHbxyDhhilheDiLjmLs`RuUUUSLuLuQDSDHfP@\",\"coordinates\":\"!BS]@lFJU`@Gyoza`lzf@lIwx@`H{WHc|KB_W_Wx@_`@lIr\\\\SFBrH@h`B_`BH_WxbOrH_P\"},\"mass\":394.2945422179627,\"monoisotopicMass\":394.02358824126003,\"unsaturation\":12,\"elements\":[{\"symbol\":\"C\",\"number\":12},{\"symbol\":\"H\",\"number\":15},{\"symbol\":\"N\",\"number\":2},{\"symbol\":\"O\",\"number\":9},{\"symbol\":\"P\",\"number\":1},{\"symbol\":\"S\",\"number\":1}]},\"Cou\":{\"name\":\"5-carbamoylmethyl-2-thiouridine monophosphate diradical 253U\",\"mf\":\"C11H14N3O8PS\",\"kind\":\"NucleotideP\",\"oneLetter\":\"l\",\"ocl\":{\"value\":\"fe{pH`I^gBgEIrtXOFw`xHbxyDhhilheDiLjmF\\\\BVjjjjYfifhbIbDSH@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuPBOpcbpXBGtSItuPSU@H_Wtw@`lFBpXSUAMTC~NKA`\"},\"mass\":379.2831638542993,\"monoisotopicMass\":379.02392259389,\"unsaturation\":12,\"elements\":[{\"symbol\":\"C\",\"number\":11},{\"symbol\":\"H\",\"number\":14},{\"symbol\":\"N\",\"number\":3},{\"symbol\":\"O\",\"number\":8},{\"symbol\":\"P\",\"number\":1},{\"symbol\":\"S\",\"number\":1}]},\"Cau\":{\"name\":\"5-carboxymethyl-2-thiouridine monophosphate diradical 2540U\",\"mf\":\"C11H13N2O9PS\",\"kind\":\"NucleotideP\",\"oneLetter\":\"℘\",\"ocl\":{\"value\":\"fe{QH`I^aSbdyZNXOFw`xHbxyDhhilheDiLjmF\\\\BVjjjjYfifhbIbDSH@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuPBOpcbpXBGtSItuPSU@H_Wtw@`lFBpXSUAMTC~NKA`\"},\"mass\":380.26792481311594,\"monoisotopicMass\":380.00793817680005,\"unsaturation\":12,\"elements\":[{\"symbol\":\"C\",\"number\":11},{\"symbol\":\"H\",\"number\":13},{\"symbol\":\"N\",\"number\":2},{\"symbol\":\"O\",\"number\":9},{\"symbol\":\"P\",\"number\":1},{\"symbol\":\"S\",\"number\":1}]},\"Tau\":{\"name\":\"5-taurinomethyl-2-thiouridine monophosphate diradical 254U\",\"mf\":\"C12H18N3O10PS2\",\"kind\":\"NucleotideP\",\"oneLetter\":\"∃\",\"ocl\":{\"value\":\"fgpj`I^{BgEIrwY{`|[^C`bKblHrIQQSYQJIRYUYIRLxDmUUUTsMSUKTQDqBId@@\",\"coordinates\":\"!BKAb@tURD@m\\\\YpMAMpBYMcx`BKB]~@Ha}SXW@h`Bb@IMcx}RtDvH_Xa}b@JH@ha}b@JH__rH_]^H_P\"},\"mass\":459.3892600220213,\"monoisotopicMass\":459.01712313635005,\"unsaturation\":10,\"elements\":[{\"symbol\":\"C\",\"number\":12},{\"symbol\":\"H\",\"number\":18},{\"symbol\":\"N\",\"number\":3},{\"symbol\":\"O\",\"number\":10},{\"symbol\":\"P\",\"number\":1},{\"symbol\":\"S\",\"number\":2}]},\"Itu\":{\"name\":\"5-(isopentenylaminomethyl)-2-thiouridine monophosphate diradical 2583U\",\"mf\":\"C15H22N3O7PS\",\"kind\":\"NucleotideP\",\"oneLetter\":\"½\",\"ocl\":{\"value\":\"fkoqp`I^{BgEIrtGc[p\\\\DQ\\\\\\\\bTTTvTRbTfUVRTYpIZjjjifZfijbHfHQL`@\",\"coordinates\":\"!BS]@lFJU`@Gyoza`lzf@lIwx@`H{W@h`BKB_W_Wx@_`@lIr\\\\SFBrH@h`B_`BH_Xc|bGvH@gx@bGt\"},\"mass\":419.3902285493682,\"monoisotopicMass\":419.09160823216,\"unsaturation\":12,\"elements\":[{\"symbol\":\"C\",\"number\":15},{\"symbol\":\"H\",\"number\":22},{\"symbol\":\"N\",\"number\":3},{\"symbol\":\"O\",\"number\":7},{\"symbol\":\"P\",\"number\":1},{\"symbol\":\"S\",\"number\":1}]},\"Mth\":{\"name\":\"5-methyl-2-thiouridine monophosphate diradical 25U\",\"mf\":\"C10H13N2O7PS\",\"kind\":\"NucleotideP\",\"oneLetter\":\"F\",\"ocl\":{\"value\":\"fncQp`I^aSbdyZCqmxNBHnNQJJJ[JIQJSJlxDmUUUTsMSQDSDHfP@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuPBOpcbpXBGtSItuPSU@H_Wtw@`lFBpXSU@\"},\"mass\":336.25837906774416,\"monoisotopicMass\":336.01810893766003,\"unsaturation\":10,\"elements\":[{\"symbol\":\"C\",\"number\":10},{\"symbol\":\"H\",\"number\":13},{\"symbol\":\"N\",\"number\":2},{\"symbol\":\"O\",\"number\":7},{\"symbol\":\"P\",\"number\":1},{\"symbol\":\"S\",\"number\":1}]},\"Dmg\":{\"name\":\"N2,7-dimethylguanosine monophosphate diradical 27G\",\"mf\":\"C12H18N5O7P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"∨\",\"ocl\":{\"value\":\"fmwisBINCt\\\\J\\\\TgLp^MoBKbFY}dRbbfrbTRdRUbKN^CWmUUUUKLuUUDQLPbY@@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuPBOq_qopHBGtgD}D@RpPH_Wtw@aOTd}RqdCQ@B\\\\StPAOT`\"},\"mass\":375.27487685970397,\"monoisotopicMass\":375.0943849377,\"unsaturation\":12,\"elements\":[{\"symbol\":\"C\",\"number\":12},{\"symbol\":\"H\",\"number\":18},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":7},{\"symbol\":\"P\",\"number\":1}]},\"Dma\":{\"name\":\"2,8-dimethyladenosine monophosphate diradical 28A\",\"mf\":\"C12H16N5O6P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"±\",\"ocl\":{\"value\":\"feghs@INCv\\\\J\\\\UdhOFw`eqrIQQSYQJJJQKqLyxK^uUUUPMLAUADSDHfP@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuPBOq_qopHBGtgD}D@RpP@c`a}_S_|BD}RSuKQ@B\\\\StP@\"},\"mass\":357.2595904272741,\"monoisotopicMass\":357.08382025367,\"unsaturation\":14,\"elements\":[{\"symbol\":\"C\",\"number\":12},{\"symbol\":\"H\",\"number\":16},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":6},{\"symbol\":\"P\",\"number\":1}]},\"Mas\":{\"name\":\"2-methyladenosine monophosphate diradical 2A\",\"mf\":\"C11H14N5O6P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"/\",\"ocl\":{\"value\":\"fi{hs@INBt\\\\J\\\\TgHOFwaEqrIQQSYQJIRINIgOAjvjjjjAf@j`bIbDSH@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuPBOq_qopHBGtgD}D@RpPH_Wtw@aOTd}RtP@gD}D@\"},\"mass\":343.2329730224273,\"monoisotopicMass\":343.06817018921,\"unsaturation\":14,\"elements\":[{\"symbol\":\"C\",\"number\":11},{\"symbol\":\"H\",\"number\":14},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":6},{\"symbol\":\"P\",\"number\":1}]},\"Tcy\":{\"name\":\"2-thiocytidine monophosphate diradical 2C\",\"mf\":\"C9H12N3O6PS\",\"kind\":\"NucleotideP\",\"oneLetter\":\"%\",\"ocl\":{\"value\":\"ff}pp`I^kBgEIrCqmxNBHnNQJJJ[JIQJSMg@ejjjjfYfhbIbDSH@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuPBOpcbpXBGtSItuPSU@H_Wtw@`lFDuP\"},\"mass\":321.2470007040807,\"monoisotopicMass\":321.01844329029,\"unsaturation\":10,\"elements\":[{\"symbol\":\"C\",\"number\":9},{\"symbol\":\"H\",\"number\":12},{\"symbol\":\"N\",\"number\":3},{\"symbol\":\"O\",\"number\":6},{\"symbol\":\"P\",\"number\":1},{\"symbol\":\"S\",\"number\":1}]},\"Nmg\":{\"name\":\"N2-methylguanosine monophosphate diradical 2G\",\"mf\":\"C11H14N5O7P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"L\",\"ocl\":{\"value\":\"fegis@INBwlJ\\\\TgHp^MoBKcdRbbfrbTRdR\\\\VYspZmjjjjiYfijbHfHQL`@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuPBOq_qopHBGtgD}D@RpPH_Wtw@aOTd}RtP@gD}D@SuH\"},\"mass\":359.23237794674554,\"monoisotopicMass\":359.06308480878,\"unsaturation\":14,\"elements\":[{\"symbol\":\"C\",\"number\":11},{\"symbol\":\"H\",\"number\":14},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":7},{\"symbol\":\"P\",\"number\":1}]},\"Thu\":{\"name\":\"2-thiouridine monophosphate diradical 2U\",\"mf\":\"C9H11N2O7PS\",\"kind\":\"NucleotideP\",\"oneLetter\":\"2\",\"ocl\":{\"value\":\"ff}Qp`I^aSbdyjCqmxNBHnNQJJJ[JIQJSMg@ejjjjfYihbIbDSH@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuPBOpcbpXBGtSItuPSU@H_Wtw@`lFDuP\"},\"mass\":322.2317616628973,\"monoisotopicMass\":322.0024588732,\"unsaturation\":10,\"elements\":[{\"symbol\":\"C\",\"number\":9},{\"symbol\":\"H\",\"number\":11},{\"symbol\":\"N\",\"number\":2},{\"symbol\":\"O\",\"number\":7},{\"symbol\":\"P\",\"number\":1},{\"symbol\":\"S\",\"number\":1}]},\"Ahu\":{\"name\":\"3-(3-amino-3-carboxypropyl)-5,6-dihydrouridine monophosphate diradical 308U\",\"mf\":\"C13H20N3O10P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"Ð\",\"ocl\":{\"value\":\"fkopk@I^gBgENSens`|[^DWGHeEEMeDheIhueMF\\\\BVjjjjZfijfhbIbDSH@\",\"coordinates\":\"!BTh|SI~ioOwy`iR\\\\SiV|SFGxw}FH_]]}DqbH@gx_c|SFA`lIqOW_Xa}_c~HHa}_c~H@gx@bGt\"},\"mass\":409.28630261461393,\"monoisotopicMass\":409.08863085201,\"unsaturation\":10,\"elements\":[{\"symbol\":\"C\",\"number\":13},{\"symbol\":\"H\",\"number\":20},{\"symbol\":\"N\",\"number\":3},{\"symbol\":\"O\",\"number\":10},{\"symbol\":\"P\",\"number\":1}]},\"App\":{\"name\":\"3-(3-amino-3-carboxypropyl)pseudouridine monophosphate diradical 309U\",\"mf\":\"C13H18N3O10P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"Þ\",\"ocl\":{\"value\":\"fkopk@OAgBgENSens`|[^DWGHeEEMeDheIhueMF\\\\BVjjjfZfijfhbIbDSH@\",\"coordinates\":\"!BTh|SI~ioOwy`iR\\\\SiV|SFGxw}FH_]]}DqbH@gx_c|SFA`lIqOW_Xa}_c~HHa}_c~H@gx@bGt\"},\"mass\":407.2704211065024,\"monoisotopicMass\":407.07298078755,\"unsaturation\":12,\"elements\":[{\"symbol\":\"C\",\"number\":13},{\"symbol\":\"H\",\"number\":18},{\"symbol\":\"N\",\"number\":3},{\"symbol\":\"O\",\"number\":10},{\"symbol\":\"P\",\"number\":1}]},\"Apu\":{\"name\":\"3-(3-amino-3-carboxypropyl)uridine monophosphate diradical 30U\",\"mf\":\"C13H18N3O10P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"X\",\"ocl\":{\"value\":\"fkopk@I^gBgENSens`|[^DWGHeEEMeDheIhueMF\\\\BVjjjjYfijfhbIbDSH@\",\"coordinates\":\"!BTh|SI~ioOwy`iR\\\\SiV|SFGxw}FH_]]}DqbH@gx_c|SFA`lIqOW_Xa}_c~HHa}_c~H@gx@bGt\"},\"mass\":407.2704211065024,\"monoisotopicMass\":407.07298078755,\"unsaturation\":12,\"elements\":[{\"symbol\":\"C\",\"number\":13},{\"symbol\":\"H\",\"number\":18},{\"symbol\":\"N\",\"number\":3},{\"symbol\":\"O\",\"number\":10},{\"symbol\":\"P\",\"number\":1}]},\"Mws\":{\"name\":\"methylwyosine monophosphate diradical 342G\",\"mf\":\"C15H18N5O7P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"∑\",\"ocl\":{\"value\":\"eghZNL@IG@nahJNEDli`OFspb\\\\\\\\bTTTvTRbTbb\\\\rVSGG`SPrvuUUUUKMTsUUIBDpaBX`@\",\"coordinates\":\"!B_`CW@mF@ctvDUI|fRxPYgtwP[zV_IorHFY|gD}F@RxPYg|@YgrZOTh{_cuJOS]F@tXAKaI|fw}EMt@\"},\"mass\":411.3070845499097,\"monoisotopicMass\":411.0943849377,\"unsaturation\":18,\"elements\":[{\"symbol\":\"C\",\"number\":15},{\"symbol\":\"H\",\"number\":18},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":7},{\"symbol\":\"P\",\"number\":1}]},\"Uhw\":{\"name\":\"undermodified hydroxywybutosine monophosphate diradical 3470G\",\"mf\":\"C18H23N6O10P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"š\",\"ocl\":{\"value\":\"ejQVEL@IG@nahXJNEDliolRPOFspb\\\\\\\\bTTTvTRbTbb\\\\rVVTttXx|BZFVvjjjjiYjfZjjfjRDIaBDq@@\",\"coordinates\":\"!BKB^@ceS[H`Yg}ARpAeMtHa}KAcPTh{_S]CjXES[pAeMtH}MtEK@IdnDpBXBbES[UMo@F]ARaERH_X`B_`BH_WxbOq~@Ha}\"},\"mass\":514.3839139947949,\"monoisotopicMass\":514.12132796199,\"unsaturation\":20,\"elements\":[{\"symbol\":\"C\",\"number\":18},{\"symbol\":\"H\",\"number\":23},{\"symbol\":\"N\",\"number\":6},{\"symbol\":\"O\",\"number\":10},{\"symbol\":\"P\",\"number\":1}]},\"Acw\":{\"name\":\"7-aminocarboxypropylwyosine monophosphate diradical 347G\",\"mf\":\"C18H23N6O9P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"Ω\",\"ocl\":{\"value\":\"eb^VIL@IG@na`XJNEDlid\\\\POFspb\\\\\\\\bTTTvTRbTbb\\\\rVRrfcGG`SPrvuUUUUKMTsUUSUIBDpaBX`@\",\"coordinates\":\"!BDr]RcwwWpAg_tUS[cm~DUAf_XJUTvx}MaEP@_gwWcm~DUDnDUMo|urH@m_@FWwW_]^NwuS[bGtYgx`BbGu~Ox`B_`BH_P\"},\"mass\":498.38450907047655,\"monoisotopicMass\":498.12641334242,\"unsaturation\":20,\"elements\":[{\"symbol\":\"C\",\"number\":18},{\"symbol\":\"H\",\"number\":23},{\"symbol\":\"N\",\"number\":6},{\"symbol\":\"O\",\"number\":9},{\"symbol\":\"P\",\"number\":1}]},\"Hwy\":{\"name\":\"methylated undermodified hydroxywybutosine monophosphate diradical 3480G\",\"mf\":\"C19H25N6O10P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"y\",\"ocl\":{\"value\":\"efYVEL@IG@nahXJNEDliolRPOFspb\\\\\\\\bTTTvTRbTbb\\\\rVVTttsGG`SPrvuUUUUKMTsUUTuTdHSBDIb@@\",\"coordinates\":\"!B`HyRtL@f_XbDRxz@UHS_chc|S]BN`MAMwxyKaL@fUHS_cmG_chCjXI|YzfA}bL@fpBYTaHz@F\\\\BH@gx@upJH@ha}_`CWHc|_`@\"},\"mass\":528.4105313996416,\"monoisotopicMass\":528.1369780264499,\"unsaturation\":20,\"elements\":[{\"symbol\":\"C\",\"number\":19},{\"symbol\":\"H\",\"number\":25},{\"symbol\":\"N\",\"number\":6},{\"symbol\":\"O\",\"number\":10},{\"symbol\":\"P\",\"number\":1}]},\"Hwb\":{\"name\":\"hydroxywybutosine monophosphate diradical 34830G\",\"mf\":\"C21H27N6O12P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"⊆\",\"ocl\":{\"value\":\"ee[VCL@IG@nahXJNEDliobZV^POFspb\\\\\\\\bTTTvTRbTbb\\\\rVVTtRbfsGG`SPrvuUUUUKMTsUUULuUIBDpaBX`@\",\"coordinates\":\"!BKB^@ceS[@h`Yg}ARpAeMtHa}KAcPTh{_S]CjXES[pAeMtH}MtEK@IdnDpBXBbES[UMo@F]ARaERH_X`B_`BH_X`B_c~H_]]}bGu~Ox`B_c~H_P\"},\"mass\":586.4466945498602,\"monoisotopicMass\":586.14245733005,\"unsaturation\":22,\"elements\":[{\"symbol\":\"C\",\"number\":21},{\"symbol\":\"H\",\"number\":27},{\"symbol\":\"N\",\"number\":6},{\"symbol\":\"O\",\"number\":12},{\"symbol\":\"P\",\"number\":1}]},\"Pwb\":{\"name\":\"peroxywybutosine monophosphate diradical 34832G\",\"mf\":\"C21H27N6O13P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"W\",\"ocl\":{\"value\":\"emWVKL@IG@nadXJNEDliohZV^QPOFspb\\\\\\\\bTTTvTRbTbb\\\\rVVTRfTTvXx|BZFVvjjjjiYjfZjjjYjjRDIaBDq@@\",\"coordinates\":\"!BKB^@ceS[@h`Yg}ARpAeMtHa}KAcPTh{_S]CjXES[pAeMtH}MtEK@IdnDpB[|bES[UMo@F]ARaERH_X`B_`BH_X`Bb@I~Oxa}uwvH_Wxb@I~Oxa}\"},\"mass\":602.4460994741785,\"monoisotopicMass\":602.1373719496199,\"unsaturation\":22,\"elements\":[{\"symbol\":\"C\",\"number\":21},{\"symbol\":\"H\",\"number\":27},{\"symbol\":\"N\",\"number\":6},{\"symbol\":\"O\",\"number\":13},{\"symbol\":\"P\",\"number\":1}]},\"Wyb\":{\"name\":\"wybutosine monophosphate diradical 3483G\",\"mf\":\"C21H27N6O11P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"Y\",\"ocl\":{\"value\":\"eiSVML@IG@na`XJNEDlilRZVPOFspb\\\\\\\\bTTTvTRbTbb\\\\rVVRbTTvXx|BZFVvjjjjiYjfZjjfZjdaBXPaLP@\",\"coordinates\":\"!BsJ\\\\@ciP{@`YWuARPAeMT@a}sNaPThxSUCjhIP{PAeMTD}MTEI@IllDPB[|BIP{eCm@FUARAIPH_Pc|BGtHGzBGtw_Pa}_k|HGzBGt\"},\"mass\":570.4472896255419,\"monoisotopicMass\":570.14754271048,\"unsaturation\":22,\"elements\":[{\"symbol\":\"C\",\"number\":21},{\"symbol\":\"H\",\"number\":27},{\"symbol\":\"N\",\"number\":6},{\"symbol\":\"O\",\"number\":11},{\"symbol\":\"P\",\"number\":1}]},\"Awo\":{\"name\":\"7-aminocarboxypropylwyosine methyl ester monophosphate diradical 348G\",\"mf\":\"C19H25N6O9P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"⇑\",\"ocl\":{\"value\":\"ejQVIL@IG@na`XJNEDlid\\\\POFspb\\\\\\\\bTTTvTRbTbb\\\\rVVRffXx|BZFVvjjjjiYjfZjjZjRDIaBDq@@\",\"coordinates\":\"!B`HyRtL@f_XbDRxz@UHS_ch`BS]BN`MAMwxyKaL@fUHS_cmG_chCjXI|YzfA}bL@fpBYTaHz@F\\\\BHHa}bOq~@Ha}_c~H@ha}\"},\"mass\":512.4111264753234,\"monoisotopicMass\":512.14206340688,\"unsaturation\":20,\"elements\":[{\"symbol\":\"C\",\"number\":19},{\"symbol\":\"H\",\"number\":25},{\"symbol\":\"N\",\"number\":6},{\"symbol\":\"O\",\"number\":9},{\"symbol\":\"P\",\"number\":1}]},\"Wyo\":{\"name\":\"wyosine monophosphate diradical 34G\",\"mf\":\"C14H16N5O7P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"€\",\"ocl\":{\"value\":\"ek`ZNL@IG@nahJNEDli`OFspb\\\\\\\\bTTTvTRbTbb\\\\rVXx|BZFVvjjjjiYjfZjdaBXPaLP@\",\"coordinates\":\"!B_`CWMF@ctvDUI|fRxPYgtwP[zV_IorHFY|gD}F@RxPYg|@YgrZOTh{_cuJOS]F@tXAKaI|fw}D\"},\"mass\":397.2804671450629,\"monoisotopicMass\":397.07873487324,\"unsaturation\":18,\"elements\":[{\"symbol\":\"C\",\"number\":14},{\"symbol\":\"H\",\"number\":16},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":7},{\"symbol\":\"P\",\"number\":1}]},\"Pdu\":{\"name\":\"3-methylpseudouridine monophosphate diradical 39U\",\"mf\":\"C10H13N2O8P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"κ\",\"ocl\":{\"value\":\"fncPK@OAaSbgIrtGc[pbxyDhhilheDiMFs`RuUUTsTuMDQLPbY@@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuPBOpcbpXBGtSItuPSU@HoWtw@`lFC~NSU@\"},\"mass\":320.1929965859354,\"monoisotopicMass\":320.04095238282997,\"unsaturation\":10,\"elements\":[{\"symbol\":\"C\",\"number\":10},{\"symbol\":\"H\",\"number\":13},{\"symbol\":\"N\",\"number\":2},{\"symbol\":\"O\",\"number\":8},{\"symbol\":\"P\",\"number\":1}]},\"Mri\":{\"name\":\"3-methyluridine monophosphate diradical 3U\",\"mf\":\"C10H13N2O8P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"δ\",\"ocl\":{\"value\":\"fncPK@I^aSbgIrtGc[pbxyDhhilheDiMFs`RuUUUSLuMDQLPbY@@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuPBOpcbpXBGtSItuPSU@HoWtw@`lFC~NSU@\"},\"mass\":320.1929965859354,\"monoisotopicMass\":320.04095238282997,\"unsaturation\":10,\"elements\":[{\"symbol\":\"C\",\"number\":10},{\"symbol\":\"H\",\"number\":13},{\"symbol\":\"N\",\"number\":2},{\"symbol\":\"O\",\"number\":8},{\"symbol\":\"P\",\"number\":1}]},\"Acc\":{\"name\":\"N4-acetylcytidine monophosphate diradical 42C\",\"mf\":\"C11H14N3O8P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"M\",\"ocl\":{\"value\":\"fikpK@I^kBgENSghOFwaEqrIQQSYQJIRYiQg@ejjjjfYffhbIbDSH@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuPBOpcbpXBGtSItuPSU@H_Wtw@`lFDuPOxxSItuP\"},\"mass\":347.21837644817225,\"monoisotopicMass\":347.05185141949,\"unsaturation\":12,\"elements\":[{\"symbol\":\"C\",\"number\":11},{\"symbol\":\"H\",\"number\":14},{\"symbol\":\"N\",\"number\":3},{\"symbol\":\"O\",\"number\":8},{\"symbol\":\"P\",\"number\":1}]},\"Iws\":{\"name\":\"isowyosine monophosphate diradical 42G\",\"mf\":\"C14H16N5O7P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"⊇\",\"ocl\":{\"value\":\"ek`ZNL@IG@fnhJNEDla`OFspb\\\\\\\\bTTTvTRbTbSbRrXx|BjzfVjjjjiYjYjjdaBXPaLP@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuPBOq_qopHBGtgD}D@RpPH_Wtw@aOTd}RStwQ@MD@RpQ_qcQSU@\"},\"mass\":397.2804671450629,\"monoisotopicMass\":397.07873487324,\"unsaturation\":18,\"elements\":[{\"symbol\":\"C\",\"number\":14},{\"symbol\":\"H\",\"number\":16},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":7},{\"symbol\":\"P\",\"number\":1}]},\"Dmc\":{\"name\":\"N4,N4-dimethylcytidine monophosphate diradical 44C\",\"mf\":\"C11H16N3O7P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"μ\",\"ocl\":{\"value\":\"fasqs@I^kBgENSdGc[pbxyDhhilheDiLuF\\\\BVjjjjYfZjHbXaDr@@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuPBGpcbpXBGtSItuPSU@H_Wtw@`lFDuPOxxlF@\"},\"mass\":333.23485303196554,\"monoisotopicMass\":333.07258686438,\"unsaturation\":10,\"elements\":[{\"symbol\":\"C\",\"number\":11},{\"symbol\":\"H\",\"number\":16},{\"symbol\":\"N\",\"number\":3},{\"symbol\":\"O\",\"number\":7},{\"symbol\":\"P\",\"number\":1}]},\"Adw\":{\"name\":\"7-aminocarboxypropyl-demethylwyosine monophosphate diradical 47G\",\"mf\":\"C17H21N6O9P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"¥\",\"ocl\":{\"value\":\"elVVIL@IG@fnohJNEDlahTPOFspb\\\\\\\\bTTTvTRbTbSbRrrTtXx|BjzfVjjjjiYjYjjijdaBXPaLP@\",\"coordinates\":\"!B`MERc|@Y_]^DUH{_UMo_tXa}SXPTh{_w}GjXES[pAg_t]F@cm@Il@f@haTvuS[pAgPThQTbGvH@ha}_c~HGx@bGt\"},\"mass\":484.3578916656298,\"monoisotopicMass\":484.1107632779601,\"unsaturation\":20,\"elements\":[{\"symbol\":\"C\",\"number\":17},{\"symbol\":\"H\",\"number\":21},{\"symbol\":\"N\",\"number\":6},{\"symbol\":\"O\",\"number\":9},{\"symbol\":\"P\",\"number\":1}]},\"Ncd\":{\"name\":\"N4-methylcytidine monophosphate diradical 4C\",\"mf\":\"C10H14N3O7P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"ν\",\"ocl\":{\"value\":\"fncqs@I^kBgENSdGc[pbxyDhhilheDiLts`RuUUUSLsUDQLPbY@@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuPBOpcbpXBGtSItuPSU@H_Wtw@`lFDuPKA`\"},\"mass\":319.2082356271187,\"monoisotopicMass\":319.05693679992004,\"unsaturation\":10,\"elements\":[{\"symbol\":\"C\",\"number\":10},{\"symbol\":\"H\",\"number\":14},{\"symbol\":\"N\",\"number\":3},{\"symbol\":\"O\",\"number\":7},{\"symbol\":\"P\",\"number\":1}]},\"Dmw\":{\"name\":\"4-demethylwyosine monophosphate diradical 4G\",\"mf\":\"C13H14N5O7P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"†\",\"ocl\":{\"value\":\"fcis@INBwlJ\\\\TgHp^MoBKcdRbbfrbTRdR\\\\RVYspZ}fnjjjjefifjiHbXaDr@@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuPBOq_qopHBGtgD}D@RpPH_Wtw@aOTd}RStwQ@MD@RpQ_qcQ\"},\"mass\":383.253849740216,\"monoisotopicMass\":383.06308480878,\"unsaturation\":18,\"elements\":[{\"symbol\":\"C\",\"number\":13},{\"symbol\":\"H\",\"number\":14},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":7},{\"symbol\":\"P\",\"number\":1}]},\"Mtu\":{\"name\":\"5-methoxyuridine monophosphate diradical 501U\",\"mf\":\"C10H13N2O9P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"5\",\"ocl\":{\"value\":\"fasQK@I^aSbgIsUhOFwaEqrIQQSYQJIRYULxDmUUUTsMSTQDqBId@@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuPBOpcbpXBGtSItuPSU@H_Wtw@`lFBpXSU@@tP\"},\"mass\":336.19240151025366,\"monoisotopicMass\":336.03586700240004,\"unsaturation\":10,\"elements\":[{\"symbol\":\"C\",\"number\":10},{\"symbol\":\"H\",\"number\":13},{\"symbol\":\"N\",\"number\":2},{\"symbol\":\"O\",\"number\":9},{\"symbol\":\"P\",\"number\":1}]},\"Uoa\":{\"name\":\"uridine 5-oxyacetic acid monophosphate diradical 502U\",\"mf\":\"C11H13N2O11P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"V\",\"ocl\":{\"value\":\"fmgQk@I^aSbgIsUlu`|[^DWGHeEEMeDheIeUeF\\\\BVjjjjYfiijHbXaDr@@\",\"coordinates\":\"!BS]@lFJU`@Gyoza`lzf@lIwx@`H{WHc|KB_W_Wx@_`@lIr\\\\SFBrHHc|_`BH_Xc|_`BH_P\"},\"mass\":380.2019472556255,\"monoisotopicMass\":380.02569624154,\"unsaturation\":12,\"elements\":[{\"symbol\":\"C\",\"number\":11},{\"symbol\":\"H\",\"number\":13},{\"symbol\":\"N\",\"number\":2},{\"symbol\":\"O\",\"number\":11},{\"symbol\":\"P\",\"number\":1}]},\"Ume\":{\"name\":\"uridine 5-oxyacetic acid methyl ester monophosphate diradical 503U\",\"mf\":\"C12H15N2O11P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"υ\",\"ocl\":{\"value\":\"fcwQk@I^aSbgIsUlu`|[^DWGHeEEMeDheIeUeLs`RuUUUSLuMMTQDqBId@@\",\"coordinates\":\"!BKAb@tURDM\\\\YpMAMpBYMcxc|KB]~@Ha}SXWHc|bOqMcx}RtDvH_Xa}bOrH@ha}_c~HHa}\"},\"mass\":394.2285646604723,\"monoisotopicMass\":394.041346306,\"unsaturation\":12,\"elements\":[{\"symbol\":\"C\",\"number\":12},{\"symbol\":\"H\",\"number\":15},{\"symbol\":\"N\",\"number\":2},{\"symbol\":\"O\",\"number\":11},{\"symbol\":\"P\",\"number\":1}]},\"Hxc\":{\"name\":\"5-hydroxycytidine monophosphate diradical 50C\",\"mf\":\"C9H12N3O8P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"Ç\",\"ocl\":{\"value\":\"fncpK@I^[BgENSfhOFwaEqrIQQSYQJIRYUg@ejjjjfYfjHbXaDr@@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuPBOpcbpXBGtSItuPSU@H_Wtw@`lFBpXSU@\"},\"mass\":321.1810231465902,\"monoisotopicMass\":321.03620135502996,\"unsaturation\":10,\"elements\":[{\"symbol\":\"C\",\"number\":9},{\"symbol\":\"H\",\"number\":12},{\"symbol\":\"N\",\"number\":3},{\"symbol\":\"O\",\"number\":8},{\"symbol\":\"P\",\"number\":1}]},\"Hxu\":{\"name\":\"5-hydroxyuridine monophosphate diradical 50U\",\"mf\":\"C9H11N2O9P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"∝\",\"ocl\":{\"value\":\"fncQK@I^aSbgIsUhOFwaEqrIQQSYQJIRYUg@ejjjjfYjZHbXaDr@@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuPBOpcbpXBGtSItuPSU@H_Wtw@`lFBpXSU@\"},\"mass\":322.1657841054069,\"monoisotopicMass\":322.02021693794,\"unsaturation\":10,\"elements\":[{\"symbol\":\"C\",\"number\":9},{\"symbol\":\"H\",\"number\":11},{\"symbol\":\"N\",\"number\":2},{\"symbol\":\"O\",\"number\":9},{\"symbol\":\"P\",\"number\":1}]},\"Amu\":{\"name\":\"5-aminomethyluridine monophosphate diradical 510U\",\"mf\":\"C10H14N3O8P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"∪\",\"ocl\":{\"value\":\"faspK@I^{BgENSehOFwaEqrIQQSYQJIRYULxDmUUUTsMSTQDqBId@@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuPBOpcbpXBGtSItuPSU@H_Wtw@`lFBpXSU@@tP\"},\"mass\":335.207640551437,\"monoisotopicMass\":335.05185141949,\"unsaturation\":10,\"elements\":[{\"symbol\":\"C\",\"number\":10},{\"symbol\":\"H\",\"number\":14},{\"symbol\":\"N\",\"number\":3},{\"symbol\":\"O\",\"number\":8},{\"symbol\":\"P\",\"number\":1}]},\"Mau\":{\"name\":\"5-methylaminomethyluridine monophosphate diradical 511U\",\"mf\":\"C11H16N3O8P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"{\",\"ocl\":{\"value\":\"fikpK@I^{BgENSehOFwaEqrIQQSYQJIRYUYg@ejjjjfYjZhbIbDSH@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuPBOpcbpXBGtSItuPSU@H_Wtw@`lFBpXSUAMTBpX\"},\"mass\":349.2342579562838,\"monoisotopicMass\":349.06750148395,\"unsaturation\":10,\"elements\":[{\"symbol\":\"C\",\"number\":11},{\"symbol\":\"H\",\"number\":16},{\"symbol\":\"N\",\"number\":3},{\"symbol\":\"O\",\"number\":8},{\"symbol\":\"P\",\"number\":1}]},\"Hmc\":{\"name\":\"5-hydroxymethylcytidine monophosphate diradical 51C\",\"mf\":\"C10H14N3O8P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"∅\",\"ocl\":{\"value\":\"faspK@I^[BgENSghOFwaEqrIQQSYQJIRYULxDmUUUTsLuTQDqBId@@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuPBOpcbpXBGtSItuPSU@H_Wtw@`lFBpXSU@@tP\"},\"mass\":335.207640551437,\"monoisotopicMass\":335.05185141949,\"unsaturation\":10,\"elements\":[{\"symbol\":\"C\",\"number\":10},{\"symbol\":\"H\",\"number\":14},{\"symbol\":\"N\",\"number\":3},{\"symbol\":\"O\",\"number\":8},{\"symbol\":\"P\",\"number\":1}]},\"Cur\":{\"name\":\"5-carboxymethylaminomethyluridine monophosphate diradical 51U\",\"mf\":\"C12H16N3O10P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"!\",\"ocl\":{\"value\":\"fcwpk@I^{BgENSej}`|[^DWGHeEEMeDheIeUdhs`RuUUUSLuMSTQDqBId@@\",\"coordinates\":\"!BKAb@tURDM\\\\YpMAMpBYMcx`BKB]~@Ha}SXW@h`Bb@IMcx}RtDvH_Xa}b@JH@ha}b@I~@Ha}\"},\"mass\":393.24380370165557,\"monoisotopicMass\":393.05733072309,\"unsaturation\":12,\"elements\":[{\"symbol\":\"C\",\"number\":12},{\"symbol\":\"H\",\"number\":16},{\"symbol\":\"N\",\"number\":3},{\"symbol\":\"O\",\"number\":10},{\"symbol\":\"P\",\"number\":1}]},\"Chr\":{\"name\":\"5-carboxyhydroxymethyluridine monophosphate diradical 520U\",\"mf\":\"C11H13N2O11P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"≥\",\"ocl\":{\"value\":\"fmgQk@I^aSbgIrwlu`|[^DWGHeEEMeDheIeUCF\\\\BVjjjjYfiijHbXaDr@@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuPBOpcbpXBGtSItuPSU@H_Wtw@`lFBpXSU@@tTuPOxxlF@\"},\"mass\":380.2019472556255,\"monoisotopicMass\":380.02569624154,\"unsaturation\":12,\"elements\":[{\"symbol\":\"C\",\"number\":11},{\"symbol\":\"H\",\"number\":13},{\"symbol\":\"N\",\"number\":2},{\"symbol\":\"O\",\"number\":11},{\"symbol\":\"P\",\"number\":1}]},\"Mcu\":{\"name\":\"5-methoxycarbonylmethyluridine monophosphate diradical 521U\",\"mf\":\"C12H15N2O10P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"1\",\"ocl\":{\"value\":\"fmgPk@I^aSbgIrt\\\\p^MoBKcdRbbfrbTRdrjtsNAKUUUULsTsUDQLPbY@@\",\"coordinates\":\"!BS]@lFJU`@Gyoza`lzf@lIwx@`H{WHc|KB_W_Wx@_`@lIr\\\\SFBrH@h`B_`BH_WxbOrH_P\"},\"mass\":378.229159736154,\"monoisotopicMass\":378.04643168643,\"unsaturation\":12,\"elements\":[{\"symbol\":\"C\",\"number\":12},{\"symbol\":\"H\",\"number\":15},{\"symbol\":\"N\",\"number\":2},{\"symbol\":\"O\",\"number\":10},{\"symbol\":\"P\",\"number\":1}]},\"Hme\":{\"name\":\"5-(carboxyhydroxymethyl)uridine methyl ester monophosphate diradical 522U\",\"mf\":\"C12H15N2O11P\",\"kind\":\"NucleotideP\",\"oneLetter\":\",\",\"ocl\":{\"value\":\"fcwQk@I^aSbgIrwlu`|[^DWGHeEEMeDheIeUCLs`RuUUUSLuMMTQDqBId@@\",\"coordinates\":\"!BS]@lFJU`@Gyoza`lzf@lIwx@`H{WHc|KB_W_Wx@_`@lIr\\\\SFBrHHc|_`A~@Ha}_c~H@ha}\"},\"mass\":394.2285646604723,\"monoisotopicMass\":394.041346306,\"unsaturation\":12,\"elements\":[{\"symbol\":\"C\",\"number\":12},{\"symbol\":\"H\",\"number\":15},{\"symbol\":\"N\",\"number\":2},{\"symbol\":\"O\",\"number\":11},{\"symbol\":\"P\",\"number\":1}]},\"Cxu\":{\"name\":\"5-carboxymethyluridine monophosphate diradical 52U\",\"mf\":\"C11H13N2O10P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"◊\",\"ocl\":{\"value\":\"fe{Pk@I^aSbgIrt\\\\p^MoBKcdRbbfrbTRdrjtYpIZjjjifZfZbHfHQL`@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuPBOpcbpXBGtSItuPSU@H_Wtw@`lFBpXSUAMTC~NKA`\"},\"mass\":364.2025423313072,\"monoisotopicMass\":364.03078162197,\"unsaturation\":12,\"elements\":[{\"symbol\":\"C\",\"number\":11},{\"symbol\":\"H\",\"number\":13},{\"symbol\":\"N\",\"number\":2},{\"symbol\":\"O\",\"number\":10},{\"symbol\":\"P\",\"number\":1}]},\"Hmu\":{\"name\":\"5-carbamoylhydroxymethyluridine monophosphate diradical 531U\",\"mf\":\"C11H14N3O10P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"r\",\"ocl\":{\"value\":\"fmgpk@I^WBgENSeoY`|[^DWGHeEEMeDheIeUCF\\\\BVjjjjYfiijHbXaDr@@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuPBOpcbpXBGtSItuPSU@H_Wtw@`lFBpXSU@@tTuPOxxlF@\"},\"mass\":379.21718629680873,\"monoisotopicMass\":379.04168065863,\"unsaturation\":12,\"elements\":[{\"symbol\":\"C\",\"number\":11},{\"symbol\":\"H\",\"number\":14},{\"symbol\":\"N\",\"number\":3},{\"symbol\":\"O\",\"number\":10},{\"symbol\":\"P\",\"number\":1}]},\"Ymu\":{\"name\":\"5-carbamoylmethyluridine monophosphate diradical 53U\",\"mf\":\"C11H14N3O9P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"&\",\"ocl\":{\"value\":\"fe{qK@I^gBgENSehp^MoBKcdRbbfrbTRdrjtYpIZjjjifZfZbHfHQL`@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuPBOpcbpXBGtSItuPSU@H_Wtw@`lFBpXSUAMTC~NKA`\"},\"mass\":363.2177813724905,\"monoisotopicMass\":363.04676603906006,\"unsaturation\":12,\"elements\":[{\"symbol\":\"C\",\"number\":11},{\"symbol\":\"H\",\"number\":14},{\"symbol\":\"N\",\"number\":3},{\"symbol\":\"O\",\"number\":9},{\"symbol\":\"P\",\"number\":1}]},\"Ttu\":{\"name\":\"5-taurinomethyluridine monophosphate diradical 54U\",\"mf\":\"C12H18N3O11PS\",\"kind\":\"NucleotideP\",\"oneLetter\":\"Ê\",\"ocl\":{\"value\":\"fgqh`I^{BgENSenswAxv|HnJpcHeEEMeDheIeUdeHs`RuUUUSLuMTmQDSDHfP@\",\"coordinates\":\"!BKAb@tURD@m\\\\YpMAMpBYMcx`BKB]~@Ha}SXW@h`Bb@IMcx}RtDvH_Xa}b@JH@ha}b@JH__rH_]^H_P\"},\"mass\":443.32387754021244,\"monoisotopicMass\":443.03996658152005,\"unsaturation\":10,\"elements\":[{\"symbol\":\"C\",\"number\":12},{\"symbol\":\"H\",\"number\":18},{\"symbol\":\"N\",\"number\":3},{\"symbol\":\"O\",\"number\":11},{\"symbol\":\"P\",\"number\":1},{\"symbol\":\"S\",\"number\":1}]},\"Cmu\":{\"name\":\"5-cyanomethyluridine monophosphate diradical 55U\",\"mf\":\"C11H12N3O8P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"Ѷ\",\"ocl\":{\"value\":\"fikpK@I^GBgENSehOFwaEqrIQQSYQJIRYUYg@ejjjjfYj[hbIbDSH@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuPBOpcbpXBGtSItuPSU@H_Wtw@`lFBpXSU@@tPCQ\"},\"mass\":345.20249494006066,\"monoisotopicMass\":345.03620135502996,\"unsaturation\":14,\"elements\":[{\"symbol\":\"C\",\"number\":11},{\"symbol\":\"H\",\"number\":12},{\"symbol\":\"N\",\"number\":3},{\"symbol\":\"O\",\"number\":8},{\"symbol\":\"P\",\"number\":1}]},\"Pyu\":{\"name\":\"5-(isopentenylaminomethyl)uridine monophosphate diradical 583U\",\"mf\":\"C15H22N3O8P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"¾\",\"ocl\":{\"value\":\"fkopK@I^{BgENSehOFwaEqrIQQSYQJIRYUYIQg@ejjjjfYjZfjHbXaDr@@\",\"coordinates\":\"!BS]@lFJU`@Gyoza`lzf@lIwx@`H{W@h`BKB_W_Wx@_`@lIr\\\\SFBrH@h`B_`BH_Xc|bGvH@gx@bGt\"},\"mass\":403.32484606755946,\"monoisotopicMass\":403.11445167733,\"unsaturation\":12,\"elements\":[{\"symbol\":\"C\",\"number\":15},{\"symbol\":\"H\",\"number\":22},{\"symbol\":\"N\",\"number\":3},{\"symbol\":\"O\",\"number\":8},{\"symbol\":\"P\",\"number\":1}]},\"Mdu\":{\"name\":\"5-methyldihydrouridine monophosphate diradical 58U\",\"mf\":\"C10H15N2O8P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"ρ\",\"ocl\":{\"value\":\"fncPK@I^aSbgIrtGc[pbxyDhhilheDiLjs`RuUUUSTuMDQLPbY@@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuPBOpcbpXBGtSItuPSU@H_Wtw@`lFBpXSU@\"},\"mass\":322.20887809404695,\"monoisotopicMass\":322.05660244729,\"unsaturation\":8,\"elements\":[{\"symbol\":\"C\",\"number\":10},{\"symbol\":\"H\",\"number\":15},{\"symbol\":\"N\",\"number\":2},{\"symbol\":\"O\",\"number\":8},{\"symbol\":\"P\",\"number\":1}]},\"Mcd\":{\"name\":\"5-methylcytidine monophosphate diradical 5C\",\"mf\":\"C10H14N3O7P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"?\",\"ocl\":{\"value\":\"fncqs@I^[BgENSdGc[pbxyDhhilheDiLjs`RuUUUSLsUDQLPbY@@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuPBOpcbpXBGtSItuPSU@H_Wtw@`lFBpXSU@\"},\"mass\":319.2082356271187,\"monoisotopicMass\":319.05693679992004,\"unsaturation\":10,\"elements\":[{\"symbol\":\"C\",\"number\":10},{\"symbol\":\"H\",\"number\":14},{\"symbol\":\"N\",\"number\":3},{\"symbol\":\"O\",\"number\":7},{\"symbol\":\"P\",\"number\":1}]},\"Hia\":{\"name\":\"N6-(cis-hydroxyisopentenyl)adenosine monophosphate diradical 60A\",\"mf\":\"C15H20N5O7P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"`\",\"ocl\":{\"value\":\"eg`ZNL@IG@fnhJNEDlk`OFspb\\\\\\\\bTTTvTRbTbSVRTSGG`USUUUUTCLATuTDHSBDIbPSH\",\"coordinates\":\"!BzfC@IeKPaDn}bHCQb@KQwuRDFALYpHCQt]W@h`BTmCQw}~N`ME~@Gx@b@JH@ha}bOrH_Wxb@JH_P\"},\"mass\":413.3229660580212,\"monoisotopicMass\":413.11003500216003,\"unsaturation\":16,\"elements\":[{\"symbol\":\"C\",\"number\":15},{\"symbol\":\"H\",\"number\":20},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":7},{\"symbol\":\"P\",\"number\":1}]},\"Mta\":{\"name\":\"2-methylthio-N6-methyladenosine monophosphate diradical 621A\",\"mf\":\"C12H16N5O6PS\",\"kind\":\"NucleotideP\",\"oneLetter\":\"∞\",\"ocl\":{\"value\":\"fmwhp`CQstZLDxipEfGa[qZDYEIlheDdhXdmDmKR\\\\u{MUUUU@aEUAFPTdmH@\",\"coordinates\":\"!BBGw|B@a}_S\\\\H@a}TEJNOuP{Ntm@fPBN[~iRSpHUCneXDBYTEITAEPDiVA@fTBYU@Sj[p\"},\"mass\":389.3243778334011,\"monoisotopicMass\":389.05589142807,\"unsaturation\":14,\"elements\":[{\"symbol\":\"C\",\"number\":12},{\"symbol\":\"H\",\"number\":16},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":6},{\"symbol\":\"P\",\"number\":1},{\"symbol\":\"S\",\"number\":1}]},\"Tca\":{\"name\":\"N6-threonylcarbamoyladenosine monophosphate diradical 62A\",\"mf\":\"C15H19N6O10P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"6\",\"ocl\":{\"value\":\"edRVEL@IG@fnehJNEDligo`POFspb\\\\\\\\bTTTvTRbTbSVTrbbcGG`USUUUUTCLASUMUABDpaBX`@\",\"coordinates\":\"!BzfC@IeKPaDn}bHCQbOsQwuRDFALYpHCQt]W@h`BTmCQw}~N`ME~@Gx@b@JH@ha}_c~H@ha}_c~H@ha}uwu~@Ha}\"},\"mass\":474.31994328836606,\"monoisotopicMass\":474.09002783307,\"unsaturation\":18,\"elements\":[{\"symbol\":\"C\",\"number\":15},{\"symbol\":\"H\",\"number\":19},{\"symbol\":\"N\",\"number\":6},{\"symbol\":\"O\",\"number\":10},{\"symbol\":\"P\",\"number\":1}]},\"Hva\":{\"name\":\"N6-hydroxynorvalylcarbamoyladenosine monophosphate diradical 63A\",\"mf\":\"C16H21N6O10P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"√\",\"ocl\":{\"value\":\"elZVIB@IG@fnehJNDligo`POEQql|HgGHeEEMeDheHdueLhhiVNO@jfjjjjhFXBfjZj`aBXPaLP@\",\"coordinates\":\"!BpBYTvxBNFY|bEJObGvOS\\\\@Yt]~DUEJOctu~@Ha}`HzOSTwPTh~HH`BbGvH_Xc|_`BH_Xc|_`BH_]_|bOq~Oxc|bGt\"},\"mass\":488.34656069321284,\"monoisotopicMass\":488.10567789753003,\"unsaturation\":18,\"elements\":[{\"symbol\":\"C\",\"number\":16},{\"symbol\":\"H\",\"number\":21},{\"symbol\":\"N\",\"number\":6},{\"symbol\":\"O\",\"number\":10},{\"symbol\":\"P\",\"number\":1}]},\"Aya\":{\"name\":\"N6-acetyladenosine monophosphate diradical 64A\",\"mf\":\"C12H14N5O7P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"⇓\",\"ocl\":{\"value\":\"fmwis@INBwlJ\\\\TgLp^MoBKcdRbbfrbTRdRZrcN^CUmUUUTCLASTDQLPbY@@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuPBOq_qopHBGtgD}D@RpPH_Wtw@aOTd}RtPCQ@D}RIqOQ@@\"},\"mass\":371.2431138434808,\"monoisotopicMass\":371.06308480878,\"unsaturation\":16,\"elements\":[{\"symbol\":\"C\",\"number\":12},{\"symbol\":\"H\",\"number\":14},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":7},{\"symbol\":\"P\",\"number\":1}]},\"Gca\":{\"name\":\"N6-glycinylcarbamoyladenosine monophosphate diradical 65A\",\"mf\":\"C13H15N6O9P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"≡\",\"ocl\":{\"value\":\"eohVIL@IG@fnehJNEDlikg`OFspb\\\\\\\\bTTTvTRbTbSVTrTXx|BjZjjjj`Y`JZfhHPfDHSD@@\",\"coordinates\":\"!BzfC@IeKPaDn}bHCQb@KQwuRDFALYpHCQt]W@h`BTmCQw}~N`ME~@Gx@bOrHHa}_c~H@ha}bOq~@Ha}\"},\"mass\":430.2673035543541,\"monoisotopicMass\":430.06381308458,\"unsaturation\":18,\"elements\":[{\"symbol\":\"C\",\"number\":13},{\"symbol\":\"H\",\"number\":15},{\"symbol\":\"N\",\"number\":6},{\"symbol\":\"O\",\"number\":9},{\"symbol\":\"P\",\"number\":1}]},\"Tya\":{\"name\":\"N6-methyl-N6-threonylcarbamoyladenosinemonophosphate diradical 662A\",\"mf\":\"C16H21N6O10P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"E\",\"ocl\":{\"value\":\"elZVEL@IG@fnmhJNEDleo`XPOFspb\\\\\\\\bTTTvTRbTbSVbaTTTXx|BjZjjjj`Y`JfjZjBDIaBDq@@\",\"coordinates\":\"!BzfC@IeKPaDn}bHCQb@KQwuRDFALYpHCQt]W@h`BTmCQw}~N`ME~@Gx@bOrHHa}_`A~Ox`BbGu~Ox`BbGwW_Wx@bGt\"},\"mass\":488.34656069321284,\"monoisotopicMass\":488.10567789753003,\"unsaturation\":18,\"elements\":[{\"symbol\":\"C\",\"number\":16},{\"symbol\":\"H\",\"number\":21},{\"symbol\":\"N\",\"number\":6},{\"symbol\":\"O\",\"number\":10},{\"symbol\":\"P\",\"number\":1}]},\"Nna\":{\"name\":\"N6,N6-dimethyladenosine monophosphate diradical 66A\",\"mf\":\"C12H16N5O6P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"ζ\",\"ocl\":{\"value\":\"feghs@INBwlJ\\\\TgHOFwaEqrIQQSYQJIRIMZLyxMVuUUUPLpEUADSDHfP@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuPBOq_qopHBGtgD}D@RpPH_Wtw@aOTd}RtPCQ@D}RFBp\"},\"mass\":357.2595904272741,\"monoisotopicMass\":357.08382025367,\"unsaturation\":14,\"elements\":[{\"symbol\":\"C\",\"number\":12},{\"symbol\":\"H\",\"number\":16},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":6},{\"symbol\":\"P\",\"number\":1}]},\"Fya\":{\"name\":\"N6-formyladenosine monophosphate diradical 67A\",\"mf\":\"C11H12N5O7P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"Ϩ\",\"ocl\":{\"value\":\"fegis@INBwlJ\\\\TgLp^MoBKcdRbbfrbTRdRZrYspZmjjjj`Y`JZBHfHQL`@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuPBOq_qopHBGtgD}D@RpPH_Wtw@aOTd}RtPCQ@D}RtP@\"},\"mass\":357.216496438634,\"monoisotopicMass\":357.04743474432,\"unsaturation\":16,\"elements\":[{\"symbol\":\"C\",\"number\":11},{\"symbol\":\"H\",\"number\":12},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":7},{\"symbol\":\"P\",\"number\":1}]},\"Hma\":{\"name\":\"N6-hydroxymethyladenosine monophosphate diradical 68A\",\"mf\":\"C11H14N5O7P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"Ϫ\",\"ocl\":{\"value\":\"fegis@INBwlJ\\\\TgLp^MoBKcdRbbfrbTRdRZrYspZmjjjj`Y`JjBHfHQL`@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuPBOq_qopHBGtgD}D@RpPH_Wtw@aOTd}RtPCQ@D}RtP@\"},\"mass\":359.23237794674554,\"monoisotopicMass\":359.06308480878,\"unsaturation\":14,\"elements\":[{\"symbol\":\"C\",\"number\":11},{\"symbol\":\"H\",\"number\":14},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":7},{\"symbol\":\"P\",\"number\":1}]},\"Cca\":{\"name\":\"cyclic N6-threonylcarbamoyladenosine monophosphate diradical 69A\",\"mf\":\"C15H17N6O9P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"e\",\"ocl\":{\"value\":\"ehRVIL@IG@fnehJNEDliko`OFspb\\\\\\\\bTTTvTRbTbSVTRRtXx|BjZvNjjjj`Y`IjfjbHPfDHSD`z`\",\"coordinates\":\"!BvuPfpDnDtEK_tPJHtXBH_TwPb@J_IorHbGtgD}F@RxRH_WwW@hbOTh}RtXCQ`A`l_`A`iVCjKAcjX@A~@h`Bup\"},\"mass\":456.30465685593623,\"monoisotopicMass\":456.07946314904,\"unsaturation\":20,\"elements\":[{\"symbol\":\"C\",\"number\":15},{\"symbol\":\"H\",\"number\":17},{\"symbol\":\"N\",\"number\":6},{\"symbol\":\"O\",\"number\":9},{\"symbol\":\"P\",\"number\":1}]},\"Fcy\":{\"name\":\"5-formylcytidine monophosphate diradical71C\",\"mf\":\"C10H12N3O8P\",\"kind\":\"NucleotideP\",\"oneLetter\":\">\",\"ocl\":{\"value\":\"faspK@I^[BgENSghOFwaEqrIQQSYQJIRYULxDmUUUTsLttQDqBId@@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuPBOpcbpXBGtSItuPSU@H_Wtw@`lFBpXSU@@tP\"},\"mass\":333.1917590433254,\"monoisotopicMass\":333.03620135502996,\"unsaturation\":12,\"elements\":[{\"symbol\":\"C\",\"number\":10},{\"symbol\":\"H\",\"number\":12},{\"symbol\":\"N\",\"number\":3},{\"symbol\":\"O\",\"number\":8},{\"symbol\":\"P\",\"number\":1}]},\"Tur\":{\"name\":\"4-thiouridine monophosphate diradical 74U\",\"mf\":\"C9H11N2O7PS\",\"kind\":\"NucleotideP\",\"oneLetter\":\"4\",\"ocl\":{\"value\":\"ff}Qp`I^aSbgIrCqmxQ\\\\ZaFQJJJ[JIQJSMg@ejjjjfYihbIbDSH@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuPBOpcbpXBGtSItuPSU@H_Wtw@`lFDuP\"},\"mass\":322.2317616628973,\"monoisotopicMass\":322.0024588732,\"unsaturation\":10,\"elements\":[{\"symbol\":\"C\",\"number\":9},{\"symbol\":\"H\",\"number\":11},{\"symbol\":\"N\",\"number\":2},{\"symbol\":\"O\",\"number\":7},{\"symbol\":\"P\",\"number\":1},{\"symbol\":\"S\",\"number\":1}]},\"Meg\":{\"name\":\"7-methylguanosine monophosphate diradical 7G\",\"mf\":\"C11H15N5O7P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"7\",\"ocl\":{\"value\":\"fegisDINCt\\\\J\\\\TgLp^MoBKbF\\\\bTTTvTRbTbRlSN^CWmUUUUKLuSTQDqBId@@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuPBOq_qopHBGtgD}D@RpPH_Wtw@aOTd}RqdCQ@B\\\\StP@\"},\"mass\":360.2403187008013,\"monoisotopicMass\":360.07090984101,\"unsaturation\":13,\"elements\":[{\"symbol\":\"C\",\"number\":11},{\"symbol\":\"H\",\"number\":15},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":7},{\"symbol\":\"P\",\"number\":1}]},\"Mea\":{\"name\":\"8-methyladenosine monophosphate diradical 8A\",\"mf\":\"C11H14N5O6P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"â\",\"ocl\":{\"value\":\"fi{hs@INCt\\\\J\\\\UdhOFw`eqrIQQSYQJJJQKigOA[vjjjjAi`J`bIbDSH@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuPBOq_qopHBGtgD}D@RpP@c`a}_S_|BD}RSuKQ@MD@\"},\"mass\":343.2329730224273,\"monoisotopicMass\":343.06817018921,\"unsaturation\":14,\"elements\":[{\"symbol\":\"C\",\"number\":11},{\"symbol\":\"H\",\"number\":14},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":6},{\"symbol\":\"P\",\"number\":1}]},\"Dhu\":{\"name\":\"dihydrouridine monophosphate diradical 8U\",\"mf\":\"C9H13N2O8P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"D\",\"ocl\":{\"value\":\"ff}PK@I^aSbgIsTGc[pbxyDhhilheDiLv\\\\BVjjjjZffbHfHQL`@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuPBOpcbpXBGtSItuPSU@H_Wtw@`lFDuP\"},\"mass\":308.1822606892002,\"monoisotopicMass\":308.04095238282997,\"unsaturation\":8,\"elements\":[{\"symbol\":\"C\",\"number\":9},{\"symbol\":\"H\",\"number\":13},{\"symbol\":\"N\",\"number\":2},{\"symbol\":\"O\",\"number\":8},{\"symbol\":\"P\",\"number\":1}]},\"Ins\":{\"name\":\"inosine monophosphate diradical 9A\",\"mf\":\"C10H11N4O7P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"I\",\"ocl\":{\"value\":\"fakIs@INBvENJSghOFwaEqrIQQSYQJIRIMLyxMVuUUUTlsSTQDqBId@@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuPBOq_qopHBGtgD}D@RpPH_Wtw@aOTd}RtPCQ@@\"},\"mass\":330.1911165763972,\"monoisotopicMass\":330.03653570766,\"unsaturation\":14,\"elements\":[{\"symbol\":\"C\",\"number\":10},{\"symbol\":\"H\",\"number\":11},{\"symbol\":\"N\",\"number\":4},{\"symbol\":\"O\",\"number\":7},{\"symbol\":\"P\",\"number\":1}]},\"Pis\":{\"name\":\"pseudouridine monophosphate diradical 9U\",\"mf\":\"C9H11N2O8P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"P\",\"ocl\":{\"value\":\"ff}PK@OAaSbgIsTGc[pbxyDhhilheDiLv\\\\BVjjjfZffbHfHQL`@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuPBOpcbpXBGtSItuPSU@H_Wtw@`lFDuP\"},\"mass\":306.1663791810886,\"monoisotopicMass\":306.02530231837,\"unsaturation\":10,\"elements\":[{\"symbol\":\"C\",\"number\":9},{\"symbol\":\"H\",\"number\":11},{\"symbol\":\"N\",\"number\":2},{\"symbol\":\"O\",\"number\":8},{\"symbol\":\"P\",\"number\":1}]},\"Pqb\":{\"name\":\"preQ0base 100G diradical (base)\",\"mf\":\"C7H5N5O\",\"kind\":\"Nucleotide\",\"oneLetter\":\"ψ\",\"ocl\":{\"value\":\"dk^h@DxYLLbbTTRekiujYj^`@\",\"coordinates\":\"!B|Gwp_Gy|Gwp_[lk_gp_Ag_wrYRs}|f\"},\"mass\":175.1477760289729,\"monoisotopicMass\":175.04940980287,\"unsaturation\":14,\"elements\":[{\"symbol\":\"C\",\"number\":7},{\"symbol\":\"H\",\"number\":5},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":1}]},\"Pqg\":{\"name\":\"preQ1base 101G diradical (base)\",\"mf\":\"C7H9N5O\",\"kind\":\"Nucleotide\",\"oneLetter\":\"∇\",\"ocl\":{\"value\":\"dk^h@DxYLLbbTTRckiUjYij`@\",\"coordinates\":\"!BWyfe[tlDWye_fXx@RpRe[wtHSuHH@a}\"},\"mass\":179.179539045196,\"monoisotopicMass\":179.08070993179,\"unsaturation\":10,\"elements\":[{\"symbol\":\"C\",\"number\":7},{\"symbol\":\"H\",\"number\":9},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":1}]},\"Qba\":{\"name\":\"Qbase 10G diradical (base)\",\"mf\":\"C12H15N5O3\",\"kind\":\"Nucleotide\",\"oneLetter\":\"∴\",\"ocl\":{\"value\":\"fbmi`@D\\\\EHpHyrJIQQJMJIPtyIPTmSMMUMUP@@\",\"coordinates\":\"!BRpQ_f^i`RpQKAEARzfA_f_pHtP@H_Pc|BGuPThxUCl{RtBYTd|\"},\"mass\":277.27967290184347,\"monoisotopicMass\":277.11748936431,\"unsaturation\":14,\"elements\":[{\"symbol\":\"C\",\"number\":12},{\"symbol\":\"H\",\"number\":15},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":3}]},\"Dgc\":{\"name\":\"N2,7-dimethylguanosine cap (cap DMG) diradical 279553N\",\"mf\":\"C12H18N5O11P2\",\"kind\":\"Nucleotide\",\"oneLetter\":\"®\",\"ocl\":{\"value\":\"e`TZMBHIG@aihJNEHdlemck`OFspz|OgDJ\\\\bTTTvTRbTbRvbtfKGG`UPuUUUUJtuTmUTPaLHPfH@@\",\"coordinates\":\"!BvuPfpDnDtEK_t_rHtXBH_TwPbOr_IorHbGtgD}F@RxS|uxc|_]^OTh}RIlBH_]F@IqOQ`@A~_c|bH}RbGt\"},\"mass\":470.24625855539705,\"monoisotopicMass\":470.04780541440005,\"unsaturation\":13,\"elements\":[{\"symbol\":\"C\",\"number\":12},{\"symbol\":\"H\",\"number\":18},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":11},{\"symbol\":\"P\",\"number\":2}]},\"Dpa\":{\"name\":\"5′-(3′-dephosphoacetyl-CoA) diradical 4155N\",\"mf\":\"C23H35N7O16P3S\",\"kind\":\"Nucleotide\",\"oneLetter\":\"♣\",\"ocl\":{\"value\":\"elz~@jDCHlemnSTLBAEKBjfckgbV]XpEfCpB|IoCtHZy{lbdvbbfrbTRdRNRdnTbefRTrRTdTRrFVfjjjj`V`bZjjfjZjZ`bbLSaRP@\",\"coordinates\":\"!BvtmKaMmKUMlfgto[tDw_cosWt]~H@dvObGv_F_sWbOpgKMG_R}m}bHa}HbOSX}M_cQw}G_OwzH_[wW_c~H_Wx@G{|bM]}bGvHGxbGu~Oxa}bOq~Oxa}_c~H_WxuwvH_P\"},\"mass\":790.5483266874629,\"monoisotopicMass\":790.1073852418399,\"unsaturation\":21,\"elements\":[{\"symbol\":\"C\",\"number\":23},{\"symbol\":\"H\",\"number\":35},{\"symbol\":\"N\",\"number\":7},{\"symbol\":\"O\",\"number\":16},{\"symbol\":\"P\",\"number\":3},{\"symbol\":\"S\",\"number\":1}]},\"Dpm\":{\"name\":\"5′-(3′-dephosphomalonyl-CoA) diradical 4255N\",\"mf\":\"C24H35N7O18P3S\",\"kind\":\"Nucleotide\",\"oneLetter\":\"♥\",\"ocl\":{\"value\":\"efq~DjDCHlemnSTLBAEKBjfckgbV]XrzpEfCpB|IoCtHZy{lbdvbbfrbTRdRNRdnTbefRTrRTrdbbVPrtuUUUTBtDSUUTuSUSSTDTQb\\\\JR@@\",\"coordinates\":\"!BIlB_Ib[@pAe`zni`FALSF@A~FBq~OrpXbGveX@A~_c~OTa`lzf@_ha}_]_Q`MF@bOpXKA`loXbH__rHb@JHoX`B@m]}uwx@bGu~Ox`BbKvH@ha}_c~H@hb}b@JH_Xc|_`BH_X`B_`BHoP\"},\"mass\":834.5578724328346,\"monoisotopicMass\":834.0972144809799,\"unsaturation\":23,\"elements\":[{\"symbol\":\"C\",\"number\":24},{\"symbol\":\"H\",\"number\":35},{\"symbol\":\"N\",\"number\":7},{\"symbol\":\"O\",\"number\":18},{\"symbol\":\"P\",\"number\":3},{\"symbol\":\"S\",\"number\":1}]},\"Dsc\":{\"name\":\"5′-(3′-dephosphosuccinyl-CoA) radical 4355N\",\"mf\":\"C25H37N7O18P3S\",\"kind\":\"Nucleotide\",\"oneLetter\":\"♦\",\"ocl\":{\"value\":\"eny~DjDCHlemnSTLBAEKBjfckgbV]XzvpOFCpB|IoCtHZy{lbdvbbfrbTRdRNRdnTbefRTrRTrTdTRrFVfjjjj`V`bZjjfjZjZfhHhcDxTd@@\",\"coordinates\":\"!B[~kjXFjiV[Ry|fcm}MtGwWctvH_]Q_c}KaGwWbGvN`H}MgrX@_gx@h`gKB\\\\lbGvOSX}M@m^H@gwWbGvH@ha}_Xc|bGxb@I~@Ha}b@JH_X`B_`BH_X`BbGvH@ha}_c~H@ha}b@I~@Ha}\"},\"mass\":848.5844898376815,\"monoisotopicMass\":848.11286454544,\"unsaturation\":23,\"elements\":[{\"symbol\":\"C\",\"number\":25},{\"symbol\":\"H\",\"number\":37},{\"symbol\":\"N\",\"number\":7},{\"symbol\":\"O\",\"number\":18},{\"symbol\":\"P\",\"number\":3},{\"symbol\":\"S\",\"number\":1}]},\"Dpc\":{\"name\":\"5′-(3′-dephospho-CoA) radical 455N\",\"mf\":\"C21H32N7O13P2S\",\"kind\":\"Nucleotide\",\"oneLetter\":\"♠\",\"ocl\":{\"value\":\"ek_^KBDIG@nabYXJNEHdliemh\\\\QPEfspZ|CPcKmnrIQQSYQJIRIGIRWJQRsIJYIccpJkjjjjjAZBIjjjZijjBDIaBDq@@\",\"coordinates\":\"!B[zW[UI|YchAMc{vHcuJH@m~NbGuKvwvHb@JNwx}Rgqe}bHa}@h`gDr\\\\Sb@JOTh}R@m]~@@A~b@I~@H`B_X`_hb}_`CW@h`B_`BH@gx@upJH@gx@b@I~@@\"},\"mass\":684.5310558604504,\"monoisotopicMass\":684.1254042880199,\"unsaturation\":19,\"elements\":[{\"symbol\":\"C\",\"number\":21},{\"symbol\":\"H\",\"number\":32},{\"symbol\":\"N\",\"number\":7},{\"symbol\":\"O\",\"number\":13},{\"symbol\":\"P\",\"number\":2},{\"symbol\":\"S\",\"number\":1}]},\"Dpe\":{\"name\":\"5′-diphosphate end 552N\",\"mf\":\"O3P\",\"kind\":\"Nucleotide\",\"oneLetter\":\"ϒ\",\"ocl\":{\"value\":\"gJQdebGF^Dx|duK@@\",\"coordinates\":\"!BbOq~@GxbGt\"},\"mass\":78.97197677137483,\"monoisotopicMass\":78.95850585713,\"unsaturation\":1,\"elements\":[{\"symbol\":\"O\",\"number\":3},{\"symbol\":\"P\",\"number\":1}]},\"Mgc\":{\"name\":\"7-methylguanosine cap (cap 0) diradical 79553N\",\"mf\":\"C11H16N5O11P2\",\"kind\":\"Nucleotide\",\"oneLetter\":\"©\",\"ocl\":{\"value\":\"eohZMBHIG@aihJNEHdlemck`OFspz|GgDJ\\\\bTTTvTRbTbRvbtcXx|BjFjjjjiVfjejjHPfDHSD@@\",\"coordinates\":\"!BvuPfpDnDtEK_tPJHtXBH_TwPb@J_I`JHbGtgD}F@RxPBux`B_]^OTh}RIlBH_]F@IqOQ`@A~_c|BbHa}\"},\"mass\":456.2196411505502,\"monoisotopicMass\":456.03215534994,\"unsaturation\":13,\"elements\":[{\"symbol\":\"C\",\"number\":11},{\"symbol\":\"H\",\"number\":16},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":11},{\"symbol\":\"P\",\"number\":2}]},\"Gyy\":{\"name\":\"guanylylated 5′ end (cap G) diradical 9553N\",\"mf\":\"C10H13N5O10P2\",\"kind\":\"Nucleotide\",\"oneLetter\":\"ϑ\",\"ocl\":{\"value\":\"fkhh`INCt\\\\J\\\\UENY{NCqmxM|EnNQJJJ[JIQJQHzIRLyxM^uUUUTkSULuQDSDHfP@\",\"coordinates\":\"!BvuPfpDnDtEK_tPJHtXBH_TwPb@J_I`JHbGtgD}F@RxPBux`B_]^OTh}R_`CQ`B\\\\StXA~@C}~@Gx\"},\"mass\":425.1856780673293,\"monoisotopicMass\":425.01376563368,\"unsaturation\":14,\"elements\":[{\"symbol\":\"C\",\"number\":10},{\"symbol\":\"H\",\"number\":13},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":10},{\"symbol\":\"P\",\"number\":2}]},\"Furp\":{\"name\":\"furan phosphate radical\",\"mf\":\"C5H6O4P\",\"kind\":\"RNAp\",\"oneLetter\":\"⬠\",\"ocl\":{\"value\":\"dmtBPDpnAYcpRZ}eeYjii@@\",\"coordinates\":\"!B]w|Mw\\\\B_S]wW\\\\BtP@oKS~frpP\"},\"mass\":161.072705703704,\"monoisotopicMass\":161.00037067008,\"unsaturation\":5,\"elements\":[{\"symbol\":\"C\",\"number\":5},{\"symbol\":\"H\",\"number\":6},{\"symbol\":\"O\",\"number\":4},{\"symbol\":\"P\",\"number\":1}]}}","'use strict';\n\nconst elements = require('chemical-elements').elementsAndStableIsotopesObject;\n\nfunction getIsotopeRatioInfo(value) {\n  let result = { mass: 0, monoisotopicMass: 0 };\n  let element = elements[value.atom];\n  if (!element) throw new Error(`Element not found: ${value.atom}`);\n  let isotopesArray = element.isotopes;\n  let ratios = normalize(value.ratio);\n  let max = Math.max(...ratios);\n  if (ratios.length > isotopesArray.length) {\n    throw new Error(\n      `the number of specified ratios is bigger that the number of stable isotopes: ${value.atom}`,\n    );\n  }\n  for (let i = 0; i < ratios.length; i++) {\n    result.mass += ratios[i] * isotopesArray[i].mass;\n    if (max === ratios[i] && result.monoisotopicMass === 0) {\n      result.monoisotopicMass = isotopesArray[i].mass;\n    }\n  }\n  return result;\n}\n\nfunction normalize(array) {\n  let sum = array.reduce((prev, current) => prev + current, 0);\n  return array.map((a) => a / sum);\n}\n\nmodule.exports = getIsotopeRatioInfo;\n","'use strict';\n\nconst elements = require('chemical-elements/src/elementsAndIsotopesObject.js');\n\nconst isotopes = {};\nObject.keys(elements).forEach((key) => {\n  let e = elements[key];\n  e.isotopes.forEach((i) => {\n    isotopes[i.nominal + key] = {\n      abundance: i.abundance,\n      mass: i.mass,\n    };\n  });\n});\n\nmodule.exports = isotopes;\n","'use strict';\n\nconst elements = require('chemical-elements').elementsObject;\nconst groups = require('chemical-groups/src/groupsObject.js');\n\nconst Kind = require('../Kind');\n\nconst getIsotopeRatioInfo = require('./getIsotopeRatioInfo');\nconst isotopes = require('./getIsotopesObject');\n\n/**\n *\n * @param {*} parts\n * @param {*} [options={}]\n */\nmodule.exports = function getEA(parts) {\n  let results = {};\n  for (let part of parts) {\n    for (let line of part) {\n      switch (line.kind) {\n        case Kind.ISOTOPE: {\n          let isotope = isotopes[line.value.isotope + line.value.atom];\n          if (!isotope) {\n            throw new Error(\n              `Unknown isotope: ${line.value.isotope}${line.value.atom}`,\n            );\n          }\n          addMass(results, line.value.atom, isotope.mass * line.multiplier);\n          break;\n        }\n\n        case Kind.ISOTOPE_RATIO: {\n          let isotopeRatioInfo = getIsotopeRatioInfo(line.value);\n          addMass(\n            results,\n            line.value.atom,\n            isotopeRatioInfo.mass * line.multiplier,\n          );\n          break;\n        }\n\n        case Kind.ATOM: {\n          let element = elements[line.value];\n          if (!element) {\n            element = groups[line.value];\n            if (!element) throw Error(`Unknown element: ${line.value}`);\n            // need to explode group ????\n          }\n          addMass(results, line.value, element.mass * line.multiplier);\n          break;\n        }\n\n        case Kind.CHARGE:\n          break;\n        default:\n          throw new Error('partToMF unhandled Kind: ', line.kind);\n      }\n    }\n  }\n\n  let eas = [];\n  let sum = 0;\n  for (let key in results) {\n    sum += results[key];\n    eas.push({\n      element: key,\n      mass: results[key],\n    });\n  }\n\n  eas.forEach((ea) => {\n    ea.ratio = ea.mass / sum;\n  });\n  return eas;\n};\n\nfunction addMass(results, atom, mass) {\n  if (!results[atom]) results[atom] = 0;\n  results[atom] += mass;\n}\n","'use strict';\n\nmodule.exports = {\n  O: 0,\n  N: 1,\n  H: -1,\n  Na: -1,\n  K: -1,\n  Li: -1,\n  Ca: -2,\n  C: 2,\n  F: -1,\n  Si: 4,\n  Cl: -1,\n  Br: -1,\n  I: -1,\n  S: 0,\n  P: 1,\n};\n","'use strict';\n\nconst Kind = require('../Kind');\n\n/**\n * Convert a MF part to an array of atoms\n * This procedure will suppress the isotopes !\n * This is mainly used to make queries\n */\n\nmodule.exports = function partToAtoms(part) {\n  let atoms = {};\n  for (let line of part) {\n    switch (line.kind) {\n      case Kind.ISOTOPE:\n        if (!atoms[line.value.atom]) atoms[line.value.atom] = 0;\n        atoms[line.value.atom] += line.multiplier;\n        break;\n      case Kind.ISOTOPE_RATIO:\n        if (!atoms[line.value.atom]) atoms[line.value.atom] = 0;\n        atoms[line.value.atom] += line.multiplier;\n        break;\n      case Kind.ATOM:\n        if (!atoms[line.value]) atoms[line.value] = 0;\n        atoms[line.value] += line.multiplier;\n        break;\n      case Kind.CHARGE:\n        break;\n      default:\n        throw new Error('partToMF unhandled Kind: ', line.kind);\n    }\n  }\n  return atoms;\n};\n","'use strict';\n\nconst Kind = require('../Kind');\n\nmodule.exports = function partToMF(part, options = {}) {\n  let mf = [];\n  for (let line of part) {\n    switch (line.kind) {\n      case Kind.ISOTOPE:\n        if (line.multiplier !== 0) {\n          mf.push(\n            `[${line.value.isotope}${line.value.atom}]${\n              line.multiplier !== 1 ? line.multiplier : ''\n            }`,\n          );\n        }\n        break;\n      case Kind.ISOTOPE_RATIO:\n        if (line.multiplier !== 0) {\n          mf.push(\n            `${line.value.atom}{${line.value.ratio.join(',')}}${\n              line.multiplier !== 1 ? line.multiplier : ''\n            }`,\n          );\n        }\n        break;\n      case Kind.ATOM:\n        if (line.multiplier !== 0) {\n          mf.push(line.value + (line.multiplier !== 1 ? line.multiplier : ''));\n        }\n        break;\n      case Kind.CHARGE:\n        if (line.value === 0 || options.neutral) break;\n        mf.push(`(${line.value > 0 ? `+${line.value}` : line.value})`);\n        break;\n      default:\n    }\n  }\n  return mf.join('');\n};\n","'use strict';\n\nconst { ELECTRON_MASS } = require('chemical-elements/src/constants');\nconst elements = require('chemical-elements/src/elementsAndIsotopesObject.js');\nconst unsaturations = require('chemical-elements/src/unsaturationsObject.js');\nconst groups = require('chemical-groups/src/groupsObject.js');\n\nconst Kind = require('../Kind');\n\nconst getIsotopeRatioInfo = require('./getIsotopeRatioInfo');\nconst isotopes = require('./getIsotopesObject');\nconst partToAtoms = require('./partToAtoms');\nconst partToMF = require('./partToMF');\n\n/**\n *\n * @param {*} parts\n * @param {*} [options={}]\n */\nmodule.exports = function getInfo(parts, options = {}) {\n  let { customUnsaturations = {} } = options;\n  if (parts.length === 0) return {};\n  if (parts.length === 1) {\n    return getProcessedPart(parts[0], customUnsaturations);\n  }\n\n  let result = { parts: [] };\n  for (let part of parts) {\n    result.parts.push(getProcessedPart(part, customUnsaturations));\n  }\n\n  result.monoisotopicMass = 0;\n  result.mass = 0;\n  result.charge = 0;\n  result.mf = result.parts.map((a) => a.mf).join('.');\n  result.parts.forEach((a) => {\n    result.mass += a.mass;\n    result.monoisotopicMass += a.monoisotopicMass;\n    result.charge += a.charge;\n  });\n  return result;\n};\n\nfunction getProcessedPart(part, customUnsaturations) {\n  let currentPart = {\n    mass: 0,\n    monoisotopicMass: 0,\n    charge: 0,\n    mf: '',\n    atoms: partToAtoms(part),\n  };\n  let unsaturation = 0;\n  let validUnsaturation = true;\n  currentPart.mf = partToMF(part);\n\n  for (let line of part) {\n    let currentElement = '';\n    switch (line.kind) {\n      case Kind.ATOM: {\n        currentElement = line.value;\n        let element = elements[line.value];\n\n        // todo should we have a kind GROUP ?\n        if (!element) {\n          element = groups[line.value];\n          if (!element) throw Error(`Unknown element: ${line.value}`);\n          if (!customUnsaturations[line.value]) {\n            customUnsaturations[line.value] = element.unsaturation;\n          }\n        }\n        if (!element) throw new Error(`Unknown element: ${line.value}`);\n        currentPart.monoisotopicMass +=\n          element.monoisotopicMass * line.multiplier;\n        currentPart.mass += element.mass * line.multiplier;\n        break;\n      }\n      case Kind.ISOTOPE: {\n        currentElement = line.value.atom;\n        let isotope = isotopes[line.value.isotope + line.value.atom];\n        if (!isotope) {\n          throw new Error(\n            `Unknown isotope: ${line.value.isotope}${line.value.atom}`,\n          );\n        }\n        currentPart.monoisotopicMass += isotope.mass * line.multiplier;\n        currentPart.mass += isotope.mass * line.multiplier;\n        break;\n      }\n      case Kind.ISOTOPE_RATIO: {\n        currentElement = line.value.atom;\n        let isotopeRatioInfo = getIsotopeRatioInfo(line.value);\n        currentPart.monoisotopicMass +=\n          isotopeRatioInfo.monoisotopicMass * line.multiplier;\n        currentPart.mass += isotopeRatioInfo.mass * line.multiplier;\n        break;\n      }\n      case Kind.CHARGE:\n        currentPart.charge = line.value;\n        if (validUnsaturation) {\n          unsaturation -= line.value;\n        }\n        break;\n      default:\n        throw new Error('Unimplemented Kind in getInfo', line.kind);\n    }\n    if (currentElement) {\n      if (customUnsaturations[currentElement] !== undefined) {\n        unsaturation += customUnsaturations[currentElement] * line.multiplier;\n      } else if (unsaturations[currentElement] !== undefined) {\n        unsaturation += unsaturations[currentElement] * line.multiplier;\n      } else {\n        validUnsaturation = false;\n      }\n    }\n  }\n\n  // need to calculate the observedMonoisotopicMass\n  if (currentPart.charge) {\n    currentPart.observedMonoisotopicMass =\n      (currentPart.monoisotopicMass - currentPart.charge * ELECTRON_MASS) /\n      Math.abs(currentPart.charge);\n  }\n  if (validUnsaturation) {\n    currentPart.unsaturation = unsaturation / 2 + 1;\n  }\n  return currentPart;\n}\n","'use strict';\n\nconst elements = require('chemical-elements/src/elementsAndStableIsotopesObject.js');\n\nconst Kind = require('../Kind');\n\nconst isotopes = require('./getIsotopesObject');\n\n/**\n *\n * @param {*} parts\n * @param {*} options\n */\nmodule.exports = function getIsotopesInfo(parts) {\n  if (parts.length === 0) return [];\n  if (parts.length > 1) {\n    throw new Error('getIsotopesInfo can not be applied on multipart MF');\n  }\n\n  return getProcessedPart(parts[0]);\n};\n\nfunction getProcessedPart(part) {\n  let result = {\n    charge: 0,\n    isotopes: [],\n  };\n  for (let line of part) {\n    switch (line.kind) {\n      case Kind.ISOTOPE: {\n        let isotope = isotopes[line.value.isotope + line.value.atom];\n        if (!isotope) {\n          throw Error('unknown isotope:', line.value.atom, line.value.isotope);\n        }\n        result.isotopes.push({\n          atom: `[${line.value.isotope}${line.value.atom}]`,\n          number: line.multiplier,\n          distribution: [{ x: isotope.mass, y: 1 }],\n        });\n        break;\n      }\n      case Kind.ISOTOPE_RATIO:\n        {\n          let element = elements[line.value.atom];\n          if (!element) throw new Error('unknown element:', line.value);\n\n          let distribution = getDistribution(\n            element.isotopes,\n            line.value.ratio,\n          );\n          result.isotopes.push({\n            atom: `${line.value.atom}{${line.value.ratio.join(',')}}`,\n            number: line.multiplier,\n            distribution,\n          });\n        }\n        break;\n      case Kind.ATOM: {\n        let element = elements[line.value];\n        if (!element) throw new Error('unknown element:', line.value);\n        result.isotopes.push({\n          atom: line.value,\n          number: line.multiplier,\n          distribution: element.isotopes.map((e) => ({\n            x: e.mass,\n            y: e.abundance,\n          })),\n        });\n        break;\n      }\n      case Kind.CHARGE:\n        result.charge += line.value;\n        break;\n      default:\n        throw new Error('partToMF unhandled Kind: ', line.kind);\n    }\n  }\n  return result;\n}\n\nfunction getDistribution(isotopesArray, ratio) {\n  let ratios = normalize(ratio);\n  let result = [];\n  if (ratios.length > isotopesArray.length) {\n    throw new Error(\n      `the number of specified ratios is bigger that the number of stable isotopes: ${isotopes}`,\n    );\n  }\n  for (let i = 0; i < ratios.length; i++) {\n    result.push({\n      x: isotopesArray[i].mass,\n      y: ratios[i],\n    });\n  }\n  return result;\n}\n\nfunction normalize(array) {\n  let sum = array.reduce((prev, current) => prev + current, 0);\n  return array.map((a) => a / sum);\n}\n","'use strict';\n\nconst Kind = require('../Kind');\n\nconst toDisplay = require('./toDisplay');\n/**\n * Converts an array of mf elements to an array of formatting information\n * @param {Array<Object>} result of the parse method\n */\n\nmodule.exports = function partsToDisplay(parts) {\n  let lines = [];\n  for (let part of parts) {\n    if (lines.length > 0) lines.push({ kind: Kind.SALT, value: '•' });\n    for (let partLine of part) {\n      lines.push(partLine);\n      if (partLine.multiplier) {\n        lines.push({\n          kind: Kind.MULTIPLIER,\n          value: partLine.multiplier,\n        });\n      }\n    }\n  }\n\n  return toDisplay(lines);\n};\n","'use strict';\n\nconst partToMF = require('./partToMF');\n\nmodule.exports = function partsToMF(parts, options) {\n  let mf = [];\n  for (let part of parts) {\n    mf.push(partToMF(part, options));\n  }\n  return mf.join(' . ');\n};\n","'use strict';\n\nfunction atomSorter(a, b) {\n  if (a === b) return 0;\n  if (a === 'C') return -1;\n  if (b === 'C') return 1;\n  if (a === 'H') return -1;\n  if (b === 'H') return 1;\n  if (a < b) return -1;\n  return 1;\n}\n\nmodule.exports = atomSorter;\n","'use strict';\n\nconst atomSorter = require('atom-sorter');\nconst groups = require('chemical-groups/src/groupsObject.js');\n\nconst Kind = require('../Kind');\n\n/**\n *\n * @param {*} lines\n * @param {object} [options={}]\n * @param {boolean} [options.expand=true] - Should we expand the groups\n */\n\nmodule.exports = function toParts(lines, options = {}) {\n  const { expand: shouldExpandGroups = true } = options;\n  let parts = [];\n  let currentPart = createNewPart();\n  let previousKind = Kind.BEGIN;\n  parts.push(currentPart);\n  for (let line of lines) {\n    switch (line.kind) {\n      case Kind.ATOM:\n      case Kind.ISOTOPE_RATIO:\n      case Kind.ISOTOPE:\n      case Kind.CHARGE:\n        currentPart.lines.push(Object.assign({}, line, { multiplier: 1 }));\n        break;\n      case Kind.OPENING_PARENTHESIS:\n        openingParenthesis(currentPart);\n        break;\n      case Kind.CLOSING_PARENTHESIS:\n        closingParenthesis(currentPart);\n        break;\n      case Kind.PRE_MULTIPLIER:\n        preMultiplier(currentPart, line);\n        break;\n      case Kind.MULTIPLIER:\n        postMultiplier(currentPart, line.value, previousKind);\n        break;\n      case Kind.SALT:\n        globalPartMultiplier(currentPart);\n        currentPart = createNewPart();\n        parts.push(currentPart);\n        break;\n      case Kind.COMMENT: // we ignore comments to create the parts and canonized MF\n        break;\n      case Kind.TEXT:\n        break;\n      default:\n        throw new Error(`Can not process mf having: ${line.kind}`);\n    }\n    previousKind = line.kind;\n  }\n  globalPartMultiplier(currentPart);\n  if (shouldExpandGroups) expandGroups(parts);\n  return combineAtomsIsotopesCharges(parts);\n};\n\nfunction createNewPart() {\n  let currentMultiplier = { value: 1, fromIndex: 0 };\n  return { lines: [], multipliers: [currentMultiplier], currentMultiplier };\n}\n\nfunction openingParenthesis(currentPart) {\n  currentPart.currentMultiplier = {\n    value: 1,\n    fromIndex: currentPart.lines.length,\n  };\n  currentPart.multipliers.push(currentPart.currentMultiplier);\n}\n\nfunction closingParenthesis(currentPart) {\n  currentPart.currentMultiplier = currentPart.multipliers.pop();\n  if (currentPart.currentMultiplier !== 1) {\n    for (\n      let i = currentPart.currentMultiplier.fromIndex;\n      i < currentPart.lines.length;\n      i++\n    ) {\n      currentPart.lines[i].multiplier *= currentPart.currentMultiplier.value;\n    }\n  }\n}\n\nfunction preMultiplier(currentPart, line) {\n  currentPart.currentMultiplier.value *= line.value;\n}\n\nfunction globalPartMultiplier(currentPart) {\n  for (\n    let i = currentPart.multipliers[0].fromIndex;\n    i < currentPart.lines.length;\n    i++\n  ) {\n    currentPart.lines[i].multiplier *= currentPart.multipliers[0].value;\n  }\n}\n\nfunction postMultiplier(currentPart, value, previousKind) {\n  if (previousKind === Kind.CLOSING_PARENTHESIS) {\n    // need to apply to everything till the previous parenthesis\n    for (\n      let i = currentPart.currentMultiplier.fromIndex;\n      i < currentPart.lines.length;\n      i++\n    ) {\n      currentPart.lines[i].multiplier *= value;\n    }\n  } else {\n    // just applies to the previous element\n    currentPart.lines[currentPart.lines.length - 1].multiplier *= value;\n  }\n}\n\nfunction expandGroups(parts) {\n  for (let part of parts) {\n    let expanded = false;\n    for (let i = 0; i < part.lines.length; i++) {\n      let line = part.lines[i];\n      if (line.kind === Kind.ATOM) {\n        let group = groups[line.value];\n\n        if (group) {\n          expanded = true;\n          for (let element of group.elements) {\n            if (element.isotope) {\n              part.lines.push({\n                kind: 'isotope',\n                value: { atom: element.symbol, isotope: element.isotope },\n                multiplier: line.multiplier * element.number,\n              });\n            } else {\n              part.lines.push({\n                kind: 'atom',\n                value: element.symbol,\n                multiplier: line.multiplier * element.number,\n              });\n            }\n          }\n          part.lines[i] = undefined;\n        }\n      }\n    }\n    if (expanded) part.lines = part.lines.filter((a) => a);\n  }\n}\n\nfunction combineAtomsIsotopesCharges(parts) {\n  let results = [];\n  for (let part of parts) {\n    let result = [];\n    results.push(result);\n    calculateAndSortKeys(part);\n\n    let currentKey = '';\n    for (let key of part.keys) {\n      if (key.key === Kind.CHARGE) {\n        if (currentKey !== key.key) {\n          result.push({\n            kind: Kind.CHARGE,\n            value: key.value.value * key.value.multiplier,\n          });\n        } else {\n          result[result.length - 1].value +=\n            key.value.value * key.value.multiplier;\n        }\n      } else {\n        if (currentKey !== key.key) {\n          result.push(key.value);\n        } else {\n          result[result.length - 1].multiplier += key.value.multiplier;\n        }\n      }\n      currentKey = key.key;\n    }\n\n    result.sort((a, b) => {\n      if (a.kind === Kind.CHARGE) return 1;\n      if (b.kind === Kind.CHARGE) return -1;\n\n      let atomA = a.kind === Kind.ATOM ? a.value : a.value.atom;\n      let atomB = b.kind === Kind.ATOM ? b.value : b.value.atom;\n      if (atomA !== atomB) return atomSorter(atomA, atomB);\n      // same atome but some isotopes ...\n      if (a.kind === Kind.ATOM) return -1;\n      if (b.kind === Kind.ATOM) return 1;\n      if (a.kind === Kind.ISOTOPE) return -1;\n      if (b.kind === Kind.ISOTOPE) return 1;\n      if (a.kind === Kind.ISOTOPE_RATIO) return -1;\n      if (b.kind === Kind.ISOTOPE_RATIO) return 1;\n      return 0;\n    });\n  }\n  return results;\n}\n\nfunction calculateAndSortKeys(part) {\n  part.keys = [];\n  for (let line of part.lines) {\n    part.keys.push({ key: getKey(line), value: line });\n  }\n  part.keys.sort((a, b) => stringComparator(a.key, b.key));\n}\n\nfunction getKey(line) {\n  let key = [line.kind];\n\n  switch (line.kind) {\n    case Kind.CHARGE:\n      break;\n    default:\n      if (typeof line.value === 'string') {\n        key.push(line.value);\n      } else {\n        for (let prop of Object.keys(line.value).sort()) {\n          key.push(line.value[prop]);\n        }\n      }\n  }\n  return key.join('-');\n}\n\nfunction stringComparator(a, b) {\n  if (a < b) return -1;\n  if (a > b) return 1;\n  return 0;\n}\n","'use strict';\n\nconst ensureCase = require('./ensureCase');\nconst parse = require('./parse');\nconst getEA = require('./util/getEA');\nconst getInfo = require('./util/getInfo');\nconst getIsotopesInfo = require('./util/getIsotopesInfo');\nconst partsToDisplay = require('./util/partsToDisplay');\nconst partsToMF = require('./util/partsToMF');\nconst toDisplay = require('./util/toDisplay');\nconst toHtml = require('./util/toHtml');\nconst toParts = require('./util/toParts');\n\nclass MF {\n  constructor(mf, options = {}) {\n    if (options.ensureCase) {\n      mf = ensureCase(mf);\n    }\n    this.parsed = parse(mf);\n    this.cache = {};\n  }\n\n  toDisplay() {\n    if (!this.cache.displayed) this.cache.displayed = toDisplay(this.parsed);\n    return this.cache.displayed;\n  }\n\n  toHtml() {\n    if (!this.cache.html) {\n      this.toDisplay();\n      this.cache.html = toHtml(this.cache.displayed);\n    }\n    return this.cache.html;\n  }\n\n  toParts(options) {\n    if (!this.cache.parts) {\n      this.cache.parts = toParts(this.parsed, options);\n    }\n    return this.cache.parts;\n  }\n\n  /**\n   * Returns an object with the global MF, global charge, monoisotopic mass and mass\n   * as well as the same informations for all the parts\n   * @param {object} [options={}] options\n   */\n  getInfo(options = {}) {\n    if (!this.cache.info) {\n      this.toParts();\n      this.cache.info = getInfo(this.cache.parts, options);\n    }\n    return this.cache.info;\n  }\n\n  /**\n   * Returns an object with the elemental analysis\n   */\n  getEA(options = {}) {\n    if (!this.cache.ea) {\n      this.toParts();\n      this.cache.ea = getEA(this.cache.parts, options);\n    }\n    return this.cache.ea;\n  }\n\n  /**\n   * Returns an array with each atom and isotopic composition\n   */\n  getIsotopesInfo(options = {}) {\n    if (!this.cache.isotopesInfo) {\n      this.toParts();\n      this.cache.isotopesInfo = getIsotopesInfo(this.cache.parts, options);\n    }\n    return this.cache.isotopesInfo;\n  }\n\n  /**\n   * Get a canonized MF\n   */\n  toMF() {\n    if (!this.cache.mf) {\n      this.toParts();\n      this.cache.mf = partsToMF(this.cache.parts);\n    }\n    return this.cache.mf;\n  }\n\n  /**\n   * Get a canonized MF\n   */\n  toNeutralMF() {\n    if (!this.cache.neutralMF) {\n      this.toParts();\n      this.cache.neutralMF = partsToMF(this.cache.parts, { neutral: true });\n    }\n    return this.cache.neutralMF;\n  }\n\n  canonize() {\n    this.toParts();\n    this.cache.displayed = partsToDisplay(this.cache.parts);\n    this.cache.html = undefined;\n  }\n}\n\nmodule.exports = MF;\n","'use strict';\n\nconst parse = require('./parse');\nconst toDisplay = require('./util/toDisplay');\nconst toHtml = require('./util/toHtml');\n\n/**\n * Parse a molecular formula and converts it to an HTML code\n * @param {String} mf String containing the molecular formula\n */\nfunction parseToHtml(mf) {\n  let parsed = parse(mf);\n  let display = toDisplay(parsed);\n  return toHtml(display);\n}\n\nmodule.exports = {\n  Kind: require('./Kind'),\n  Format: require('./Format'),\n  Style: require('./Style'),\n  parse: require('./parse'),\n  ensureCase: require('./ensureCase'),\n  toDisplay,\n  toHtml,\n  parseToHtml,\n  MF: require('./MF'),\n};\n","'use strict';\n\n/**\n * @param {object}   [entry={}}]\n * @param {object}   [options={}}]\n * @param {number}   [options.min=-Infinity] - Minimal unsaturation\n * @param {number}   [options.max=+Infinity] - Maximal unsaturation\n * @param {number}   [options.onlyInteger=false] - Integer unsaturation\n * @param {number}   [options.onlyNonInteger=false] - Non integer unsaturation\n * @return {boolean}\n */\n\nmodule.exports = function unsaturationMatcher(entry, options = {}) {\n  const {\n    min = Number.MIN_SAFE_INTEGER,\n    max = Number.MAX_SAFE_INTEGER,\n    onlyInteger,\n    onlyNonInteger,\n  } = options;\n\n  if (entry.unsaturation !== undefined) {\n    if (entry.unsaturation < min || entry.unsaturation > max) return false;\n    if (onlyInteger && !Number.isInteger(entry.unsaturation)) return false;\n    if (onlyNonInteger && Number.isInteger(entry.unsaturation)) return false;\n  }\n  return true;\n};\n","'use strict';\n\n/**\n * Returns true if the entry containing MF information match\n * @param {object}   [entry={}}] - object containing mw, ...\n * @param {object}   [options={}}]\n * @param {number}   [options.minMW=0] - Minimal molecular weight\n * @param {number}   [options.maxMW=+Infinity] - Maximal molecular weight\n * @param {number}   [options.minEM=0] - Minimal monoisotopic mass\n * @param {number}   [options.maxEM=+Infinity] - Maximal monoisotopic mass\n * @param {number}   [options.minCharge=-Infinity] - Minimal charge\n * @param {number}   [options.maxCharge=+Infinity] - Maximal charge\n * @param {object}   [options.unsaturation={}}]\n * @param {number}   [options.unsaturation.min=-Infinity] - Minimal unsaturation\n * @param {number}   [options.unsaturation.max=+Infinity] - Maximal unsaturation\n * @param {number}   [options.unsaturation.onlyInteger=false] - Integer unsaturation\n * @param {number}   [options.unsaturation.onlyNonInteger=false] - Non integer unsaturation\n * @param {object}   [options.atoms] - object of atom:{min, max}\n * @return {boolean}\n */\n\nmodule.exports = function generalMatcher(entry, options = {}) {\n  const {\n    minMW = 0,\n    maxMW = +Infinity,\n    minEM = 0,\n    maxEM = +Infinity,\n    minCharge = Number.MIN_SAFE_INTEGER,\n    maxCharge = Number.MAX_SAFE_INTEGER,\n    unsaturation = {},\n    atoms,\n  } = options;\n\n  if (entry.mw !== undefined) {\n    if (entry.mw < minMW || entry.mw > maxMW) return false;\n  }\n\n  if (entry.em !== undefined) {\n    if (entry.em < minEM || entry.em > maxEM) return false;\n  }\n\n  if (entry.charge !== undefined) {\n    if (entry.charge < minCharge || entry.charge > maxCharge) return false;\n  }\n\n  if (unsaturation !== undefined && entry.unsaturation !== undefined) {\n    if (!require('./unsaturationMatcher')(entry, unsaturation)) return false;\n  }\n\n  if (entry.atoms !== undefined && atoms) {\n    // all the atoms of the entry must fit in the range\n    for (let atom of Object.keys(entry.atoms)) {\n      if (!atoms[atom]) return false;\n      if (entry.atoms[atom] < atoms[atom].min) return false;\n      if (entry.atoms[atom] > atoms[atom].max) return false;\n    }\n  }\n  return true;\n};\n","'use strict';\n\nconst { ELECTRON_MASS } = require('chemical-elements/src/constants');\n\nmodule.exports = function getMsem(em, charge) {\n  if (charge > 0) {\n    return em / charge - ELECTRON_MASS;\n  } else if (charge < 0) {\n    return em / (charge * -1) + ELECTRON_MASS;\n  } else {\n    return 0;\n  }\n};\n","'use strict';\n\nconst getMsem = require('./getMsem');\n\n/**\n * Returns an object containing:\n * {ms: {em, charge, ionization}, ionization: {}}\n * We return the ionization in order to know which one has been selected\n */\n\nmodule.exports = function getMsInfo(entry, options = {}) {\n  const {\n    allowNeutralMolecules,\n    ionization = { mf: '', em: 0, charge: 0 },\n    forceIonization = false,\n    targetMass,\n  } = options;\n\n  let realIonization = ionization;\n  if (!forceIonization && entry.ionization && entry.ionization.mf !== '') {\n    realIonization = entry.ionization;\n  }\n\n  let ms = {\n    ionization: realIonization.mf,\n    em: 0,\n    charge: entry.charge + realIonization.charge,\n  };\n\n  if (ms.charge !== 0) {\n    ms.em = getMsem(entry.em + realIonization.em, ms.charge);\n  } else if (allowNeutralMolecules) {\n    ms.em = entry.em + realIonization.em;\n  }\n  if (targetMass) {\n    ms.delta = targetMass - ms.em;\n    ms.ppm = ((targetMass - ms.em) / ms.em) * 1e6;\n  }\n  return {\n    ms,\n    ionization: realIonization,\n  };\n};\n","/**\n * This function returns an array with absolute values\n * @param {Array<Number>} array\n * @return {Number}\n */\nexport function xAbsolute(array) {\n  let tmpArray = array.slice();\n  for (let i = 0; i < tmpArray.length; i++) {\n    tmpArray[i] = Math.abs(tmpArray[i]);\n  }\n\n  return tmpArray;\n}\n","const toString = Object.prototype.toString;\n\nexport default function isAnyArray(object) {\n  return toString.call(object).endsWith('Array]');\n}\n","(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 isArray from 'is-any-array';\nimport quickSelectMedian from 'median-quickselect';\n\nfunction median(input) {\n  if (!isArray(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 default median;\n","import median from 'ml-array-median';\n\nimport { xAbsolute } from './xAbsolute';\n/**\n * This function calculates the median after taking the reimAbsolute values of the points\n * @param {Array<Number>} array - the array that will be rotated\n * @return {Number}\n */\nexport function xAbsoluteMedian(array) {\n  return median(xAbsolute(array));\n}\n","/**\n\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 {Array<Number>} array1 - the array that will be rotated\n * @param {Array|Number} array2\n * @return {Array}\n */\nexport function xAdd(array1, array2) {\n  let isConstant = false;\n  let constant;\n  if (Array.isArray(array2)) {\n    if (array1.length !== array2.length) {\n      throw new Error('sub: size of array1 and array2 must be identical');\n    }\n  } else {\n    isConstant = true;\n    constant = Number(array2);\n  }\n\n  let array3 = new Array(array1.length);\n  if (isConstant) {\n    for (let i = 0; i < array1.length; i++) {\n      array3[i] = array1[i] + constant;\n    }\n  } else {\n    for (let i = 0; i < array1.length; i++) {\n      array3[i] = array1[i] + array2[i];\n    }\n  }\n\n  return array3;\n}\n","/**\n\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 {Array} array1 - the array that will be rotated\n * @param {Array|Number} array2\n * @return {Float64Array}\n */\nexport function xMultiply(array1, array2) {\n  let isConstant = false;\n  let constant;\n  if (Array.isArray(array2)) {\n    if (array1.length !== array2.length) {\n      throw new Error('sub: size of array1 and array2 must be identical');\n    }\n  } else {\n    isConstant = true;\n    constant = Number(array2);\n  }\n\n  let 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  } else {\n    for (let i = 0; i < array1.length; i++) {\n      array3[i] = array1[i] * array2[i];\n    }\n  }\n\n  return array3;\n}\n","import { xMultiply } from './xMultiply';\n\nexport function xDotProduct(A, B) {\n  let g = xMultiply(A, B);\n  let result = 0;\n  for (let i = 0; i < A.length; i++) {\n    result += g[i];\n  }\n  return result;\n}\n","import { xDotProduct } from './xDotProduct';\n\n/**\n * Calculates the cross-correlation between 2 vectors\n * @param {Array<Number>} [A] - fixed array\n * @param {Array<Number>} [B] - sweeping array\n * @param {object} [options={}]\n * @param {number} [options.tau = 1] - sweep increment size (in number of points, min = 1, max = A.length)\n * @param {number} [options.lag = A.length - 1] - scalar lag parameter\n */\n\nexport function xCrossCorrelation(A, B, options = {}) {\n  let { tau = 1, lag = A.length - 1 } = options;\n  let result = new Float64Array(1 + (2 * lag) / tau);\n  if (A.length === B.length) {\n    let n = B.length;\n    let g = new Float64Array(2 * n);\n    let q = new Float64Array(2 * n);\n    for (let i = 0; i < n; i++) {\n      q[n + i] = B[i];\n    }\n    for (let i = n * 2 - (tau - 1); i > 0; i -= tau) {\n      let k = 0;\n      for (let j = i; j < n * 2; j++) {\n        g[k] = q[j];\n        k++;\n      }\n      let w = [];\n      for (let l = 0; l < n; l++) {\n        w[l] = g[l];\n      }\n      result[(k - (n - lag)) / tau] = xDotProduct(A, w);\n    }\n  }\n  return result;\n}\n","import { xCrossCorrelation } from './xCrossCorrelation';\n\n/**\n * Calculates the auto-correlation of a vector\n * @param {Array<Number>} [A] - the array that will be fixed\n * @param {object} [options={}]\n * @param {number} [options.tau = 1] - sweep increment size (in number of points, min = 1, max = A.length)\n * @param {number} [options.lag = A.length - 1] - scalar lag parameter\n */\n\nexport function xAutoCorrelation(A, options = {}) {\n  return xCrossCorrelation(A, A, options);\n}\n","/**\n * This function xSubtract the first array by the second array or a constant value from each element of the first array\n * @param {Array<Number>} array1 - the array that will be rotated\n * @return {object}\n */\nexport function xBoxPlot(array) {\n  array = array.slice(0).sort((a, b) => a - b);\n  if (array.length < 5) {\n    throw Error(\n      'xBoxPlot: can not calculate info if array contains less than 3 elements',\n    );\n  }\n  let info = {\n    Q1: 0.0,\n    Q2: 0.0,\n    Q3: 0.0,\n    min: array[0],\n    max: array[array.length - 1],\n  };\n  let q1max, q3min;\n  if (array.length % 2 === 1) {\n    // odd\n    let middle = (array.length - 1) / 2;\n    info.Q2 = array[middle];\n    q1max = middle - 1;\n    q3min = middle + 1;\n  } else {\n    // even\n    q3min = array.length / 2;\n    q1max = q3min - 1;\n    info.Q2 = (array[q1max] + array[q3min]) / 2;\n  }\n  if (q1max % 2 === 0) {\n    info.Q1 = array[q1max / 2];\n    info.Q3 = array[(array.length + q3min - 1) / 2];\n  } else {\n    info.Q1 = (array[(q1max + 1) / 2] + array[(q1max - 1) / 2]) / 2;\n    let middleOver = (array.length + q3min) / 2;\n    info.Q3 = (array[middleOver] + array[middleOver - 1]) / 2;\n  }\n  return info;\n}\n","/**\n\n/**\n * Calculates the correlation between 2 vectors\n * https://en.wikipedia.org/wiki/Correlation_and_dependence\n *\n * @param {Array<Number>} [A] - the array that will be rotated\n * @param {Array<Number>} [B]\n * @return {Array}\n */\nexport function xCorrelation(A, B) {\n  let n = A.length;\n  let sumA = 0;\n  let sumA2 = 0;\n  let sumB = 0;\n  let sumB2 = 0;\n  let sumAB = 0;\n  for (let i = 0; i < n; i++) {\n    let a = A[i];\n    let b = B[i];\n    sumA += a;\n    sumA2 += a ** 2;\n    sumB += b;\n    sumB2 += b ** 2;\n    sumAB += a * b;\n  }\n  return (\n    (n * sumAB - sumA * sumB) /\n    (Math.sqrt(n * sumA2 - sumA ** 2) * Math.sqrt(n * sumB2 - sumB ** 2))\n  );\n}\n","/**\n\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 {Array<Number>} array1 - the array that will be rotated\n * @param {Array<Number>|Number} array2\n * @return {Array}\n */\nexport function xDivide(array1, array2) {\n  let isConstant = false;\n  let constant;\n  if (Array.isArray(array2)) {\n    if (array1.length !== array2.length) {\n      throw new Error('sub: size of array1 and array2 must be identical');\n    }\n  } else {\n    isConstant = true;\n    constant = Number(array2);\n  }\n\n  let array3 = new Array(array1.length);\n  if (isConstant) {\n    for (let i = 0; i < array1.length; i++) {\n      array3[i] = array1[i] / constant;\n    }\n  } else {\n    for (let i = 0; i < array1.length; i++) {\n      array3[i] = array1[i] / array2[i];\n    }\n  }\n\n  return array3;\n}\n","/**\n * Returns the closest index of a `target` in an ordered array\n * @param {array<Number>} array\n * @param {number} target\n */\n\nexport function xFindClosestIndex(array, target) {\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    } else if (array[middle] > target) {\n      high = middle;\n    } else {\n      return middle;\n    }\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    } else {\n      return low + 1;\n    }\n  } else {\n    return low;\n  }\n}\n","import { xFindClosestIndex } from './xFindClosestIndex';\n\n/**\n * Returns an object with {fromIndex, toIndex} for a specific from / to\n * @param {array} x\n * @param {object} [options={}]\n * @param {number} [options.from] - First value for xyIntegration in the X scale\n * @param {number} [options.fromIndex=0] - First point for xyIntegration\n * @param {number} [options.to] - Last value for xyIntegration in the X scale\n * @param {number} [options.toIndex=x.length-1] - Last point for xyIntegration\n */\n\nexport function xGetFromToIndex(x, options = {}) {\n  let { fromIndex, toIndex, from, to } = options;\n\n  if (fromIndex === undefined) {\n    if (from !== undefined) {\n      fromIndex = xFindClosestIndex(x, from);\n    } else {\n      fromIndex = 0;\n    }\n  }\n  if (toIndex === undefined) {\n    if (to !== undefined) {\n      toIndex = xFindClosestIndex(x, to);\n    } else {\n      toIndex = x.length - 1;\n    }\n  }\n  if (fromIndex > toIndex) [fromIndex, toIndex] = [toIndex, fromIndex];\n  return { fromIndex, toIndex };\n}\n","import { xFindClosestIndex } from './xFindClosestIndex';\n\n/**\n *  Returns the targetIndex\n * @param {array} [x]\n * @param {object} [options={}]\n * @param {number} [options.target]\n * @param {number} [options.targetIndex=0]\n * @param {number}\n */\n\nexport function xGetTargetIndex(x, options = {}) {\n  let { target, targetIndex } = options;\n  if (targetIndex === undefined) {\n    if (target !== undefined) {\n      return xFindClosestIndex(x, target);\n    } else {\n      return 0;\n    }\n  }\n  return targetIndex;\n}\n","/**\n * Returns true if x is monotone\n * @param {Array} array\n * @return {boolean}\n */\nexport function xIsMonotone(array) {\n  if (array.length < 3) return true;\n  if (array[0] < array[1]) {\n    for (let i = 0; i < array.length - 1; i++) {\n      if (array[i] >= array[i + 1]) return false;\n    }\n  } else {\n    for (let i = 0; i < array.length - 1; i++) {\n      if (array[i] <= array[i + 1]) return false;\n    }\n  }\n  return true;\n}\n","(function (global, factory) {\n  typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n  typeof define === 'function' && define.amd ? define(['exports'], factory) :\n  (factory((global.d3_array = {})));\n}(this, function (exports) { 'use strict';\n\n  function ascending(a, b) {\n    return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n  }\n\n  function bisector(compare) {\n    if (compare.length === 1) compare = ascendingComparator(compare);\n    return {\n      left: function(a, x, lo, hi) {\n        if (lo == null) lo = 0;\n        if (hi == null) hi = a.length;\n        while (lo < hi) {\n          var mid = lo + hi >>> 1;\n          if (compare(a[mid], x) < 0) lo = mid + 1;\n          else hi = mid;\n        }\n        return lo;\n      },\n      right: function(a, x, lo, hi) {\n        if (lo == null) lo = 0;\n        if (hi == null) hi = a.length;\n        while (lo < hi) {\n          var mid = lo + hi >>> 1;\n          if (compare(a[mid], x) > 0) hi = mid;\n          else lo = mid + 1;\n        }\n        return lo;\n      }\n    };\n  }\n\n  function ascendingComparator(f) {\n    return function(d, x) {\n      return ascending(f(d), x);\n    };\n  }\n\n  var ascendingBisect = bisector(ascending);\n  var bisectRight = ascendingBisect.right;\n  var bisectLeft = ascendingBisect.left;\n\n  function descending(a, b) {\n    return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n  }\n\n  function number$1(x) {\n    return x === null ? NaN : +x;\n  }\n\n  function variance(array, f) {\n    var n = array.length,\n        m = 0,\n        a,\n        d,\n        s = 0,\n        i = -1,\n        j = 0;\n\n    if (f == null) {\n      while (++i < n) {\n        if (!isNaN(a = number$1(array[i]))) {\n          d = a - m;\n          m += d / ++j;\n          s += d * (a - m);\n        }\n      }\n    }\n\n    else {\n      while (++i < n) {\n        if (!isNaN(a = number$1(f(array[i], i, array)))) {\n          d = a - m;\n          m += d / ++j;\n          s += d * (a - m);\n        }\n      }\n    }\n\n    if (j > 1) return s / (j - 1);\n  }\n\n  function deviation(array, f) {\n    var v = variance(array, f);\n    return v ? Math.sqrt(v) : v;\n  }\n\n  function extent(array, f) {\n    var i = -1,\n        n = array.length,\n        a,\n        b,\n        c;\n\n    if (f == null) {\n      while (++i < n) if ((b = array[i]) != null && b >= b) { a = c = b; break; }\n      while (++i < n) if ((b = array[i]) != null) {\n        if (a > b) a = b;\n        if (c < b) c = b;\n      }\n    }\n\n    else {\n      while (++i < n) if ((b = f(array[i], i, array)) != null && b >= b) { a = c = b; break; }\n      while (++i < n) if ((b = f(array[i], i, array)) != null) {\n        if (a > b) a = b;\n        if (c < b) c = b;\n      }\n    }\n\n    return [a, c];\n  }\n\n  function constant(x) {\n    return function() {\n      return x;\n    };\n  }\n\n  function identity(x) {\n    return x;\n  }\n\n  function range(start, stop, step) {\n    start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step;\n\n    var i = -1,\n        n = Math.max(0, Math.ceil((stop - start) / step)) | 0,\n        range = new Array(n);\n\n    while (++i < n) {\n      range[i] = start + i * step;\n    }\n\n    return range;\n  }\n\n  var e10 = Math.sqrt(50);\n  var e5 = Math.sqrt(10);\n  var e2 = Math.sqrt(2);\n  function ticks(start, stop, count) {\n    var step = tickStep(start, stop, count);\n    return range(\n      Math.ceil(start / step) * step,\n      Math.floor(stop / step) * step + step / 2, // inclusive\n      step\n    );\n  }\n\n  function tickStep(start, stop, count) {\n    var step0 = Math.abs(stop - start) / Math.max(0, count),\n        step1 = Math.pow(10, Math.floor(Math.log(step0) / Math.LN10)),\n        error = step0 / step1;\n    if (error >= e10) step1 *= 10;\n    else if (error >= e5) step1 *= 5;\n    else if (error >= e2) step1 *= 2;\n    return stop < start ? -step1 : step1;\n  }\n\n  function sturges(values) {\n    return Math.ceil(Math.log(values.length) / Math.LN2) + 1;\n  }\n\n  function number(x) {\n    return +x;\n  }\n\n  function histogram() {\n    var value = identity,\n        domain = extent,\n        threshold = sturges;\n\n    function histogram(data) {\n      var i,\n          n = data.length,\n          x,\n          values = new Array(n);\n\n      // Coerce values to numbers.\n      for (i = 0; i < n; ++i) {\n        values[i] = +value(data[i], i, data);\n      }\n\n      var xz = domain(values),\n          x0 = +xz[0],\n          x1 = +xz[1],\n          tz = threshold(values, x0, x1);\n\n      // Convert number of thresholds into uniform thresholds.\n      if (!Array.isArray(tz)) tz = ticks(x0, x1, +tz);\n\n      // Coerce thresholds to numbers, ignoring any outside the domain.\n      var m = tz.length;\n      for (i = 0; i < m; ++i) tz[i] = +tz[i];\n      while (tz[0] <= x0) tz.shift(), --m;\n      while (tz[m - 1] >= x1) tz.pop(), --m;\n\n      var bins = new Array(m + 1),\n          bin;\n\n      // Initialize bins.\n      for (i = 0; i <= m; ++i) {\n        bin = bins[i] = [];\n        bin.x0 = i > 0 ? tz[i - 1] : x0;\n        bin.x1 = i < m ? tz[i] : x1;\n      }\n\n      // Assign data to bins by value, ignoring any outside the domain.\n      for (i = 0; i < n; ++i) {\n        x = values[i];\n        if (x0 <= x && x <= x1) {\n          bins[bisectRight(tz, x, 0, m)].push(data[i]);\n        }\n      }\n\n      return bins;\n    }\n\n    histogram.value = function(_) {\n      return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(+_), histogram) : value;\n    };\n\n    histogram.domain = function(_) {\n      return arguments.length ? (domain = typeof _ === \"function\" ? _ : constant([+_[0], +_[1]]), histogram) : domain;\n    };\n\n    histogram.thresholds = function(_) {\n      if (!arguments.length) return threshold;\n      threshold = typeof _ === \"function\" ? _\n          : Array.isArray(_) ? constant(Array.prototype.map.call(_, number))\n          : constant(+_);\n      return histogram;\n    };\n\n    return histogram;\n  }\n\n  function quantile(array, p, f) {\n    if (f == null) f = number$1;\n    if (!(n = array.length)) return;\n    if ((p = +p) <= 0 || n < 2) return +f(array[0], 0, array);\n    if (p >= 1) return +f(array[n - 1], n - 1, array);\n    var n,\n        h = (n - 1) * p,\n        i = Math.floor(h),\n        a = +f(array[i], i, array),\n        b = +f(array[i + 1], i + 1, array);\n    return a + (b - a) * (h - i);\n  }\n\n  function freedmanDiaconis(values, min, max) {\n    values.sort(ascending);\n    return Math.ceil((max - min) / (2 * (quantile(values, 0.75) - quantile(values, 0.25)) * Math.pow(values.length, -1 / 3)));\n  }\n\n  function scott(values, min, max) {\n    return Math.ceil((max - min) / (3.5 * deviation(values) * Math.pow(values.length, -1 / 3)));\n  }\n\n  function max(array, f) {\n    var i = -1,\n        n = array.length,\n        a,\n        b;\n\n    if (f == null) {\n      while (++i < n) if ((b = array[i]) != null && b >= b) { a = b; break; }\n      while (++i < n) if ((b = array[i]) != null && b > a) a = b;\n    }\n\n    else {\n      while (++i < n) if ((b = f(array[i], i, array)) != null && b >= b) { a = b; break; }\n      while (++i < n) if ((b = f(array[i], i, array)) != null && b > a) a = b;\n    }\n\n    return a;\n  }\n\n  function mean(array, f) {\n    var s = 0,\n        n = array.length,\n        a,\n        i = -1,\n        j = n;\n\n    if (f == null) {\n      while (++i < n) if (!isNaN(a = number$1(array[i]))) s += a; else --j;\n    }\n\n    else {\n      while (++i < n) if (!isNaN(a = number$1(f(array[i], i, array)))) s += a; else --j;\n    }\n\n    if (j) return s / j;\n  }\n\n  function median(array, f) {\n    var numbers = [],\n        n = array.length,\n        a,\n        i = -1;\n\n    if (f == null) {\n      while (++i < n) if (!isNaN(a = number$1(array[i]))) numbers.push(a);\n    }\n\n    else {\n      while (++i < n) if (!isNaN(a = number$1(f(array[i], i, array)))) numbers.push(a);\n    }\n\n    return quantile(numbers.sort(ascending), 0.5);\n  }\n\n  function merge(arrays) {\n    var n = arrays.length,\n        m,\n        i = -1,\n        j = 0,\n        merged,\n        array;\n\n    while (++i < n) j += arrays[i].length;\n    merged = new Array(j);\n\n    while (--n >= 0) {\n      array = arrays[n];\n      m = array.length;\n      while (--m >= 0) {\n        merged[--j] = array[m];\n      }\n    }\n\n    return merged;\n  }\n\n  function min(array, f) {\n    var i = -1,\n        n = array.length,\n        a,\n        b;\n\n    if (f == null) {\n      while (++i < n) if ((b = array[i]) != null && b >= b) { a = b; break; }\n      while (++i < n) if ((b = array[i]) != null && a > b) a = b;\n    }\n\n    else {\n      while (++i < n) if ((b = f(array[i], i, array)) != null && b >= b) { a = b; break; }\n      while (++i < n) if ((b = f(array[i], i, array)) != null && a > b) a = b;\n    }\n\n    return a;\n  }\n\n  function pairs(array) {\n    var i = 0, n = array.length - 1, p = array[0], pairs = new Array(n < 0 ? 0 : n);\n    while (i < n) pairs[i] = [p, p = array[++i]];\n    return pairs;\n  }\n\n  function permute(array, indexes) {\n    var i = indexes.length, permutes = new Array(i);\n    while (i--) permutes[i] = array[indexes[i]];\n    return permutes;\n  }\n\n  function scan(array, compare) {\n    if (!(n = array.length)) return;\n    var i = 0,\n        n,\n        j = 0,\n        xi,\n        xj = array[j];\n\n    if (!compare) compare = ascending;\n\n    while (++i < n) if (compare(xi = array[i], xj) < 0 || compare(xj, xj) !== 0) xj = xi, j = i;\n\n    if (compare(xj, xj) === 0) return j;\n  }\n\n  function shuffle(array, i0, i1) {\n    var m = (i1 == null ? array.length : i1) - (i0 = i0 == null ? 0 : +i0),\n        t,\n        i;\n\n    while (m) {\n      i = Math.random() * m-- | 0;\n      t = array[m + i0];\n      array[m + i0] = array[i + i0];\n      array[i + i0] = t;\n    }\n\n    return array;\n  }\n\n  function sum(array, f) {\n    var s = 0,\n        n = array.length,\n        a,\n        i = -1;\n\n    if (f == null) {\n      while (++i < n) if (a = +array[i]) s += a; // Note: zero and null are equivalent.\n    }\n\n    else {\n      while (++i < n) if (a = +f(array[i], i, array)) s += a;\n    }\n\n    return s;\n  }\n\n  function transpose(matrix) {\n    if (!(n = matrix.length)) return [];\n    for (var i = -1, m = min(matrix, length), transpose = new Array(m); ++i < m;) {\n      for (var j = -1, n, row = transpose[i] = new Array(n); ++j < n;) {\n        row[j] = matrix[j][i];\n      }\n    }\n    return transpose;\n  }\n\n  function length(d) {\n    return d.length;\n  }\n\n  function zip() {\n    return transpose(arguments);\n  }\n\n  var version = \"0.7.1\";\n\n  exports.version = version;\n  exports.bisect = bisectRight;\n  exports.bisectRight = bisectRight;\n  exports.bisectLeft = bisectLeft;\n  exports.ascending = ascending;\n  exports.bisector = bisector;\n  exports.descending = descending;\n  exports.deviation = deviation;\n  exports.extent = extent;\n  exports.histogram = histogram;\n  exports.thresholdFreedmanDiaconis = freedmanDiaconis;\n  exports.thresholdScott = scott;\n  exports.thresholdSturges = sturges;\n  exports.max = max;\n  exports.mean = mean;\n  exports.median = median;\n  exports.merge = merge;\n  exports.min = min;\n  exports.pairs = pairs;\n  exports.permute = permute;\n  exports.quantile = quantile;\n  exports.range = range;\n  exports.scan = scan;\n  exports.shuffle = shuffle;\n  exports.sum = sum;\n  exports.ticks = ticks;\n  exports.tickStep = tickStep;\n  exports.transpose = transpose;\n  exports.variance = variance;\n  exports.zip = zip;\n\n}));","const {bisectRight} = require('d3-array')\n\nconst quincunx = (u, v, w, q) => {\n  const n = u.length - 1\n\n  u[0] = 0\n  v[0] = 0\n  w[0] = 0\n  v[1] = v[1] / u[1]\n  w[1] = w[1] / u[1]\n  for (let i = 2; i < n; ++i) {\n    u[i] = u[i] - u[i - 2] * w[i - 2] * w[i - 2] - u[i - 1] * v[i - 1] * v[i - 1]\n    v[i] = (v[i] - u[i - 1] * v[i - 1] * w[i - 1]) / u[i]\n    w[i] = w[i] / u[i]\n  }\n\n  for (let i = 2; i < n; ++i) {\n    q[i] = q[i] - v[i - 1] * q[i - 1] - w[i - 2] * q[i - 2]\n  }\n  for (let i = 1; i < n; ++i) {\n    q[i] = q[i] / u[i]\n  }\n\n  q[n - 2] = q[n - 2] - v[n - 2] * q[n - 1]\n  for (let i = n - 3; i > 0; --i) {\n    q[i] = q[i] - v[i] * q[i + 1] - w[i] * q[i + 2]\n  }\n}\n\nconst smoothingSpline = (x, y, sigma, lambda) => {\n  const n = x.length - 1\n  const h = new Array(n + 1)\n  const r = new Array(n + 1)\n  const f = new Array(n + 1)\n  const p = new Array(n + 1)\n  const q = new Array(n + 1)\n  const u = new Array(n + 1)\n  const v = new Array(n + 1)\n  const w = new Array(n + 1)\n  const params = x.map(() => [0, 0, 0, 0])\n  params.pop()\n\n  const mu = 2 * (1 - lambda) / (3 * lambda)\n  for (let i = 0; i < n; ++i) {\n    h[i] = x[i + 1] - x[i]\n    r[i] = 3 / h[i]\n  }\n  q[0] = 0\n  for (let i = 1; i < n; ++i) {\n    f[i] = -(r[i - 1] + r[i])\n    p[i] = 2 * (x[i + 1] - x[i - 1])\n    q[i] = 3 * (y[i + 1] - y[i]) / h[i] - 3 * (y[i] - y[i - 1]) / h[i - 1]\n  }\n  q[n] = 0\n\n  for (let i = 1; i < n; ++i) {\n    u[i] = r[i - 1] * r[i - 1] * sigma[i - 1] + f[i] * f[i] * sigma[i] + r[i] * r[i] * sigma[i + 1]\n    u[i] = mu * u[i] + p[i]\n  }\n  for (let i = 1; i < n - 1; ++i) {\n    v[i] = f[i] * r[i] * sigma[i] + r[i] * f[i + 1] * sigma[i + 1]\n    v[i] = mu * v[i] + h[i]\n  }\n  for (let i = 1; i < n - 2; ++i) {\n    w[i] = mu * r[i] * r[i + 1] * sigma[i + 1]\n  }\n\n  quincunx(u, v, w, q)\n\n  params[0][3] = y[0] - mu * r[0] * q[1] * sigma[0]\n  params[1][3] = y[1] - mu * (f[1] * q[1] + r[1] * q[2]) * sigma[0]\n  params[0][0] = q[1] / (3 * h[0])\n  params[0][1] = 0\n  params[0][2] = (params[1][3] - params[0][3]) / h[0] - q[1] * h[0] / 3\n  r[0] = 0\n  for (let i = 1; i < n; ++i) {\n    params[i][0] = (q[i + 1] - q[i]) / (3 * h[i])\n    params[i][1] = q[i]\n    params[i][2] = (q[i] + q[i - 1]) * h[i - 1] + params[i - 1][2]\n    params[i][3] = r[i - 1] * q[i - 1] + f[i] * q[i] + r[i] * q[i + 1]\n    params[i][3] = y[i] - mu * params[i][3] * sigma[i]\n  }\n  return params\n}\n\nclass SplineInterpolator {\n  constructor (xIn, yIn, lambda = 1) {\n    const indices = xIn.map((_, i) => i)\n    indices.sort((i, j) => xIn[i] - xIn[j])\n    const x = indices.map((i) => xIn[i])\n    const y = indices.map((i) => yIn[i])\n    const n = indices.length\n    const sigma = indices.map(() => 1)\n    this.n = n\n    this.x = x\n    this.y = y\n    this.params = smoothingSpline(x, y, sigma, lambda)\n  }\n\n  interpolate (v) {\n    if (v === this.x[this.n - 1]) {\n      return this.y[this.n - 1]\n    }\n    const i = Math.min(Math.max(0, bisectRight(this.x, v) - 1), this.n - 2)\n    const [a, b, c, d] = this.params[i]\n    v = v - this.x[i]\n    return a * v * v * v + b * v * v + c * v + d\n  }\n\n  max (step = 100) {\n    const xStart = this.x[0]\n    const xStop = this.x[this.n - 1]\n    const delta = (xStop - xStart) / step\n    let maxValue = -Infinity\n    for (let i = 0, x = xStart; i < step; ++i, x += delta) {\n      const y = this.interpolate(x)\n      if (y > maxValue) {\n        maxValue = y\n      }\n    }\n    return maxValue\n  }\n\n  min (step = 100) {\n    const xStart = this.x[0]\n    const xStop = this.x[this.n - 1]\n    const delta = (xStop - xStart) / step\n    let minValue = Infinity\n    for (let i = 0, x = xStart; i < step; ++i, x += delta) {\n      const y = this.interpolate(x)\n      if (y < minValue) {\n        minValue = y\n      }\n    }\n    return minValue\n  }\n\n  domain () {\n    return [this.x[0], this.x[this.x.length - 1]]\n  }\n\n  range () {\n    return [this.min(), this.max()]\n  }\n\n  curve (nInterval, domain = null) {\n    domain = domain || this.domain()\n    const delta = (domain[1] - domain[0]) / (nInterval - 1)\n    const vals = new Array(nInterval)\n    for (let i = 0; i < nInterval; ++i) {\n      const x = delta * i + domain[0]\n      vals[i] = [x, this.interpolate(x)]\n    }\n    return vals\n  }\n}\n\nmodule.exports = SplineInterpolator\n","/* eslint-disable no-loss-of-precision */\n\n/*\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\n// Coefficients for erfcinv on [0, 0.5]:\nconst Y1 = 8.91314744949340820313e-2;\nconst P1 = [\n  -5.38772965071242932965e-3,\n  8.22687874676915743155e-3,\n  2.19878681111168899165e-2,\n  -3.65637971411762664006e-2,\n  -1.26926147662974029034e-2,\n  3.34806625409744615033e-2,\n  -8.36874819741736770379e-3,\n  -5.08781949658280665617e-4,\n];\nconst Q1 = [\n  8.86216390456424707504e-4,\n  -2.33393759374190016776e-3,\n  7.95283687341571680018e-2,\n  -5.27396382340099713954e-2,\n  -7.1228902341542847553e-1,\n  6.62328840472002992063e-1,\n  1.56221558398423026363,\n  -1.56574558234175846809,\n  -9.70005043303290640362e-1,\n  1,\n];\n\n// Coefficients for erfcinv for 0.5 > 1-x >= 0:\nconst Y2 = 2.249481201171875;\nconst P2 = [\n  -3.67192254707729348546,\n  2.11294655448340526258e1,\n  1.7445385985570866523e1,\n  -4.46382324441786960818e1,\n  -1.88510648058714251895e1,\n  1.76447298408374015486e1,\n  8.37050328343119927838,\n  1.05264680699391713268e-1,\n  -2.02433508355938759655e-1,\n];\nconst Q2 = [\n  1.72114765761200282724,\n  -2.26436933413139721736e1,\n  1.08268667355460159008e1,\n  4.85609213108739935468e1,\n  -2.01432634680485188801e1,\n  -2.86608180499800029974e1,\n  3.9713437953343869095,\n  6.24264124854247537712,\n  1,\n];\n\n// Coefficients for erfcinv for sqrt( -log(1-x)):\nconst Y3 = 8.07220458984375e-1;\nconst P3 = [\n  -6.81149956853776992068e-10,\n  2.85225331782217055858e-8,\n  -6.79465575181126350155e-7,\n  2.14558995388805277169e-3,\n  2.90157910005329060432e-2,\n  1.42869534408157156766e-1,\n  3.37785538912035898924e-1,\n  3.87079738972604337464e-1,\n  1.17030156341995252019e-1,\n  -1.63794047193317060787e-1,\n  -1.31102781679951906451e-1,\n];\nconst Q3 = [\n  1.105924229346489121e-2,\n  1.52264338295331783612e-1,\n  8.48854343457902036425e-1,\n  2.59301921623620271374,\n  4.77846592945843778382,\n  5.38168345707006855425,\n  3.46625407242567245975,\n  1,\n];\n\nconst Y4 = 9.3995571136474609375e-1;\nconst P4 = [\n  2.66339227425782031962e-12,\n  -2.30404776911882601748e-10,\n  4.60469890584317994083e-6,\n  1.57544617424960554631e-4,\n  1.87123492819559223345e-3,\n  9.50804701325919603619e-3,\n  1.85573306514231072324e-2,\n  -2.22426529213447927281e-3,\n  -3.50353787183177984712e-2,\n];\nconst Q4 = [\n  7.64675292302794483503e-5,\n  2.63861676657015992959e-3,\n  3.41589143670947727934e-2,\n  2.20091105764131249824e-1,\n  7.62059164553623404043e-1,\n  1.3653349817554063097,\n  1,\n];\n\nconst Y5 = 9.8362827301025390625e-1;\nconst P5 = [\n  9.9055709973310326855e-17,\n  -2.81128735628831791805e-14,\n  4.62596163522878599135e-9,\n  4.49696789927706453732e-7,\n  1.49624783758342370182e-5,\n  2.09386317487588078668e-4,\n  1.05628862152492910091e-3,\n  -1.12951438745580278863e-3,\n  -1.67431005076633737133e-2,\n];\nconst Q5 = [\n  2.82243172016108031869e-7,\n  2.75335474764726041141e-5,\n  9.64011807005165528527e-4,\n  1.60746087093676504695e-2,\n  1.38151865749083321638e-1,\n  5.91429344886417493481e-1,\n  1,\n];\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/**\n * Calculates a rational approximation.\n *\n * @private\n * @param {Number} x\n * @param {Number} v\n * @param {Array} P - array of polynomial coefficients\n * @param {Array} Q - array of polynomial coefficients\n * @param {Number} Y\n * @returns {Number} 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/**\n * Evaluates the complementary inverse error function for an input value.\n *\n * @private\n * @param {Number} x - input value\n * @returns {Number} 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\n  // [1] Special cases...\n\n  // NaN:\n  if (Number.isNaN(x)) {\n    return NaN;\n  }\n  // x not on the interval: [0,2]\n  if (x < 0 || x > 2) {\n    throw new RangeError(\n      `erfcinv()::invalid input argument. Value must be on the interval [0,2]. Value: \\`${x}\\`.`,\n    );\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  } 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\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\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\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","export default function rayleighCdf(x, sigma = 1) {\n  if (x < 0) {\n    return 0;\n  }\n  return -Math.expm1(-Math.pow(x, 2) / (2 * Math.pow(sigma, 2)));\n}\n","import SplineInterpolator from 'spline-interpolator';\n\nimport erfcinv from './erfcinv';\nimport rayleighCdf from './rayleighCdf';\n\n/**\n * Determine noise level by san plot metodology (https://doi.org/10.1002/mrc.4882)\n * @param {Array} data - real or magnitude spectra data.\n * @param {*} options\n */\n\nexport function xNoiseSanPlot(data, options = {}) {\n  const {\n    mask,\n    cutOff,\n    refine = true,\n    magnitudeMode = false,\n    scaleFactor = 1,\n    factorStd = 5,\n    fixOffset = true,\n  } = options;\n\n  let input;\n  if (Array.isArray(mask) && mask.length === data.length) {\n    input = data.filter((_e, i) => !mask[i]);\n  } else {\n    input = data.slice();\n  }\n\n  if (scaleFactor > 1) {\n    for (let i = 0; i < input.length; i++) {\n      input[i] *= scaleFactor;\n    }\n  }\n\n  input.sort((a, b) => b - a);\n\n  if (fixOffset && !magnitudeMode) {\n    let medianIndex = Math.floor(input.length / 2);\n    let median = 0.5 * (input[medianIndex] + input[medianIndex + 1]);\n    for (let i = 0; i < input.length; i++) {\n      input[i] -= median;\n    }\n  }\n\n  let firstNegativeValueIndex = 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\n  let signPositive = new Float64Array(\n    input.slice(0, lastPositiveValueIndex + 1),\n  );\n  let signNegative = new Float64Array(input.slice(firstNegativeValueIndex));\n\n  let cutOffDist = cutOff || determineCutOff(signPositive, { magnitudeMode });\n\n  let pIndex = Math.floor(signPositive.length * cutOffDist);\n  let initialNoiseLevelPositive = signPositive[pIndex];\n\n  let skyPoint = signPositive[0];\n\n  let initialNoiseLevelNegative;\n  if (signNegative.length > 0) {\n    let nIndex = Math.floor(signNegative.length * (1 - cutOffDist));\n    initialNoiseLevelNegative = -1 * signNegative[nIndex];\n  } else {\n    initialNoiseLevelNegative = 0;\n  }\n\n  let noiseLevelPositive = initialNoiseLevelPositive;\n  let noiseLevelNegative = initialNoiseLevelNegative;\n  let cloneSignPositive = signPositive.slice();\n  let cloneSignNegative = signNegative.slice();\n\n  let cutOffSignalsIndexPlus = 0;\n  let cutOffSignalsIndexNeg = 2;\n  if (refine) {\n    let cutOffSignals = noiseLevelPositive * factorStd;\n    cutOffSignalsIndexPlus = signPositive.findIndex((e) => e < cutOffSignals);\n\n    if (cutOffSignalsIndexPlus > -1) {\n      cloneSignPositive = signPositive.slice(cutOffSignalsIndexPlus);\n      noiseLevelPositive =\n        cloneSignPositive[Math.floor(cloneSignPositive.length * cutOffDist)];\n    }\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[\n          Math.floor(cloneSignNegative.length * (1 - cutOffDist))\n        ];\n    }\n  }\n  let correctionFactor = -simpleNormInv(cutOffDist / 2, { magnitudeMode });\n  initialNoiseLevelPositive = initialNoiseLevelPositive / correctionFactor;\n  initialNoiseLevelNegative = initialNoiseLevelNegative / correctionFactor;\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 * simpleNormInv(effectiveCutOffDist / 2, { magnitudeMode });\n\n    noiseLevelPositive /= refinedCorrectionFactor;\n\n    if (cutOffSignalsIndexNeg > -1) {\n      effectiveCutOffDist =\n        (cutOffDist * cloneSignNegative.length + cutOffSignalsIndexNeg) /\n        (cloneSignNegative.length + cutOffSignalsIndexNeg);\n      refinedCorrectionFactor =\n        -1 * simpleNormInv(effectiveCutOffDist / 2, { magnitudeMode });\n      if (noiseLevelNegative !== 0) {\n        noiseLevelNegative /= refinedCorrectionFactor;\n      }\n    }\n  } else {\n    noiseLevelPositive /= correctionFactor;\n    noiseLevelNegative /= correctionFactor;\n  }\n\n  return {\n    positive: noiseLevelPositive,\n    negative: noiseLevelNegative,\n    snr: skyPoint / noiseLevelPositive,\n  };\n}\n\nfunction determineCutOff(signPositive, options = {}) {\n  let {\n    magnitudeMode = false,\n    considerList = { from: 0.5, step: 0.1, to: 0.9 },\n  } = options;\n  //generate a list of values for\n  let cutOff = [];\n  let indexMax = signPositive.length - 1;\n  for (let i = 0.01; i <= 0.99; i += 0.01) {\n    let index = Math.round(indexMax * i);\n    let value =\n      -signPositive[index] / simpleNormInv([i / 2], { magnitudeMode });\n    cutOff.push([i, value]);\n  }\n\n  let minKi = Number.MAX_SAFE_INTEGER;\n  let { from, to, step } = considerList;\n  let delta = step / 2;\n  let whereToCutStat = 0.5;\n  for (let i = from; i <= to; i += step) {\n    let floor = i - delta;\n    let top = i + delta;\n    let elementsOfCutOff = cutOff.filter((e) => e[0] < top && e[0] > floor);\n    let averageValue = elementsOfCutOff.reduce((a, b) => a + Math.abs(b[1]), 0);\n    let kiSqrt = 0;\n    for (let j = 0; j < elementsOfCutOff.length; j++) {\n      kiSqrt += Math.pow(elementsOfCutOff[j][1] - averageValue, 2);\n    }\n\n    if (kiSqrt < minKi) {\n      minKi = kiSqrt;\n      whereToCutStat = i;\n    }\n  }\n\n  return whereToCutStat;\n}\n\nfunction simpleNormInv(data, options = {}) {\n  const { magnitudeMode = false } = options;\n\n  if (!Array.isArray(data)) data = [data];\n\n  let from = 0;\n  let to = 2;\n  let step = 0.01;\n  let xTraining = createArray(from, to, step);\n\n  let result = new Float64Array(data.length);\n  let yTraining = new Float64Array(xTraining.length);\n  if (magnitudeMode) {\n    let factor = 1;\n    for (let i = 0; i < yTraining.length; i++) {\n      let finalInput = xTraining[i] * factor;\n      yTraining[i] = 1 - rayleighCdf(finalInput);\n    }\n    let interp = new SplineInterpolator(xTraining, yTraining);\n    for (let i = 0; i < result.length; i++) {\n      let yValue = 2 * data[i];\n      result[i] = -1 * interp.interpolate(yValue);\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.length === 1 ? result[0] : result;\n}\n\nfunction createArray(from, to, step) {\n  let result = new Float32Array(Math.abs((from - to) / step + 1));\n  for (let i = 0; i < result.length; i++) {\n    result[i] = from + i * step;\n  }\n  return Array.from(result);\n}\n","/**\n * This function calculate the norm of a vector\n * @example xNorm([3, 4]) -> 5\n * @param {Array} array - the array that will be rotated\n * @return {number} calculated norm\n */\nexport function xNorm(array) {\n  let result = 0;\n  for (let i = 0; i < array.length; i++) {\n    result += array[i] ** 2;\n  }\n  return Math.sqrt(result);\n}\n","import isArray from 'is-any-array';\n\n/**\n * Checks if input is valdi\n * @param {Array<number>} input\n\n */\nexport default function xCheck(input) {\n  if (!isArray(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","import xCheck from './xCheck';\n\n/**\n * This function pads an array\n * @param {Array} array - the array that will be padded\n * @param {object} [options={}]\n * @param {string} [options.algorithm=''] '', value, circular, duplicate\n * @param {number} [options.size=0] padding size before first element and after last element\n * @param {number} [options.value=0] value to use for padding (if algorithm='value')\n * @return {Array}\n */\nexport function xPadding(array, options = {}) {\n  const { size = 0, value = 0, algorithm = '' } = options;\n  xCheck(array);\n\n  if (!algorithm) {\n    if (array instanceof Float64Array) {\n      return array.slice();\n    } else {\n      return Float64Array.from(array);\n    }\n  }\n\n  let result = new Float64Array(array.length + size * 2);\n\n  for (let i = 0; i < array.length; i++) {\n    result[i + size] = array[i];\n  }\n\n  let fromEnd = size + array.length;\n  let toEnd = 2 * size + array.length;\n\n  switch (algorithm.toLowerCase()) {\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[array.length - 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 Error('xPadding: unknown algorithm');\n  }\n\n  return result;\n}\n","/**\n * This function performs a circular shift to a new array\n * Positive values of shifts will shift to the right and negative values will do to the left\n * @example xRotate([1,2,3,4],1) -> [4,1,2,3]\n * @example xRotate([1,2,3,4],-1) -> [2,3,4,1]\n * @param {Array} array - the array that will be rotated\n * @param {number} shift\n * @return {Array}\n */\nexport function xRotate(array, shift) {\n  shift = shift % array.length;\n  if (shift < 0) shift += array.length;\n  let result = new Float64Array(array.length);\n  result.set(array.slice(array.length - shift));\n  result.set(array.slice(0, array.length - shift), shift);\n  return result;\n}\n","import xCheck from './xCheck';\nimport { xPadding } from './xPadding';\n/**\n * This function calculates a rolling average\n * @param {Array<Number>} array - the array that will be rotated\n * @param {function} fct callback function that from an array returns a value.\n * @param {object} [options={}]\n * @param {number} [options.window=5] rolling window\n * @param {string} [options.padding.size=0] none, value, circular, duplicate\n * @param {string} [options.padding.algorithm='value'] none, value, circular, duplicate\n * @param {number} [options.padding.value=0] value to use for padding (if algorithm='value')\n * @return {Array<Number>}\n */\nexport function xRolling(array, fct, options = {}) {\n  xCheck(array);\n  if (typeof fct !== 'function') throw Error('fct has to be a function');\n\n  const { window = 5, padding = {} } = options;\n  const { size = window - 1, algorithm, value } = padding;\n\n  array = xPadding(array, { size, algorithm, value }); // ensure we get a copy and it is float64\n\n  const newArray = [];\n  for (let i = 0; i < array.length - window + 1; i++) {\n    let subArray = new Float64Array(array.buffer, i * 8, window);\n    // we will send a view to the original buffer\n    newArray.push(fct(subArray));\n  }\n\n  return newArray;\n}\n","import isArray from 'is-any-array';\n\nfunction sum(input) {\n  if (!isArray(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 sumValue = 0;\n\n  for (var i = 0; i < input.length; i++) {\n    sumValue += input[i];\n  }\n\n  return sumValue;\n}\n\nexport default sum;\n","import sum from 'ml-array-sum';\n\nfunction mean(input) {\n  return sum(input) / input.length;\n}\n\nexport default mean;\n","import mean from 'ml-array-mean';\n\nimport { xRolling } from './xRolling';\n\n/**\n * This function calculates a rolling average\n * @param {Array<Number>} array - the array that will be rotated\n * @param {object} [options={}]\n * @param {number} [options.window=5] rolling window\n * @param {string} [options.padding.size=window-1] none, value, circular, duplicate\n * @param {string} [options.padding.algorithm=''] none, value, circular, duplicate\n * @param {number} [options.padding.value=0] value to use for padding (if algorithm='value')\n * @return {Array<Number>}\n */\nexport function xRollingAverage(array, options = {}) {\n  return xRolling(array, mean, options);\n}\n","import median from 'ml-array-median';\n\nimport { xRolling } from './xRolling';\n\n/**\n * This function calculates a rolling average\n * @param {Array<Number>} array - the array that will be rotated\n * @param {object} [options={}]\n * @param {number} [options.window=5] rolling window\n * @param {string} [options.padding.size=window-1] none, value, circular, duplicate\n * @param {string} [options.padding.algorithm=''] none, value, circular, duplicate\n * @param {number} [options.padding.value=0] value to use for padding (if algorithm='value')\n * @return {Array<Number>}\n */\nexport function xRollingMedian(array, options = {}) {\n  return xRolling(array, median, options);\n}\n","/**\n * This function xSubtract the first array by the second array or a constant value from each element of the first array\n * @param {Array} array1 - the array that will be rotated\n * @param {Array|Number} array2\n * @return {Array}\n */\nexport function xSubtract(array1, array2) {\n  let isConstant = false;\n  let constant;\n  if (Array.isArray(array2)) {\n    if (array1.length !== array2.length) {\n      throw new Error('sub: size of array1 and array2 must be identical');\n    }\n  } else {\n    isConstant = true;\n    constant = Number(array2);\n  }\n\n  let array3 = new Array(array1.length);\n  if (isConstant) {\n    for (let i = 0; i < array1.length; i++) {\n      array3[i] = array1[i] - constant;\n    }\n  } else {\n    for (let i = 0; i < array1.length; i++) {\n      array3[i] = array1[i] - array2[i];\n    }\n  }\n\n  return array3;\n}\n","import xCheck from './xCheck';\n\n/**\n * Computes the index of the minimum of the given values\n * @param {Array<number>} input\n * @return {number}\n */\nexport function xMinIndex(input) {\n  xCheck(input);\n  let minIndex = 0;\n  for (let i = 1; i < input.length; i++) {\n    if (input[i] < input[minIndex]) {\n      minIndex = i;\n    }\n  }\n  return minIndex;\n}\n","import xCheck from './xCheck';\n/**\n * Computes the index of the maximum of the given values\n * @param {Array<number>} input\n * @return {number}\n */\nexport function xMaxIndex(input) {\n  xCheck(input);\n\n  let maxIndex = 0;\n\n  for (let i = 1; i < input.length; i++) {\n    if (input[i] > input[maxIndex]) {\n      maxIndex = i;\n    }\n  }\n  return maxIndex;\n}\n","/**\n * Calculates reimAbsolute value of a complex spectrum\n * @param {object} [reim] - An object of kind {re:[], im:[]}.\n * @return {Float64Array}\n */\nexport function reimAbsolute(data) {\n  const length = data.re.length;\n  const re = data.re;\n  const im = data.im;\n  const newArray = new Float64Array(length);\n  for (let i = 0; i < length; i++) {\n    newArray[i] = Math.sqrt(re[i] ** 2 + im[i] ** 2);\n  }\n\n  return newArray;\n}\n","/**\n * Phase correction filter\n * @param {object} reim - An object of kind {re:[], im:[]}\n * @param {number} [phi0 = 0] - Angle in radians for zero order phase correction\n * @param {number} [phi1 = 0] - Angle in radians for first order phase correction\n * @return {object} returns a new object {re:[], im:[]}\n */\nexport function reimPhaseCorrection(data, phi0, phi1) {\n  phi0 = Number.isFinite(phi0) ? phi0 : 0;\n  phi1 = Number.isFinite(phi1) ? phi1 : 0;\n\n  const re = data.re;\n  const im = data.im;\n  const length = data.re.length;\n\n  const delta = phi1 / length;\n  const alpha = 2 * Math.pow(Math.sin(delta / 2), 2);\n  const beta = Math.sin(delta);\n  let cosTheta = Math.cos(phi0);\n  let sinTheta = Math.sin(phi0);\n\n  const newRe = new Float64Array(length);\n  const newIm = new Float64Array(length);\n  for (let i = 0; i < length; i++) {\n    newRe[i] = re[i] * cosTheta - im[i] * sinTheta;\n    newIm[i] = re[i] * sinTheta + im[i] * cosTheta;\n    // calculate angles i+1 from i\n    let newCosTheta = cosTheta - (alpha * cosTheta + beta * sinTheta);\n    let newSinTheta = sinTheta - (alpha * sinTheta - beta * cosTheta);\n    cosTheta = newCosTheta;\n    sinTheta = newSinTheta;\n  }\n\n  return { re: newRe, im: newIm };\n}\n","import { xNoiseSanPlot } from '../x/xNoiseSanPlot';\n\nimport { reimAbsolute } from './reimAbsolute';\nimport { reimPhaseCorrection } from './reimPhaseCorrection';\n/**\n * Implementation of the algorithm for automatic phase correction: A robust, general automatic phase\n * correction algorithm for high-resolution NMR data. 10.1002/mrc.4586\n * @param {object} data - { re, im } real and imaginary data.\n * @param {object} options -\n * @param {Number} options.minRegSize - min number of points to auto phase a region.\n * @param {Number} options.maxDistanceToJoin - max distance between regions (in number of points) to join two regions\n * @param {boolean} options.magnitudeMode - if true it uses magnitude spectrum.boolean\n * @param {Number} options.factorNoise - scale the cutoff like factorStd * noiseLevel.\n */\n\nconst defaultOptions = {\n  minRegSize: 30,\n  maxDistanceToJoin: 256,\n  magnitudeMode: true,\n  factorNoise: 3,\n};\n\nexport function reimAutoPhaseCorrection(data, options = {}) {\n  const { re, im } = data;\n  const length = re.length;\n\n  options = Object.assign(defaultOptions, options);\n\n  const { magnitudeMode, minRegSize } = options;\n\n  let magnitudeData = magnitudeMode ? reimAbsolute(data) : re;\n\n  let ds = holoborodko(magnitudeData);\n  let peaksDs = robustBaseLineRegionsDetection(ds, options);\n  let peaksSp = robustBaseLineRegionsDetection(magnitudeData, options);\n  let finalPeaks = new Array(length);\n  for (let i = 0; i < length; i++) {\n    finalPeaks[i] = peaksSp[i] & peaksDs[i];\n  }\n\n  // Once the regions are detected, we auto phase each of them separately.\n  // TODO: This part can be put inside a function\n  let i = -1;\n  let x0 = 0;\n  let res = [];\n  while (i < length) {\n    //phase first region\n    let reTmp = [];\n    let imTmp = [];\n\n    //Look for the first 1 in the array\n    while (!finalPeaks[++i] && i < length) {\n      //TODO: Add some extra points(0.1 ppm) at rigth and left sides of the region.\n      x0 = i;\n    }\n    for (; finalPeaks[i] && i < length; i++) {\n      reTmp.push(re[i]);\n      imTmp.push(im[i]);\n      i++;\n    }\n\n    if (reTmp.length > minRegSize) {\n      res.push(autoPhaseRegion(reTmp, imTmp, x0));\n    }\n  }\n  // TODO: Still some corrections needed. In the paper they remove the outlayers interatively\n  // until they can perform a regression witout bad points. Can someone help here?\n  let [ph1, ph0] = weightedLinearRegression(\n    res.map((r) => r.x0 / length),\n    res.map((r) => r.ph0),\n    res.map((r) => r.area / 1e11),\n  );\n  let phased = reimPhaseCorrection(\n    { re, im },\n    (ph0 * Math.PI) / 180,\n    (ph1 * Math.PI) / 180,\n  );\n  return { data: phased, ph0, ph1 };\n}\n\nfunction autoPhaseRegion(re, im, x0) {\n  let start = -180;\n  let stop = 180;\n  let nSteps = 6;\n  let maxSteps = 5;\n\n  let bestAng = 0;\n  let minArea = Number.MAX_SAFE_INTEGER;\n  while (maxSteps > 0) {\n    let dAng = (stop - start) / (nSteps + 1);\n    for (let i = start; i <= stop; i += dAng) {\n      let phased = reimPhaseCorrection({ re, im }, toRadians(i), 0);\n      let negArea = getNegArea(phased.re);\n      if (negArea < minArea) {\n        [minArea, bestAng] = [negArea, i];\n      }\n    }\n    start = bestAng - dAng;\n    stop = bestAng + dAng;\n    maxSteps--;\n  }\n\n  // Calculate the area for the best angle\n  let phased = reimPhaseCorrection({ re, im }, toRadians(bestAng), 0);\n  let area = 0;\n  let sumX = 0;\n  for (let j = 0; j < re.length; j++) {\n    area += phased.re[j];\n    sumX += phased.re[j] * (j + x0);\n  }\n\n  return { ph0: bestAng, area, x0: sumX / area };\n}\n\nfunction holoborodko(s) {\n  let dk = new Float64Array(s.length);\n  for (let i = 5; i < s.length - 5; i++) {\n    dk[i] =\n      (42 * (s[i + 1] - s[i - 1]) +\n        48 * (s[i + 2] - s[i - 2]) +\n        27 * (s[i + 3] + s[i - 3]) +\n        8 * (s[i + 4] - s[i - 4]) +\n        s[i + 5] -\n        s[i - 5]) /\n      512;\n  }\n  //Fill the borders\n  for (let i = 0; i < 5; i++) {\n    dk[i] = dk[5];\n    dk[s.length - i - 1] = dk[s.length - 6];\n  }\n\n  return dk;\n}\n\nfunction robustBaseLineRegionsDetection(s, options) {\n  const { maxDistanceToJoin, magnitudeMode, factorNoise } = options;\n\n  let mask = new Array(s.length);\n  for (let i = 0; i < s.length; i++) {\n    mask[i] = false;\n  }\n\n  let change = true;\n  while (change) {\n    let noiseLevel = xNoiseSanPlot(s, { magnitudeMode });\n    let cutOff = factorNoise * noiseLevel.positive;\n    change = false;\n    for (let i = 0; i < s.length; i++) {\n      if (Math.abs(s[i]) > cutOff && !mask[i]) {\n        change = true;\n        mask[i] = true;\n      }\n    }\n  }\n  // Clean up mask by merging peaks blocks, separated by just a few points(4??).\n  let count = 0;\n  let prev = 0;\n  for (let i = 0; i < s.length; i++) {\n    if (!mask[i]) {\n      count++;\n    } else {\n      if (count < maxDistanceToJoin) {\n        for (let j = 0; j <= count; j++) {\n          mask[prev + j] = true;\n        }\n      }\n      while (mask[++i] && i < s.length);\n      prev = i;\n      count = 0;\n    }\n  }\n\n  return mask;\n}\n\nfunction weightedLinearRegression(x, y, w) {\n  let sxtw = 0;\n  let swx = 0;\n  let sw = 0;\n  let sxtwy = 0;\n  let swy = 0;\n  for (let i = 0; i < x.length; i++) {\n    sxtw += x[i] * x[i] * w[i];\n    swx += x[i] * w[i];\n    sw += w[i];\n    sxtwy += x[i] * w[i] * y[i];\n    swy += w[i] * y[i];\n  }\n\n  /* Just to know what is the matrix system that we solve\n   let Mx = [[sxtw, swx], [swx, sw]];\n   let My = [[sxtwy], [swy]];\n  */\n\n  //Mx inverse\n  let detMx = sxtw * sw - swx * swx;\n  let inMx = [\n    [sw / detMx, -swx / detMx],\n    [-swx / detMx, sxtw / detMx],\n  ];\n\n  return [\n    inMx[0][0] * sxtwy + inMx[0][1] * swy,\n    inMx[1][0] * sxtwy + inMx[1][1] * swy,\n  ];\n}\n\nconst toRadians = (degree) => (degree * Math.PI) / 180;\n\nconst getNegArea = (data) => {\n  let area = 0;\n  for (let i = 0; i < data.length; i++) {\n    if (data[i] < 0) area -= data[i];\n  }\n  return area;\n};\n","'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","import FFT from 'fft.js';\n\nimport { xRotate } from '../x/xRotate';\n\nexport function reimFFT(data, options = {}) {\n  const { inverse = false, applyZeroShift = false } = options;\n\n  let { re, im } = data;\n  const size = re.length;\n  const csize = size << 1;\n\n  let complexArray = new Float64Array(csize);\n  for (let i = 0; i < csize; i += 2) {\n    complexArray[i] = re[i >>> 1];\n    complexArray[i + 1] = im[i >>> 1];\n  }\n\n  let fft = new FFT(size);\n  let output = new Float64Array(csize);\n  if (inverse) {\n    if (applyZeroShift) complexArray = zeroShift(complexArray, true);\n    fft.inverseTransform(output, complexArray);\n  } else {\n    fft.transform(output, complexArray);\n    if (applyZeroShift) output = zeroShift(output);\n  }\n\n  let newRe = new Float64Array(size);\n  let newIm = new Float64Array(size);\n  for (let i = 0; i < csize; i += 2) {\n    newRe[i >>> 1] = output[i];\n    newIm[i >>> 1] = output[i + 1];\n  }\n\n  return { re: newRe, im: newIm };\n}\n\nconst zeroShift = (data, inverse) => {\n  let middle = inverse\n    ? Math.ceil(data.length / 2)\n    : Math.floor(data.length / 2);\n  return xRotate(data, middle);\n};\n","/**\n * This function make a zero filling to re and im part.\n * @param {object} data Object of kind {x:[], re:[], im:[]}.\n * @param {number} totalLength - final number of points\n * @return {SD}\n */\nexport function xreimZeroFilling(data, totalLength) {\n  let length = data.x.length;\n  if (totalLength === 0 || length === totalLength) return data;\n\n  if (length > totalLength) {\n    return {\n      x: data.x.slice(0, totalLength),\n      re: data.re.slice(0, totalLength),\n      im: data.im.slice(0, totalLength),\n    };\n  }\n\n  const x = data.x;\n  const re = data.re;\n  const im = data.im;\n\n  const newX = new Float64Array(totalLength);\n  const newRE = new Float64Array(totalLength);\n  const newIM = new Float64Array(totalLength);\n\n  for (let i = 0; i < length; i++) {\n    newX[i] = x[i];\n    newRE[i] = re[i];\n    newIM[i] = im[i];\n  }\n  const deltaX = (x[x.length - 1] - x[0]) / (length - 1);\n  for (let i = length; i < totalLength; i++) {\n    newX[i] = newX[i - 1] + deltaX;\n  }\n\n  return {\n    x: newX,\n    re: newRE,\n    im: newIM,\n  };\n}\n","/**\n * Sort object of array, x has to be monotone.\n * @param {object} data Object of kind {x:[], re:[], im:[]}.\n * @return {SD}\n */\n\nexport function xreimSortX(data) {\n  const { x, re, im } = data;\n\n  if (x.length !== re.length || x.length !== im.length) {\n    throw TypeError('xreimSortX: length of x, re and im must be identical');\n  }\n\n  if (x.length < 2 || x[0] < x[1]) return data;\n\n  return {\n    x: x.slice(0).reverse(),\n    re: re.slice(0).reverse(),\n    im: im.slice(0).reverse(),\n  };\n}\n","/**\n * xyAligns data of two spectra by verifying wether x values are in a certain range (`delta`).\n * The two spectra should not have two consecutive x values which difference is\n * smaller than `delta` to achieve good results!\n * @param {DataXY} spectrum1 First spectrum data\n * @param {DataXY} spectrum2 Second spectrum data\n * @param {object} options\n * @param {number} [options.delta = 1] The range in which the two x values of the spectra must be to be placed on the same line\n * @param {boolean} [options.common = true] If `true`, only the data considered as common to both spectra is kept. If `false`, the data y arrays are completed with zeroes where no common values are found\n * @param {string} [options.x = 'x1'] Defines what x values should be kept (`x1` : spectrum 1 x values, `x2` spectrum 2 x values, `weighted`: weighted average of both spectra x values)\n * @param {function} [options.weightFunction = undefined] Function that allows to weight `delta` depending on the X values of the spectrum\n */\nexport function xyAlign(spectrum1, spectrum2, options = {}) {\n  const {\n    delta = 1,\n    common = true,\n    x = 'x1',\n    weightFunction = undefined,\n  } = options;\n\n  let result = {\n    x: [],\n    y1: [],\n    y2: [],\n  };\n\n  let i = 0;\n  let j = 0;\n\n  let length1 = spectrum1.x.length;\n  let length2 = spectrum2.x.length;\n\n  while (i < spectrum1.x.length && j < spectrum2.x.length) {\n    let maxDiff = 0;\n\n    if (typeof weightFunction === 'function') {\n      let mean = (spectrum1.x[i] + spectrum2.x[j]) / 2; // is this a good thing to do?\n      maxDiff = weightFunction(mean);\n    } else {\n      maxDiff = delta;\n    }\n\n    let difference = spectrum1.x[i] - spectrum2.x[j];\n\n    if (Math.abs(difference) > maxDiff) {\n      if (difference > 0) {\n        if (!common) {\n          result.x.push(spectrum2.x[j]);\n          result.y1.push(0);\n          result.y2.push(spectrum2.y[j]);\n          if (j === length2 - 1) {\n            while (i < spectrum1.x.length) {\n              result.x.push(spectrum1.x[i]);\n              result.y1.push(spectrum1.y[i]);\n              result.y2.push(0);\n              i++;\n            }\n          }\n        }\n        // console.log({ i, j }, result);\n        j++;\n      } else {\n        if (!common) {\n          result.x.push(spectrum1.x[i]);\n          result.y1.push(spectrum1.y[i]);\n          result.y2.push(0);\n          if (i === length1 - 1) {\n            while (j < spectrum2.x.length) {\n              result.x.push(spectrum2.x[j]);\n              result.y1.push(0);\n              result.y2.push(spectrum2.y[j]);\n              j++;\n            }\n          }\n        }\n        // console.log({ i, j }, result);\n        i++;\n      }\n    } else {\n      let weightedX =\n        (spectrum1.x[i] * spectrum1.y[i] + spectrum2.x[j] * spectrum2.y[j]) /\n        (spectrum1.y[i] + spectrum2.y[j]);\n\n      switch (x) {\n        case 'x1':\n          result.x.push(spectrum1.x[i]);\n          break;\n        case 'x2':\n          result.x.push(spectrum2.x[j]);\n          break;\n        case 'weighted':\n          result.x.push(weightedX);\n          break;\n        default:\n          throw new Error(`Error: Unknown x option value: ${x}`);\n      }\n\n      result.y1.push(spectrum1.y[i]);\n      result.y2.push(spectrum2.y[j]);\n\n      // console.log({ i, j }, result);\n\n      i++;\n      j++;\n    }\n  }\n  return result;\n}\n","import isAnyArray from 'is-any-array';\n\n/**\n * Throw an error in no an object of x,y arrays\n * @param {DataXY} [data={}]\n */\nexport function xyCheck(data = {}) {\n  if (!isAnyArray(data.x) || !isAnyArray(data.y)) {\n    throw new Error('Points must be an object of x and y arrays');\n  }\n  if (data.x.length !== data.y.length) {\n    throw new Error('The x and y arrays mush have the same length');\n  }\n}\n","/**\n * Normalize an array of zones:\n * - ensure than from < to\n * - merge overlapping zones\n * @param {Array<Zone>} [zones=[]]\n * @param {object} [options={}]\n * @param {number} [options.from=Number.MIN_VALUE]\n * @param {number} [options.to=Number.MAX_VALUE]\n */\n\nexport function zonesNormalize(zones = [], options = {}) {\n  if (zones.length === 0) return [];\n  zones = JSON.parse(JSON.stringify(zones)).map((zone) =>\n    zone.from > zone.to ? { from: zone.to, to: zone.from } : zone,\n  );\n  let {\n    from = Number.NEGATIVE_INFINITY,\n    to = Number.POSITIVE_INFINITY,\n  } = options;\n  if (from > to) {\n    [from, to] = [to, from];\n  }\n\n  zones = zones.sort((a, b) => {\n    if (a.from !== b.from) return a.from - b.from;\n    return a.to - b.to;\n  });\n\n  zones.forEach((zone) => {\n    if (from > zone.from) zone.from = from;\n    if (to < zone.to) zone.to = to;\n  });\n\n  zones = zones.filter((zone) => zone.from <= zone.to);\n  if (zones.length === 0) return [];\n\n  let currentZone = zones[0];\n  let result = [currentZone];\n  for (let zone of zones) {\n    if (zone.from <= currentZone.to) {\n      currentZone.to = zone.to;\n    } else {\n      currentZone = zone;\n      result.push(currentZone);\n    }\n  }\n  return result;\n}\n","import { zonesNormalize } from '../zones/zonesNormalize';\n\nimport { xyCheck } from './xyCheck';\n\n/**\n * xyExtract zones from a XY data\n * @param {DataXY} [data={}] - Object that contains property x (an ordered increasing array) and y (an array)\n * @param {object} [options={}]\n * @param {Array} [options.zones=[]]\n * @return {Array} Array of points\n */\n\nexport function xyExtract(data = {}, options = {}) {\n  xyCheck(data);\n  const { x, y } = data;\n  let { zones } = options;\n\n  zones = zonesNormalize(zones);\n\n  if (!Array.isArray(zones) || zones.length === 0) return data;\n\n  let newX = [];\n  let newY = [];\n\n  let currentZone = zones[0];\n  let position = 0;\n  loop: for (let i = 0; i < x.length; i++) {\n    while (currentZone.to < x[i]) {\n      position++;\n      currentZone = zones[position];\n      if (!currentZone) {\n        i = x.length;\n        break loop;\n      }\n    }\n    if (x[i] >= currentZone.from) {\n      newX.push(x[i]);\n      newY.push(y[i]);\n    }\n  }\n  return { x: newX, y: newY };\n}\n","import { xyCheck } from './xyCheck';\n\n/**\n * Returns the numberMaxPoints points with the bigger y.\n * @param {DataXY} data - Object that contains property x (an ordered increasing array) and y (an array)\n * @param {number} numberMaxPoints Number of points to keep\n * @returns {object} The points filtered to keep the `numberMaxPoints` most intense points of the input\n */\nexport function xyGetNMaxY(data, numberMaxPoints) {\n  xyCheck(data);\n  if (data.x.length <= numberMaxPoints) {\n    return data;\n  } else {\n    let newX = new Array(numberMaxPoints);\n    let newY = new Array(numberMaxPoints);\n\n    // slice() is used to make a copy of the array, because sort() is IPM\n    let threshold = data.y.slice().sort((a, b) => b - a)[numberMaxPoints - 1];\n\n    let index = 0;\n    for (let i = 0; i < data.x.length; i++) {\n      if (data.y[i] >= threshold) {\n        newX[index] = data.x[i];\n        newY[index] = data.y[i];\n        index++;\n      }\n      if (index === numberMaxPoints) {\n        return { x: newX, y: newY };\n      }\n    }\n  }\n}\n","/**\n * Order object of array, x has to be monotone.\n * Ensure x is growing\n * @param {DataXY} data Object of kind {x:[], y:[]}.\n * @return {SD}\n */\n\nexport function xyGrowingX(data) {\n  const { x, y } = data;\n\n  if (x.length !== y.length) {\n    throw TypeError('sortX: length of x and y must be identical');\n  }\n\n  if (x.length < 2 || x[0] < x[1]) return data;\n\n  return {\n    x: x.slice(0).reverse(),\n    y: y.slice(0).reverse(),\n  };\n}\n","import { xGetFromToIndex } from '../x/xGetFromToIndex';\n\nimport { xyCheck } from './xyCheck';\n/**\n * Generate a X / Y of the xyIntegral\n * @param {DataXY} [data={}] - Object that contains property x (an ordered increasing array) and y (an array)\n * @param {object} [options={}]\n * @param {number} [options.from] - First value for xyIntegration in the X scale\n * @param {number} [options.fromIndex=0] - First point for xyIntegration\n * @param {number} [options.to] - Last value for xyIntegration in the X scale\n * @param {number} [options.toIndex=x.length-1] - Last point for xyIntegration\n * @param {boolean} [options.reverse=false] - Integrate from the larger value to the smallest value\n * @return {{x:[],y:[]}} An object with the xyIntegration function\n */\n\nexport function xyIntegral(data = {}, options = {}) {\n  const { reverse = false } = options;\n  xyCheck(data);\n  const { x, y } = data;\n  if (x.length < 2) return 0;\n\n  const { fromIndex, toIndex } = xGetFromToIndex(x, options);\n\n  let xyIntegration = 0;\n  let currentxyIntegral;\n  if (reverse) {\n    currentxyIntegral = { x: [x[toIndex]], y: [0] };\n    for (let i = toIndex; i > fromIndex; i--) {\n      xyIntegration += ((x[i] - x[i - 1]) * (y[i - 1] + y[i])) / 2;\n      currentxyIntegral.x.push(x[i - 1]);\n      currentxyIntegral.y.push(xyIntegration);\n    }\n    currentxyIntegral.x.reverse();\n    currentxyIntegral.y.reverse();\n  } else {\n    currentxyIntegral = { x: [x[fromIndex]], y: [0] };\n    for (let i = fromIndex; i < toIndex; i++) {\n      xyIntegration += ((x[i + 1] - x[i]) * (y[i + 1] + y[i])) / 2;\n      currentxyIntegral.x.push(x[i + 1]);\n      currentxyIntegral.y.push(xyIntegration);\n    }\n  }\n\n  return currentxyIntegral;\n}\n","import { xGetFromToIndex } from '../x/xGetFromToIndex';\n\nimport { xyCheck } from './xyCheck';\n\n/**\n * In place modification of the 2 arrays to make X unique and sum the Y if X has the same value\n * @param {DataXY} [data={}] - Object that contains property x (an ordered increasing array) and y (an array)\n * @param {object} [options={}]\n * @param {number} [options.from] - First value for xyIntegration in the X scale\n * @param {number} [options.fromIndex=0] - First point for xyIntegration\n * @param {number} [options.to] - Last value for xyIntegration in the X scale\n * @param {number} [options.toIndex=x.length-1] - Last point for xyIntegration\n * @return {number} xyIntegration value on the specified range\n */\n\nexport function xyIntegration(data = {}, options = {}) {\n  xyCheck(data);\n  const { x, y } = data;\n  if (x.length < 2) return 0;\n  const { fromIndex, toIndex } = xGetFromToIndex(x, options);\n  let currentxyIntegration = 0;\n  for (let i = fromIndex; i < toIndex; i++) {\n    currentxyIntegration += ((x[i + 1] - x[i]) * (y[i + 1] + y[i])) / 2;\n  }\n\n  return currentxyIntegration;\n}\n","import { xFindClosestIndex } from '../x/xFindClosestIndex';\n\nimport { xyCheck } from './xyCheck';\n\n/**\n * Find the closest maximum going up hill\n * @param {DataXY} [data={}] - Object that contains property x (an ordered increasing array) and y (an array)\n * @param {object} [options={}]\n * @param {number} [options.target]\n * @param {number} [options.targetIndex=0]\n * @return {{x,y,xIndex}} An object with the x/y value\n */\n\nexport function xyMaxClosestYPoint(data, options = {}) {\n  xyCheck(data);\n  const { x, y } = data;\n\n  let { target, targetIndex } = options;\n\n  if (targetIndex === undefined) {\n    if (target !== undefined) {\n      targetIndex = xFindClosestIndex(x, target);\n    } else {\n      targetIndex = 0;\n    }\n  }\n\n  let previousIndex = Number.MIN_SAFE_INTEGER;\n  let currentIndex = targetIndex;\n\n  let xyMaxY = y[targetIndex];\n\n  while (currentIndex !== previousIndex) {\n    previousIndex = currentIndex;\n    if (currentIndex > 0 && y[currentIndex - 1] > xyMaxY) {\n      currentIndex--;\n    } else if (currentIndex < x.length - 1 && y[currentIndex + 1] > xyMaxY) {\n      currentIndex++;\n    }\n    xyMaxY = y[currentIndex];\n  }\n  return {\n    x: x[currentIndex],\n    y: y[currentIndex],\n    index: currentIndex,\n  };\n}\n","import { xGetFromToIndex } from '../x/xGetFromToIndex';\n\nimport { xyCheck } from './xyCheck';\n/**\n * Finds the max value in a zone\n * @param {DataXY} [data={}] - Object that contains property x (an ordered increasing array) and y (an array)\n * @param {object} [options={}]\n * @param {number} [options.from] - First value for xyIntegration in the X scale\n * @param {number} [options.fromIndex=0] - First point for xyIntegration\n * @param {number} [options.to] - Last value for xyIntegration in the X scale\n * @param {number} [options.toIndex=x.length-1] - Last point for xyIntegration\n * @return {number} Max y on the specified range\n */\n\nexport function xyMaxY(data = {}, options = {}) {\n  xyCheck(data);\n  const { x, y } = data;\n  if (x.length < 2) return 0;\n\n  const { fromIndex, toIndex } = xGetFromToIndex(x, options);\n\n  let currentxyMaxY = y[fromIndex];\n  for (let i = fromIndex; i <= toIndex; i++) {\n    if (y[i] > currentxyMaxY) currentxyMaxY = y[i];\n  }\n\n  return currentxyMaxY;\n}\n","import { xGetFromToIndex } from '../x/xGetFromToIndex';\n\nimport { xyCheck } from './xyCheck';\n/**\n * Finds the max y value in a range and return a {x,y} point\n * @param {DataXY} [data={}] - Object that contains property x (an ordered increasing array) and y (an array)\n * @param {object} [options={}]\n * @param {number} [options.from] - First value for xyIntegration in the X scale\n * @param {number} [options.fromIndex=0] - First point for xyIntegration\n * @param {number} [options.to] - Last value for xyIntegration in the X scale\n * @param {number} [options.toIndex=x.length-1] - Last point for xyIntegration\n * @return {object}\n */\n\nexport function xyMaxYPoint(data = {}, options = {}) {\n  xyCheck(data);\n  const { x, y } = data;\n  if (x.length < 2) return 0;\n\n  const { fromIndex, toIndex } = xGetFromToIndex(x, options);\n\n  let current = { x: x[fromIndex], y: y[fromIndex], index: fromIndex };\n  for (let i = fromIndex; i <= toIndex; i++) {\n    if (y[i] > current.y) current = { x: x[i], y: y[i], index: i };\n  }\n\n  return current;\n}\n","import { xyCheck } from './xyCheck';\n/**\n * Finds all the max values\n * If the values are equal the middle\n * of the equal part will be the position of the signal!\n *\n * @param {DataXY} [data={}] - Object that contains property x (an ordered increasing array) and y (an array)\n * @return {Array} Array of points\n */\n\nexport function xyMaximaY(data = {}) {\n  xyCheck(data);\n  const { x, y } = data;\n  if (x.length < 3) return [];\n  let maxima = [];\n  let startEqualIndex = -1;\n  for (let i = 1; i < x.length - 1; i++) {\n    if (y[i - 1] < y[i] && y[i + 1] < y[i]) {\n      maxima.push({ x: x[i], y: y[i], index: i });\n    } else if (y[i - 1] < y[i] && y[i + 1] === y[i]) {\n      startEqualIndex = i;\n    } else if (y[i - 1] === y[i] && y[i + 1] < y[i]) {\n      let index = ((i + startEqualIndex) / 2) >> 0;\n      maxima.push({ x: x[index], y: y[index], index });\n    }\n  }\n  return maxima;\n}\n","import { xFindClosestIndex } from '../x/xFindClosestIndex';\n\nimport { xyCheck } from './xyCheck';\n\n/**\n * Find the closest minimum going down hill\n * @param {DataXY} [data={}] - Object that contains property x (an ordered increasing array) and y (an array)\n * @param {object} [options={}]\n * @param {number} [options.target]\n * @param {number} [options.targetIndex=0]\n * @return {{x,y,xIndex}} An object with the x/y value\n */\n\nexport function xyMinClosestYPoint(data, options = {}) {\n  xyCheck(data);\n  const { x, y } = data;\n\n  let { target, targetIndex } = options;\n\n  if (targetIndex === undefined) {\n    if (target !== undefined) {\n      targetIndex = xFindClosestIndex(x, target);\n    } else {\n      targetIndex = 0;\n    }\n  }\n\n  let previousIndex = Number.MIN_SAFE_INTEGER;\n  let currentIndex = targetIndex;\n\n  let minY = y[targetIndex];\n\n  while (currentIndex !== previousIndex) {\n    previousIndex = currentIndex;\n    if (currentIndex > 0 && y[currentIndex - 1] < minY) {\n      currentIndex--;\n    } else if (currentIndex < x.length - 1 && y[currentIndex + 1] < minY) {\n      currentIndex++;\n    }\n    minY = y[currentIndex];\n  }\n  return {\n    x: x[currentIndex],\n    y: y[currentIndex],\n    index: currentIndex,\n  };\n}\n","import { xGetFromToIndex } from '../x/xGetFromToIndex';\n\nimport { xyCheck } from './xyCheck';\n/**\n * Finds the max y value in a range and return a {x,y} point\n * @param {DataXY} [data={}] - Object that contains property x (an ordered increasing array) and y (an array)\n * @param {object} [options={}]\n * @param {number} [options.from] - First value for xyIntegration in the X scale\n * @param {number} [options.fromIndex=0] - First point for xyIntegration\n * @param {number} [options.to] - Last value for xyIntegration in the X scale\n * @param {number} [options.toIndex=x.length-1] - Last point for xyIntegration\n * @return {object}\n */\n\nexport function xyMinYPoint(data = {}, options = {}) {\n  xyCheck(data);\n  const { x, y } = data;\n  if (x.length < 2) return 0;\n\n  const { fromIndex, toIndex } = xGetFromToIndex(x, options);\n\n  let current = { x: x[fromIndex], y: y[fromIndex], index: fromIndex };\n  for (let i = fromIndex; i <= toIndex; i++) {\n    if (y[i] < current.y) current = { x: x[i], y: y[i], index: i };\n  }\n\n  return current;\n}\n","import { xyCheck } from './xyCheck';\n/**\n * Finds all the min values\n * If the values are equal the middle\n * of the equal part will be the position of the signal!\n *\n * @param {DataXY} [data={}] - Object that contains property x (an ordered increasing array) and y (an array)\n * @return {Array} Array of points\n */\n\nexport function xyMinimaY(data = {}) {\n  xyCheck(data);\n  const { x, y } = data;\n  if (x.length < 3) return [];\n  let maxima = [];\n  let startEqualIndex = -1;\n  for (let i = 1; i < x.length - 1; i++) {\n    if (y[i - 1] > y[i] && y[i + 1] > y[i]) {\n      maxima.push({ x: x[i], y: y[i], index: i });\n    } else if (y[i - 1] > y[i] && y[i + 1] === y[i]) {\n      startEqualIndex = i;\n    } else if (y[i - 1] === y[i] && y[i + 1] > y[i]) {\n      let index = ((i + startEqualIndex) / 2) >> 0;\n      maxima.push({ x: x[index], y: y[index], index });\n    }\n  }\n  return maxima;\n}\n","import { xFindClosestIndex } from '../x/xFindClosestIndex';\n\nimport { xyCheck } from './xyCheck';\n\n/**\n * Returns an information about a signal\n *\n * We expect ordered data and equidistant X axis\n * You can use the method helper if required:\n * ML.ArrayPoints.uniqueX\n * ML.ArrayPoints.sortX\n * ML.ArrayPoints.equallySpaced\n *\n * @param {object} [data={}] - Object that contains property x (an ordered increasing array) and y (an array)\n * @param {object} [options={}]\n * @param {number} [options.target]\n * @param {number} [options.targetIndex]\n * @return {object} Information about signal\n */\n\nexport function xyPeakInfo(data = {}, options = {}) {\n  xyCheck(data);\n  const { x, y } = data;\n  if (x.length < 3) return undefined;\n  let { targetIndex, target } = options;\n  if (targetIndex === undefined) {\n    if (target !== undefined) {\n      targetIndex = xFindClosestIndex(x, target);\n    }\n  }\n\n  if (targetIndex === undefined) {\n    throw new Error('xyPeakInfo: need to specify target or targetIndex');\n  }\n\n  let i = targetIndex;\n  let currentDiff = y[i] - y[i + 1];\n\n  let multiplier = currentDiff < 0 ? -1 : 1;\n  currentDiff *= multiplier;\n  while (i < x.length - 1) {\n    i++;\n    let newDiff = (y[i] - y[i + 1]) * multiplier;\n    if (newDiff < currentDiff) break;\n    currentDiff = newDiff;\n  }\n  let after = { x: x[i], y: y[i] };\n\n  i = targetIndex;\n  currentDiff = (y[i] - y[i - 1]) * multiplier;\n  while (i > 1) {\n    i--;\n    let newDiff = (y[i] - y[i - 1]) * multiplier;\n    if (newDiff < currentDiff) break;\n    currentDiff = newDiff;\n  }\n  let before = { x: x[i], y: y[i] };\n\n  return {\n    inflectionBefore: before,\n    inflectionAfter: after,\n    extrema: { x: x[targetIndex], y: y[targetIndex] },\n    inflectionMiddle: {\n      x: (before.x + after.x) / 2,\n      y: (before.y + after.y) / 2,\n    },\n    width: Math.abs(before.x - after.x),\n  };\n}\n","import { xGetTargetIndex } from '../x/xGetTargetIndex';\n\nimport { xyCheck } from './xyCheck';\n/**\n * Find the closest minimum going down hill\n * @param {object} [data={}] - Object that contains property x (an ordered increasing array) and y (an array)\n * @param {object} [options={}]\n * @param {number} [options.target]\n * @param {number} [options.targetIndex=0]\n * @return {{x,y,xIndex}} An object with the x/y value\n */\n\nexport function xyRealMaxYPoint(data, options = {}) {\n  xyCheck(data);\n  const { x, y } = data;\n  const targetIndex = xGetTargetIndex(x, options);\n  // interpolation to a sin() function\n  if (\n    y[targetIndex - 1] > 0 &&\n    y[targetIndex + 1] > 0 &&\n    y[targetIndex] >= y[targetIndex - 1] &&\n    y[targetIndex] >= y[targetIndex + 1]\n  ) {\n    let alpha = 20 * Math.log10(y[targetIndex - 1]);\n    let beta = 20 * Math.log10(y[targetIndex]);\n    let gamma = 20 * Math.log10(y[targetIndex + 1]);\n    let p = (0.5 * (alpha - gamma)) / (alpha - 2 * beta + gamma);\n    return {\n      x: x[targetIndex] + (x[targetIndex] - x[targetIndex - 1]) * p,\n      y: y[targetIndex] - 0.25 * (y[targetIndex - 1] - y[targetIndex + 1]) * p,\n      index: targetIndex,\n    };\n  } else {\n    return {\n      x: x[targetIndex],\n      y: y[targetIndex],\n      index: targetIndex,\n    };\n  }\n}\n","import { xGetTargetIndex } from '../x/xGetTargetIndex';\n\nimport { xyCheck } from './xyCheck';\n\nexport function xyRealMinYPoint(data, options = {}) {\n  xyCheck(data);\n  const { x, y } = data;\n\n  const targetIndex = xGetTargetIndex(x, options);\n  // interpolation to a sin() function\n  if (\n    y[targetIndex - 1] < 0 &&\n    y[targetIndex + 1] < 0 &&\n    y[targetIndex] <= y[targetIndex - 1] &&\n    y[targetIndex] <= y[targetIndex + 1]\n  ) {\n    let alpha = 20 * Math.log10(-y[targetIndex - 1]);\n    let beta = 20 * Math.log10(-y[targetIndex]);\n    let gamma = 20 * Math.log10(-y[targetIndex + 1]);\n    let p = (0.5 * (alpha - gamma)) / (alpha - 2 * beta + gamma);\n    return {\n      x: x[targetIndex] + (x[targetIndex] - x[targetIndex - 1]) * p,\n      y: y[targetIndex] - 0.25 * (y[targetIndex - 1] - y[targetIndex + 1]) * p,\n      index: targetIndex,\n    };\n  } else {\n    return {\n      x: x[targetIndex],\n      y: y[targetIndex],\n      index: targetIndex,\n    };\n  }\n}\n","import { xFindClosestIndex } from '../x/xFindClosestIndex';\nimport { zonesNormalize } from '../zones/zonesNormalize';\n\nimport { xyCheck } from './xyCheck';\n/**\n * xyReduce the number of points while keeping visually the same noise. Practical to\n * display many spectra as SVG.\n * SHOULD NOT BE USED FOR DATA PROCESSING !!!\n * You should rather use ml-xy-equally-spaced to make further processing\n * @param {object} [data={}] - Object that contains property x (an ordered increasing array) and y (an array)\n * @param {object} [options={}]\n * @param {number} [options.from=x[0]]\n * @param {number} [options.to=x[x.length-1]]\n * @param {number} [options.nbPoints=4001] Number of points\n * @param {number} [options.zones=[]] Array of zones to keep (from/to object)\n * @param {number} [options.optimize=false] If optimize we may have less than nbPoints at the end\n */\n\nexport function xyReduce(data, options = {}) {\n  xyCheck(data);\n  const { x, y } = data;\n  let {\n    from = x[0],\n    to = x[x.length - 1],\n    nbPoints = 4001,\n    optimize = false,\n    zones = [],\n  } = options;\n\n  zones = zonesNormalize(zones, { from, to });\n  if (zones.length === 0) zones = [{ from, to }]; // we take everything\n\n  // for each zone we should know the first index, the last index and the number of points\n\n  let totalPoints = 0;\n  for (let zone of zones) {\n    zone.fromIndex = xFindClosestIndex(x, zone.from);\n    zone.toIndex = xFindClosestIndex(x, zone.to);\n    if (zone.fromIndex > 0 && x[zone.fromIndex] > zone.from) {\n      zone.fromIndex--;\n    }\n    if (zone.toIndex < x.length - 1 && x[zone.toIndex] < zone.to) {\n      zone.toIndex++;\n    }\n\n    zone.nbPoints = zone.toIndex - zone.fromIndex + 1;\n    totalPoints += zone.nbPoints;\n  }\n  // we calculate the number of points per zone that we should keep\n  if (totalPoints > nbPoints) {\n    // need to xyReduce number of points\n    let ratio = nbPoints / totalPoints;\n    let currentTotal = 0;\n    for (let i = 0; i < zones.length - 1; i++) {\n      const zone = zones[i];\n      zone.nbPoints = Math.round(zone.nbPoints * ratio);\n      currentTotal += zone.nbPoints;\n    }\n    zones[zones.length - 1].nbPoints = nbPoints - currentTotal;\n  } else {\n    let newX = new Float64Array(totalPoints);\n    let newY = new Float64Array(totalPoints);\n    let index = 0;\n    for (let zone of zones) {\n      for (let i = zone.fromIndex; i < zone.toIndex + 1; i++) {\n        newX[index] = x[i];\n        newY[index] = y[i];\n        index++;\n      }\n    }\n    return {\n      x: newX,\n      y: newY,\n    };\n  }\n\n  let newX = [];\n  let newY = [];\n  for (let zone of zones) {\n    if (!zone.nbPoints) continue;\n    appendFromTo(zone.fromIndex, zone.toIndex, zone.nbPoints);\n  }\n  return { x: newX, y: newY };\n\n  function appendFromTo(fromIndex, toIndex, zoneNbPoints) {\n    if (zoneNbPoints === 1) {\n      newX.push(x[Math.round((toIndex - fromIndex) / 2)]);\n      newY.push(y[Math.round((toIndex - fromIndex) / 2)]);\n      return;\n    }\n    if (zoneNbPoints === 2) {\n      newX.push(x[fromIndex], x[toIndex]);\n      newY.push(y[fromIndex], y[toIndex]);\n      return;\n    }\n    newX.push(x[fromIndex]);\n    newY.push(y[fromIndex]);\n    let minY = Number.MAX_VALUE;\n    let xyMaxY = Number.MIN_VALUE;\n    if (zoneNbPoints % 2 === 0) {\n      zoneNbPoints = zoneNbPoints / 2 + 1;\n    } else {\n      zoneNbPoints = (zoneNbPoints - 1) / 2 + 1;\n    }\n\n    // we will need to make some kind of min / max because there are too many points\n    // we will always keep the first point and the last point\n    let slot = (x[toIndex] - x[fromIndex]) / (zoneNbPoints - 1);\n    let currentX = x[fromIndex] + slot;\n    let first = true;\n    for (let i = fromIndex + 1; i <= toIndex; i++) {\n      if (first) {\n        minY = y[i];\n        xyMaxY = y[i];\n        first = false;\n      } else {\n        if (y[i] < minY) minY = y[i];\n        if (y[i] > xyMaxY) xyMaxY = y[i];\n      }\n      if (x[i] >= currentX || i === toIndex) {\n        if (optimize) {\n          if (minY > newY[newX.length - 1]) {\n            // we can skip the intermediate value\n          } else if (xyMaxY < newY[newX.length - 1]) {\n            // we can skip the intermediate value\n            xyMaxY = minY;\n          } else {\n            newX.push(currentX - slot / 2);\n            newY.push(minY);\n          }\n        } else {\n          newX.push(currentX - slot / 2);\n          newY.push(minY);\n        }\n\n        newX.push(currentX);\n        newY.push(xyMaxY);\n\n        currentX += slot;\n        first = true;\n      }\n    }\n  }\n}\n","import { xRolling } from '../x/xRolling';\nimport { xRollingAverage } from '../x/xRollingAverage';\n/**\n * This function calculates a rolling average\n *\n * This methods will recalculate the x values by using xRollingAverage\n * @param {ArrayPoints} [points] array of points {x,y}\n * @param {object} [options={}]\n * @param {number} [options.window=5] rolling window\n * @param {function} [fct] callback function that from an array returns a value.\n * @param {string} [options.padding.size=0] none, value, circular, duplicate\n * @param {string} [options.padding.algorithm='value'] none, value, circular, duplicate\n * @param {number} [options.padding.value=0] value to use for padding (if algorithm='value')\n * @return {Array<Number>}\n */\nexport function xyRolling(points, fct, options = {}) {\n  let { x, y } = points;\n\n  y = xRolling(y, fct, options);\n\n  if (x.length !== y.length) {\n    x = xRollingAverage(x, options);\n  }\n\n  return { x, y };\n}\n","import { xyCheck } from './xyCheck';\n\n/**\n *\n * @param {DataXY} [data] array of points {x,y}\n * @returns {DataPoints}\n */\nexport function xyToXYObject(data) {\n  xyCheck(data);\n  const { x, y } = data;\n  let objectArray = [];\n  for (let i = 0; i < x.length; i++) {\n    objectArray.push({ x: x[i], y: y[i] });\n  }\n  return objectArray;\n}\n","import { xyCheck } from './xyCheck';\n\n/**\n * Convert a DataXY to an array of array containing x,y\n * @param {DataXY} [data] array of points {x,y}\n * @returns {Array<Array<number,number>>}\n */\nexport function xyToXYArray(data) {\n  xyCheck(data);\n  const { x, y } = data;\n  let objectArray = [];\n  for (let i = 0; i < x.length; i++) {\n    objectArray.push([x[i], y[i]]);\n  }\n\n  return objectArray;\n}\n","export const GAUSSIAN_EXP_FACTOR = -4 * Math.LN2;\nexport const ROOT_PI_OVER_LN2 = Math.sqrt(Math.PI / Math.LN2);\nexport const ROOT_THREE = Math.sqrt(3);\nexport const ROOT_2LN2 = Math.sqrt(2 * Math.LN2);\nexport const ROOT_2LN2_MINUS_ONE = Math.sqrt(2 * Math.LN2) - 1;\n","// https://en.wikipedia.org/wiki/Error_function#Inverse_functions\n// This code yields to a good approximation\n\n// If needed a better implementation using polynomial can be found on https://en.wikipedia.org/wiki/Error_function#Inverse_functions\n\nexport default function erfinv(x) {\n  let a = 0.147;\n  if (x === 0) return 0;\n  let ln1MinusXSqrd = Math.log(1 - x * x);\n  let lnEtcBy2Plus2 = ln1MinusXSqrd / 2 + 2 / (Math.PI * a);\n  let firstSqrt = Math.sqrt(lnEtcBy2Plus2 ** 2 - ln1MinusXSqrd / a);\n  let secondSqrt = Math.sqrt(firstSqrt - lnEtcBy2Plus2);\n  return secondSqrt * (x > 0 ? 1 : -1);\n}\n","import {\n  ROOT_2LN2,\n  GAUSSIAN_EXP_FACTOR,\n  ROOT_PI_OVER_LN2,\n} from '../util/constants';\nimport erfinv from '../util/erfinv';\n\nexport class Gaussian {\n  /**\n   * @param {object} [options = {}]\n   * @param {number} [options.height=x] Define the height of the peak, by default area=1 (normalized)\n   * @param {number} [options.fwhm = 500] - Full Width at Half Maximum in the number of points in FWHM.\n   * @param {number} [options.sd] - Standard deviation, if it's defined options.fwhm will be ignored and the value will be computed sd * Math.sqrt(8 * Math.LN2);\n   */\n  constructor(options = {}) {\n    this.fwhm = options.sd\n      ? Gaussian.widthToFWHM(2 * options.sd)\n      : options.fwhm\n      ? options.fwhm\n      : 500;\n    this.height =\n      options.height === undefined\n        ? Math.sqrt(-GAUSSIAN_EXP_FACTOR / Math.PI) / this.fwhm\n        : options.height;\n  }\n  /**\n   * Calculate a gaussian shape\n   * @param {object} [options = {}]\n   * @param {number} [options.factor = 6] - Number of time to take fwhm to calculate length. Default covers 99.99 % of area.\n   * @param {number} [options.length = fwhm * factor + 1] - total number of points to calculate\n   * @return {Float64Array} y values\n   */\n\n  getData(options = {}) {\n    let { length, factor = this.getFactor() } = options;\n\n    if (!length) {\n      length = Math.min(Math.ceil(this.fwhm * factor), Math.pow(2, 25) - 1);\n      if (length % 2 === 0) length++;\n    }\n\n    const center = (length - 1) / 2;\n    const data = new Float64Array(length);\n    for (let i = 0; i <= center; i++) {\n      data[i] = this.fct(i - center) * this.height;\n      data[length - 1 - i] = data[i];\n    }\n\n    return data;\n  }\n\n  /**\n   * Return a parameterized function of a gaussian shape (see README for equation).\n   * @param {number} x - x value to calculate.\n   * @returns {number} - the y value of gaussian with the current parameters.\n   */\n  fct(x) {\n    return Gaussian.fct(x, this.fwhm);\n  }\n\n  /**\n   * Calculate the number of times FWHM allows to reach a specific area coverage\n   * @param {number} [area=0.9999]\n   * @returns {number}\n   */\n  getFactor(area = 0.9999) {\n    return Gaussian.getFactor(area);\n  }\n\n  /**\n   * Calculate the area of the shape.\n   * @returns {number} - returns the area.\n   */\n\n  getArea() {\n    return Gaussian.getArea(this.fwhm, { height: this.height });\n  }\n\n  /**\n   * Compute the value of Full Width at Half Maximum (FWHM) from the width between the inflection points.\n   * //https://mathworld.wolfram.com/GaussianFunction.html\n   * @param {number} width - Width between the inflection points\n   * @returns {number} fwhm\n   */\n  widthToFWHM(width) {\n    //https://mathworld.wolfram.com/GaussianFunction.html\n    return Gaussian.widthToFWHM(width);\n  }\n\n  /**\n   * Compute the value of width between the inflection points from Full Width at Half Maximum (FWHM).\n   * //https://mathworld.wolfram.com/GaussianFunction.html\n   * @param {number} fwhm - Full Width at Half Maximum.\n   * @returns {number} width\n   */\n  fwhmToWidth(fwhm = this.fwhm) {\n    return Gaussian.fwhmToWidth(fwhm);\n  }\n\n  /**\n   * set a new full width at half maximum\n   * @param {number} fwhm - full width at half maximum\n   */\n  setFWHM(fwhm) {\n    this.fwhm = fwhm;\n  }\n\n  /**\n   * set a new height\n   * @param {number} height - The maximal intensity of the shape.\n   */\n  setHeight(height) {\n    this.height = height;\n  }\n}\n\n/**\n * Return a parameterized function of a gaussian shape (see README for equation).\n * @param {number} x - x value to calculate.\n * @param {number} fwhm - full width half maximum\n * @returns {number} - the y value of gaussian with the current parameters.\n */\nGaussian.fct = function fct(x, fwhm = 500) {\n  return Math.exp(GAUSSIAN_EXP_FACTOR * Math.pow(x / fwhm, 2));\n};\n\n/**\n * Compute the value of Full Width at Half Maximum (FWHM) from the width between the inflection points.\n * //https://mathworld.wolfram.com/GaussianFunction.html\n * @param {number} width - Width between the inflection points\n * @returns {number} fwhm\n */\nGaussian.widthToFWHM = function widthToFWHM(width) {\n  return width * ROOT_2LN2;\n};\n\n/**\n * Compute the value of width between the inflection points from Full Width at Half Maximum (FWHM).\n * //https://mathworld.wolfram.com/GaussianFunction.html\n * @param {number} fwhm - Full Width at Half Maximum.\n * @returns {number} width\n */\nGaussian.fwhmToWidth = function fwhmToWidth(fwhm) {\n  return fwhm / ROOT_2LN2;\n};\n\n/**\n * Calculate the area of a specific shape.\n * @param {number} fwhm - Full width at half maximum.\n * @param {object} [options = {}] - options.\n * @param {number} [options.height = 1] - Maximum y value of the shape.\n * @returns {number} - returns the area of the specific shape and parameters.\n */\n\nGaussian.getArea = function getArea(fwhm, options = {}) {\n  let { height = 1 } = options;\n  return (height * ROOT_PI_OVER_LN2 * fwhm) / 2;\n};\n\n/**\n * Calculate the number of times FWHM allows to reach a specific area coverage.\n * @param {number} [area=0.9999]\n * @returns {number}\n */\nGaussian.getFactor = function getFactor(area = 0.9999) {\n  return Math.sqrt(2) * erfinv(area);\n};\n","import { ROOT_THREE } from '../util/constants';\n\nexport class Lorentzian {\n  /**\n   * @param {object} [options = {}]\n   * @param {number} [options.height=x] Define the height of the peak, by default area=1 (normalized)\n   * @param {number} [options.fwhm = 500] - Full Width at Half Maximum in the number of points in FWHM.\n   * @param {number} [options.sd] - Standard deviation, if it's defined options.fwhm will be ignored and the value will be computed sd * Math.sqrt(8 * Math.LN2);\n   */\n  constructor(options = {}) {\n    this.fwhm = options.fwhm === undefined ? 500 : options.fwhm;\n    this.height =\n      options.height === undefined ? 2 / Math.PI / this.fwhm : options.height;\n  }\n  /**\n   * Calculate a lorentzian shape\n   * @param {object} [options = {}]\n   * @param {number} [options.factor = Math.tan(Math.PI * (0.9999 - 0.5))] - Number of time to take fwhm to calculate length. Default covers 99.99 % of area.\n   * @param {number} [options.length = fwhm * factor + 1] - total number of points to calculate\n   * @return {Float64Array} y values\n   */\n  getData(options = {}) {\n    let { length, factor = this.getFactor() } = options;\n\n    if (!length) {\n      length = Math.min(Math.ceil(this.fwhm * factor), Math.pow(2, 25) - 1);\n      if (length % 2 === 0) length++;\n    }\n\n    const center = (length - 1) / 2;\n    const data = new Float64Array(length);\n    for (let i = 0; i <= center; i++) {\n      data[i] = this.fct(i - center) * this.height;\n      data[length - 1 - i] = data[i];\n    }\n    return data;\n  }\n\n  /**\n   * Return a parameterized function of a lorentzian shape (see README for equation).\n   * @param {number} x - x value to calculate.\n   * @returns {number} - the y value of lorentzian with the current parameters.\n   */\n  fct(x) {\n    return Lorentzian.fct(x, this.fwhm);\n  }\n\n  /**\n   * Calculate the number of times FWHM allows to reach a specific area coverage\n   * @param {number} [area=0.9999]\n   * @returns {number}\n   */\n  getFactor(area = 0.9999) {\n    return Lorentzian.getFactor(area);\n  }\n\n  /**\n   * Calculate the area of the shape.\n   * @returns {number} - returns the area.\n   */\n\n  getArea() {\n    return Lorentzian.getArea(this.fwhm, { height: this.height });\n  }\n\n  /**\n   * Compute the value of width between the inflection points of a specific shape from Full Width at Half Maximum (FWHM).\n   * //https://mathworld.wolfram.com/LorentzianFunction.html\n   * @param {number} [fwhm] - Full Width at Half Maximum.\n   * @returns {number} width between the inflection points\n   */\n  fwhmToWidth(fwhm = this.fwhm) {\n    return Lorentzian.fwhmToWidth(fwhm);\n  }\n\n  /**\n   * Compute the value of Full Width at Half Maximum (FWHM) of a specific shape from the width between the inflection points.\n   * //https://mathworld.wolfram.com/LorentzianFunction.html\n   * @param {number} [width] Width between the inflection points\n   * @returns {number} fwhm\n   */\n  widthToFWHM(width) {\n    return Lorentzian.widthToFWHM(width);\n  }\n  /**\n   * set a new full width at half maximum\n   * @param {number} fwhm - full width at half maximum\n   */\n  setFWHM(fwhm) {\n    this.fwhm = fwhm;\n  }\n\n  /**\n   * set a new height\n   * @param {number} height - The maximal intensity of the shape.\n   */\n  setHeight(height) {\n    this.height = height;\n  }\n}\n\n/**\n * Return a parameterized function of a gaussian shape (see README for equation).\n * @param {number} x - x value to calculate.\n * @param {number} fwhm - full width half maximum\n * @returns {number} - the y value of gaussian with the current parameters.\n */\nLorentzian.fct = function fct(x, fwhm) {\n  const squareFWHM = fwhm * fwhm;\n  return squareFWHM / (4 * Math.pow(x, 2) + squareFWHM);\n};\n\n/**\n * Compute the value of width between the inflection points of a specific shape from Full Width at Half Maximum (FWHM).\n * //https://mathworld.wolfram.com/LorentzianFunction.html\n * @param {number} [fwhm] - Full Width at Half Maximum.\n * @returns {number} width between the inflection points\n */\nLorentzian.fwhmToWidth = function fwhmToWidth(fwhm) {\n  return fwhm / ROOT_THREE;\n};\n\n/**\n * Compute the value of Full Width at Half Maximum (FWHM) of a specific shape from the width between the inflection points.\n * //https://mathworld.wolfram.com/LorentzianFunction.html\n * @param {number} [width] Width between the inflection points\n * @returns {number} fwhm\n */\nLorentzian.widthToFWHM = function widthToFWHM(width) {\n  return width * ROOT_THREE;\n};\n\n/**\n * Calculate the area of a specific shape.\n * @param {number} fwhm - Full width at half maximum.\n * @param {*} [options = {}] - options.\n * @param {number} [options.height = 1] - Maximum y value of the shape.\n * @returns {number} - returns the area of the specific shape and parameters.\n */\nLorentzian.getArea = function getArea(fwhm, options = {}) {\n  let { height = 1 } = options;\n\n  return (height * Math.PI * fwhm) / 2;\n};\n\n/**\n * Calculate the number of times FWHM allows to reach a specific area coverage\n * @param {number} [area=0.9999]\n * @returns {number}\n */\nLorentzian.getFactor = function getFactor(area = 0.9999) {\n  return 2 * Math.tan(Math.PI * (area - 0.5));\n};\n","import {\n  GAUSSIAN_EXP_FACTOR,\n  ROOT_2LN2_MINUS_ONE,\n  ROOT_PI_OVER_LN2,\n} from '../util/constants';\n\nimport { Gaussian } from './Gaussian';\nimport { Lorentzian } from './Lorentzian';\n\nexport class PseudoVoigt {\n  /**\n   * @param {object} [options={}]\n   * @param {number} [options.height=x] Define the height of the peak, by default area=1 (normalized)\n   * @param {number} [options.fwhm=500] - Full Width at Half Maximum in the number of points in FWHM.\n   * @param {number} [options.mu=0.5] - ratio of gaussian contribution.\n   */\n\n  constructor(options = {}) {\n    this.mu = options.mu === undefined ? 0.5 : options.mu;\n    this.fwhm = options.fwhm === undefined ? 500 : options.fwhm;\n    this.height =\n      options.height === undefined\n        ? 1 /\n          ((this.mu / Math.sqrt(-GAUSSIAN_EXP_FACTOR / Math.PI)) * this.fwhm +\n            ((1 - this.mu) * this.fwhm * Math.PI) / 2)\n        : options.height;\n  }\n\n  /**\n   * Calculate a linear combination of gaussian and lorentzian function width an same full width at half maximum\n   * @param { object } [options = {}]\n   * @param { number } [options.factor = 2 * Math.tan(Math.PI * (0.9999 - 0.5))] - Number of time to take fwhm in the calculation of the length.Default covers 99.99 % of area.\n   * @param { number } [options.length = fwhm * factor + 1] - total number of points to calculate\n   * @return { object } - { fwhm, data<Float64Array>} - An with the number of points at half maximum and the array of y values covering the 99.99 % of the area.\n   */\n\n  getData(options = {}) {\n    let { length, factor = this.getFactor() } = options;\n    if (!length) {\n      length = Math.ceil(this.fwhm * factor);\n      if (length % 2 === 0) length++;\n    }\n\n    const center = (length - 1) / 2;\n\n    let data = new Float64Array(length);\n    for (let i = 0; i <= center; i++) {\n      data[i] = this.fct(i - center) * this.height;\n      data[length - 1 - i] = data[i];\n    }\n\n    return data;\n  }\n\n  /**\n   * Return a parameterized function of a linear combination of Gaussian and Lorentzian shapes where the full width at half maximum are the same for both kind of shapes (see README for equation).\n   * @param {number} [x] x value to calculate.\n   * @returns {number} - the y value of a pseudo voigt with the current parameters.\n   */\n\n  fct(x) {\n    return PseudoVoigt.fct(x, this.fwhm, this.mu);\n  }\n\n  /**\n   * Calculate the number of times FWHM allows to reach a specific area coverage\n   * @param {number} [area=0.9999] - required area to be coverage\n   * @param {number} [mu=this.mu] - ratio of gaussian contribution.\n   * @returns {number}\n   */\n  getFactor(area = 0.9999, mu = this.mu) {\n    return PseudoVoigt.getFactor(area, mu);\n  }\n\n  /**\n   * Calculate the area of the shape.\n   * @returns {number} - returns the area.\n   */\n  getArea() {\n    return PseudoVoigt.getArea(this.fwhm, { height: this.height, mu: this.mu });\n  }\n\n  /**\n   * Compute the value of Full Width at Half Maximum (FMHM) from width between the inflection points.\n   * @param {number} width - width between the inflection points\n   * @param {number} [mu = 0.5] - ratio of gaussian contribution.\n   * @returns {number} Full Width at Half Maximum (FMHM).\n   */\n  widthToFWHM(width, mu) {\n    return PseudoVoigt.widthToFWHM(width, mu);\n  }\n  /**\n   * Compute the value of width between the inflection points from Full Width at Half Maximum (FWHM).\n   * @param {number} fwhm - Full Width at Half Maximum.\n   * @param {number} [mu] - ratio of gaussian contribution.\n   * @returns {number} width between the inflection points.\n   */\n  fwhmToWidth(fwhm = this.fwhm, mu = this.mu) {\n    return PseudoVoigt.fwhmToWidth(fwhm, mu);\n  }\n\n  /**\n   * set a new full width at half maximum\n   * @param {number} fwhm - full width at half maximum\n   */\n  setFWHM(fwhm) {\n    this.fwhm = fwhm;\n  }\n\n  /**\n   * set a new height\n   * @param {number} height - The maximal intensity of the shape.\n   */\n  setHeight(height) {\n    this.height = height;\n  }\n\n  /**\n   * set a new mu\n   * @param {number} mu - ratio of gaussian contribution.\n   */\n  setMu(mu) {\n    this.mu = mu;\n  }\n}\n\n/**\n * Return a parameterized function of a gaussian shape (see README for equation).\n * @param {number} x - x value to calculate.\n * @param {number} fwhm - full width half maximum\n * @param {number} [mu=0.5] - ratio of gaussian contribution.\n * @returns {number} - the y value of gaussian with the current parameters.\n */\nPseudoVoigt.fct = function fct(x, fwhm, mu = 0.5) {\n  return (1 - mu) * Lorentzian.fct(x, fwhm) + mu * Gaussian.fct(x, fwhm);\n};\n\n/**\n * Compute the value of Full Width at Half Maximum (FMHM) from width between the inflection points.\n * @param {number} width - width between the inflection points\n * @param {number} [mu = 0.5] - ratio of gaussian contribution.\n * @returns {number} Full Width at Half Maximum (FMHM).\n */\nPseudoVoigt.widthToFWHM = function widthToFWHM(width, mu = 0.5) {\n  return width * (mu * ROOT_2LN2_MINUS_ONE + 1);\n};\n/**\n * Compute the value of width between the inflection points from Full Width at Half Maximum (FWHM).\n * @param {number} fwhm - Full Width at Half Maximum.\n * @param {number} [mu = 0.5] - ratio of gaussian contribution.\n * @returns {number} width between the inflection points.\n */\nPseudoVoigt.fwhmToWidth = function fwhmToWidth(fwhm, mu = 0.5) {\n  return fwhm / (mu * ROOT_2LN2_MINUS_ONE + 1);\n};\n\n/**\n * Calculate the area of a specific shape.\n * @param {number} fwhm - Full width at half maximum.\n * @param {*} [options = {}] - options.\n * @param {number} [options.height = 1] - Maximum y value of the shape.\n * @param {number} [options.mu = 0.5] - ratio of gaussian contribution.\n * @returns {number} - returns the area of the specific shape and parameters.\n */\nPseudoVoigt.getArea = function getArea(fwhm, options = {}) {\n  let { height = 1, mu = 0.5 } = options;\n  return (fwhm * height * (mu * ROOT_PI_OVER_LN2 + (1 - mu) * Math.PI)) / 2;\n};\n\n/**\n * Calculate the number of times FWHM allows to reach a specific area coverage\n * @param {number} [area=0.9999] - required area to be coverage\n * @param {number} [mu=this.mu] - ratio of gaussian contribution.\n * @returns {number}\n */\nPseudoVoigt.getFactor = function getFactor(area = 0.9999, mu = 0.5) {\n  return mu < 1 ? Lorentzian.getFactor(area) : Gaussian.getFactor(area);\n};\n","import { Gaussian } from '../classes/Gaussian';\nimport { Lorentzian } from '../classes/Lorentzian';\nimport { PseudoVoigt } from '../classes/PseudoVoigt';\n\nexport function getShapeGenerator(options) {\n  let { kind = 'Gaussian', options: shapeOptions } = options;\n  switch (kind.toLowerCase().replace(/[^a-z]/g, '')) {\n    case 'gaussian':\n      return new Gaussian(shapeOptions);\n    case 'lorentzian':\n      return new Lorentzian(shapeOptions);\n    case 'pseudovoigt':\n      return new PseudoVoigt(shapeOptions);\n    default:\n      throw new Error(`Unknown kind: ${kind}`);\n  }\n}\n","/**\n * Apply Savitzky Golay algorithm\n * @param {array} [ys] Array of y values\n * @param {array|number} [xs] Array of X or deltaX\n * @param {object} [options={}]\n * @param {number} [options.windowSize=9]\n * @param {number} [options.derivative=0]\n * @param {number} [options.polynomial=3]\n * @return {array} Array containing the new ys (same length)\n */\n\nexport default function SavitzkyGolay(ys, xs, options = {}) {\n  let { windowSize = 9, derivative = 0, polynomial = 3 } = options;\n\n  if (windowSize % 2 === 0 || windowSize < 5 || !Number.isInteger(windowSize)) {\n    throw new RangeError(\n      'Invalid window size (should be odd and at least 5 integer number)',\n    );\n  }\n  if (windowSize > ys.length) {\n    throw new RangeError(\n      `Window size is higher than the data length ${windowSize}>${ys.length}`,\n    );\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(\n      '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  }\n\n  let half = Math.floor(windowSize / 2);\n  let np = ys.length;\n  let ans = new Array(np);\n  let weights = fullWeights(windowSize, polynomial, derivative);\n  let hs = 0;\n  let constantH = true;\n  if (Array.isArray(xs)) {\n    constantH = false;\n  } else {\n    hs = Math.pow(xs, derivative);\n  }\n\n  //For the borders\n  for (let i = 0; i < half; i++) {\n    let wg1 = weights[half - i - 1];\n    let 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    } 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\n  //For the internal points\n  let wg = weights[half];\n  for (let i = windowSize; i <= np; i++) {\n    let d = 0;\n    for (let l = 0; l < windowSize; l++) d += wg[l] * ys[l + i - windowSize];\n    if (!constantH) hs = getHs(xs, i - half - 1, half, derivative);\n    ans[i - half - 1] = d / hs;\n  }\n  return ans;\n}\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 Math.pow(hs / count, derivative);\n}\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  } else {\n    if (k === 0 && s === 0) {\n      Grampoly = 1;\n    } else {\n      Grampoly = 0;\n    }\n  }\n  return Grampoly;\n}\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}\n\nfunction Weight(i, t, m, n, s) {\n  let sum = 0;\n  for (let k = 0; k <= n; k++) {\n    //console.log(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/**\n *\n * @param m  Number of points\n * @param n  Polynomial grade\n * @param s  Derivative\n */\nfunction fullWeights(m, n, s) {\n  let weights = new Array(m);\n  let np = Math.floor(m / 2);\n  for (let t = -np; t <= np; t++) {\n    weights[t + np] = new Array(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\n/*function entropy(data,h,options){\n    var trend = SavitzkyGolay(data,h,trendOptions);\n    var copy = new Array(data.length);\n    var sum = 0;\n    var max = 0;\n    for(var i=0;i<data.length;i++){\n        copy[i] = data[i]-trend[i];\n    }\n\n    sum/=data.length;\n    console.log(sum+\" \"+max);\n    console.log(stat.array.standardDeviation(copy));\n    console.log(Math.abs(stat.array.mean(copy))/stat.array.standardDeviation(copy));\n    return sum;\n\n}\n\n\n\nfunction guessWindowSize(data, h){\n    console.log(\"entropy \"+entropy(data,h,trendOptions));\n    return 5;\n}\n*/\n","import { getShapeGenerator } from 'ml-peak-shape-generator';\nimport SG from 'ml-savitzky-golay-generalized';\n\n/**\n * Global spectra deconvolution\n * @param {object} data - Object data with x and y arrays\n * @param {Array<number>} [data.x] - Independent variable\n * @param {Array<number>} [data.y] - Dependent variable\n * @param {object} [options={}] - Options object\n * @param {object} [options.shape={}] - Object that specified the kind of shape to calculate the FWHM instead of width between inflection points. see https://mljs.github.io/peak-shape-generator/#inflectionpointswidthtofwhm\n * @param {object} [options.shape.kind='gaussian']\n * @param {object} [options.shape.options={}]\n * @param {object} [options.sgOptions] - Options object for Savitzky-Golay filter. See https://github.com/mljs/savitzky-golay-generalized#options\n * @param {number} [options.sgOptions.windowSize = 9] - points to use in the approximations\n * @param {number} [options.sgOptions.polynomial = 3] - degree of the polynomial to use in the approximations\n * @param {number} [options.minMaxRatio = 0.00025] - Threshold to determine if a given peak should be considered as a noise\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 * @param {number} [options.noiseLevel = 0] - Noise threshold in spectrum units\n * @param {boolean} [options.maxCriteria = true] - Peaks are local maximum(true) or minimum(false)\n * @param {boolean} [options.smoothY = true] - Select the peak intensities from a smoothed version of the independent variables\n * @param {boolean} [options.realTopDetection = false] - Use a quadratic optimizations with the peak and its 3 closest neighbors\n * to determine the true x,y values of the peak?\n * @param {number} [options.heightFactor = 0] - Factor to multiply the calculated height (usually 2)\n * @param {number} [options.derivativeThreshold = -1] - Filters based on the amplitude of the first derivative\n * @return {Array<object>}\n */\nexport function gsd(data, options = {}) {\n  let {\n    noiseLevel,\n    sgOptions = {\n      windowSize: 9,\n      polynomial: 3,\n    },\n    shape = {},\n    smoothY = true,\n    heightFactor = 0,\n    broadRatio = 0.0,\n    maxCriteria = true,\n    minMaxRatio = 0.00025,\n    derivativeThreshold = -1,\n    realTopDetection = false,\n  } = options;\n\n  let { y: yIn, x } = data;\n\n  const y = yIn.slice();\n  let equalSpaced = isEqualSpaced(x);\n\n  if (noiseLevel === undefined) {\n    noiseLevel = equalSpaced ? getNoiseLevel(y) : 0;\n  }\n\n  const yCorrection = { m: 1, b: noiseLevel };\n\n  if (!maxCriteria) {\n    yCorrection.m = -1;\n    yCorrection.b *= -1;\n  }\n\n  for (let i = 0; i < y.length; i++) {\n    y[i] = yCorrection.m * y[i] - yCorrection.b;\n  }\n\n  for (let i = 0; i < y.length; i++) {\n    if (y[i] < 0) {\n      y[i] = 0;\n    }\n  }\n  // If the max difference between delta x is less than 5%, then,\n  // we can assume it to be equally spaced variable\n  let yData = y;\n  let dY, ddY;\n  const { windowSize, polynomial } = sgOptions;\n\n  if (equalSpaced) {\n    if (smoothY) {\n      yData = SG(y, x[1] - x[0], {\n        windowSize,\n        polynomial,\n        derivative: 0,\n      });\n    }\n    dY = SG(y, x[1] - x[0], {\n      windowSize,\n      polynomial,\n      derivative: 1,\n    });\n    ddY = SG(y, x[1] - x[0], {\n      windowSize,\n      polynomial,\n      derivative: 2,\n    });\n  } else {\n    if (smoothY) {\n      yData = SG(y, x, {\n        windowSize,\n        polynomial,\n        derivative: 0,\n      });\n    }\n    dY = SG(y, x, {\n      windowSize,\n      polynomial,\n      derivative: 1,\n    });\n    ddY = SG(y, x, {\n      windowSize,\n      polynomial,\n      derivative: 2,\n    });\n  }\n\n  const xData = x;\n  const dX = x[1] - x[0];\n  let maxDdy = 0;\n  let maxY = 0;\n  for (let i = 0; i < yData.length; i++) {\n    if (Math.abs(ddY[i]) > maxDdy) {\n      maxDdy = Math.abs(ddY[i]);\n    }\n    if (Math.abs(yData[i]) > maxY) {\n      maxY = Math.abs(yData[i]);\n    }\n  }\n\n  let lastMax = null;\n  let lastMin = null;\n  let minddY = [];\n  let intervalL = [];\n  let intervalR = [];\n  let broadMask = [];\n\n  // By the intermediate value theorem We cannot find 2 consecutive maximum or minimum\n  for (let i = 1; i < yData.length - 1; ++i) {\n    // filter based on derivativeThreshold\n    // console.log('pasa', y[i], dY[i], ddY[i]);\n    if (Math.abs(dY[i]) > derivativeThreshold) {\n      // Minimum in first derivative\n      if (\n        (dY[i] < dY[i - 1] && dY[i] <= dY[i + 1]) ||\n        (dY[i] <= dY[i - 1] && dY[i] < dY[i + 1])\n      ) {\n        lastMin = {\n          x: xData[i],\n          index: i,\n        };\n        if (dX > 0 && lastMax !== null) {\n          intervalL.push(lastMax);\n          intervalR.push(lastMin);\n        }\n      }\n\n      // Maximum in first derivative\n      if (\n        (dY[i] >= dY[i - 1] && dY[i] > dY[i + 1]) ||\n        (dY[i] > dY[i - 1] && dY[i] >= dY[i + 1])\n      ) {\n        lastMax = {\n          x: xData[i],\n          index: i,\n        };\n        if (dX < 0 && lastMin !== null) {\n          intervalL.push(lastMax);\n          intervalR.push(lastMin);\n        }\n      }\n    }\n\n    // Minimum in second derivative\n    if (ddY[i] < ddY[i - 1] && ddY[i] < ddY[i + 1]) {\n      minddY.push(i);\n      broadMask.push(Math.abs(ddY[i]) <= broadRatio * maxDdy);\n    }\n  }\n\n  let widthProcessor = shape.kind\n    ? getShapeGenerator(shape.kind, shape.options).widthToFWHM\n    : (x) => x;\n\n  let signals = [];\n  let lastK = -1;\n  let possible, frequency, distanceJ, minDistance, gettingCloser;\n  for (let j = 0; j < minddY.length; ++j) {\n    frequency = xData[minddY[j]];\n    possible = -1;\n    let k = lastK + 1;\n    minDistance = Number.MAX_VALUE;\n    distanceJ = 0;\n    gettingCloser = true;\n    while (possible === -1 && k < intervalL.length && gettingCloser) {\n      distanceJ = Math.abs(frequency - (intervalL[k].x + intervalR[k].x) / 2);\n\n      // Still getting closer?\n      if (distanceJ < minDistance) {\n        minDistance = distanceJ;\n      } else {\n        gettingCloser = false;\n      }\n      if (distanceJ < Math.abs(intervalL[k].x - intervalR[k].x) / 2) {\n        possible = k;\n        lastK = k;\n      }\n      ++k;\n    }\n\n    if (possible !== -1) {\n      if (Math.abs(yData[minddY[j]]) > minMaxRatio * maxY) {\n        let width = Math.abs(intervalR[possible].x - intervalL[possible].x);\n        signals.push({\n          index: minddY[j],\n          x: frequency,\n          y: (yData[minddY[j]] + yCorrection.b) / yCorrection.m,\n          width: widthProcessor(width),\n          soft: broadMask[j],\n        });\n\n        signals[signals.length - 1].left = intervalL[possible];\n        signals[signals.length - 1].right = intervalR[possible];\n\n        if (heightFactor) {\n          let yLeft = yData[intervalL[possible].index];\n          let yRight = yData[intervalR[possible].index];\n          signals[signals.length - 1].height =\n            heightFactor *\n            (signals[signals.length - 1].y - (yLeft + yRight) / 2);\n        }\n      }\n    }\n  }\n\n  if (realTopDetection) {\n    determineRealTop(signals, xData, yData);\n  }\n\n  // Correct the values to fit the original spectra data\n  for (let j = 0; j < signals.length; j++) {\n    signals[j].base = noiseLevel;\n  }\n\n  signals.sort(function (a, b) {\n    return a.x - b.x;\n  });\n\n  return signals;\n}\n\nconst isEqualSpaced = (x) => {\n  let tmp;\n  let maxDx = 0;\n  let minDx = Number.MAX_SAFE_INTEGER;\n  for (let i = 0; i < x.length - 1; ++i) {\n    tmp = Math.abs(x[i + 1] - x[i]);\n    if (tmp < minDx) {\n      minDx = tmp;\n    }\n    if (tmp > maxDx) {\n      maxDx = tmp;\n    }\n  }\n  return (maxDx - minDx) / maxDx < 0.05;\n};\n\nconst getNoiseLevel = (y) => {\n  let mean = 0;\n\n  let stddev = 0;\n  let length = y.length;\n  for (let i = 0; i < length; ++i) {\n    mean += y[i];\n  }\n  mean /= length;\n  let averageDeviations = new Array(length);\n  for (let i = 0; i < length; ++i) {\n    averageDeviations[i] = Math.abs(y[i] - mean);\n  }\n  averageDeviations.sort((a, b) => a - b);\n  if (length % 2 === 1) {\n    stddev = averageDeviations[(length - 1) / 2] / 0.6745;\n  } else {\n    stddev =\n      (0.5 *\n        (averageDeviations[length / 2] + averageDeviations[length / 2 - 1])) /\n      0.6745;\n  }\n\n  return stddev;\n};\n\nconst determineRealTop = (peakList, x, y) => {\n  let alpha, beta, gamma, p, currentPoint;\n  for (let j = 0; j < peakList.length; j++) {\n    currentPoint = peakList[j].index; // peakList[j][2];\n    // The detected peak could be moved 1 or 2 units to left or right.\n    if (\n      y[currentPoint - 1] >= y[currentPoint - 2] &&\n      y[currentPoint - 1] >= y[currentPoint]\n    ) {\n      currentPoint--;\n    } else {\n      if (\n        y[currentPoint + 1] >= y[currentPoint] &&\n        y[currentPoint + 1] >= y[currentPoint + 2]\n      ) {\n        currentPoint++;\n      } else {\n        if (\n          y[currentPoint - 2] >= y[currentPoint - 3] &&\n          y[currentPoint - 2] >= y[currentPoint - 1]\n        ) {\n          currentPoint -= 2;\n        } else {\n          if (\n            y[currentPoint + 2] >= y[currentPoint + 1] &&\n            y[currentPoint + 2] >= y[currentPoint + 3]\n          ) {\n            currentPoint += 2;\n          }\n        }\n      }\n    }\n    // interpolation to a sin() function\n    if (\n      y[currentPoint - 1] > 0 &&\n      y[currentPoint + 1] > 0 &&\n      y[currentPoint] >= y[currentPoint - 1] &&\n      y[currentPoint] >= y[currentPoint + 1] &&\n      (y[currentPoint] !== y[currentPoint - 1] ||\n        y[currentPoint] !== y[currentPoint + 1])\n    ) {\n      alpha = 20 * Math.log10(y[currentPoint - 1]);\n      beta = 20 * Math.log10(y[currentPoint]);\n      gamma = 20 * Math.log10(y[currentPoint + 1]);\n      p = (0.5 * (alpha - gamma)) / (alpha - 2 * beta + gamma);\n      // console.log(alpha, beta, gamma, `p: ${p}`);\n      // console.log(x[currentPoint]+\" \"+tmp+\" \"+currentPoint);\n      peakList[j].x =\n        x[currentPoint] + (x[currentPoint] - x[currentPoint - 1]) * p;\n      peakList[j].y =\n        y[currentPoint] -\n        0.25 * (y[currentPoint - 1] - y[currentPoint + 1]) * p;\n    }\n  }\n};\n","import isArray from 'is-any-array';\n\nfunction max(input) {\n  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n  if (!isArray(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 default max;\n","import isArray from 'is-any-array';\n\nfunction min(input) {\n  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n  if (!isArray(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 default min;\n","import isArray 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 (!isArray(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 (!isArray(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 default rescale;\n","const indent = ' '.repeat(2);\nconst indentData = ' '.repeat(4);\n\nexport function inspectMatrix() {\n  return inspectMatrixWithOptions(this);\n}\n\nexport function inspectMatrixWithOptions(matrix, options = {}) {\n  const { maxRows = 15, maxColumns = 10, maxNumSize = 8 } = options;\n  return `${matrix.constructor.name} {\n${indent}[\n${indentData}${inspectData(matrix, maxRows, maxColumns, maxNumSize)}\n${indent}]\n${indent}rows: ${matrix.rows}\n${indent}columns: ${matrix.columns}\n}`;\n}\n\nfunction inspectData(matrix, maxRows, maxColumns, maxNumSize) {\n  const { rows, columns } = matrix;\n  const maxI = Math.min(rows, maxRows);\n  const maxJ = Math.min(columns, maxColumns);\n  const result = [];\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));\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) {\n  const numStr = String(num);\n  if (numStr.length <= maxNumSize) {\n    return numStr.padEnd(maxNumSize, ' ');\n  }\n  const precise = num.toPrecision(maxNumSize - 2);\n  if (precise.length <= maxNumSize) {\n    return precise;\n  }\n  const exponential = num.toExponential(maxNumSize - 2);\n  const eIndex = exponential.indexOf('e');\n  const e = exponential.slice(eIndex);\n  return exponential.slice(0, maxNumSize - e.length) + e;\n}\n","export function 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, Math.pow(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, Math.pow(this.get(i, j), matrix.get(i, j)));\n      }\n    }\n    return this;\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 */\nexport function 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 */\nexport function 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 */\nexport function 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 */\nexport function 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\nexport function checkIndices(matrix, rowIndices, columnIndices) {\n  return {\n    row: checkRowIndices(matrix, rowIndices),\n    column: checkColumnIndices(matrix, columnIndices),\n  };\n}\n\nexport function checkRowIndices(matrix, rowIndices) {\n  if (typeof rowIndices !== 'object') {\n    throw new TypeError('unexpected type for row indices');\n  }\n\n  let rowOut = rowIndices.some((r) => {\n    return r < 0 || r >= matrix.rows;\n  });\n\n  if (rowOut) {\n    throw new RangeError('row indices are out of range');\n  }\n\n  if (!Array.isArray(rowIndices)) rowIndices = Array.from(rowIndices);\n\n  return rowIndices;\n}\n\nexport function checkColumnIndices(matrix, columnIndices) {\n  if (typeof columnIndices !== 'object') {\n    throw new TypeError('unexpected type for column indices');\n  }\n\n  let columnOut = columnIndices.some((c) => {\n    return c < 0 || c >= matrix.columns;\n  });\n\n  if (columnOut) {\n    throw new RangeError('column indices are out of range');\n  }\n  if (!Array.isArray(columnIndices)) columnIndices = Array.from(columnIndices);\n\n  return columnIndices;\n}\n\nexport function 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\nexport function 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\nexport function checkNonEmpty(matrix) {\n  if (matrix.isEmpty()) {\n    throw new Error('Empty matrix has no elements to index');\n  }\n}\n","import { newArray } from './util';\n\nexport function 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\nexport function 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\nexport function 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\nexport function 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\nexport function 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\nexport function 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\nexport function 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\nexport function 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\nexport function 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\nexport function 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\nexport function 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\nexport function 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\nexport function 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 += Math.pow(matrix.get(i, j), 2) / (matrix.columns - 1);\n    }\n    scale.push(Math.sqrt(sum));\n  }\n  return scale;\n}\n\nexport function 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\nexport function 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 += Math.pow(matrix.get(i, j), 2) / (matrix.rows - 1);\n    }\n    scale.push(Math.sqrt(sum));\n  }\n  return scale;\n}\n\nexport function 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\nexport function 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 += Math.pow(matrix.get(i, j), 2) / divider;\n    }\n  }\n  return Math.sqrt(sum);\n}\n\nexport function 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","import rescale from 'ml-array-rescale';\n\nimport { inspectMatrix, inspectMatrixWithOptions } from './inspect';\nimport { installMathOperations } from './mathOperations';\nimport {\n  sumByRow,\n  sumByColumn,\n  sumAll,\n  productByRow,\n  productByColumn,\n  productAll,\n  varianceByRow,\n  varianceByColumn,\n  varianceAll,\n  centerByRow,\n  centerByColumn,\n  centerAll,\n  scaleByRow,\n  scaleByColumn,\n  scaleAll,\n  getScaleByRow,\n  getScaleByColumn,\n  getScaleAll,\n} from './stat';\nimport {\n  checkRowVector,\n  checkRowIndex,\n  checkColumnIndex,\n  checkColumnVector,\n  checkRange,\n  checkIndices,\n  checkNonEmpty,\n} from './util';\n\nexport class 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  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() {\n    if (this.isEmpty()) {\n      return NaN;\n    }\n    let v = this.get(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        }\n      }\n    }\n    return v;\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() {\n    if (this.isEmpty()) {\n      return NaN;\n    }\n    let v = this.get(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        }\n      }\n    }\n    return v;\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    let result = 0;\n    if (type === 'max') {\n      return this.max();\n    } else if (type === 'frobenius') {\n      for (let i = 0; i < this.rows; i++) {\n        for (let j = 0; j < this.columns; j++) {\n          result = result + this.get(i, j) * this.get(i, j);\n        }\n      }\n      return Math.sqrt(result);\n    } else {\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  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 resultat = AbstractMatrix.zeros(2 * c11.rows, 2 * c11.columns);\n      resultat = resultat.setSubMatrix(c11, 0, 0);\n      resultat = resultat.setSubMatrix(c12, c11.rows, 0);\n      resultat = resultat.setSubMatrix(c21, 0, c11.columns);\n      resultat = resultat.setSubMatrix(c22, c11.rows, c11.columns);\n      return resultat.subMatrix(0, rows - 1, 0, cols - 1);\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: min,\n          max: 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  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    let indices = checkIndices(this, rowIndices, columnIndices);\n    let newMatrix = new Matrix(rowIndices.length, columnIndices.length);\n    for (let i = 0; i < indices.row.length; i++) {\n      let rowIndex = indices.row[i];\n      for (let j = 0; j < indices.column.length; j++) {\n        let columnIndex = indices.column[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    let newMatrix = new Matrix(this.rows, this.columns);\n    for (let row = 0; row < this.rows; row++) {\n      for (let column = 0; column < this.columns; column++) {\n        newMatrix.set(row, column, this.get(row, column));\n      }\n    }\n    return newMatrix;\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 (!Array.isArray(mean)) {\n          throw new TypeError('mean must be an array');\n        }\n        return varianceByRow(this, unbiased, mean);\n      }\n      case 'column': {\n        if (!Array.isArray(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 (!Array.isArray(center)) {\n          throw new TypeError('center must be an array');\n        }\n        centerByRow(this, center);\n        return this;\n      }\n      case 'column': {\n        if (!Array.isArray(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 (!Array.isArray(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 (!Array.isArray(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\nAbstractMatrix.prototype.klass = 'Matrix';\nif (typeof Symbol !== 'undefined') {\n  AbstractMatrix.prototype[\n    Symbol.for('nodejs.util.inspect.custom')\n  ] = inspectMatrix;\n}\n\nfunction compareNumbers(a, b) {\n  return a - b;\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\nexport default class Matrix extends AbstractMatrix {\n  constructor(nRows, nColumns) {\n    super();\n    if (Matrix.isMatrix(nRows)) {\n      // eslint-disable-next-line no-constructor-return\n      return nRows.clone();\n    } else if (Number.isInteger(nRows) && nRows >= 0) {\n      // Create an empty matrix\n      this.data = [];\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    } else if (Array.isArray(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      for (let i = 0; i < nRows; i++) {\n        if (arrayData[i].length !== nColumns) {\n          throw new RangeError('Inconsistent array dimensions');\n        }\n        this.data.push(Float64Array.from(arrayData[i]));\n      }\n    } else {\n      throw new TypeError(\n        'First argument must be a positive number or an array',\n      );\n    }\n    this.rows = nRows;\n    this.columns = nColumns;\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","import mean from 'ml-array-mean';\nimport { gsd } from 'ml-gsd';\nimport { xFindClosestIndex } from '../x/xFindClosestIndex';\n\n/**\n * Aligns the data based on a range and means of peaks in this range\n * Based on a range we will make a peak picking using global spectra deconvolution\n * The selected nbPeaks will then be taken into account to calculate an average X value.\n * The difference between the targetX and the averageX value will be returned\n * @param {DataXY} [data] array of points {x,y}\n * @param {Object} [range={}]\n * @param {number} [range.from] - Beginning of the range where the interest signal is localed\n * @param {number} [range.to] - End of the range where the interest signal is localed\n * @param {Object} [options={}]\n * @param {number} [options.nbPeaks=1] Number of peaks to consider to calculate mean (sorted by height)\n * @param {number} [options.targetX=0] Expected value for the mean of the peaks position\n * @param {number} [options.gsd={}] GSD options. You may check options here: http://mljs.github.io/global-spectral-deconvolution/#gsd\n * @param {number} [options.gsd.minMaxRatio=0.2] - GSD Threshold to determine if a given peak should be considered as a noise.\n * @returns {number} difference between targetX and currentX\n */\n\nexport function xyXShift(data, range = {}, options = {}) {\n  const {\n    targetX = 0,\n    nbPeaks = 1,\n    gsd: gsdOptions = {\n      minMaxRatio: 0.1,\n      realTopDetection: true,\n      smoothY: true,\n      sgOptions: {\n        windowSize: 7,\n        polynomial: 3,\n      },\n    },\n  } = options;\n  let { from, to } = range;\n  if (from === undefined || to === undefined) return 0;\n\n  const fromIndex = xFindClosestIndex(data.x, from);\n  const toIndex = xFindClosestIndex(data.x, to);\n  const sliceddata = {\n    x: data.x.slice(fromIndex, toIndex),\n    y: data.y.slice(fromIndex, toIndex),\n  };\n\n  let peaks = gsd(sliceddata, gsdOptions)\n    .sort((a, b) => b.y - a.y)\n    .slice(0, nbPeaks);\n\n  if (peaks.length === 0) return 0;\n\n  const middle = mean(peaks.map((peak) => peak.x));\n\n  return targetX - middle;\n}\n","/**\n * Throw an error in no an object of x,y arrays\n * @param {ArrayPoints} [points=[]]\n */\nexport function xyObjectCheck(points = []) {\n  if (!Array.isArray(points)) {\n    throw new Error('ArrayPoints must be an array of {x,y} object');\n  }\n  if (\n    points.length > 0 &&\n    (points[0].x === undefined || points[0].y === undefined)\n  ) {\n    throw new Error('ArrayPoints must be an array of {x,y} object');\n  }\n}\n","import { xyObjectCheck } from './xyObjectCheck';\n/**\n * Finds the max x value and return a {x,y,index} point\n * @param {DataXY} [points=[]] - Object that contains property x (an ordered increasing array) and y (an array)\n * @return {object}\n */\n\nexport function xyObjectMaxXPoint(points = []) {\n  xyObjectCheck(points);\n\n  if (points.length < 1) return {};\n\n  let current = {\n    x: points[0].x,\n    y: points[0].y,\n    index: 0,\n  };\n\n  for (let i = 1; i < points.length; i++) {\n    if (points[i].x > current.x) {\n      current = {\n        x: points[i].x,\n        y: points[i].y,\n        index: i,\n      };\n    }\n  }\n\n  return current;\n}\n","import { xyObjectCheck } from './xyObjectCheck';\n\n/**\n * Finds the min x value and return a {x,y,index} point\n * @param {DataXY} [points=[]] - Object that contains property x (an ordered increasing array) and y (an array)\n * @return {object}\n */\n\nexport function xyObjectMinXPoint(points = []) {\n  xyObjectCheck(points);\n\n  if (points.length < 1) return {};\n\n  let current = {\n    x: points[0].x,\n    y: points[0].y,\n    index: 0,\n  };\n\n  for (let i = 1; i < points.length; i++) {\n    if (points[i].x < current.x) {\n      current = {\n        x: points[i].x,\n        y: points[i].y,\n        index: i,\n      };\n    }\n  }\n\n  return current;\n}\n","import { xyObjectMaxXPoint } from './xyObjectMaxXPoint';\nimport { xyObjectMinXPoint } from './xyObjectMinXPoint';\n\n/**\n * Filter the array by taking the higher points (max y value) and only\n * keep one per slot.\n * There are 2 different slots, the smallest one will have the\n * new property `close` to true\n * @param {array} points - array of all the points\n * @param {object} [options={}]\n * @param {number} [options.from] - min X value of the window to consider\n * @param {number} [options.to] - max X value of the window to consider\n * @param {number} [options.limit=20] - max number of points\n * @param {number} [options.threshold=0.01] - minimal intensity compare to more intense point\n * @param {number} [options.numberSlots=10] - define the number of slots and indirectly the slot width\n * @param {number} [options.numberCloseSlots=50]\n * @returns {array} - copy of points with 'close' property\n */\n\nexport function xyObjectBestPoints(points, options = {}) {\n  const {\n    from = xyObjectMinXPoint(points).x,\n    to = xyObjectMaxXPoint(points).x,\n    limit = 20,\n    threshold = 0.01,\n    numberCloseSlots = 50,\n    numberSlots = 10,\n  } = options;\n  let slot = (to - from) / numberSlots;\n  let closeSlot = (to - from) / numberCloseSlots;\n  let selected = points\n    .filter((point) => point.x >= from && point.x <= to)\n    .map((point) => {\n      return {\n        point,\n        monoisotopic: false,\n      };\n    });\n\n  selected = selected.sort((a, b) => {\n    if (a.monoisotopic && !b.monoisotopic) return -1;\n    if (b.monoisotopic && !a.monoisotopic) return 1;\n    return b.point.y - a.point.y;\n  });\n\n  let toReturn = [];\n  if (selected.length === 0) return [];\n  let minY = selected[0].point.y * threshold;\n  peakLoop: for (let item of selected) {\n    if (item.point.y < minY) {\n      if (item.monoisotopic) {\n        continue;\n      } else {\n        break;\n      }\n    }\n    let close = false;\n    for (let existing of toReturn) {\n      if (Math.abs(existing.x - item.point.x) < closeSlot) {\n        continue peakLoop;\n      }\n      if (Math.abs(existing.x - item.point.x) < slot) {\n        close = true;\n      }\n    }\n    let newPeak = JSON.parse(JSON.stringify(item.point));\n    newPeak.close = close;\n    toReturn.push(newPeak);\n    if (toReturn.length === limit) break;\n  }\n  return toReturn.sort((a, b) => a.x - b.x);\n}\n","/**\n *\n * @param {ArrayPoints} [points] array of growing points {x,y}\n * @param {object} [options={}]\n * @param {object} [xError=Number.EPSILON] limit to join the data\n */\nexport function xyObjectJoinX(points, options = {}) {\n  const { xError = Number.EPSILON } = options;\n\n  // when we join we will use the center of mass\n  let result = [];\n  let current = {\n    x: Number.MIN_SAFE_INTEGER,\n    y: 0,\n  };\n  for (let point of points) {\n    if (point.x - current.x <= xError) {\n      // weighted sum\n      current.x =\n        (point.y / (current.y + point.y)) * (point.x - current.x) + current.x;\n      current.y += point.y;\n    } else {\n      current = {\n        x: point.x,\n        y: point.y,\n      };\n      result.push(current);\n    }\n  }\n  return result;\n}\n","import { xyObjectCheck } from './xyObjectCheck';\n/**\n * Finds the max y value and return a {x,y,index} point\n * @param {DataXY} [points=[]] - Object that contains property x (an ordered increasing array) and y (an array)\n * @return {object}\n */\n\nexport function xyObjectMaxYPoint(points = []) {\n  xyObjectCheck(points);\n\n  if (points.length < 1) return {};\n\n  let current = {\n    x: points[0].x,\n    y: points[0].y,\n    index: 0,\n  };\n\n  for (let i = 1; i < points.length; i++) {\n    if (points[i].y > current.y) {\n      current = {\n        x: points[i].x,\n        y: points[i].y,\n        index: i,\n      };\n    }\n  }\n\n  return current;\n}\n","import { xyObjectCheck } from './xyObjectCheck';\n\n/**\n * Finds the min y value and return a {x,y,index} point\n * @param {DataXY} [points=[]] - Object that contains property x (an ordered increasing array) and y (an array)\n * @return {object}\n */\n\nexport function xyObjectMinYPoint(points = []) {\n  xyObjectCheck(points);\n\n  if (points.length < 1) return {};\n\n  let current = {\n    x: points[0].x,\n    y: points[0].y,\n    index: 0,\n  };\n\n  for (let i = 1; i < points.length; i++) {\n    if (points[i].y < current.y) {\n      current = {\n        x: points[i].x,\n        y: points[i].y,\n        index: i,\n      };\n    }\n  }\n\n  return current;\n}\n","/**\n *\n * @param {ArrayPoints} [points] array of growing points {x,y}\n * @param {object} [options={}]\n * @param {object} [slotWidth=1] limit to join the data\n */\nexport function xyObjectSlotX(points, options = {}) {\n  const { slotWidth = 1 } = options;\n  const halfSlot = slotWidth / 2;\n\n  // when we join we will use the center of mass\n  let result = [];\n  let current = {\n    x: Number.MIN_VALUE,\n    y: 0,\n  };\n  for (let point of points) {\n    let slot = point.x - ((point.x + halfSlot) % slotWidth) + halfSlot;\n    if (Math.abs(current.x - slot) > Number.EPSILON) {\n      current = {\n        x: slot,\n        y: 0,\n      };\n      result.push(current);\n    }\n    current.y += point.y;\n  }\n  return result;\n}\n","/**\n * Sorts an array of points\n * @param {ArrayPoints} [points] array of points {x,y}\n */\n\nexport function xyObjectSortX(points) {\n  return points.sort((a, b) => a.x - b.x);\n}\n","/**\n *\n * @param {ArrayPoints} [points] array of points {x,y}\n */\nexport function xyObjectToXY(points) {\n  return {\n    x: points.map((entry) => entry.x),\n    y: points.map((entry) => entry.y),\n  };\n}\n","export function zoneToX(zone, size) {\n  const { from, to } = zone;\n  let array = new Float64Array(size);\n  let step = (to - from) / (size - 1);\n  for (let i = 0; i < size; i++) {\n    array[i] = from + step * i;\n  }\n  return array;\n}\n","import mean from 'ml-array-mean';\nimport { Matrix } from 'ml-matrix';\n\n/**\n * Performs a Probabilistic quotient normalization over the dataset to account dilution based in median spectrum.\n * Dieterle, F., Ross, A., Schlotterbeck, G., & Senn, H. (2006). Probabilistic quotient normalization as robust method to account for dilution of complex biological mixtures. Application in 1H NMR metabonomics. Analytical chemistry, 78(13), 4281-4290.\n * DOI: 10.1021/ac051632c\n * @param {Matrix} [matrix] - matrix [rows][cols].\n * @param {Object} [options={}]\n * @param {number} [options.max=100] - Normalization integral constant.\n * @return {Object} { data, averageQuotients }.\n * data: Normalized dataset.\n * averageQuotients: The quotients of all variables of interest.\n */\nexport function probabilisticQuotientNormalization(matrix, options = {}) {\n  let { max = 100 } = options;\n  matrix = new Matrix(matrix);\n  for (let i = 0; i < matrix.rows; i++) {\n    let row = matrix.getRowVector(i).div(matrix.getRowVector(i).norm() / max);\n    matrix.setRow(i, row);\n  }\n  let normalizationFactor = matrix.norm() / max;\n  matrix.div(normalizationFactor);\n  let referenceSpectrum = [];\n  for (let i = 0; i < matrix.columns; i++) {\n    let currentVariable = [];\n    for (let j = 0; j < matrix.rows; j++) {\n      currentVariable.push(matrix.get(j, i));\n    }\n    referenceSpectrum.push(mean(currentVariable));\n  }\n  let averageQuotients = [];\n  for (let i = 0; i < matrix.rows; i++) {\n    let quotients = [];\n    for (let j = 0; j < matrix.columns; j++) {\n      let quotient = matrix.get(i, j) / referenceSpectrum[j];\n      quotients.push(quotient);\n    }\n    averageQuotients.push(mean(quotients));\n  }\n\n  for (let i = 0; i < matrix.rows; i++) {\n    matrix.mulRow(i, averageQuotients[i]);\n  }\n  return {\n    data: matrix,\n    averageQuotients: averageQuotients,\n  };\n}\n","/**\n * @typedef {Object} DataXY\n * @property {Array<Number>} x Array of x values\n * @property {Array<Number>} y Array of y values\n */\n\n/**\n * @typedef {Object} Point\n * @property {Number} x value of the x coordinate\n * @property {Number} y value of the y coordinate\n */\n\n/**\n * @typedef {Object} Zone\n * @property {Number} from first value defining the zone\n * @property {Number} to last value defining the zone\n */\n\n/**\n * @typedef {Array<Point>} ArrayPoints\n */\n\n/**\n * @typedef {Object} DataReIm\n * @property {Array<Number>} re Array of re values\n * @property {Array<Number>} im Array of im values\n */\n\nexport * from './x/xAbsolute';\nexport * from './x/xAbsoluteMedian';\nexport * from './x/xAdd';\nexport * from './x/xAutoCorrelation';\nexport * from './x/xBoxPlot';\nexport * from './x/xCorrelation';\nexport * from './x/xCrossCorrelation';\nexport * from './x/xDivide';\nexport * from './x/xFindClosestIndex';\nexport * from './x/xGetFromToIndex';\nexport * from './x/xGetTargetIndex';\nexport * from './x/xIsMonotone';\nexport * from './x/xMultiply';\nexport * from './x/xNoiseSanPlot';\nexport * from './x/xNorm';\nexport * from './x/xPadding';\nexport * from './x/xRotate';\nexport * from './x/xRolling';\nexport * from './x/xRollingAverage';\nexport * from './x/xRollingMedian';\nexport * from './x/xSubtract';\nexport * from './x/xMinIndex';\nexport * from './x/xMaxIndex';\n\nexport * from './reim/reimAbsolute';\nexport * from './reim/reimAutoPhaseCorrection';\nexport * from './reim/reimPhaseCorrection';\nexport * from './reim/reimFFT';\n\nexport * from './xreim/xreimZeroFilling';\nexport * from './xreim/xreimSortX';\n\nexport * from './xy/xyAlign';\nexport * from './xy/xyCheck';\nexport * from './xy/xyExtract';\nexport * from './xy/xyGetNMaxY';\nexport * from './xy/xyGrowingX';\nexport * from './xy/xyIntegral';\nexport * from './xy/xyIntegration';\nexport * from './xy/xyMaxClosestYPoint';\nexport * from './xy/xyMaxY';\nexport * from './xy/xyMaxYPoint';\nexport * from './xy/xyMaximaY';\nexport * from './xy/xyMinClosestYPoint';\nexport * from './xy/xyMinYPoint';\nexport * from './xy/xyMinimaY';\nexport * from './xy/xyPeakInfo';\nexport * from './xy/xyRealMaxYPoint';\nexport * from './xy/xyRealMinYPoint';\nexport * from './xy/xyReduce';\nexport * from './xy/xyRolling';\nexport * from './xy/xyToXYObject';\nexport * from './xy/xyToXYArray';\nexport * from './xy/xyXShift';\n\nexport * from './xyObject/xyObjectBestPoints';\nexport * from './xyObject/xyObjectJoinX';\nexport * from './xyObject/xyObjectMaxXPoint';\nexport * from './xyObject/xyObjectMinXPoint';\nexport * from './xyObject/xyObjectMaxYPoint';\nexport * from './xyObject/xyObjectMinYPoint';\nexport * from './xyObject/xyObjectSlotX';\nexport * from './xyObject/xyObjectSortX';\nexport * from './xyObject/xyObjectToXY';\n\nexport * from './zone/zoneToX';\n\nexport * from './zones/zonesNormalize';\n\nexport * from './matrix/probabilisticQuotientNormalization';\n","'use strict';\n\nconst getMsInfo = require('mf-utilities/src/getMsInfo.js');\nconst xFindClosestIndex = require('ml-spectra-processing').xFindClosestIndex;\n\n/**\n * @param {object}         [entry={}}]\n * @param {object}         [options={}}]\n * @param {object}         [options.ionization={ mf: '', em: 0, charge: 0 }] - ionization method\n * @param {boolean}        [options.forceIonization=false] - If true ignore existing ionizations\n * @param {number}         [options.precision=1000] - The precision on the experimental mass\n * @param {number}         [options.targetMass] - Target mass, allows to calculate error and filter results\n * @param {Array<number>}  [options.targetMasses] - Target masses: SORTED array of numbers\n * @param {Array<number>}  [options.targetIntensities] - Target intensities: SORTED array of numbers\n * @param {number}         [options.minEM=0] - Minimal monoisotopic mass\n * @param {number}         [options.maxEM=+Infinity] - Maximal monoisotopic mass\n * @param {number}         [options.minMSEM=0] - Minimal monoisotopic mass observed by mass\n * @param {number}         [options.maxMSEM=+Infinity] - Maximal monoisotopic mass observed by mass\n * @param {number}         [options.minCharge=-Infinity] - Minimal charge\n * @param {number}         [options.maxCharge=+Infinity] - Maximal charge\n * @param {object}         [options.unsaturation={}}]\n * @param {number}         [options.unsaturation.min=-Infinity] - Minimal unsaturation\n * @param {number}         [options.unsaturation.max=+Infinity] - Maximal unsaturation\n * @param {number}         [options.unsaturation.onlyInteger=false] - Integer unsaturation\n * @param {number}         [options.unsaturation.onlyNonInteger=false] - Non integer unsaturation\n * @param {object}         [options.atoms] - object of atom:{min, max}\n * @param {Function}       [options.callback] - a function that contains information about the current MF\n * @return {boolean}\n */\n\n/**\n * We always recalculate msem\n */\n\nmodule.exports = function msemMatcher(entry, options = {}) {\n  const {\n    ionization = { mf: '', em: 0, charge: 0 },\n    forceIonization = false,\n    precision = 1000,\n    minCharge = Number.MIN_SAFE_INTEGER,\n    maxCharge = Number.MAX_SAFE_INTEGER,\n    unsaturation = {},\n    targetMass, // if present we will calculate the errors\n    targetMasses, // if present we will calculate the smallest error\n    targetIntensities, // if present it will be added in the report\n    minEM = -Infinity,\n    maxEM = +Infinity,\n    minMSEM = -Infinity,\n    maxMSEM = +Infinity,\n    atoms,\n    callback,\n  } = options;\n\n  let msInfo = getMsInfo(entry, {\n    ionization,\n    forceIonization,\n    targetMass,\n  });\n  let ms = msInfo.ms;\n\n  if (entry.em !== undefined) {\n    if (entry.em < minEM || entry.em > maxEM) return false;\n  }\n\n  if (ms.em !== undefined) {\n    if (ms.em < minMSEM || ms.em > maxMSEM) return false;\n  }\n\n  if (targetMass && Math.abs(ms.ppm) > precision) return false;\n\n  if (entry.charge !== undefined) {\n    if (ms.charge < minCharge || ms.charge > maxCharge) return false;\n  }\n  if (unsaturation !== undefined && entry.unsaturation !== undefined) {\n    if (!require('./unsaturationMatcher')(entry, unsaturation)) {\n      return false;\n    }\n  }\n  if (entry.atoms !== undefined && atoms) {\n    // all the atoms of the entry must fit in the range\n    for (let atom of Object.keys(entry.atoms)) {\n      if (!atoms[atom]) return false;\n      if (entry.atoms[atom] < atoms[atom].min) return false;\n      if (entry.atoms[atom] > atoms[atom].max) return false;\n    }\n  }\n\n  if (targetMasses && targetMasses.length > 0) {\n    let index = xFindClosestIndex(targetMasses, ms.em);\n    let closestMass = targetMasses[index];\n    msInfo = getMsInfo(entry, {\n      ionization,\n      forceIonization,\n      targetMass: closestMass,\n    });\n    msInfo.ms.target = { mass: closestMass };\n    if (targetIntensities) {\n      msInfo.ms.target.intensity = targetIntensities[index];\n    }\n    // need to find the closest targetMasses\n    if (Math.abs(msInfo.ms.ppm) > precision) return false;\n  }\n\n  if (callback) {\n    if (!callback(entry)) return false;\n  }\n\n  return msInfo;\n};\n","'use strict';\n\nmodule.exports = {\n  general: require('./generalMatcher'),\n  msem: require('./msemMatcher'),\n};\n","'use strict';\n\nfunction processRange(string, comment, options = {}) {\n  const { limit } = options;\n  let results = [];\n  let parts = string.split(/(-?[0-9]+--?[0-9]+)/).filter((v) => v); // remove empty parts\n\n  let position = -1;\n  let mfs = [];\n  for (let i = 0; i < parts.length; i++) {\n    let part = parts[i];\n    if (!~part.search(/-?[0-9]--?[0-9]/)) {\n      position++;\n      mfs[position] = {\n        mf: part,\n        min: 1,\n        max: 1,\n      };\n    } else {\n      let min = part.replace(/^(-?[0-9]*)-(-?[0-9]*)/, '$1') >> 0;\n      let max = part.replace(/^(-?[0-9]*)-(-?[0-9]*)/, '$2') >> 0;\n      mfs[position].min = Math.min(min, max);\n      mfs[position].max = Math.max(min, max);\n    }\n  }\n\n  let currents = new Array(mfs.length);\n  for (let i = 0; i < currents.length; i++) {\n    currents[i] = mfs[i].min;\n  }\n\n  position = 0;\n  while (position < currents.length) {\n    if (currents[position] < mfs[position].max) {\n      results.push(getMF(mfs, currents, comment));\n      currents[position]++;\n      for (let i = 0; i < position; i++) {\n        currents[i] = mfs[i].min;\n      }\n      position = 0;\n    } else {\n      position++;\n    }\n    if (results.length > limit) {\n      throw Error(`processRange generates to many fragments (over ${limit})`);\n    }\n  }\n\n  results.push(getMF(mfs, currents, comment));\n  return results;\n}\n\nfunction getMF(mfs, currents, comment) {\n  let mf = '';\n  for (let i = 0; i < mfs.length; i++) {\n    if (currents[i] === 0) {\n      // TODO we need to remove from currents[i] till we reach another part of the MF\n      mf += removeMFLastPart(mfs[i].mf);\n    } else {\n      mf += mfs[i].mf;\n      if (currents[i] !== 1) {\n        mf += currents[i];\n      }\n    }\n  }\n  if (comment) mf += `$${comment}`;\n  return mf;\n}\n\n/*\n   Allows to remove the last part of a MF. Useful when you have something with '0' times.\n   C10H -> C10\n   C10((Me)N) -> C10\n   C10Ala -> C10\n   C10Ala((Me)N) -> C10Ala\n   */\nfunction removeMFLastPart(mf) {\n  let parenthesis = 0;\n  let start = true;\n  for (let i = mf.length - 1; i >= 0; i--) {\n    let ascii = mf.charCodeAt(i);\n\n    if (ascii > 96 && ascii < 123) {\n      // lowercase\n      if (!start && !parenthesis) {\n        return mf.substr(0, i + 1);\n      }\n    } else if (ascii > 64 && ascii < 91) {\n      // uppercase\n      if (!start && !parenthesis) {\n        return mf.substr(0, i + 1);\n      }\n      start = false;\n    } else if (ascii === 40) {\n      // (\n      parenthesis--;\n      if (!parenthesis) return mf.substr(0, i);\n    } else if (ascii === 41) {\n      // )\n      parenthesis++;\n    } else {\n      start = false;\n      if (!parenthesis) return mf.substr(0, i + 1);\n    }\n  }\n  return '';\n}\n\nmodule.exports = processRange;\n","'use strict';\n\nconst MF = require('mf-parser/src/MF');\n\nconst processRange = require('./processRange');\n\nmodule.exports = function preprocessIonizations(ionizationsString = '') {\n  if (Array.isArray(ionizationsString)) return ionizationsString;\n  let ionizations = ionizationsString.split(/ *[.,;\\t\\r\\n]+ */);\n\n  // it is allowed to have ranges in Ionizations. We need to explode them.\n\n  let results = [];\n\n  for (let ionization of ionizations) {\n    let parts = processRange(ionization);\n    for (let part of parts) {\n      let info = new MF(part).getInfo();\n      results.push({\n        mf: part,\n        em: info.monoisotopicMass,\n        charge: info.charge,\n      });\n    }\n  }\n\n  return results;\n};\n","'use strict';\n\n/**\n * Modify object a to join it with b and make the sum of each of the keys\n * @param {*} a\n * @param {*} source1\n *\n * @return {object}\n */\n\nfunction sum(target) {\n    for (var i = 1; i < arguments.length; i++) {\n        let toSum = arguments[i];\n        for (var key of Object.keys(toSum)) {\n            if (target[key]) {\n                target[key] += toSum[key];\n            } else {\n                target[key] = toSum[key];\n            }\n        }\n    }\n    return target;\n}\n\nmodule.exports = sum;\n","'use strict';\n\nconst { ELECTRON_MASS } = require('chemical-elements/src/constants');\nconst MF = require('mf-parser').MF;\nconst matcher = require('mf-matcher').msem;\nconst preprocessIonizations = require('mf-utilities/src/preprocessIonizations');\nconst processRange = require('mf-utilities/src/processRange');\nconst sum = require('sum-object-keys');\n/**\n * Generate all the possible combinations of molecular formula and calculate\n * for each of them the monoisotopic mass and observed moniisotopic mass (m/z)\n * In the molecular formula there may be a comment after the '$' symbol\n *\n * @param keys\n * @param {object}        [options={}]\n * @param {number}        [options.limit=10000000] - Maximum number of results\n * @param {boolean}       [options.estimate=false] - estimate the number of MF without filters\n * @param {boolean}       [canonizeMF=true] - Canonize molecular formula\n * @param {boolean}       [uniqueMFs=true] - Force canonization and make MF unique\n * @param {string}        [ionizations=''] - Comma separated list of ionizations (to charge the molecule)\n * @param {number}        [options.filter.minMass=0] - Minimal monoisotopic mass\n * @param {number}        [options.filter.maxMass=+Infinity] - Maximal monoisotopic mass\n * @param {number}        [options.filter.minEM=0] - Minimal neutral monoisotopic mass\n * @param {number}        [options.filter.maxEM=+Infinity] - Maximal neutral monoisotopic mass\n * @param {number}        [options.filter.precision=1000] - The precision on the experimental mass\n * @param {number}        [options.filter.targetMass] - Target mass, allows to calculate error and filter results\n * @param {Array<number>} [options.filter.targetMasses] - Target masses: SORTED array of numbers\n * @param {number}        [options.filter.precision=1000] - Precision\n * @param {number}        [options.filter.minCharge=-Infinity] - Minimal charge\n * @param {number}        [options.filter.maxCharge=+Infinity] - Maximal charge\n * @param {number}        [options.filter.minUnsaturation=-Infinity] - Minimal unsaturation\n * @param {number}        [options.filter.maxUnsaturation=+Infinity] - Maximal unsaturation\n * @param {number}        [options.filter.onlyIntegerUnsaturation=false] - Integer unsaturation\n * @param {number}        [options.filter.onlyNonIntegerUnsaturation=false] - Non integer unsaturation\n * @param {Function}      [options.filterFct]\n * @param {object}        [options.filter.atoms] - object of atom:{min, max}\n * @returns {Array}\n */\n\nmodule.exports = function generateMFs(keys, options = {}) {\n  options = JSON.parse(JSON.stringify(options));\n\n  let { limit = 100000, uniqueMFs = true, estimate = false } = options;\n\n  options.filterFctVariables = {};\n  for (let i = 0; i < keys.length; i++) {\n    const key = keys[i];\n    if (typeof key === 'object' && key.name) {\n      options.filterFctVariables[key.name] = i;\n      keys[i] = key.value;\n    }\n  }\n\n  if (options.filterFct) {\n    // we create a real javascript function\n    let variables = Object.keys(options.filterFctVariables);\n    variables.push('mm', 'mz', 'charge', 'unsaturation', 'atoms');\n    // eslint-disable-next-line no-new-func\n    options.filterFct = new Function(\n      ...variables,\n      `return ${options.filterFct}`,\n    );\n  }\n\n  if (uniqueMFs === true) options.canonizeMF = true;\n  if (options.canonizeMF === undefined) options.canonizeMF = true;\n  options.ionizations = preprocessIonizations(options.ionizations);\n\n  if (!Array.isArray(keys)) {\n    throw new Error('You need to specify an array of strings or arrays');\n  }\n\n  // we allow String delimited by \". or ;\" instead of an array\n  for (let i = 0; i < keys.length; i++) {\n    if (!Array.isArray(keys[i])) {\n      keys[i] = keys[i].split(/[.,]/);\n    }\n  }\n\n  // we allow ranges in a string ...\n  // problem with ranges is that we need to know to what the range applies\n  for (let i = 0; i < keys.length; i++) {\n    let parts = keys[i];\n    let newParts = [];\n    for (let j = 0; j < parts.length; j++) {\n      let part = parts[j];\n      let comment = part.replace(/^([^$]*\\$|.*)/, '');\n      part = part.replace(/\\$.*/, '').replace(/\\s/g, '');\n      if (part.match(/[0-9]-[0-9-]/)) {\n        // deal with negative numbers\n        // there are ranges ... we are in trouble !\n        newParts = newParts.concat(processRange(part, comment, { limit }));\n      } else {\n        newParts.push(parts[j]); // the part with the comments !\n      }\n    }\n    keys[i] = newParts;\n  }\n\n  if (estimate) {\n    let total = keys.reduce(\n      (previous, current) => previous * current.length,\n      1,\n    );\n    return total * options.ionizations.length;\n  }\n\n  let results = [];\n  let sizes = [];\n  let currents = [];\n  for (let i = 0; i < keys.length; i++) {\n    sizes.push(keys[i].length - 1);\n    currents.push(0);\n  }\n  let position = 0;\n  let evolution = 0;\n  while (position < currents.length) {\n    if (currents[position] < sizes[position]) {\n      evolution++;\n      appendResult(results, currents, keys, options);\n      currents[position]++;\n      for (let i = 0; i < position; i++) {\n        currents[i] = 0;\n      }\n      position = 0;\n    } else {\n      position++;\n    }\n    if (evolution > limit) {\n      throw new Error(\n        `You have reached the limit of ${limit}. You could still change this value using the limit option but it is likely to crash.`,\n      );\n    }\n  }\n\n  appendResult(results, currents, keys, options);\n  if (uniqueMFs) {\n    let uniqueMFsObject = {};\n    results.forEach((result) => {\n      uniqueMFsObject[result.mf + result.ionization.mf] = result;\n    });\n    results = Object.keys(uniqueMFsObject).map((k) => uniqueMFsObject[k]);\n  }\n  results.sort((a, b) => a.em - b.em);\n  return results;\n};\n\nlet ems = {};\n\n// internal method used as a cache\nfunction getMonoisotopicMass(mfString) {\n  if (!ems[mfString]) {\n    // we need to calculate based on the mf but not very often ...\n    let mf = new MF(mfString);\n    let info = mf.getInfo();\n    ems[mfString] = {\n      em: info.monoisotopicMass,\n      charge: info.charge,\n      mw: info.mass,\n      unsaturation: (info.unsaturation - 1) * 2,\n      atoms: info.atoms,\n    };\n  }\n  return ems[mfString];\n}\n\nfunction getEMFromParts(parts, currents, ionization) {\n  let charge = 0;\n  let em = 0;\n  let mw = 0;\n  let unsaturation = 0;\n  let validUnsaturation = true;\n  let atoms = {};\n\n  for (let i = 0; i < parts.length; i++) {\n    let part = parts[i][currents[i]];\n    if (part) {\n      let info = getMonoisotopicMass(part);\n      charge += info.charge;\n      em += info.em;\n      mw += info.mw;\n      sum(atoms, info.atoms);\n      if (info.unsaturation && validUnsaturation) {\n        unsaturation += info.unsaturation;\n      }\n    }\n  }\n\n  return {\n    charge,\n    em,\n    mw,\n    ionization: ionization,\n    unsaturation: validUnsaturation ? unsaturation / 2 + 1 : undefined,\n    atoms,\n  };\n}\n\nfunction appendResult(results, currents, keys, options = {}) {\n  const { canonizeMF, filter, ionizations } = options;\n  // this script is designed to combine molecular formula\n  // that may contain comments after a \"$\" sign\n  // therefore we should put all the comments at the ned\n\n  for (let ionization of ionizations) {\n    let result = getEMFromParts(keys, currents, ionization);\n    if (options.filterFct) {\n      let variables = [];\n      for (let key in options.filterFctVariables) {\n        variables.push(currents[options.filterFctVariables[key]]);\n      }\n\n      variables.push(\n        result.em,\n        (result.em + ionization.em - ionization.charge * ELECTRON_MASS) /\n          Math.abs(ionization.charge),\n        result.charge + result.ionization.charge,\n        result.unsaturation,\n        result.atoms,\n      );\n      if (!options.filterFct.apply(null, variables)) continue;\n    }\n\n    let match = matcher(result, filter);\n    if (!match) continue;\n    result.ms = match.ms;\n    result.ionization = match.ionization;\n    result.parts = [];\n    result.mf = '';\n\n    let comments = [];\n    for (let i = 0; i < keys.length; i++) {\n      let key = keys[i][currents[i]];\n      if (key) {\n        if (key.indexOf('$') > -1) {\n          comments.push(key.replace(/^[^$]*\\$/, ''));\n          key = key.replace(/\\$.*/, '');\n        }\n        result.parts[i] = key;\n        result.mf += key;\n      }\n    }\n    if (canonizeMF) {\n      result.mf = new MF(result.mf).toMF();\n    }\n    if (comments.length > 0) {\n      result.comment = comments.join(' ');\n    }\n    results.push(result);\n  }\n}\n","/* @license\nPapa Parse\nv5.3.0\nhttps://github.com/mholt/PapaParse\nLicense: MIT\n*/\n!function(e,t){\"function\"==typeof define&&define.amd?define([],t):\"object\"==typeof module&&\"undefined\"!=typeof exports?module.exports=t():e.Papa=t()}(this,function s(){\"use strict\";var f=\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:void 0!==f?f:{};var n=!f.document&&!!f.postMessage,o=n&&/blob:/i.test((f.location||{}).protocol),a={},h=0,b={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&&b.WORKERS_SUPPORTED){var r=function(){if(!b.WORKERS_SUPPORTED)return!1;var e=(i=f.URL||f.webkitURL||null,r=s.toString(),b.BLOB_URL||(b.BLOB_URL=i.createObjectURL(new Blob([\"(\",r,\")();\"],{type:\"text/javascript\"})))),t=new f.Worker(e);var i,r;return t.onmessage=m,t.id=h++,a[t.id]=t}();return r.userStep=t.step,r.userChunk=t.chunk,r.userComplete=t.complete,r.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,void r.postMessage({input:e,config:t,workerId:r.id})}var n=null;b.NODE_STREAM_INPUT,\"string\"==typeof e?n=t.download?new l(t):new p(t):!0===e.readable&&U(e.read)&&U(e.on)?n=new g(t):(f.File&&e instanceof File||e instanceof Object)&&(n=new c(t));return n.stream(e)},unparse:function(e,t){var n=!1,m=!0,_=\",\",v=\"\\r\\n\",s='\"',a=s+s,i=!1,r=null,o=!1;!function(){if(\"object\"!=typeof t)return;\"string\"!=typeof t.delimiter||b.BAD_DELIMITERS.filter(function(e){return-1!==t.delimiter.indexOf(e)}).length||(_=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&&(v=t.newline);\"string\"==typeof t.quoteChar&&(s=t.quoteChar);\"boolean\"==typeof t.header&&(m=t.header);if(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);\"boolean\"==typeof t.escapeFormulae&&(o=t.escapeFormulae)}();var h=new RegExp(q(s),\"g\");\"string\"==typeof e&&(e=JSON.parse(e));if(Array.isArray(e)){if(!e.length||Array.isArray(e[0]))return f(null,e,i);if(\"object\"==typeof e[0])return f(r||u(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),e.fields||(e.fields=Array.isArray(e.data[0])?e.fields:u(e.data[0])),Array.isArray(e.data[0])||\"object\"==typeof e.data[0]||(e.data=[e.data])),f(e.fields||[],e.data||[],i);throw new Error(\"Unable to serialize unrecognized input\");function u(e){if(\"object\"!=typeof e)return[];var t=[];for(var i in e)t.push(i);return t}function f(e,t,i){var r=\"\";\"string\"==typeof e&&(e=JSON.parse(e)),\"string\"==typeof t&&(t=JSON.parse(t));var n=Array.isArray(e)&&0<e.length,s=!Array.isArray(t[0]);if(n&&m){for(var a=0;a<e.length;a++)0<a&&(r+=_),r+=y(e[a],a);0<t.length&&(r+=v)}for(var o=0;o<t.length;o++){var h=n?e.length:t[o].length,u=!1,f=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 d=[],l=0;l<h;l++){var c=s?e[l]:l;d.push(t[o][c])}u=\"\"===d.join(\"\").trim()}if(!u){for(var p=0;p<h;p++){0<p&&!f&&(r+=_);var g=n&&s?e[p]:p;r+=y(t[o][g],p)}o<t.length-1&&(!i||0<h&&!f)&&(r+=v)}}return r}function y(e,t){if(null==e)return\"\";if(e.constructor===Date)return JSON.stringify(e).slice(1,25);!0===o&&\"string\"==typeof e&&null!==e.match(/^[=+\\-@].*$/)&&(e=\"'\"+e);var i=e.toString().replace(h,a),r=\"boolean\"==typeof n&&n||\"function\"==typeof n&&n(e,t)||Array.isArray(n)&&n[t]||function(e,t){for(var i=0;i<t.length;i++)if(-1<e.indexOf(t[i]))return!0;return!1}(i,b.BAD_DELIMITERS)||-1<i.indexOf(_)||\" \"===i.charAt(0)||\" \"===i.charAt(i.length-1);return r?s+i+s:i}}};if(b.RECORD_SEP=String.fromCharCode(30),b.UNIT_SEP=String.fromCharCode(31),b.BYTE_ORDER_MARK=\"\\ufeff\",b.BAD_DELIMITERS=[\"\\r\",\"\\n\",'\"',b.BYTE_ORDER_MARK],b.WORKERS_SUPPORTED=!n&&!!f.Worker,b.NODE_STREAM_INPUT=1,b.LocalChunkSize=10485760,b.RemoteChunkSize=5242880,b.DefaultDelimiter=\",\",b.Parser=w,b.ParserHandle=i,b.NetworkStreamer=l,b.FileStreamer=c,b.StringStreamer=p,b.ReadableStreamStreamer=g,f.jQuery){var d=f.jQuery;d.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()&&f.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){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()},b.parse(n.file,n.instanceConfig)}else U(o.complete)&&o.complete()}function u(){h.splice(0,1),e()}}}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=E(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(e,t){if(this.isFirstChunk&&U(this._config.beforeFirstChunk)){var i=this._config.beforeFirstChunk(e);void 0!==i&&(e=i)}this.isFirstChunk=!1,this._halted=!1;var r=this._partialLine+e;this._partialLine=\"\";var n=this._handle.parse(r,this._baseIndex,!this._finished);if(!this._handle.paused()&&!this._handle.aborted()){var s=n.meta.cursor;this._finished||(this._partialLine=r.substring(s-this._baseIndex),this._baseIndex=s),n&&n.data&&(this._rowCount+=n.data.length);var a=this._finished||this._config.preview&&this._rowCount>=this._config.preview;if(o)f.postMessage({results:n,workerId:b.WORKER_ID,finished:a});else if(U(this._config.chunk)&&!t){if(this._config.chunk(n,this._handle),this._handle.paused()||this._handle.aborted())return void(this._halted=!0);n=void 0,this._completeResults=void 0}return this._config.step||this._config.chunk||(this._completeResults.data=this._completeResults.data.concat(n.data),this._completeResults.errors=this._completeResults.errors.concat(n.errors),this._completeResults.meta=n.meta),this._completed||!a||!U(this._config.complete)||n&&n.meta.aborted||(this._config.complete(this._completeResults,this._input),this._completed=!0),a||n&&n.meta.paused||this._nextChunk(),n}this._halted=!0},this._sendError=function(e){U(this._config.error)?this._config.error(e):o&&this._config.error&&f.postMessage({workerId:b.WORKER_ID,error:e,finished:!1})}}function l(e){var r;(e=e||{}).chunkSize||(e.chunkSize=b.RemoteChunkSize),u.call(this,e),this._nextChunk=n?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),n||(r.onload=y(this._chunkLoaded,this),r.onerror=y(this._chunkError,this)),r.open(this._config.downloadRequestBody?\"POST\":\"GET\",this._input,!n),this._config.downloadRequestHeaders){var e=this._config.downloadRequestHeaders;for(var t in e)r.setRequestHeader(t,e[t])}if(this._config.chunkSize){var 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)}n&&0===r.status&&this._chunkError()}},this._chunkLoaded=function(){4===r.readyState&&(r.status<200||400<=r.status?this._chunkError():(this._start+=this._config.chunkSize?this._config.chunkSize:r.responseText.length,this._finished=!this._config.chunkSize||this._start>=function(e){var t=e.getResponseHeader(\"Content-Range\");if(null===t)return-1;return parseInt(t.substring(t.lastIndexOf(\"/\")+1))}(r),this.parseChunk(r.responseText)))},this._chunkError=function(e){var t=r.statusText||e;this._sendError(new Error(t))}}function c(e){var r,n;(e=e||{}).chunkSize||(e.chunkSize=b.LocalChunkSize),u.call(this,e);var s=\"undefined\"!=typeof FileReader;this.stream=function(e){this._input=e,n=e.slice||e.webkitSlice||e.mozSlice,s?((r=new FileReader).onload=y(this._chunkLoaded,this),r.onerror=y(this._chunkError,this)):r=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;if(this._config.chunkSize){var t=Math.min(this._start+this._config.chunkSize,this._input.size);e=n.call(e,this._start,t)}var i=r.readAsText(e,this._config.encoding);s||this._chunkLoaded({target:{result:i}})},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(r.error)}}function p(e){var i;u.call(this,e=e||{}),this.stream=function(e){return i=e,this._nextChunk()},this._nextChunk=function(){if(!this._finished){var e,t=this._config.chunkSize;return t?(e=i.substring(0,t),i=i.substring(t)):(e=i,i=\"\"),this._finished=!i,this.parseChunk(e)}}}function g(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(_){var a,o,h,r=Math.pow(2,53),n=-r,s=/^\\s*-?(\\d+\\.?|\\.\\d+|\\d+\\.\\d+)(e[-+]?\\d+)?\\s*$/,u=/(\\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))/,t=this,i=0,f=0,d=!1,e=!1,l=[],c={data:[],errors:[],meta:{}};if(U(_.step)){var p=_.step;_.step=function(e){if(c=e,m())g();else{if(g(),0===c.data.length)return;i+=e.data.length,_.preview&&i>_.preview?o.abort():(c.data=c.data[0],p(c,t))}}}function v(e){return\"greedy\"===_.skipEmptyLines?\"\"===e.join(\"\").trim():1===e.length&&0===e[0].length}function g(){if(c&&h&&(k(\"Delimiter\",\"UndetectableDelimiter\",\"Unable to auto-detect delimiting character; defaulted to '\"+b.DefaultDelimiter+\"'\"),h=!1),_.skipEmptyLines)for(var e=0;e<c.data.length;e++)v(c.data[e])&&c.data.splice(e--,1);return m()&&function(){if(!c)return;function e(e,t){U(_.transformHeader)&&(e=_.transformHeader(e,t)),l.push(e)}if(Array.isArray(c.data[0])){for(var t=0;m()&&t<c.data.length;t++)c.data[t].forEach(e);c.data.splice(0,1)}else c.data.forEach(e)}(),function(){if(!c||!_.header&&!_.dynamicTyping&&!_.transform)return c;function e(e,t){var i,r=_.header?{}:[];for(i=0;i<e.length;i++){var n=i,s=e[i];_.header&&(n=i>=l.length?\"__parsed_extra\":l[i]),_.transform&&(s=_.transform(s,n)),s=y(n,s),\"__parsed_extra\"===n?(r[n]=r[n]||[],r[n].push(s)):r[n]=s}return _.header&&(i>l.length?k(\"FieldMismatch\",\"TooManyFields\",\"Too many fields: expected \"+l.length+\" fields but parsed \"+i,f+t):i<l.length&&k(\"FieldMismatch\",\"TooFewFields\",\"Too few fields: expected \"+l.length+\" fields but parsed \"+i,f+t)),r}var t=1;!c.data.length||Array.isArray(c.data[0])?(c.data=c.data.map(e),t=c.data.length):c.data=e(c.data,0);_.header&&c.meta&&(c.meta.fields=l);return f+=t,c}()}function m(){return _.header&&0===l.length}function y(e,t){return i=e,_.dynamicTypingFunction&&void 0===_.dynamicTyping[i]&&(_.dynamicTyping[i]=_.dynamicTypingFunction(i)),!0===(_.dynamicTyping[i]||_.dynamicTyping)?\"true\"===t||\"TRUE\"===t||\"false\"!==t&&\"FALSE\"!==t&&(function(e){if(s.test(e)){var t=parseFloat(e);if(n<t&&t<r)return!0}return!1}(t)?parseFloat(t):u.test(t)?new Date(t):\"\"===t?null:t):t;var i}function k(e,t,i,r){var n={type:e,code:t,message:i};void 0!==r&&(n.row=r),c.errors.push(n)}this.parse=function(e,t,i){var r=_.quoteChar||'\"';if(_.newline||(_.newline=function(e,t){e=e.substring(0,1048576);var i=new RegExp(q(t)+\"([^]*?)\"+q(t),\"gm\"),r=(e=e.replace(i,\"\")).split(\"\\r\"),n=e.split(\"\\n\"),s=1<n.length&&n[0].length<r[0].length;if(1===r.length||s)return\"\\n\";for(var a=0,o=0;o<r.length;o++)\"\\n\"===r[o][0]&&a++;return a>=r.length/2?\"\\r\\n\":\"\\r\"}(e,r)),h=!1,_.delimiter)U(_.delimiter)&&(_.delimiter=_.delimiter(e),c.meta.delimiter=_.delimiter);else{var n=function(e,t,i,r,n){var s,a,o,h;n=n||[\",\",\"\\t\",\"|\",\";\",b.RECORD_SEP,b.UNIT_SEP];for(var u=0;u<n.length;u++){var f=n[u],d=0,l=0,c=0;o=void 0;for(var p=new w({comments:r,delimiter:f,newline:t,preview:10}).parse(e),g=0;g<p.data.length;g++)if(i&&v(p.data[g]))c++;else{var m=p.data[g].length;l+=m,void 0!==o?0<m&&(d+=Math.abs(m-o),o=m):o=m}0<p.data.length&&(l/=p.data.length-c),(void 0===a||d<=a)&&(void 0===h||h<l)&&1.99<l&&(a=d,s=f,h=l)}return{successful:!!(_.delimiter=s),bestDelimiter:s}}(e,_.newline,_.skipEmptyLines,_.comments,_.delimitersToGuess);n.successful?_.delimiter=n.bestDelimiter:(h=!0,_.delimiter=b.DefaultDelimiter),c.meta.delimiter=_.delimiter}var s=E(_);return _.preview&&_.header&&s.preview++,a=e,o=new w(s),c=o.parse(a,t,i),g(),d?{meta:{paused:!0}}:c||{meta:{paused:!1}}},this.paused=function(){return d},this.pause=function(){d=!0,o.abort(),a=U(_.chunk)?\"\":a.substring(o.getCharIndex())},this.resume=function(){t.streamer._halted?(d=!1,t.streamer.parseChunk(a,!0)):setTimeout(t.resume,3)},this.aborted=function(){return e},this.abort=function(){e=!0,o.abort(),c.meta.aborted=!0,U(_.complete)&&_.complete(c),a=\"\"}}function q(e){return e.replace(/[.*+?^${}()|[\\]\\\\]/g,\"\\\\$&\")}function w(e){var O,D=(e=e||{}).delimiter,I=e.newline,T=e.comments,A=e.step,L=e.preview,F=e.fastMode,z=O=void 0===e.quoteChar?'\"':e.quoteChar;if(void 0!==e.escapeChar&&(z=e.escapeChar),(\"string\"!=typeof D||-1<b.BAD_DELIMITERS.indexOf(D))&&(D=\",\"),T===D)throw new Error(\"Comment character same as delimiter\");!0===T?T=\"#\":(\"string\"!=typeof T||-1<b.BAD_DELIMITERS.indexOf(T))&&(T=!1),\"\\n\"!==I&&\"\\r\"!==I&&\"\\r\\n\"!==I&&(I=\"\\n\");var M=0,j=!1;this.parse=function(a,t,i){if(\"string\"!=typeof a)throw new Error(\"Input must be a string\");var r=a.length,e=D.length,n=I.length,s=T.length,o=U(A),h=[],u=[],f=[],d=M=0;if(!a)return R();if(F||!1!==F&&-1===a.indexOf(O)){for(var l=a.split(I),c=0;c<l.length;c++){if(f=l[c],M+=f.length,c!==l.length-1)M+=I.length;else if(i)return R();if(!T||f.substring(0,s)!==T){if(o){if(h=[],b(f.split(D)),S(),j)return R()}else b(f.split(D));if(L&&L<=c)return h=h.slice(0,L),R(!0)}}return R()}for(var p=a.indexOf(D,M),g=a.indexOf(I,M),m=new RegExp(q(z)+q(O),\"g\"),_=a.indexOf(O,M);;)if(a[M]!==O)if(T&&0===f.length&&a.substring(M,M+s)===T){if(-1===g)return R();M=g+n,g=a.indexOf(I,M),p=a.indexOf(D,M)}else{if(-1!==p&&(p<g||-1===g)){if(!(p<_)){f.push(a.substring(M,p)),M=p+e,p=a.indexOf(D,M);continue}var v=x(p,_,g);if(v&&void 0!==v.nextDelim){p=v.nextDelim,_=v.quoteSearch,f.push(a.substring(M,p)),M=p+e,p=a.indexOf(D,M);continue}}if(-1===g)break;if(f.push(a.substring(M,g)),C(g+n),o&&(S(),j))return R();if(L&&h.length>=L)return R(!0)}else for(_=M,M++;;){if(-1===(_=a.indexOf(O,_+1)))return i||u.push({type:\"Quotes\",code:\"MissingQuotes\",message:\"Quoted field unterminated\",row:h.length,index:M}),E();if(_===r-1)return E(a.substring(M,_).replace(m,O));if(O!==z||a[_+1]!==z){if(O===z||0===_||a[_-1]!==z){-1!==p&&p<_+1&&(p=a.indexOf(D,_+1)),-1!==g&&g<_+1&&(g=a.indexOf(I,_+1));var y=w(-1===g?p:Math.min(p,g));if(a[_+1+y]===D){f.push(a.substring(M,_).replace(m,O)),a[M=_+1+y+e]!==O&&(_=a.indexOf(O,M)),p=a.indexOf(D,M),g=a.indexOf(I,M);break}var k=w(g);if(a.substring(_+1+k,_+1+k+n)===I){if(f.push(a.substring(M,_).replace(m,O)),C(_+1+k+n),p=a.indexOf(D,M),_=a.indexOf(O,M),o&&(S(),j))return R();if(L&&h.length>=L)return R(!0);break}u.push({type:\"Quotes\",code:\"InvalidQuotes\",message:\"Trailing quote on quoted field is malformed\",row:h.length,index:M}),_++}}else _++}return E();function b(e){h.push(e),d=M}function w(e){var t=0;if(-1!==e){var i=a.substring(_+1,e);i&&\"\"===i.trim()&&(t=i.length)}return t}function E(e){return i||(void 0===e&&(e=a.substring(M)),f.push(e),M=r,b(f),o&&S()),R()}function C(e){M=e,b(f),f=[],g=a.indexOf(I,M)}function R(e){return{data:h,errors:u,meta:{delimiter:D,linebreak:I,aborted:j,truncated:!!e,cursor:d+(t||0)}}}function S(){A(R()),h=[],u=[]}function x(e,t,i){var r={nextDelim:void 0,quoteSearch:void 0},n=a.indexOf(O,t+1);if(t<e&&e<n&&(n<i||-1===i)){var s=a.indexOf(D,n);if(-1===s)return r;n<s&&(n=a.indexOf(O,n+1)),r=x(s,n,i)}else r={nextDelim:e,quoteSearch:t};return r}},this.abort=function(){j=!0},this.getCharIndex=function(){return M}}function m(e){var t=e.data,i=a[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:v,resume:v};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=a[e];U(i.userComplete)&&i.userComplete(t),i.terminate(),delete a[e]}function v(){throw new Error(\"Not implemented.\")}function E(e){if(\"object\"!=typeof e||null===e)return e;var t=Array.isArray(e)?[]:{};for(var i in e)t[i]=E(e[i]);return t}function y(e,t){return function(){e.apply(t,arguments)}}function U(e){return\"function\"==typeof e}return o&&(f.onmessage=function(e){var t=e.data;void 0===b.WORKER_ID&&t&&(b.WORKER_ID=t.workerId);if(\"string\"==typeof t.input)f.postMessage({workerId:b.WORKER_ID,results:b.parse(t.input,t.config),finished:!0});else if(f.File&&t.input instanceof File||t.input instanceof Object){var i=b.parse(t.input,t.config);i&&f.postMessage({workerId:b.WORKER_ID,results:i,finished:!0})}}),(l.prototype=Object.create(u.prototype)).constructor=l,(c.prototype=Object.create(u.prototype)).constructor=c,(p.prototype=Object.create(p.prototype)).constructor=p,(g.prototype=Object.create(u.prototype)).constructor=g,b});","'use strict';\n\n/* eslint-env browser */\n\nmodule.exports = async function fetchTextBrowser(url) {\n  const result = await fetch(url);\n  return result.text();\n};\n","'use strict';\n\nlet generateMFs = require('mf-generator');\nlet MF = require('mf-parser/src/MF');\nlet Papa = require('papaparse');\n\nconst fetchText = require('./util/fetchText');\n\nasync function mfFromGoogleSheet(url, options = {}) {\n  let { urlReferences } = options;\n\n  if (urlReferences) {\n    let results = await Promise.all([fetchText(url), fetchText(urlReferences)]);\n    return parse(results[0], results[1]);\n  } else {\n    let result = await fetchText(url);\n    return parse(result);\n  }\n\n  function parse(tsv, tsvReferences) {\n    let parsed = Papa.parse(tsv, {\n      delimiter: '\\t',\n      header: true,\n    });\n    let fields = parsed.meta.fields;\n    let infoFields = fields.filter(\n      (a) =>\n        !['mf', 'modif', 'ESI', 'MALDI', 'positive', 'negative'].includes(a),\n    );\n    let formulas = parsed.data;\n\n    let references = {};\n    if (tsvReferences) {\n      let referencesArray = Papa.parse(tsvReferences, {\n        delimiter: '\\t',\n        header: true,\n      }).data;\n\n      referencesArray.forEach(function (r) {\n        references[r.label] = r;\n      });\n    }\n\n    let results = [];\n    for (let formula of formulas) {\n      if (tsvReferences) {\n        // we add references\n        let refs = formula.references.split(/[ ,]+/);\n        formula.references = [];\n        for (let ref of refs) {\n          formula.references.push(references[ref]);\n        }\n      }\n      // we need to calculate all the possibilities\n      try {\n        let mfs = generateMFs([formula.mf], { ionizations: formula.modif });\n        for (let mf of mfs) {\n          mf.info = {};\n          for (let infoField of infoFields) {\n            mf.info[infoField] = formula[infoField];\n          }\n          if (\n            !formula.ESI &&\n            !formula.MALDI &&\n            !formula.positive &&\n            !formula.negative\n          ) {\n            mf.filter = {\n              ESI: true,\n              MALDI: true,\n              positive: true,\n              negative: true,\n            };\n          } else {\n            mf.filter = {\n              ESI: formula.ESI === 'X' ? true : false,\n              MALDI: formula.MALDI === 'X' ? true : false,\n              positive: formula.positive === 'X' ? true : false,\n              negative: formula.negative === 'X' ? true : false,\n            };\n          }\n          mf.mf = new MF(mf.mf).toMF();\n          results.push(mf);\n        }\n      } catch (e) {\n        // eslint-disable-next-line no-console\n        console.warn(\n          'Non parsable molecular formula: ',\n          formula.mf,\n          formula.modif,\n          e.toString(),\n        );\n      }\n    }\n\n    results = results.filter(function (a) {\n      return a.ms.em !== 0;\n    });\n\n    results.sort(function (a, b) {\n      return a.ms.em - b.ms.em;\n    });\n\n    let uniqueResults = [results[0]];\n    for (let i = 1; i < results.length; i++) {\n      if (results[i - 1].ms.em !== results[i].ms.em) {\n        uniqueResults.push(results[i]);\n      }\n    }\n\n    return uniqueResults;\n  }\n}\n\nmodule.exports = mfFromGoogleSheet;\n","'use strict';\n\nconst mfFromGoogleSheet = require('mf-from-google-sheet');\n\nmodule.exports = async function loadGoogleSheet(options = {}) {\n  let {\n    refUUID = '1C_H9aiJyu9M9in7sHMOaz-d3Sv758rE72oLxEKH9ioA',\n    uuid = '1LrJCl9-xSZKhGA9Y8nKVkYwB-mEOHBkTXg5qYXeFpZY',\n  } = options;\n  if (options.uuid && !options.refUUID) refUUID = '';\n\n  let url = `https://googledocs.cheminfo.org/spreadsheets/d/${uuid}/export?format=tsv`;\n  let refURL = refUUID\n    ? `https://googledocs.cheminfo.org/spreadsheets/d/${refUUID}/export?format=tsv`\n    : '';\n  let data = await mfFromGoogleSheet(url, refURL);\n  data.sort((a, b) => a.em - b.em);\n  return data;\n};\n","'use strict';\n\nconst JSZip = require('jszip/dist/jszip');\n\nconst fetch = require('./util/fetchArrayBuffer');\n\nconst loadingPromises = {};\n\nmodule.exports = async function loadKnapSack(options = {}) {\n  const {\n    url = 'https://couch.cheminfo.org/cheminfo-public/d2eb480198c80275a1d05dd3609414f9/upload/ms.zip',\n  } = options;\n\n  if (!loadingPromises[url]) {\n    loadingPromises[url] = fetch(url);\n  }\n  const buffer = await loadingPromises[url];\n\n  const jsZip = new JSZip();\n  let zip = await jsZip.loadAsync(buffer);\n  let fileData = await zip.files['ms.json'].async('string');\n  let data = JSON.parse(fileData);\n\n  data.forEach((d) => {\n    d.url = `http://kanaya.naist.jp/knapsack_jsp/information.jsp?word=${d.id}`;\n  });\n\n  data.sort((a, b) => a.em - b.em);\n\n  return data;\n};\n","'use strict';\n\nconst ELECTRON_MASS = require('chemical-elements/src/constants').ELECTRON_MASS;\n\n/**\n * returns all the possible neutral mass for a defined experimental (targetMass) mass\n */\n\nlet TargetMassCache = function TargetMassCache(\n  targetMass,\n  possibilities,\n  options = {},\n) {\n  const {\n    allowNeutral = false, // msem because em in this case !\n    minCharge = Number.MIN_SAFE_INTEGER,\n    maxCharge = Number.MAX_SAFE_INTEGER,\n    charge = 0,\n    precision = 100,\n  } = options;\n  if (!possibilities || possibilities.length === 0) return {};\n\n  let firstPossibility = possibilities[0];\n  let currentMinCharge = Math.max(\n    minCharge,\n    firstPossibility.minCharge + charge,\n  );\n  let currentMaxCharge = Math.min(\n    maxCharge,\n    firstPossibility.maxCharge + charge,\n  );\n\n  this.minCharge = currentMinCharge;\n  this.maxCharge = currentMaxCharge;\n\n  let size = this.maxCharge - this.minCharge + 1;\n  this.data = [];\n  let minMass = 0;\n  let maxMass = 0;\n  let range = (targetMass * precision) / 1e6;\n  for (let i = 0; i < size; i++) {\n    let currentCharge = i + this.minCharge;\n    if (currentCharge === 0) {\n      if (allowNeutral) {\n        minMass = targetMass - range;\n        maxMass = targetMass + range;\n      } else {\n        minMass = Number.MAX_SAFE_INTEGER;\n        maxMass = Number.MIN_SAFE_INTEGER;\n      }\n    } else {\n      minMass =\n        (targetMass - range) * Math.abs(currentCharge) +\n        ELECTRON_MASS * currentCharge;\n      maxMass =\n        (targetMass + range) * Math.abs(currentCharge) +\n        ELECTRON_MASS * currentCharge;\n    }\n\n    this.data.push({\n      charge: currentCharge,\n      minMass,\n      maxMass,\n    });\n  }\n};\n\nmodule.exports = TargetMassCache;\n\nTargetMassCache.prototype.getMinMass = function (charge) {\n  return this.data[charge - this.minCharge]\n    ? this.data[charge - this.minCharge].minMass\n    : Number.MAX_SAFE_INTEGER;\n};\n\nTargetMassCache.prototype.getMaxMass = function (charge) {\n  return this.data[charge - this.minCharge]\n    ? this.data[charge - this.minCharge].maxMass\n    : Number.MIN_SAFE_INTEGER;\n};\n","'use strict';\n\nconst Kind = require('mf-parser/src/Kind');\nconst MF = require('mf-parser/src/MF');\nconst parse = require('mf-parser/src/parse');\n\nmodule.exports = function preprocessRanges(ranges) {\n  ranges = JSON.parse(JSON.stringify(ranges));\n  if (typeof ranges === 'string') {\n    // need to convert to ranges\n    let parsed = parse(ranges.replace(/[\\r\\n\\t ]/g, ''));\n    let newRanges = [];\n    let current = {\n      mf: '',\n      min: 1,\n      max: 1,\n    };\n\n    // example ClBr2(CH2)0-2NO\n    // the idea is that has long as we don't have a range we don't really care\n    // there is a limitation is that the range has to be first level of parenthesis\n    let parenthesisLevel = 0;\n    let currentMF = ''; // start at an atom first level or a parenthesis\n    for (let item of parsed) {\n      switch (item.kind) {\n        case Kind.ATOM:\n          if (parenthesisLevel === 0 && currentMF) {\n            current.mf += currentMF;\n            currentMF = '';\n          }\n          currentMF += item.value;\n          break;\n        case Kind.ISOTOPE:\n          if (parenthesisLevel === 0 && currentMF) {\n            current.mf += currentMF;\n            currentMF = '';\n          }\n          currentMF += `[${item.value.isotope}${item.value.atom}]`;\n          break;\n        case Kind.MULTIPLIER:\n          if (parenthesisLevel === 0 && currentMF) {\n            current.mf += currentMF + item.value;\n            currentMF = '';\n          } else {\n            currentMF += item.value;\n          }\n          break;\n        case Kind.MULTIPLIER_RANGE:\n          if (parenthesisLevel !== 0) {\n            throw new Error('Range multiplier can only be at the first level');\n          }\n          newRanges.push({\n            mf: currentMF,\n            min: item.value.from,\n            max: item.value.to,\n          });\n          currentMF = '';\n          break;\n        case Kind.OPENING_PARENTHESIS:\n          parenthesisLevel++;\n          currentMF += '(';\n          break;\n        case Kind.CLOSING_PARENTHESIS:\n          parenthesisLevel--;\n          currentMF += ')';\n          break;\n        default:\n          throw Error(`can not preprocess ${ranges}`);\n      }\n    }\n    if (currentMF) {\n      current.mf += currentMF;\n    }\n    if (current.mf) {\n      newRanges.push(current);\n    }\n    ranges = newRanges;\n  }\n\n  let possibilities = [];\n  for (let i = 0; i < ranges.length; i++) {\n    let range = ranges[i];\n    let min = range.min === undefined ? 0 : range.min;\n    let max = range.max === undefined ? 1 : range.max;\n    let possibility = {\n      mf: range.mf,\n      originalMinCount: min, // value defined by the user\n      originalMaxCount: max, // value defined by the user\n      currentMinCount: min,\n      currentMaxCount: max,\n      currentCount: min,\n      currentMonoisotopicMass: 0,\n      currentCharge: 0,\n      currentUnsaturation: 0,\n      initialOrder: i,\n      minInnerMass: 0,\n      maxInnerMass: 0,\n      minInnerCharge: 0,\n      maxInnerCharge: 0,\n      minCharge: 0,\n      maxCharge: 0,\n      minMass: 0,\n      maxMass: 0,\n      innerCharge: false,\n    };\n    possibilities.push(possibility);\n    let info = new MF(range.mf).getInfo();\n    possibility.em = range.em || info.monoisotopicMass;\n    possibility.charge = range.charge || info.charge;\n    possibility.unsaturation =\n      range.unsaturation === undefined\n        ? (info.unsaturation - 1) * 2\n        : range.unsaturation;\n    if (possibility.mf !== info.mf) possibility.isGroup = true;\n  }\n  possibilities = possibilities.filter(\n    (r) => r.originalMinCount !== 0 || r.originalMaxCount !== 0,\n  );\n  // we will sort the way we analyse the data\n  // 1. The one possibility parameter\n  // 2. The charged part\n  // 3. Decreasing em\n  possibilities.sort((a, b) => {\n    if (a.originalMinCount === a.originalMaxCount) return -1; // should be in front, they are 'static'\n    if (b.originalMinCount === b.originalMaxCount) return 1;\n    if (a.charge && b.charge) {\n      if (Math.abs(a.charge) > Math.abs(b.charge)) return -1;\n      if (Math.abs(a.charge) < Math.abs(b.charge)) return 1;\n      return b.em - a.em;\n    }\n    if (a.charge) return -1;\n    if (b.charge) return 1;\n    return b.em - a.em;\n  });\n\n  // we calculate couple of fixed values\n\n  for (let i = 0; i < possibilities.length; i++) {\n    for (let j = i; j < possibilities.length; j++) {\n      let possibility = possibilities[j];\n      if (possibility.em > 0) {\n        possibilities[i].minMass +=\n          possibility.em * possibility.originalMinCount;\n        possibilities[i].maxMass +=\n          possibility.em * possibility.originalMaxCount;\n      } else {\n        possibilities[i].minMass +=\n          possibility.em * possibility.originalMaxCount;\n        possibilities[i].maxMass +=\n          possibility.em * possibility.originalMinCount;\n      }\n      if (possibility.charge > 0) {\n        possibilities[i].minCharge +=\n          possibility.charge * possibility.originalMinCount;\n        possibilities[i].maxCharge +=\n          possibility.charge * possibility.originalMaxCount;\n      } else {\n        possibilities[i].minCharge +=\n          possibility.charge * possibility.originalMaxCount;\n        possibilities[i].maxCharge +=\n          possibility.charge * possibility.originalMinCount;\n      }\n    }\n  }\n\n  for (let i = 0; i < possibilities.length; i++) {\n    if (i < possibilities.length - 1) {\n      let possibility = possibilities[i];\n      let innerPossibility = possibilities[i + 1];\n      possibility.minInnerMass = innerPossibility.minMass;\n      possibility.maxInnerMass = innerPossibility.maxMass;\n      possibility.minInnerCharge = innerPossibility.minCharge;\n      possibility.maxInnerCharge = innerPossibility.maxCharge;\n      if (possibility.minInnerCharge || possibility.maxInnerCharge) {\n        possibility.innerCharge = true;\n      }\n    }\n  }\n\n  return possibilities;\n};\n","'use strict';\n\nconst atomSorter = require('atom-sorter');\nconst getMsInfo = require('mf-utilities/src/getMsInfo');\nconst preprocessIonizations = require('mf-utilities/src/preprocessIonizations');\n\nconst TargetMassCache = require('./TargetMassCache');\nconst preprocessRanges = require('./preprocessRanges');\n\nlet targetMassCache;\n\n/**\n * Returns possible combinations\n * {number} [targetMass]\n * {object} [options={}]\n * {string} [options.ionizations=''] - comma separated list of ionizations\n * @return {}\n */\n\nmodule.exports = function (targetMass, options = {}) {\n  const {\n    minCharge = Number.MIN_SAFE_INTEGER,\n    maxCharge = Number.MAX_SAFE_INTEGER,\n    unsaturation = {},\n    maxIterations = 1e8,\n    allowNeutral = true, // if there is no msem we use em !\n    ranges = [\n      { mf: 'C', min: 0, max: 100 },\n      { mf: 'H', min: 0, max: 100 },\n      { mf: 'O', min: 0, max: 100 },\n      { mf: 'N', min: 0, max: 100 },\n    ],\n  } = options;\n\n  let filterUnsaturation = unsaturation ? true : false;\n  // we calculate not the real unsaturation but the one before dividing by 2 + 1\n  let fakeMinUnsaturation =\n    unsaturation.min === undefined\n      ? Number.MIN_SAFE_INTEGER\n      : (unsaturation.min - 1) * 2;\n  let fakeMaxUnsaturation =\n    unsaturation.max === undefined\n      ? Number.MAX_SAFE_INTEGER\n      : (unsaturation.max - 1) * 2;\n\n  let filterCharge =\n    minCharge !== Number.MIN_SAFE_INTEGER ||\n    maxCharge !== Number.MAX_SAFE_INTEGER;\n\n  let result = {\n    mfs: [],\n    info: {\n      numberMFEvaluated: 0,\n      numberResults: 0,\n    },\n  };\n  let orderMapping = []; // used to sort the atoms\n\n  // we need to make the processing for all the ionizations\n  let ionizations = preprocessIonizations(options.ionizations);\n  for (let ionization of ionizations) {\n    let currentIonization = {\n      currentMonoisotopicMass: ionization.em || 0,\n      currentCharge: ionization.charge,\n      currentUnsaturation: 0, // we don't take into account the unsaturation of the ionization agent\n    };\n    // if (DEBUG) console.log('new ionization', ionization.mf, ionization.em, ionization.charge);\n    // ionization em and charge will be used to set the first atom value\n    let possibilities = preprocessRanges(ranges);\n    orderMapping = getOrderMapping(possibilities);\n\n    if (possibilities.length === 0) return { mfs: [] };\n    targetMassCache = new TargetMassCache(\n      targetMass,\n      possibilities,\n      Object.assign({}, options, { charge: ionization.charge }),\n    );\n\n    let theEnd = false;\n    let maxPosition = possibilities.length;\n    let lastPosition = possibilities.length - 1;\n    let currentPosition = 0;\n    let currentAtom;\n    let previousAtom;\n    let lastPossibility = possibilities[lastPosition];\n\n    initializePossibilities(possibilities, currentIonization);\n\n    //  if (DEBUG) console.log('possibilities', possibilities.map((a) => `${a.mf + a.originalMinCount}-${a.originalMaxCount}`));\n\n    let isValid = false; // designed so that the first time it is not a valid solution\n    while (!theEnd) {\n      if (result.info.numberMFEvaluated++ > maxIterations) {\n        throw Error(\n          `Iteration number is over the current maximum of: ${maxIterations}`,\n        );\n      }\n      if (filterUnsaturation) {\n        let unsaturationValue = lastPossibility.currentUnsaturation;\n        let isOdd = Math.abs(unsaturationValue % 2);\n        if (\n          (unsaturation.onlyInteger && isOdd === 1) ||\n          (unsaturation.onlyNonInteger && isOdd === 0) ||\n          fakeMinUnsaturation > unsaturationValue ||\n          fakeMaxUnsaturation < unsaturationValue\n        ) {\n          isValid = false;\n        }\n      }\n      if (\n        filterCharge &&\n        (lastPossibility.currentCharge < minCharge ||\n          lastPossibility.currentCharge > maxCharge)\n      ) {\n        isValid = false;\n      }\n\n      if (isValid) {\n        let minMass = targetMassCache.getMinMass(lastPossibility.currentCharge);\n        let maxMass = targetMassCache.getMaxMass(lastPossibility.currentCharge);\n        if (\n          lastPossibility.currentMonoisotopicMass < minMass ||\n          lastPossibility.currentMonoisotopicMass > maxMass\n        ) {\n          isValid = false;\n        }\n      }\n      if (isValid) {\n        result.mfs.push(\n          getResult(\n            possibilities,\n            targetMass,\n            allowNeutral,\n            ionization,\n            orderMapping,\n          ),\n        );\n        result.info.numberResults++;\n      }\n\n      isValid = true;\n      // we need to setup all the arrays if possible\n      while (currentPosition < maxPosition && currentPosition >= 0) {\n        currentAtom = possibilities[currentPosition];\n        previousAtom =\n          currentPosition === 0\n            ? currentIonization\n            : possibilities[currentPosition - 1];\n        if (currentAtom.currentCount < currentAtom.currentMaxCount) {\n          currentAtom.currentCount++;\n          updateCurrentAtom(currentAtom, previousAtom);\n          if (currentPosition < lastPosition) {\n            currentPosition++;\n            setCurrentMinMax(\n              possibilities[currentPosition],\n              possibilities[currentPosition - 1],\n            );\n          } else {\n            break;\n          }\n        } else {\n          currentPosition--;\n        }\n      }\n\n      if (currentPosition < 0) {\n        theEnd = true;\n      }\n    }\n  }\n\n  result.mfs.sort((a, b) => Math.abs(a.ms.ppm) - Math.abs(b.ms.ppm));\n  return result;\n};\n\nfunction updateCurrentAtom(currentAtom, previousAtom) {\n  currentAtom.currentMonoisotopicMass =\n    previousAtom.currentMonoisotopicMass +\n    currentAtom.em * currentAtom.currentCount;\n  currentAtom.currentCharge =\n    previousAtom.currentCharge + currentAtom.charge * currentAtom.currentCount;\n  currentAtom.currentUnsaturation =\n    previousAtom.currentUnsaturation +\n    currentAtom.unsaturation * currentAtom.currentCount;\n}\n\nfunction getResult(\n  possibilities,\n  targetMass,\n  allowNeutralMolecules,\n  ionization,\n  orderMapping,\n) {\n  let lastPossibility = possibilities[possibilities.length - 1];\n\n  let result = {\n    em: lastPossibility.currentMonoisotopicMass - ionization.em,\n    unsaturation: lastPossibility.currentUnsaturation,\n    mf: '',\n    charge: lastPossibility.currentCharge - ionization.charge,\n    ionization,\n  };\n\n  // we check that the first time we meet the ionization group it does not end\n  // in the final result\n\n  for (let i = 0; i < possibilities.length; i++) {\n    let possibility = possibilities[orderMapping[i]];\n    if (possibility.currentCount !== 0) {\n      if (possibility.isGroup) {\n        result.mf += `(${possibility.mf})`;\n        if (possibility.currentCount !== 1) {\n          result.mf += possibility.currentCount;\n        }\n      } else {\n        result.mf += possibility.mf;\n        if (possibility.currentCount !== 1) {\n          result.mf += possibility.currentCount;\n        }\n      }\n    }\n  }\n  result.unsaturation = (result.unsaturation + Math.abs(result.charge)) / 2 + 1;\n  result.ms = getMsInfo(result, { targetMass, allowNeutralMolecules }).ms;\n  return result;\n}\n\nfunction setCurrentMinMax(currentAtom, previousAtom) {\n  // the current min max can only be optimize if the charge will not change anymore\n  if (currentAtom.innerCharge === true || currentAtom.charge !== 0) {\n    currentAtom.currentMinCount = currentAtom.originalMinCount;\n    currentAtom.currentMaxCount = currentAtom.originalMaxCount;\n    currentAtom.currentCount = currentAtom.currentMinCount - 1;\n  } else {\n    // no more change of charge, we can optimize\n    let currentMass =\n      previousAtom !== undefined ? previousAtom.currentMonoisotopicMass : 0;\n    let currentCharge =\n      previousAtom !== undefined ? previousAtom.currentCharge : 0;\n    currentAtom.currentMinCount = Math.max(\n      Math.floor(\n        (targetMassCache.getMinMass(currentCharge) -\n          currentMass -\n          currentAtom.maxInnerMass) /\n          currentAtom.em,\n      ),\n      currentAtom.originalMinCount,\n    );\n    currentAtom.currentMaxCount = Math.min(\n      Math.floor(\n        (targetMassCache.getMaxMass(currentCharge) -\n          currentMass -\n          currentAtom.minInnerMass) /\n          currentAtom.em,\n      ),\n      currentAtom.originalMaxCount,\n    );\n    currentAtom.currentCount = currentAtom.currentMinCount - 1;\n  }\n}\n\nfunction initializePossibilities(possibilities, currentIonization) {\n  for (let i = 0; i < possibilities.length; i++) {\n    if (i === 0) {\n      updateCurrentAtom(possibilities[i], currentIonization);\n      setCurrentMinMax(possibilities[i], currentIonization);\n    } else {\n      updateCurrentAtom(possibilities[i], possibilities[i - 1]);\n    }\n  }\n}\n\n// eslint-disable-next-line no-unused-vars\nfunction possibilitiesToString(possibilities) {\n  return possibilities.map((a) => [\n    `mf:${a.mf}`,\n    `current:${a.currentCount}`,\n    `min:${a.currentMinCount}`,\n    `max:${a.currentMaxCount}`,\n    `charge:${a.currentCharge}`,\n  ]);\n}\n\nfunction getOrderMapping(possibilities) {\n  let mapping = possibilities.map((p, i) => ({ atom: p.mf, index: i }));\n  mapping.sort((a, b) => {\n    return atomSorter(a.atom, b.atom);\n  });\n  return mapping.map((a) => a.index);\n}\n","'use strict';\n\nconst findMFs = require('mf-finder');\n\n/**\n * Generates a database 'monoisotopic' from an array of molecular formula\n\n/**\n * Generates a database 'generated' from an array of molecular formula\n * @param {number} mass - Monoisotopic mass\n * @param {object} [options={}]\n * @param {string} [options.databaseName='monoisotopic']\n * @param {number} [options.maxIterations=10000000] - Maximum number of results\n * @param {string} [options.ionizations=''] - string containing a comma separated list of modifications\n * @param {string} [options.ranges='C0-100 H0-100 O0-100 N0-100'] - range of mfs to search\n * @param {number} [options.minCharge=-Infinity] - Minimal charge\n * @param {number} [options.maxCharge=+Infinity] - Maximal charge\n * @param {number} [options.precision=100] - Allowed mass range based on precision\n * @param {number} [options.unsaturation={}]\n * @param {number} [options.unsaturation.min=-Infinity] - Minimal unsaturation\n * @param {number} [options.unsaturation.max=+Infinity] - Maximal unsaturation\n * @param {number} [options.unsaturation.onlyInteger=false] - Integer unsaturation\n * @param {number} [options.unsaturation.onlyNonInteger=false] - Non integer unsaturation\n */\n\nmodule.exports = function fromMonoisotopicMass(mass, options = {}) {\n  return findMFs(mass, options);\n};\n","'use strict';\n\nconst combineMFs = require('mf-generator');\n\n/**\n * Generates a database 'generated' from an array of molecular formula\n * @param {array} mfsArray - Array of string or Array of array containing the parts to combine\n * @param {obejct} [options={}]\n * @param {boolean} [options.estimate=false] - estimate the number of MF without filters\n * @param {string} [options.databaseName='generated']\n * @param {number} [options.limit=10000000] - Maximum number of results\n * @param {boolean} [canonizeMF=true] - Canonize molecular formula\n * @param {boolean} [uniqueMFs=true] - Force canonization and make MF unique\n * @param {string} [ionizations=''] - Comma separated list of ionizations (to charge the molecule)\n * @param {number} [options.filter={}]\n * @param {number} [options.filter.minMass=0] - Minimal monoisotopic mass\n * @param {number} [options.filter.maxMass=+Infinity] - Maximal monoisotopic mass\n * @param {number} [options.filter.minEM=0] - Minimal neutral monoisotopic mass\n * @param {number} [options.filter.maxEM=+Infinity] - Maximal neutral monoisotopic mass\n * @param {number} [options.filter.minMSEM=0] - Minimal observed monoisotopic mass\n * @param {number} [options.filter.maxMSEM=+Infinity] - Maximal observed monoisotopic mass\n * @param {number} [options.filter.minCharge=-Infinity] - Minimal charge\n * @param {number} [options.filter.maxCharge=+Infinity] - Maximal charge\n *\n * @param {number} [options.filter.unsaturation={}]\n * @param {number} [options.filter.unsaturation.min=-Infinity] - Minimal unsaturation\n * @param {number} [options.filter.unsaturation.max=+Infinity] - Maximal unsaturation\n * @param {number} [options.filter.unsaturation.onlyInteger=false] - Integer unsaturation\n * @param {number} [options.filter.unsaturation.onlyNonInteger=false] - Non integer unsaturation\n * @param {object} [options.filter.atoms] - object of atom:{min, max}\n *\n * @param {Function}  [options.filterFct] - Non integer unsaturation\n *\n * @example\n *\n * const EMDB = require('emdb');\n * let emdb = new EMDB();\n * let array = ['C1-10', 'H1-10'];\n * emdb.fromArray(array); // create a database 'generated' combining all possibilies\n * console.log(emdb.get('generated').length); // 100\n *\n * @example\n * const EMDB = require('emdb');\n * let emdb = new EMDB();\n * let array = ['C1-10 H1-10'];\n * emdb.fromArray(array); // create a database 'generated' combining all possibilies\n * console.log(emdb.get('generated').length); // 100\n *\n * @example\n * const EMDB = require('emdb');\n * let emdb = new EMDB();\n * // in case of an array of array, one of the group is allwed\n * let array = [['C1-10','H1-10'],'Cl0-1 Br0-1'];\n * emdb.fromArray(array); // create a database 'generated' combining all possibilies\n * console.log(emdb.get('generated').length); // 80\n *\n * @example\n * <script src=\"https://www.lactame.com/lib/mass-tools/HEAD/mass-tools.js\" />\n * <script>\n *   let emdb = new MolecularFormula.EMDB();\n *   let array = ['C1-10', 'H1-10'];\n *   emdb.fromArray(array); // create a database 'generated' combining all possibilies\n *   console.log(emdb.get('generated').length); // 100\n * </script>\n *\n * // from the browser\n */\n\nmodule.exports = function fromArray(mfsArray, options = {}) {\n  return combineMFs(mfsArray, options);\n};\n","'use strict';\n\nconst combineMFs = require('mf-generator');\n\n/**\n * Generates a database 'generated' from an array of molecular formula\n * @param {string} range - a string representing the range to search\n * @param {object} [options={}]\n * @param {boolean} [options.estimate=false] - estimate the number of MF without filters\n * @param {string} [options.databaseName='generated']\n * @param {number} [options.limit=100000] - Maximum number of results\n * @param {boolean} [canonizeMF=true] - Canonize molecular formula\n * @param {boolean} [uniqueMFs=true] - Force canonization and make MF unique\n * @param {string} [ionizations=''] - Comma separated list of ionizations (to charge the molecule)\n * @param {number} [options.filter={}]\n * @param {number} [options.filter.minMass=0] - Minimal monoisotopic mass\n * @param {number} [options.filter.maxMass=+Infinity] - Maximal monoisotopic mass\n * @param {number} [options.filter.minEM=0] - Minimal neutral monoisotopic mass\n * @param {number} [options.filter.maxEM=+Infinity] - Maximal neutral monoisotopic mass\n * @param {number} [options.filter.minMSEM=0] - Minimal observed monoisotopic mass\n * @param {number} [options.filter.maxMSEM=+Infinity] - Maximal observed monoisotopic mass\n * @param {number} [options.filter.minCharge=-Infinity] - Minimal charge\n * @param {number} [options.filter.maxCharge=+Infinity] - Maximal charge\n *\n * @param {number} [options.filter.unsaturation={}]\n * @param {number} [options.filter.unsaturation.min=-Infinity] - Minimal unsaturation\n * @param {number} [options.filter.unsaturation.max=+Infinity] - Maximal unsaturation\n * @param {number} [options.filter.unsaturation.onlyInteger=false] - Integer unsaturation\n * @param {number} [options.filter.unsaturation.onlyNonInteger=false] - Non integer unsaturation\n * @param {object} [options.filter.atoms] - object of atom:{min, max}\n *\n * @returns {array} - list of possible molecular formula\n *\n * @example\n * const EMDB = require('emdb');\n * let emdb = new EMDB();\n * // semi-columns separated for combination, comma for 'or'\n * emdb.fromRange('C1-10, H1-10; Cl0-1 Br0-1'); // create a database 'generated' combining all possibilies\n * console.log(emdb.get('generated').length); // 80\n */\n\nmodule.exports = function fromArray(rangesString, options = {}) {\n  let ranges = rangesString.split(/ *[;\\r\\n] */);\n  for (let i = 0; i < ranges.length; i++) {\n    let range = ranges[i];\n    if (range.includes(',')) {\n      ranges[i] = range.split(/ *, */);\n    }\n  }\n\n  return combineMFs(ranges, options);\n};\n","'use strict';\nmodule.exports=[{\"symbol\":\"Abu\",\"name\":\"2-Aminobutyric acid diradical\",\"mf\":\"C4H7NO\",\"kind\":\"\",\"ocl\":{\"value\":\"dazHPBPOEgEInVZjcH@\",\"coordinates\":\"!Bb@I~@Ha}_c~H@m]}bGt\"},\"mass\":85.10463700109551,\"monoisotopicMass\":85.05276384961,\"unsaturation\":2,\"elements\":[{\"symbol\":\"C\",\"number\":4},{\"symbol\":\"H\",\"number\":7},{\"symbol\":\"N\",\"number\":1},{\"symbol\":\"O\",\"number\":1}]},{\"symbol\":\"Acet\",\"name\":\"Acetyl\",\"mf\":\"C2H3O\",\"kind\":\"\",\"ocl\":{\"value\":\"gCaHDEeIi`@\",\"coordinates\":\"!BbOq~@Ha}\"},\"mass\":43.04469897995611,\"monoisotopicMass\":43.01838971626,\"unsaturation\":1,\"elements\":[{\"symbol\":\"C\",\"number\":2},{\"symbol\":\"H\",\"number\":3},{\"symbol\":\"O\",\"number\":1}]},{\"symbol\":\"Acm\",\"name\":\"Acetamidomethyl\",\"mf\":\"C3H6NO\",\"kind\":\"\",\"ocl\":{\"value\":\"gGYHDPliJuS@@\",\"coordinates\":\"!BbOrH_Xc|_`BH_P\"},\"mass\":72.08596035030448,\"monoisotopicMass\":72.04493881738,\"unsaturation\":1,\"elements\":[{\"symbol\":\"C\",\"number\":3},{\"symbol\":\"H\",\"number\":6},{\"symbol\":\"N\",\"number\":1},{\"symbol\":\"O\",\"number\":1}]},{\"symbol\":\"Adao\",\"name\":\"Adamantyloxy\",\"mf\":\"C10H15O\",\"kind\":\"\",\"ocl\":{\"value\":\"dc\\\\H`HAYRVeV^dUGZjjjj@@\",\"coordinates\":\"!B]BOXN`EP}CdB\\\\tbZ@Ijh~hRELdOBBp\"},\"mass\":151.2258752025074,\"monoisotopicMass\":151.11229010302,\"unsaturation\":5,\"elements\":[{\"symbol\":\"C\",\"number\":10},{\"symbol\":\"H\",\"number\":15},{\"symbol\":\"O\",\"number\":1}]},{\"symbol\":\"Aib\",\"name\":\"alpha-Aminoisobutyric acid diradical\",\"mf\":\"C4H7NO\",\"kind\":\"\",\"ocl\":{\"value\":\"dazHPBPOGgEInfZj@@\",\"coordinates\":\"!Bb@I~@Ha}b@K|uwwWbGt\"},\"mass\":85.10463700109551,\"monoisotopicMass\":85.05276384961,\"unsaturation\":2,\"elements\":[{\"symbol\":\"C\",\"number\":4},{\"symbol\":\"H\",\"number\":7},{\"symbol\":\"N\",\"number\":1},{\"symbol\":\"O\",\"number\":1}]},{\"symbol\":\"Ala\",\"name\":\"Alanine diradical\",\"mf\":\"C3H5NO\",\"kind\":\"aa\",\"oneLetter\":\"A\",\"alternativeOneLetter\":\"α\",\"ocl\":{\"value\":\"gNyDBaxmqR[fZjZ@\",\"coordinates\":\"!Bb@I~@Hb}b@I~Oxa}\"},\"mass\":71.07801959624871,\"monoisotopicMass\":71.03711378515,\"unsaturation\":2,\"elements\":[{\"symbol\":\"C\",\"number\":3},{\"symbol\":\"H\",\"number\":5},{\"symbol\":\"N\",\"number\":1},{\"symbol\":\"O\",\"number\":1}]},{\"symbol\":\"Arg\",\"name\":\"Arginine diradical\",\"mf\":\"C6H12N4O\",\"kind\":\"aa\",\"oneLetter\":\"R\",\"alternativeOneLetter\":\"ρ\",\"ocl\":{\"value\":\"dkLhPBgSPOEgEInWUijjihr@@\",\"coordinates\":\"!Bb@I~@Ha}_c~H@m]}bGvHHa}b@I~@Ha}\"},\"mass\":156.18592219918227,\"monoisotopicMass\":156.10111102405,\"unsaturation\":4,\"elements\":[{\"symbol\":\"C\",\"number\":6},{\"symbol\":\"H\",\"number\":12},{\"symbol\":\"N\",\"number\":4},{\"symbol\":\"O\",\"number\":1}]},{\"symbol\":\"Argp\",\"name\":\"Arginine triradical\",\"mf\":\"C6H11N4O\",\"kind\":\"\",\"ocl\":{\"value\":\"dglhpHpil@gWDEI[UYZfjji`T@\",\"coordinates\":\"!BbGvHGx@bGvH@ha}bOrH_Wxb@KW_Wx@bGt\"},\"mass\":155.1779814451265,\"monoisotopicMass\":155.09328599182,\"unsaturation\":5,\"elements\":[{\"symbol\":\"C\",\"number\":6},{\"symbol\":\"H\",\"number\":11},{\"symbol\":\"N\",\"number\":4},{\"symbol\":\"O\",\"number\":1}]},{\"symbol\":\"Asn\",\"name\":\"Asparagine diradical\",\"mf\":\"C4H6N2O2\",\"kind\":\"aa\",\"oneLetter\":\"N\",\"alternativeOneLetter\":\"η\",\"ocl\":{\"value\":\"deeDPBeACqYqR[ezZjZL`@\",\"coordinates\":\"!BbGu~Ox`B_`BH_X`Bb@I~@Ha}\"},\"mass\":114.10280438280381,\"monoisotopicMass\":114.04292744137999,\"unsaturation\":4,\"elements\":[{\"symbol\":\"C\",\"number\":4},{\"symbol\":\"H\",\"number\":6},{\"symbol\":\"N\",\"number\":2},{\"symbol\":\"O\",\"number\":2}]},{\"symbol\":\"Asnp\",\"name\":\"Asparagine triradical\",\"mf\":\"C4H5N2O2\",\"kind\":\"\",\"ocl\":{\"value\":\"dmUDpH[E@IEqgqRVvVijjXi@@\",\"coordinates\":\"!Bb@JH_Wxb@JH_Wxb@KW_Wx@bGt\"},\"mass\":113.09486362874803,\"monoisotopicMass\":113.03510240915,\"unsaturation\":5,\"elements\":[{\"symbol\":\"C\",\"number\":4},{\"symbol\":\"H\",\"number\":5},{\"symbol\":\"N\",\"number\":2},{\"symbol\":\"O\",\"number\":2}]},{\"symbol\":\"Asp\",\"name\":\"Aspartic acid diradical\",\"mf\":\"C4H5NO3\",\"kind\":\"aa\",\"oneLetter\":\"D\",\"alternativeOneLetter\":\"δ\",\"ocl\":{\"value\":\"defLPBPYCqYqR[ezZjZL`@\",\"coordinates\":\"!BbGu~Ox`B_`BH_X`Bb@I~@Ha}\"},\"mass\":115.08756534162052,\"monoisotopicMass\":115.02694302429,\"unsaturation\":4,\"elements\":[{\"symbol\":\"C\",\"number\":4},{\"symbol\":\"H\",\"number\":5},{\"symbol\":\"N\",\"number\":1},{\"symbol\":\"O\",\"number\":3}]},{\"symbol\":\"Aspp\",\"name\":\"Aspartic acid triradical\",\"mf\":\"C4H4NO3\",\"kind\":\"\",\"ocl\":{\"value\":\"dmVLpFcE@IEqgqRVvVijjXi@@\",\"coordinates\":\"!Bb@JH_Wxb@JH_Wxb@KW_Wx@bGt\"},\"mass\":114.07962458756472,\"monoisotopicMass\":114.01911799206,\"unsaturation\":5,\"elements\":[{\"symbol\":\"C\",\"number\":4},{\"symbol\":\"H\",\"number\":4},{\"symbol\":\"N\",\"number\":1},{\"symbol\":\"O\",\"number\":3}]},{\"symbol\":\"Asu\",\"name\":\"alpha-Aminosuberic acid diradical\",\"mf\":\"C8H13NO3\",\"kind\":\"\",\"ocl\":{\"value\":\"dgnLPBP{CqYqR[euVfjjihr@@\",\"coordinates\":\"!BbGu~Ox`B_`BH_Xc|bOrH_X`BbGvHGx@bGt\"},\"mass\":171.19403496100773,\"monoisotopicMass\":171.08954328213002,\"unsaturation\":4,\"elements\":[{\"symbol\":\"C\",\"number\":8},{\"symbol\":\"H\",\"number\":13},{\"symbol\":\"N\",\"number\":1},{\"symbol\":\"O\",\"number\":3}]},{\"symbol\":\"Asup\",\"name\":\"alpha-Aminosuberic acid triradical\",\"mf\":\"C8H12NO3\",\"kind\":\"\",\"ocl\":{\"value\":\"do^LpEcG@IMqoqRVuUejZjjibT@\",\"coordinates\":\"!BbOrH_Wxb@JH_Xc|bGvHHa}_c~H@m]}_`BH_P\"},\"mass\":170.18609420695194,\"monoisotopicMass\":170.0817182499,\"unsaturation\":5,\"elements\":[{\"symbol\":\"C\",\"number\":8},{\"symbol\":\"H\",\"number\":12},{\"symbol\":\"N\",\"number\":1},{\"symbol\":\"O\",\"number\":3}]},{\"symbol\":\"Boc\",\"name\":\"t-Butoxycarbonyl\",\"mf\":\"C5H9O2\",\"kind\":\"\",\"ocl\":{\"value\":\"daxD`DpEeImjZj@@\",\"coordinates\":\"!B|Ou~_A||Ow}mC}_O@\"},\"mass\":101.12395611881479,\"monoisotopicMass\":101.06025452921,\"unsaturation\":1,\"elements\":[{\"symbol\":\"C\",\"number\":5},{\"symbol\":\"H\",\"number\":9},{\"symbol\":\"O\",\"number\":2}]},{\"symbol\":\"Bom\",\"name\":\"Benzyloxymethyl\",\"mf\":\"C8H9O\",\"kind\":\"\",\"ocl\":{\"value\":\"deTH`DAYRUYTYj`@@@\",\"coordinates\":\"!B|Gsp__A||Owp_Gy|Gwp_Wy\"},\"mass\":121.15675888470227,\"monoisotopicMass\":121.06533990964,\"unsaturation\":7,\"elements\":[{\"symbol\":\"C\",\"number\":8},{\"symbol\":\"H\",\"number\":9},{\"symbol\":\"O\",\"number\":1}]},{\"symbol\":\"Brz\",\"name\":\"2-Bromobenzyloxycarbonyl\",\"mf\":\"C8H6BrO2\",\"kind\":\"\",\"ocl\":{\"value\":\"dcLDPDpEd\\\\QImYgWYjB@@@\",\"coordinates\":\"!Bb@I~@Hb}b@JH_X`B_c}~@Hb}bGu~Op\"},\"mass\":214.03586932736317,\"monoisotopicMass\":212.95511703252,\"unsaturation\":9,\"elements\":[{\"symbol\":\"C\",\"number\":8},{\"symbol\":\"H\",\"number\":6},{\"symbol\":\"Br\",\"number\":1},{\"symbol\":\"O\",\"number\":2}]},{\"symbol\":\"Bu\",\"name\":\"Butyl\",\"mf\":\"C4H9\",\"kind\":\"\",\"ocl\":{\"value\":\"gJPH@liJuP@\",\"coordinates\":\"!B@Fp@XpAl@FL\"},\"mass\":57.114410373442986,\"monoisotopicMass\":57.07042529007,\"unsaturation\":-1,\"elements\":[{\"symbol\":\"C\",\"number\":4},{\"symbol\":\"H\",\"number\":9}]},{\"symbol\":\"Bum\",\"name\":\"t-Butoxymethyl\",\"mf\":\"C5H11O\",\"kind\":\"\",\"ocl\":{\"value\":\"gNqHDEeIVjj`@\",\"coordinates\":\"!B@FL@[@AcXs|@Xvp@\"},\"mass\":87.14043270260808,\"monoisotopicMass\":87.08098997409999,\"unsaturation\":-1,\"elements\":[{\"symbol\":\"C\",\"number\":5},{\"symbol\":\"H\",\"number\":11},{\"symbol\":\"O\",\"number\":1}]},{\"symbol\":\"Bz\",\"name\":\"Benzoyl\",\"mf\":\"C7H5O\",\"kind\":\"\",\"ocl\":{\"value\":\"didH`DAYR[e^FX@@@@\",\"coordinates\":\"!BbOq~@Ha}b@I~Oxa}bGu~Op\"},\"mass\":105.1142599717439,\"monoisotopicMass\":105.03403978072,\"unsaturation\":9,\"elements\":[{\"symbol\":\"C\",\"number\":7},{\"symbol\":\"H\",\"number\":5},{\"symbol\":\"O\",\"number\":1}]},{\"symbol\":\"Bzl\",\"name\":\"Benzyl\",\"mf\":\"C7H7\",\"kind\":\"\",\"ocl\":{\"value\":\"daD@`@VTeeVz`@@@\",\"coordinates\":\"!B|Gsp_A|_gp_A}_g|\"},\"mass\":91.13073655553718,\"monoisotopicMass\":91.05477522561,\"unsaturation\":7,\"elements\":[{\"symbol\":\"C\",\"number\":7},{\"symbol\":\"H\",\"number\":7}]},{\"symbol\":\"Bn\",\"name\":\"Benzyl\",\"mf\":\"C7H7\",\"kind\":\"\",\"ocl\":{\"value\":\"daD@`@VTeeVz`@@@\",\"coordinates\":\"!B|Gsp_A|_gp_A}_g|\"},\"mass\":91.13073655553718,\"monoisotopicMass\":91.05477522561,\"unsaturation\":7,\"elements\":[{\"symbol\":\"C\",\"number\":7},{\"symbol\":\"H\",\"number\":7}]},{\"symbol\":\"Bzlo\",\"name\":\"Benzyloxy\",\"mf\":\"C7H7O\",\"kind\":\"\",\"ocl\":{\"value\":\"didH`HAYRUe^Fh@@@@\",\"coordinates\":\"!B|Gwp_OC}|Gq~_A}|Gu~_p\"},\"mass\":107.13014147985547,\"monoisotopicMass\":107.04968984518,\"unsaturation\":7,\"elements\":[{\"symbol\":\"C\",\"number\":7},{\"symbol\":\"H\",\"number\":7},{\"symbol\":\"O\",\"number\":1}]},{\"symbol\":\"Cha\",\"name\":\"beta-Cyclohexylalanine diradical\",\"mf\":\"C9H15NO\",\"kind\":\"\",\"ocl\":{\"value\":\"dknHPBPOEgEInWe]NZjjjcH@\",\"coordinates\":\"!Bb@I~@Ha}_c~H@m]}bGvH@gxbGvH_Wx\"},\"mass\":153.22184251721796,\"monoisotopicMass\":153.11536410745,\"unsaturation\":4,\"elements\":[{\"symbol\":\"C\",\"number\":9},{\"symbol\":\"H\",\"number\":15},{\"symbol\":\"N\",\"number\":1},{\"symbol\":\"O\",\"number\":1}]},{\"symbol\":\"Chxo\",\"name\":\"Cyclohexyloxy\",\"mf\":\"C6H11O\",\"kind\":\"\",\"ocl\":{\"value\":\"daDH`HAYRVU[jjj@@\",\"coordinates\":\"!B|Gsp_A|_gp_A}_g|\"},\"mass\":99.15116859934332,\"monoisotopicMass\":99.08098997409999,\"unsaturation\":1,\"elements\":[{\"symbol\":\"C\",\"number\":6},{\"symbol\":\"H\",\"number\":11},{\"symbol\":\"O\",\"number\":1}]},{\"symbol\":\"Cit\",\"name\":\"Citrulline diradical\",\"mf\":\"C6H11N3O2\",\"kind\":\"\",\"ocl\":{\"value\":\"dkODPBdttOEgEInWUijjihr@@\",\"coordinates\":\"!Bb@I~@Ha}_c~H@m]}bGvHHa}b@I~@Ha}\"},\"mass\":157.170683157999,\"monoisotopicMass\":157.08512660696,\"unsaturation\":4,\"elements\":[{\"symbol\":\"C\",\"number\":6},{\"symbol\":\"H\",\"number\":11},{\"symbol\":\"N\",\"number\":3},{\"symbol\":\"O\",\"number\":2}]},{\"symbol\":\"Citp\",\"name\":\"Citrulline triradical\",\"mf\":\"C6H10N3O2\",\"kind\":\"\",\"ocl\":{\"value\":\"dgoDpHJ\\\\l@gWDEI[UYZfjji`T@\",\"coordinates\":\"!BbGvHGx@bGvH@ha}bOrH_Wxb@KW_Wx@bGt\"},\"mass\":156.16274240394318,\"monoisotopicMass\":156.07730157473,\"unsaturation\":5,\"elements\":[{\"symbol\":\"C\",\"number\":6},{\"symbol\":\"H\",\"number\":10},{\"symbol\":\"N\",\"number\":3},{\"symbol\":\"O\",\"number\":2}]},{\"symbol\":\"Clz\",\"name\":\"2-Chlorobenzyloxycarbonyl\",\"mf\":\"C8H6ClO2\",\"kind\":\"\",\"ocl\":{\"value\":\"dcLDPDpEdXaImYgWYjB@@@\",\"coordinates\":\"!Bb@I~@Hb}b@JH_X`B_c}~@Hb}bGu~Op\"},\"mass\":169.58527912946118,\"monoisotopicMass\":169.00563211451998,\"unsaturation\":9,\"elements\":[{\"symbol\":\"C\",\"number\":8},{\"symbol\":\"H\",\"number\":6},{\"symbol\":\"Cl\",\"number\":1},{\"symbol\":\"O\",\"number\":2}]},{\"symbol\":\"Cp\",\"name\":\"Cyclopentadienyl\",\"mf\":\"C5H5\",\"kind\":\"\",\"ocl\":{\"value\":\"gFpH@liLimRp@\",\"coordinates\":\"!B\\\\OtPThyEGl@fP\"},\"mass\":65.09338325395512,\"monoisotopicMass\":65.03912516115,\"unsaturation\":5,\"elements\":[{\"symbol\":\"C\",\"number\":5},{\"symbol\":\"H\",\"number\":5}]},{\"symbol\":\"Cys\",\"name\":\"Cysteine diradical\",\"mf\":\"C3H5NOS\",\"kind\":\"aa\",\"oneLetter\":\"C\",\"alternativeOneLetter\":\"ς\",\"ocl\":{\"value\":\"dazHpBPOEgG`aInVZjcH@\",\"coordinates\":\"!Bb@I~@Ha}_c~H@m]}bGt\"},\"mass\":103.14280700237578,\"monoisotopicMass\":103.00918495955,\"unsaturation\":2,\"elements\":[{\"symbol\":\"C\",\"number\":3},{\"symbol\":\"H\",\"number\":5},{\"symbol\":\"N\",\"number\":1},{\"symbol\":\"O\",\"number\":1},{\"symbol\":\"S\",\"number\":1}]},{\"symbol\":\"Cysp\",\"name\":\"Cysteine triradical\",\"mf\":\"C3H4NOS\",\"kind\":\"\",\"ocl\":{\"value\":\"diFHHBD@f@agGoEIVVjjfLP@\",\"coordinates\":\"!BbGvHHa}_c~HM]}_`BH_P\"},\"mass\":102.13486624831998,\"monoisotopicMass\":102.00135992732,\"unsaturation\":3,\"elements\":[{\"symbol\":\"C\",\"number\":3},{\"symbol\":\"H\",\"number\":4},{\"symbol\":\"N\",\"number\":1},{\"symbol\":\"O\",\"number\":1},{\"symbol\":\"S\",\"number\":1}]},{\"symbol\":\"D\",\"name\":\"Deuterium\",\"mf\":\"[2H]\",\"kind\":\"\",\"ocl\":{\"value\":\"eFAAYhBLCEH@\",\"coordinates\":\"!B@FL\"},\"mass\":2.01410177812,\"monoisotopicMass\":2.01410177812,\"unsaturation\":-1,\"elements\":[{\"symbol\":\"H\",\"number\":1,\"isotope\":2}]},{\"symbol\":\"Dde\",\"name\":\"Dde\",\"mf\":\"C10H13O2\",\"kind\":\"\",\"ocl\":{\"value\":\"dklD`FDEgHhihicIVZfZj@@\",\"coordinates\":\"!Bb@I~@Ha}upJH@m]}_`BH_Wx@b@I}bOrH\"},\"mass\":165.20939861871415,\"monoisotopicMass\":165.09155465812998,\"unsaturation\":7,\"elements\":[{\"symbol\":\"C\",\"number\":10},{\"symbol\":\"H\",\"number\":13},{\"symbol\":\"O\",\"number\":2}]},{\"symbol\":\"Dnp\",\"name\":\"2,4-Dinitrophenyl\",\"mf\":\"C6H3N2O4\",\"kind\":\"\",\"ocl\":{\"value\":\"dkmB`bWatpVRd^VS{HhheEUFfBAbX@@\",\"coordinates\":\"!B_c~H_]]}b@I~Owx_`BH_]]}_c~H_]]}\"},\"mass\":167.09926376274353,\"monoisotopicMass\":167.00928158383,\"unsaturation\":11,\"elements\":[{\"symbol\":\"C\",\"number\":6},{\"symbol\":\"H\",\"number\":3},{\"symbol\":\"N\",\"number\":2},{\"symbol\":\"O\",\"number\":4}]},{\"symbol\":\"Et\",\"name\":\"Ethyl\",\"mf\":\"C2H5\",\"kind\":\"\",\"ocl\":{\"value\":\"eMBAYRZ@\",\"coordinates\":\"!B@Fp@Xp\"},\"mass\":29.061175563749384,\"monoisotopicMass\":29.03912516115,\"unsaturation\":-1,\"elements\":[{\"symbol\":\"C\",\"number\":2},{\"symbol\":\"H\",\"number\":5}]},{\"symbol\":\"Fmoc\",\"name\":\"Fluorenylmethoxycarbonyl\",\"mf\":\"C15H11O2\",\"kind\":\"\",\"ocl\":{\"value\":\"fde@b@DX@liMkLrjxeVCzLuT@@@P@@@\",\"coordinates\":\"!BbOq~@Ha}bOrH_]ARcm}Tv~i`pAeKv|@fpB[j[~iozfAKvp\"},\"mass\":223.24719659427882,\"monoisotopicMass\":223.07590459367,\"unsaturation\":19,\"elements\":[{\"symbol\":\"C\",\"number\":15},{\"symbol\":\"H\",\"number\":11},{\"symbol\":\"O\",\"number\":2}]},{\"symbol\":\"For\",\"name\":\"Formyl\",\"mf\":\"CHO\",\"kind\":\"\",\"ocl\":{\"value\":\"eMJDVTfP@\",\"coordinates\":\"!B@Fp@Xp\"},\"mass\":29.018081575109303,\"monoisotopicMass\":29.0027396518,\"unsaturation\":1,\"elements\":[{\"symbol\":\"C\",\"number\":1},{\"symbol\":\"H\",\"number\":1},{\"symbol\":\"O\",\"number\":1}]},{\"symbol\":\"Gln\",\"name\":\"Glutamine diradical\",\"mf\":\"C5H8N2O2\",\"kind\":\"aa\",\"oneLetter\":\"Q\",\"alternativeOneLetter\":\"ξ\",\"ocl\":{\"value\":\"dmUDPBUICqYqR[evfjihr@@\",\"coordinates\":\"!Bb@I~@Ha}_c~H@m]}bGvHGx@bGt\"},\"mass\":128.12942178765059,\"monoisotopicMass\":128.05857750584,\"unsaturation\":4,\"elements\":[{\"symbol\":\"C\",\"number\":5},{\"symbol\":\"H\",\"number\":8},{\"symbol\":\"N\",\"number\":2},{\"symbol\":\"O\",\"number\":2}]},{\"symbol\":\"Glnp\",\"name\":\"Glutamine triradical\",\"mf\":\"C5H7N2O2\",\"kind\":\"\",\"ocl\":{\"value\":\"dcuDpH{MAYeqWqRVuejZjiad@\",\"coordinates\":\"!BbGvHGx@bGvH@ha}_c~HM]}_`BH_P\"},\"mass\":127.12148103359483,\"monoisotopicMass\":127.05075247361,\"unsaturation\":5,\"elements\":[{\"symbol\":\"C\",\"number\":5},{\"symbol\":\"H\",\"number\":7},{\"symbol\":\"N\",\"number\":2},{\"symbol\":\"O\",\"number\":2}]},{\"symbol\":\"Glp\",\"name\":\"Pyroglutamine\",\"mf\":\"C5H5NO2\",\"kind\":\"\",\"ocl\":{\"value\":\"deVDPBRP|V\\\\TfygxYjjZL`@\",\"coordinates\":\"!Bb@I~@Ha}tEJNwr[@UMo@FXBN\"},\"mass\":111.09889631403748,\"monoisotopicMass\":111.03202840472,\"unsaturation\":6,\"elements\":[{\"symbol\":\"C\",\"number\":5},{\"symbol\":\"H\",\"number\":5},{\"symbol\":\"N\",\"number\":1},{\"symbol\":\"O\",\"number\":2}]},{\"symbol\":\"Glu\",\"name\":\"Glutamic acid diradical\",\"mf\":\"C5H7NO3\",\"kind\":\"aa\",\"oneLetter\":\"E\",\"alternativeOneLetter\":\"ε\",\"ocl\":{\"value\":\"dmVLPBRUCqYqR[evfjihr@@\",\"coordinates\":\"!Bb@I~@Ha}_c~H@m]}bGvHGx@bGt\"},\"mass\":129.11418274646732,\"monoisotopicMass\":129.04259308875,\"unsaturation\":4,\"elements\":[{\"symbol\":\"C\",\"number\":5},{\"symbol\":\"H\",\"number\":7},{\"symbol\":\"N\",\"number\":1},{\"symbol\":\"O\",\"number\":3}]},{\"symbol\":\"Glup\",\"name\":\"Glutamic acid triradical\",\"mf\":\"C5H6NO3\",\"kind\":\"\",\"ocl\":{\"value\":\"dcvLpNcM@IeqWqRVuejZjiad@\",\"coordinates\":\"!BbGvHGx@bGvH@ha}_c~HM]}_`BH_P\"},\"mass\":128.10624199241153,\"monoisotopicMass\":128.03476805652002,\"unsaturation\":5,\"elements\":[{\"symbol\":\"C\",\"number\":5},{\"symbol\":\"H\",\"number\":6},{\"symbol\":\"N\",\"number\":1},{\"symbol\":\"O\",\"number\":3}]},{\"symbol\":\"Gly\",\"name\":\"Glycine diradical\",\"mf\":\"C2H3NO\",\"kind\":\"aa\",\"oneLetter\":\"G\",\"alternativeOneLetter\":\"γ\",\"ocl\":{\"value\":\"gGYDBaxuqR[Yj@@\",\"coordinates\":\"!BbOq~@Ha}bOrH_P\"},\"mass\":57.051402191401905,\"monoisotopicMass\":57.021463720689994,\"unsaturation\":2,\"elements\":[{\"symbol\":\"C\",\"number\":2},{\"symbol\":\"H\",\"number\":3},{\"symbol\":\"N\",\"number\":1},{\"symbol\":\"O\",\"number\":1}]},{\"symbol\":\"Hci\",\"name\":\"Homocitrulline diradical\",\"mf\":\"C7H13N3O2\",\"kind\":\"\",\"ocl\":{\"value\":\"dgoDPBVtLOEgEInWUZZjjfcH@\",\"coordinates\":\"!BbGu~Ox`B_`BH_Xc|bOrH_X`BbGvHGx@bGt\"},\"mass\":171.19730056284578,\"monoisotopicMass\":171.10077667142,\"unsaturation\":4,\"elements\":[{\"symbol\":\"C\",\"number\":7},{\"symbol\":\"H\",\"number\":13},{\"symbol\":\"N\",\"number\":3},{\"symbol\":\"O\",\"number\":2}]},{\"symbol\":\"Hcip\",\"name\":\"Homocitrulline triradical\",\"mf\":\"C7H12N3O2\",\"kind\":\"\",\"ocl\":{\"value\":\"do_DpHI\\\\\\\\EdwFEI[UVVijjjfIP@\",\"coordinates\":\"!BbOrH_Wxb@JH_Xc|bGvHHa}_c~H@m]}_`BH_P\"},\"mass\":170.18935980879002,\"monoisotopicMass\":170.09295163918998,\"unsaturation\":5,\"elements\":[{\"symbol\":\"C\",\"number\":7},{\"symbol\":\"H\",\"number\":12},{\"symbol\":\"N\",\"number\":3},{\"symbol\":\"O\",\"number\":2}]},{\"symbol\":\"His\",\"name\":\"Histidine diradical\",\"mf\":\"C6H7N3O\",\"kind\":\"aa\",\"oneLetter\":\"H\",\"alternativeOneLetter\":\"ζ\",\"ocl\":{\"value\":\"dcOHPBGTCqYqR[eyUvZjejL`@\",\"coordinates\":\"!Bb@I~@Ha}_c~H@m]}bGwPTh{_UMo@FP\"},\"mass\":137.13951521745759,\"monoisotopicMass\":137.05891185847,\"unsaturation\":8,\"elements\":[{\"symbol\":\"C\",\"number\":6},{\"symbol\":\"H\",\"number\":7},{\"symbol\":\"N\",\"number\":3},{\"symbol\":\"O\",\"number\":1}]},{\"symbol\":\"Hisp\",\"name\":\"Histidine triradical\",\"mf\":\"C6H6N3O\",\"kind\":\"\",\"ocl\":{\"value\":\"dkoHpHHSAYUqwqRY]YXjjVjihy@@\",\"coordinates\":\"!BTmA}bL@fUHRN`H`BbGu~Ox`Buwu~@Ha}\"},\"mass\":136.13157446340182,\"monoisotopicMass\":136.05108682624,\"unsaturation\":9,\"elements\":[{\"symbol\":\"C\",\"number\":6},{\"symbol\":\"H\",\"number\":6},{\"symbol\":\"N\",\"number\":3},{\"symbol\":\"O\",\"number\":1}]},{\"symbol\":\"Hser\",\"name\":\"Homoserine diradical\",\"mf\":\"C4H7NO2\",\"kind\":\"\",\"ocl\":{\"value\":\"diFDPBPP|V\\\\Tfy^Zjhr@@\",\"coordinates\":\"!BbGu~Ox`B_`BH_X`Bb@JH_P\"},\"mass\":101.10404192541378,\"monoisotopicMass\":101.04767846918,\"unsaturation\":2,\"elements\":[{\"symbol\":\"C\",\"number\":4},{\"symbol\":\"H\",\"number\":7},{\"symbol\":\"N\",\"number\":1},{\"symbol\":\"O\",\"number\":2}]},{\"symbol\":\"Hserp\",\"name\":\"Homoserine triradical\",\"mf\":\"C4H6NO2\",\"kind\":\"\",\"ocl\":{\"value\":\"defDpJbPV^\\\\Q|TeVVjji`d@\",\"coordinates\":\"!Bb@JH_X`BbGu~Oxc|uwu~@Ha}\"},\"mass\":100.09610117135801,\"monoisotopicMass\":100.03985343695001,\"unsaturation\":3,\"elements\":[{\"symbol\":\"C\",\"number\":4},{\"symbol\":\"H\",\"number\":6},{\"symbol\":\"N\",\"number\":1},{\"symbol\":\"O\",\"number\":2}]},{\"symbol\":\"Hyp\",\"name\":\"Hydroxyproline diradical\",\"mf\":\"C5H7NO2\",\"kind\":\"\",\"ocl\":{\"value\":\"deVDPBRP|V\\\\\\\\bfbbOCMUUIdE@@\",\"coordinates\":\"!Bb@I~@Ha}tEJNwr[@UMo@FUJO\"},\"mass\":113.11477782214904,\"monoisotopicMass\":113.04767846918,\"unsaturation\":4,\"elements\":[{\"symbol\":\"C\",\"number\":5},{\"symbol\":\"H\",\"number\":7},{\"symbol\":\"N\",\"number\":1},{\"symbol\":\"O\",\"number\":2}]},{\"symbol\":\"Hypp\",\"name\":\"Hydroxyproline triradical\",\"mf\":\"C5H6NO2\",\"kind\":\"\",\"ocl\":{\"value\":\"dmvDpJaPB^\\\\Y|TeeWjZjjidRL`@\",\"coordinates\":\"!BBOpH_UARcc}TNtBY@HyRSpCQDr\\\\\"},\"mass\":112.10683706809326,\"monoisotopicMass\":112.03985343695001,\"unsaturation\":5,\"elements\":[{\"symbol\":\"C\",\"number\":5},{\"symbol\":\"H\",\"number\":6},{\"symbol\":\"N\",\"number\":1},{\"symbol\":\"O\",\"number\":2}]},{\"symbol\":\"Ile\",\"name\":\"Isoleucine diradical\",\"mf\":\"C6H11NO\",\"kind\":\"aa\",\"oneLetter\":\"I\",\"alternativeOneLetter\":\"ι\",\"ocl\":{\"value\":\"defHPBPOEgEInVyjjdrT`@\",\"coordinates\":\"!BbGu~Oxc|_`BH_Xc|b@I~Oxa}\"},\"mass\":113.15787181078912,\"monoisotopicMass\":113.08406397853,\"unsaturation\":2,\"elements\":[{\"symbol\":\"C\",\"number\":6},{\"symbol\":\"H\",\"number\":11},{\"symbol\":\"N\",\"number\":1},{\"symbol\":\"O\",\"number\":1}]},{\"symbol\":\"Ivdde\",\"name\":\"1-[4,4-dimethyl-2,6-dioxocyclohexylidene)-3-methylbutyl\",\"mf\":\"C13H19O2\",\"kind\":\"\",\"ocl\":{\"value\":\"f`a@b@NR@lyEEDhhigEVfjYjj`@@\",\"coordinates\":\"!BbOq~@Ha}urHGxuwu~@Ha}_`CW_Xa}bOq}b@JH\"},\"mass\":207.28925083325453,\"monoisotopicMass\":207.13850485151,\"unsaturation\":7,\"elements\":[{\"symbol\":\"C\",\"number\":13},{\"symbol\":\"H\",\"number\":19},{\"symbol\":\"O\",\"number\":2}]},{\"symbol\":\"Leu\",\"name\":\"Leucine diradical\",\"mf\":\"C6H11NO\",\"kind\":\"aa\",\"oneLetter\":\"L\",\"alternativeOneLetter\":\"λ\",\"ocl\":{\"value\":\"defHPBPOEgEInWijjhr@@\",\"coordinates\":\"!BbGu~Ox`B_`BH_X`Bb@I~@Ha}\"},\"mass\":113.15787181078912,\"monoisotopicMass\":113.08406397853,\"unsaturation\":2,\"elements\":[{\"symbol\":\"C\",\"number\":6},{\"symbol\":\"H\",\"number\":11},{\"symbol\":\"N\",\"number\":1},{\"symbol\":\"O\",\"number\":1}]},{\"symbol\":\"Lys\",\"name\":\"Lysine diradical\",\"mf\":\"C6H12N2O\",\"kind\":\"aa\",\"oneLetter\":\"K\",\"alternativeOneLetter\":\"κ\",\"ocl\":{\"value\":\"dmUHPBU@|V\\\\Tfy]YjjjL`@\",\"coordinates\":\"!BbGu~Ox`B_`BHoX`Bb@JH_X`BbKt\"},\"mass\":128.17251577629068,\"monoisotopicMass\":128.09496301519,\"unsaturation\":2,\"elements\":[{\"symbol\":\"C\",\"number\":6},{\"symbol\":\"H\",\"number\":12},{\"symbol\":\"N\",\"number\":2},{\"symbol\":\"O\",\"number\":1}]},{\"symbol\":\"Lysp\",\"name\":\"Lysine triradical\",\"mf\":\"C6H11N2O\",\"kind\":\"\",\"ocl\":{\"value\":\"dcuHpH{PVY\\\\U|TeUYZjjjXY@@\",\"coordinates\":\"!Bb@JH_X`BbGvH@ha}_c~H@m]}_`BH_P\"},\"mass\":127.16457502223491,\"monoisotopicMass\":127.08713798295999,\"unsaturation\":3,\"elements\":[{\"symbol\":\"C\",\"number\":6},{\"symbol\":\"H\",\"number\":11},{\"symbol\":\"N\",\"number\":2},{\"symbol\":\"O\",\"number\":1}]},{\"symbol\":\"Mbh\",\"name\":\"4,4'-Dimethoxybenzhydryl\",\"mf\":\"C15H15O2\",\"kind\":\"\",\"ocl\":{\"value\":\"fdy@b@G^@liLsJkzlcZmT@@@UP@@@\",\"coordinates\":\"!BbGvHGx_`BH_Xa}uwvHHc|_c}~Oxa}uwvHGxbGwW_P\"},\"mass\":227.27895961050194,\"monoisotopicMass\":227.10720472258998,\"unsaturation\":15,\"elements\":[{\"symbol\":\"C\",\"number\":15},{\"symbol\":\"H\",\"number\":15},{\"symbol\":\"O\",\"number\":2}]},{\"symbol\":\"Me\",\"name\":\"Methyl\",\"mf\":\"CH3\",\"kind\":\"\",\"ocl\":{\"value\":\"eFBAYc@@\",\"coordinates\":\"!B@FL\"},\"mass\":15.03455815890258,\"monoisotopicMass\":15.02347509669,\"unsaturation\":-1,\"elements\":[{\"symbol\":\"C\",\"number\":1},{\"symbol\":\"H\",\"number\":3}]},{\"symbol\":\"Mebzl\",\"name\":\"4-Methylbenzyl\",\"mf\":\"C8H9\",\"kind\":\"\",\"ocl\":{\"value\":\"did@`@VTee]nh@H@@\",\"coordinates\":\"!B|Gsp__A|_gp_C}_gp_P\"},\"mass\":105.15735396038399,\"monoisotopicMass\":105.07042529007,\"unsaturation\":7,\"elements\":[{\"symbol\":\"C\",\"number\":8},{\"symbol\":\"H\",\"number\":9}]},{\"symbol\":\"Meobzl\",\"name\":\"4-Methoxybenzyl\",\"mf\":\"C8H9O\",\"kind\":\"\",\"ocl\":{\"value\":\"deTH`AAYRVUunh@J@@\",\"coordinates\":\"!B|Gsp__A|_gp_A}_gp_Wy\"},\"mass\":121.15675888470227,\"monoisotopicMass\":121.06533990964,\"unsaturation\":7,\"elements\":[{\"symbol\":\"C\",\"number\":8},{\"symbol\":\"H\",\"number\":9},{\"symbol\":\"O\",\"number\":1}]},{\"symbol\":\"Met\",\"name\":\"Methionine diradical\",\"mf\":\"C5H9NOS\",\"kind\":\"aa\",\"oneLetter\":\"M\",\"alternativeOneLetter\":\"μ\",\"ocl\":{\"value\":\"defHpBPOEgDPaInWYjjhr@@\",\"coordinates\":\"!Bb@I~@Ha}_c~H@m]}bGvHHa}\"},\"mass\":131.19604181206938,\"monoisotopicMass\":131.04048508847,\"unsaturation\":2,\"elements\":[{\"symbol\":\"C\",\"number\":5},{\"symbol\":\"H\",\"number\":9},{\"symbol\":\"N\",\"number\":1},{\"symbol\":\"O\",\"number\":1},{\"symbol\":\"S\",\"number\":1}]},{\"symbol\":\"Mmt\",\"name\":\"4-Methoxytrityl\",\"mf\":\"C20H17O\",\"kind\":\"\",\"ocl\":{\"value\":\"ffcAB@B`V\\\\bdTTTRRRVvIhnRGMT@@@@AP@@@\",\"coordinates\":\"!BbKvHM^}_c}~@Hb}dXWHb}j|nHHc|AqOWoWxJV^Ho]\\\\BuwvHHb}\"},\"mass\":273.3491156779715,\"monoisotopicMass\":273.12794016748,\"unsaturation\":23,\"elements\":[{\"symbol\":\"C\",\"number\":20},{\"symbol\":\"H\",\"number\":17},{\"symbol\":\"O\",\"number\":1}]},{\"symbol\":\"Mtc\",\"name\":\"2,2,5,7,8-pentamethylchroman-6-sulphonyl\",\"mf\":\"C14H19O3S\",\"kind\":\"\",\"ocl\":{\"value\":\"fleAa@DX\\\\AY`DYEHXhhilmiKW`rpDQUUD@@\",\"coordinates\":\"!BbGtBbGwWbGvHGxbGu~@Ha}uwu~Ox`B_c~H_Xa}b@H@_osW\"},\"mass\":267.36417906043516,\"monoisotopicMass\":267.10549064548,\"unsaturation\":9,\"elements\":[{\"symbol\":\"C\",\"number\":14},{\"symbol\":\"H\",\"number\":19},{\"symbol\":\"O\",\"number\":3},{\"symbol\":\"S\",\"number\":1}]},{\"symbol\":\"Mtr\",\"name\":\"4-Methoxy-2,3,6-trimethylbenzenesulphonyl\",\"mf\":\"C10H13O3S\",\"kind\":\"\",\"ocl\":{\"value\":\"do|LPDrpVXBLbdLTTTngYXBHj@@\",\"coordinates\":\"!BbOq}b@KWb@I~@Ha}bOsWHc|_c~H_Wx@b@JH_P\"},\"mass\":213.27359094915948,\"monoisotopicMass\":213.05854045209998,\"unsaturation\":7,\"elements\":[{\"symbol\":\"C\",\"number\":10},{\"symbol\":\"H\",\"number\":13},{\"symbol\":\"O\",\"number\":3},{\"symbol\":\"S\",\"number\":1}]},{\"symbol\":\"Mts\",\"name\":\"Mesitylene-2-sulphonyl\",\"mf\":\"C9H11O2S\",\"kind\":\"\",\"ocl\":{\"value\":\"d@\",\"coordinates\":\"\"},\"mass\":183.24756861999438,\"monoisotopicMass\":183.04797576807,\"unsaturation\":7,\"elements\":[{\"symbol\":\"C\",\"number\":9},{\"symbol\":\"H\",\"number\":11},{\"symbol\":\"O\",\"number\":2},{\"symbol\":\"S\",\"number\":1}]},{\"symbol\":\"Mtt\",\"name\":\"4-Methyltrityl\",\"mf\":\"C20H17\",\"kind\":\"\",\"ocl\":{\"value\":\"d@\",\"coordinates\":\"\"},\"mass\":257.3497107536532,\"monoisotopicMass\":257.13302554791,\"unsaturation\":23,\"elements\":[{\"symbol\":\"C\",\"number\":20},{\"symbol\":\"H\",\"number\":17}]},{\"symbol\":\"Nle\",\"name\":\"Norleucine diradical\",\"mf\":\"C6H11NO\",\"kind\":\"\",\"ocl\":{\"value\":\"defHPBPOEgEInWYjjhr@@\",\"coordinates\":\"!Bb@I~@Ha}_c~H@m]}bGvHHa}\"},\"mass\":113.15787181078912,\"monoisotopicMass\":113.08406397853,\"unsaturation\":2,\"elements\":[{\"symbol\":\"C\",\"number\":6},{\"symbol\":\"H\",\"number\":11},{\"symbol\":\"N\",\"number\":1},{\"symbol\":\"O\",\"number\":1}]},{\"symbol\":\"Npys\",\"name\":\"3-Nitro-2-pyridinesulphenyl\",\"mf\":\"C5H3N2O2S\",\"kind\":\"\",\"ocl\":{\"value\":\"d@\",\"coordinates\":\"\"},\"mass\":155.1545054234988,\"monoisotopicMass\":154.99152351908998,\"unsaturation\":9,\"elements\":[{\"symbol\":\"C\",\"number\":5},{\"symbol\":\"H\",\"number\":3},{\"symbol\":\"N\",\"number\":2},{\"symbol\":\"O\",\"number\":2},{\"symbol\":\"S\",\"number\":1}]},{\"symbol\":\"Nva\",\"name\":\"Norvaline diradical\",\"mf\":\"C5H9NO\",\"kind\":\"\",\"ocl\":{\"value\":\"diFHPBPOEgEInWfjjL`@\",\"coordinates\":\"!BbGu~Ox`B_`BH_X`Bb@JH_P\"},\"mass\":99.13125440594231,\"monoisotopicMass\":99.06841391407,\"unsaturation\":2,\"elements\":[{\"symbol\":\"C\",\"number\":5},{\"symbol\":\"H\",\"number\":9},{\"symbol\":\"N\",\"number\":1},{\"symbol\":\"O\",\"number\":1}]},{\"symbol\":\"Odmab\",\"name\":\"Odmab\",\"mf\":\"C20H26NO3\",\"kind\":\"\",\"ocl\":{\"value\":\"d@\",\"coordinates\":\"\"},\"mass\":328.4260955245558,\"monoisotopicMass\":328.19126870111995,\"unsaturation\":15,\"elements\":[{\"symbol\":\"C\",\"number\":20},{\"symbol\":\"H\",\"number\":26},{\"symbol\":\"N\",\"number\":1},{\"symbol\":\"O\",\"number\":3}]},{\"symbol\":\"Orn\",\"name\":\"Ornithine diradical\",\"mf\":\"C5H10N2O\",\"kind\":\"\",\"ocl\":{\"value\":\"deeHPBe@|V\\\\Tfy]fjjcH@\",\"coordinates\":\"!Bb@I~@Ha}_c~H@m]}bGvHHa}\"},\"mass\":114.14589837144388,\"monoisotopicMass\":114.07931295072999,\"unsaturation\":2,\"elements\":[{\"symbol\":\"C\",\"number\":5},{\"symbol\":\"H\",\"number\":10},{\"symbol\":\"N\",\"number\":2},{\"symbol\":\"O\",\"number\":1}]},{\"symbol\":\"Ornp\",\"name\":\"Ornithine triradical\",\"mf\":\"C5H9N2O\",\"kind\":\"\",\"ocl\":{\"value\":\"dmUHpHYPBQ\\\\Y|TeUejjjfJP@\",\"coordinates\":\"!BbGvHHa}b@JH_Wxb@KW_Wx@bGt\"},\"mass\":113.13795761738811,\"monoisotopicMass\":113.0714879185,\"unsaturation\":3,\"elements\":[{\"symbol\":\"C\",\"number\":5},{\"symbol\":\"H\",\"number\":9},{\"symbol\":\"N\",\"number\":2},{\"symbol\":\"O\",\"number\":1}]},{\"symbol\":\"Pbf\",\"name\":\"2,2,4,6,7-pentamethyldihydrobenzofurane-5-sulfonyl\",\"mf\":\"C13H17O3S\",\"kind\":\"\",\"ocl\":{\"value\":\"d@\",\"coordinates\":\"\"},\"mass\":253.33756165558833,\"monoisotopicMass\":253.08984058101998,\"unsaturation\":9,\"elements\":[{\"symbol\":\"C\",\"number\":13},{\"symbol\":\"H\",\"number\":17},{\"symbol\":\"O\",\"number\":3},{\"symbol\":\"S\",\"number\":1}]},{\"symbol\":\"Pen\",\"name\":\"Penicillamine diradical\",\"mf\":\"C5H9NOS\",\"kind\":\"\",\"ocl\":{\"value\":\"d@\",\"coordinates\":\"\"},\"mass\":131.19604181206938,\"monoisotopicMass\":131.04048508847,\"unsaturation\":2,\"elements\":[{\"symbol\":\"C\",\"number\":5},{\"symbol\":\"H\",\"number\":9},{\"symbol\":\"N\",\"number\":1},{\"symbol\":\"O\",\"number\":1},{\"symbol\":\"S\",\"number\":1}]},{\"symbol\":\"Penp\",\"name\":\"Penicillamine triradical\",\"mf\":\"C5H8NOS\",\"kind\":\"\",\"ocl\":{\"value\":\"d@\",\"coordinates\":\"\"},\"mass\":130.1881010580136,\"monoisotopicMass\":130.03266005624,\"unsaturation\":3,\"elements\":[{\"symbol\":\"C\",\"number\":5},{\"symbol\":\"H\",\"number\":8},{\"symbol\":\"N\",\"number\":1},{\"symbol\":\"O\",\"number\":1},{\"symbol\":\"S\",\"number\":1}]},{\"symbol\":\"Ph\",\"name\":\"Phenyl\",\"mf\":\"C6H5\",\"kind\":\"\",\"ocl\":{\"value\":\"gOpH@liLkW@@@@\",\"coordinates\":\"!B|Owp_Gy|OwpWy\"},\"mass\":77.10411915069038,\"monoisotopicMass\":77.03912516115,\"unsaturation\":7,\"elements\":[{\"symbol\":\"C\",\"number\":6},{\"symbol\":\"H\",\"number\":5}]},{\"symbol\":\"Phe\",\"name\":\"Phenylalanine diradical\",\"mf\":\"C9H9NO\",\"kind\":\"aa\",\"oneLetter\":\"F\",\"alternativeOneLetter\":\"φ\",\"ocl\":{\"value\":\"dknHPBPOEgEInWe]NZj@@cH@\",\"coordinates\":\"!Bb@I~@Ha}_c~H@m]}bGvH@gxbGvH_Wx\"},\"mass\":147.1741979928833,\"monoisotopicMass\":147.06841391407002,\"unsaturation\":10,\"elements\":[{\"symbol\":\"C\",\"number\":9},{\"symbol\":\"H\",\"number\":9},{\"symbol\":\"N\",\"number\":1},{\"symbol\":\"O\",\"number\":1}]},{\"symbol\":\"Phepcl\",\"name\":\"4-Chlorophenylalanine diradical\",\"mf\":\"C9H8ClNO\",\"kind\":\"\",\"ocl\":{\"value\":\"dg^HpBPOEgFxaInWe_Sfj`@bL`@\",\"coordinates\":\"!BbOq~@Ha}_c~H@m]}bGvH@gxbGvH_WxbGt\"},\"mass\":181.6191948214355,\"monoisotopicMass\":181.02944156384,\"unsaturation\":10,\"elements\":[{\"symbol\":\"C\",\"number\":9},{\"symbol\":\"H\",\"number\":8},{\"symbol\":\"Cl\",\"number\":1},{\"symbol\":\"N\",\"number\":1},{\"symbol\":\"O\",\"number\":1}]},{\"symbol\":\"Phg\",\"name\":\"Phenylglycine\",\"mf\":\"C8H7NO\",\"kind\":\"\",\"ocl\":{\"value\":\"dcNHPBPOEgEInVuWYj`@Hr@@\",\"coordinates\":\"!BbOq~@Ha}b@I~Oxa}bGwW_Wx_cW_P\"},\"mass\":133.1475805880365,\"monoisotopicMass\":133.05276384961002,\"unsaturation\":10,\"elements\":[{\"symbol\":\"C\",\"number\":8},{\"symbol\":\"H\",\"number\":7},{\"symbol\":\"N\",\"number\":1},{\"symbol\":\"O\",\"number\":1}]},{\"symbol\":\"Pmc\",\"name\":\"2,2,5,7,8-Pentamethylchroman-6-sulphonyl\",\"mf\":\"C14H19O3S\",\"kind\":\"\",\"ocl\":{\"value\":\"d@\",\"coordinates\":\"\"},\"mass\":267.36417906043516,\"monoisotopicMass\":267.10549064548,\"unsaturation\":9,\"elements\":[{\"symbol\":\"C\",\"number\":14},{\"symbol\":\"H\",\"number\":19},{\"symbol\":\"O\",\"number\":3},{\"symbol\":\"S\",\"number\":1}]},{\"symbol\":\"Pro\",\"name\":\"Proline diradical\",\"mf\":\"C5H7NO\",\"kind\":\"aa\",\"oneLetter\":\"P\",\"alternativeOneLetter\":\"π\",\"ocl\":{\"value\":\"difHPBPOEgEInYxYjjhr@@\",\"coordinates\":\"!Bb@I~@Ha}tEJNwr[@UMo@FP\"},\"mass\":97.11537289783075,\"monoisotopicMass\":97.05276384961,\"unsaturation\":4,\"elements\":[{\"symbol\":\"C\",\"number\":5},{\"symbol\":\"H\",\"number\":7},{\"symbol\":\"N\",\"number\":1},{\"symbol\":\"O\",\"number\":1}]},{\"symbol\":\"Pyr\",\"name\":\"Pyroglutamine\",\"mf\":\"C5H5NO2\",\"kind\":\"\",\"ocl\":{\"value\":\"deVDPBRP|V\\\\TfygxYjjZL`@\",\"coordinates\":\"!Bb@I~@Ha}tEJNwr[@UMo@FXBN\"},\"mass\":111.09889631403748,\"monoisotopicMass\":111.03202840472,\"unsaturation\":6,\"elements\":[{\"symbol\":\"C\",\"number\":5},{\"symbol\":\"H\",\"number\":5},{\"symbol\":\"N\",\"number\":1},{\"symbol\":\"O\",\"number\":2}]},{\"symbol\":\"Sar\",\"name\":\"Sarcosine diradical\",\"mf\":\"C3H5NO\",\"kind\":\"\",\"ocl\":{\"value\":\"d@\",\"coordinates\":\"\"},\"mass\":71.07801959624871,\"monoisotopicMass\":71.03711378515,\"unsaturation\":2,\"elements\":[{\"symbol\":\"C\",\"number\":3},{\"symbol\":\"H\",\"number\":5},{\"symbol\":\"N\",\"number\":1},{\"symbol\":\"O\",\"number\":1}]},{\"symbol\":\"Ser\",\"name\":\"Serine diradical\",\"mf\":\"C3H5NO2\",\"kind\":\"aa\",\"oneLetter\":\"S\",\"alternativeOneLetter\":\"σ\",\"ocl\":{\"value\":\"dazDPBS`|V\\\\TfyYjjL`@\",\"coordinates\":\"!Bb@I~@Ha}_c~H@m]}bGt\"},\"mass\":87.07742452056698,\"monoisotopicMass\":87.03202840472,\"unsaturation\":2,\"elements\":[{\"symbol\":\"C\",\"number\":3},{\"symbol\":\"H\",\"number\":5},{\"symbol\":\"N\",\"number\":1},{\"symbol\":\"O\",\"number\":2}]},{\"symbol\":\"Serp\",\"name\":\"Serine triradical\",\"mf\":\"C3H4NO2\",\"kind\":\"\",\"ocl\":{\"value\":\"diFDpB`PBV\\\\^|TeYZjjXq@@\",\"coordinates\":\"!BbGvHHa}_c~HM]}_`BH_P\"},\"mass\":86.06948376651121,\"monoisotopicMass\":86.02420337249,\"unsaturation\":3,\"elements\":[{\"symbol\":\"C\",\"number\":3},{\"symbol\":\"H\",\"number\":4},{\"symbol\":\"N\",\"number\":1},{\"symbol\":\"O\",\"number\":2}]},{\"symbol\":\"Sta\",\"name\":\"Statine diradical\",\"mf\":\"C8H15NO2\",\"kind\":\"\",\"ocl\":{\"value\":\"d@\",\"coordinates\":\"\"},\"mass\":157.210511544801,\"monoisotopicMass\":157.11027872702002,\"unsaturation\":2,\"elements\":[{\"symbol\":\"C\",\"number\":8},{\"symbol\":\"H\",\"number\":15},{\"symbol\":\"N\",\"number\":1},{\"symbol\":\"O\",\"number\":2}]},{\"symbol\":\"Stap\",\"name\":\"Statine triradical\",\"mf\":\"C8H14NO2\",\"kind\":\"\",\"ocl\":{\"value\":\"d@\",\"coordinates\":\"\"},\"mass\":156.2025707907452,\"monoisotopicMass\":156.10245369479,\"unsaturation\":3,\"elements\":[{\"symbol\":\"C\",\"number\":8},{\"symbol\":\"H\",\"number\":14},{\"symbol\":\"N\",\"number\":1},{\"symbol\":\"O\",\"number\":2}]},{\"symbol\":\"Tacm\",\"name\":\"Trimethylacetamidomethyl\",\"mf\":\"C6H12NO\",\"kind\":\"\",\"ocl\":{\"value\":\"d@\",\"coordinates\":\"\"},\"mass\":114.16581256484488,\"monoisotopicMass\":114.09188901076,\"unsaturation\":1,\"elements\":[{\"symbol\":\"C\",\"number\":6},{\"symbol\":\"H\",\"number\":12},{\"symbol\":\"N\",\"number\":1},{\"symbol\":\"O\",\"number\":1}]},{\"symbol\":\"Tbdms\",\"name\":\"t-Butyldimethylsilyl\",\"mf\":\"C6H15Si\",\"kind\":\"\",\"ocl\":{\"value\":\"d@\",\"coordinates\":\"\"},\"mass\":115.2690253969541,\"monoisotopicMass\":115.09430201810001,\"unsaturation\":1,\"elements\":[{\"symbol\":\"C\",\"number\":6},{\"symbol\":\"H\",\"number\":15},{\"symbol\":\"Si\",\"number\":1}]},{\"symbol\":\"Tbu\",\"name\":\"t-Butyl\",\"mf\":\"C4H9\",\"kind\":\"\",\"ocl\":{\"value\":\"d@\",\"coordinates\":\"\"},\"mass\":57.114410373442986,\"monoisotopicMass\":57.07042529007,\"unsaturation\":-1,\"elements\":[{\"symbol\":\"C\",\"number\":4},{\"symbol\":\"H\",\"number\":9}]},{\"symbol\":\"Tbuo\",\"name\":\"t-Butoxy\",\"mf\":\"C4H9O\",\"kind\":\"\",\"ocl\":{\"value\":\"d@\",\"coordinates\":\"\"},\"mass\":73.11381529776126,\"monoisotopicMass\":73.06533990964,\"unsaturation\":-1,\"elements\":[{\"symbol\":\"C\",\"number\":4},{\"symbol\":\"H\",\"number\":9},{\"symbol\":\"O\",\"number\":1}]},{\"symbol\":\"Tbuthio\",\"name\":\"t-Butylthio\",\"mf\":\"C4H9S\",\"kind\":\"\",\"ocl\":{\"value\":\"d@\",\"coordinates\":\"\"},\"mass\":89.17919777957005,\"monoisotopicMass\":89.04249646446999,\"unsaturation\":-1,\"elements\":[{\"symbol\":\"C\",\"number\":4},{\"symbol\":\"H\",\"number\":9},{\"symbol\":\"S\",\"number\":1}]},{\"symbol\":\"Tfa\",\"name\":\"Trifluoroacetyl\",\"mf\":\"C2F3O\",\"kind\":\"\",\"ocl\":{\"value\":\"d@\",\"coordinates\":\"\"},\"mass\":97.01608620597878,\"monoisotopicMass\":96.99012410776,\"unsaturation\":1,\"elements\":[{\"symbol\":\"C\",\"number\":2},{\"symbol\":\"F\",\"number\":3},{\"symbol\":\"O\",\"number\":1}]},{\"symbol\":\"Thr\",\"name\":\"Threonine diradical\",\"mf\":\"C4H7NO2\",\"kind\":\"aa\",\"oneLetter\":\"T\",\"alternativeOneLetter\":\"τ\",\"ocl\":{\"value\":\"d@\",\"coordinates\":\"\"},\"mass\":101.10404192541378,\"monoisotopicMass\":101.04767846918,\"unsaturation\":2,\"elements\":[{\"symbol\":\"C\",\"number\":4},{\"symbol\":\"H\",\"number\":7},{\"symbol\":\"N\",\"number\":1},{\"symbol\":\"O\",\"number\":2}]},{\"symbol\":\"Thrp\",\"name\":\"Threonine triradical\",\"mf\":\"C4H6NO2\",\"kind\":\"\",\"ocl\":{\"value\":\"d@\",\"coordinates\":\"\"},\"mass\":100.09610117135801,\"monoisotopicMass\":100.03985343695001,\"unsaturation\":3,\"elements\":[{\"symbol\":\"C\",\"number\":4},{\"symbol\":\"H\",\"number\":6},{\"symbol\":\"N\",\"number\":1},{\"symbol\":\"O\",\"number\":2}]},{\"symbol\":\"Tfsi\",\"name\":\"(Bis)(trifluoromethanesulfonyl)imide\",\"mf\":\"C2F6NO4S2\",\"kind\":\"\",\"ocl\":{\"value\":\"d@\",\"coordinates\":\"\"},\"mass\":280.1457884908235,\"monoisotopicMass\":279.91729380789,\"unsaturation\":-1,\"elements\":[{\"symbol\":\"C\",\"number\":2},{\"symbol\":\"F\",\"number\":6},{\"symbol\":\"N\",\"number\":1},{\"symbol\":\"O\",\"number\":4},{\"symbol\":\"S\",\"number\":2}]},{\"symbol\":\"Tips\",\"name\":\"Triisopropylsilyl\",\"mf\":\"C9H21Si\",\"kind\":\"\",\"ocl\":{\"value\":\"dmT@P@VX\\\\DffYjjjh@@\",\"coordinates\":\"!B_a@gHb\\\\]FBIuWxP^zi~KwxPFAt\"},\"mass\":157.34887761149452,\"monoisotopicMass\":157.14125221148,\"unsaturation\":1,\"elements\":[{\"symbol\":\"C\",\"number\":9},{\"symbol\":\"H\",\"number\":21},{\"symbol\":\"Si\",\"number\":1}]},{\"symbol\":\"Tms\",\"name\":\"Trimethylsilyl\",\"mf\":\"C3H9Si\",\"kind\":\"\",\"ocl\":{\"value\":\"gJPD@lqpRZj`@\",\"coordinates\":\"!BbOq~@GxbGt\"},\"mass\":73.1891731824137,\"monoisotopicMass\":73.04735182472,\"unsaturation\":1,\"elements\":[{\"symbol\":\"C\",\"number\":3},{\"symbol\":\"H\",\"number\":9},{\"symbol\":\"Si\",\"number\":1}]},{\"symbol\":\"Tos\",\"name\":\"Tosyl\",\"mf\":\"C7H7O2S\",\"kind\":\"\",\"ocl\":{\"value\":\"dmtDPDpEf@cHiCDeafV@B@@\",\"coordinates\":\"!B|Ou||Ovw|Gwp_Gy|GwpWy|Gt\"},\"mass\":155.1943338103008,\"monoisotopicMass\":155.01667563914998,\"unsaturation\":7,\"elements\":[{\"symbol\":\"C\",\"number\":7},{\"symbol\":\"H\",\"number\":7},{\"symbol\":\"O\",\"number\":2},{\"symbol\":\"S\",\"number\":1}]},{\"symbol\":\"Trp\",\"name\":\"Tryptophan diradical\",\"mf\":\"C11H10N2O\",\"kind\":\"aa\",\"oneLetter\":\"W\",\"alternativeOneLetter\":\"ω\",\"ocl\":{\"value\":\"f`qQA@BFPCqXxiMr|rnhsoSUTa@QCD@@\",\"coordinates\":\"!BbOq~@Ha}_c~H@m]}bGwPTh{_UMojXL@YpB[@Ini`\"},\"mass\":186.21031375185538,\"monoisotopicMass\":186.07931295073,\"unsaturation\":14,\"elements\":[{\"symbol\":\"C\",\"number\":11},{\"symbol\":\"H\",\"number\":10},{\"symbol\":\"N\",\"number\":2},{\"symbol\":\"O\",\"number\":1}]},{\"symbol\":\"Trpp\",\"name\":\"Tryptophan triradical\",\"mf\":\"C11H9N2O\",\"kind\":\"\",\"ocl\":{\"value\":\"fhiQC@HFB@I\\\\x~|TfYU_ebLDjhDHjibFd@\",\"coordinates\":\"!BTmA}bL@fUHR_Ihz@iVBeXHc|grZH_WxbOsW_Wx@bGt\"},\"mass\":185.20237299779959,\"monoisotopicMass\":185.07148791850003,\"unsaturation\":15,\"elements\":[{\"symbol\":\"C\",\"number\":11},{\"symbol\":\"H\",\"number\":9},{\"symbol\":\"N\",\"number\":2},{\"symbol\":\"O\",\"number\":1}]},{\"symbol\":\"Trt\",\"name\":\"Trityl\",\"mf\":\"C19H15\",\"kind\":\"\",\"ocl\":{\"value\":\"fbm@B@@KJSSLrjkyhnRGMT@@@@@@@@\",\"coordinates\":\"!BrHI~PGy_rMvW@l`BQCvWw\\\\bBAg}~PGy@]i}~W|c]cNwH`i_]_e|\"},\"mass\":243.32309334880637,\"monoisotopicMass\":243.11737548345,\"unsaturation\":23,\"elements\":[{\"symbol\":\"C\",\"number\":19},{\"symbol\":\"H\",\"number\":15}]},{\"symbol\":\"Tyr\",\"name\":\"Tyrosine diradical\",\"mf\":\"C9H9NO2\",\"kind\":\"aa\",\"oneLetter\":\"Y\",\"alternativeOneLetter\":\"ψ\",\"ocl\":{\"value\":\"dg^DPBRp|V\\\\Tfy^U}NZj@BHr@@\",\"coordinates\":\"!BbOq~@Ha}_c~H@m]}bGvH@gxbGvH_WxbGt\"},\"mass\":163.1736029172016,\"monoisotopicMass\":163.06332853364,\"unsaturation\":10,\"elements\":[{\"symbol\":\"C\",\"number\":9},{\"symbol\":\"H\",\"number\":9},{\"symbol\":\"N\",\"number\":1},{\"symbol\":\"O\",\"number\":2}]},{\"symbol\":\"Tyrp\",\"name\":\"Tyrosine triradical\",\"mf\":\"C9H8NO2\",\"kind\":\"\",\"ocl\":{\"value\":\"do~DpEapBS\\\\[|Tee]YYnh@JjdbT@\",\"coordinates\":\"!B_`BHGx@bGvH@h`BbKvH@ha}_c~H@m]}_`BHoP\"},\"mass\":162.16566216314578,\"monoisotopicMass\":162.05550350141,\"unsaturation\":11,\"elements\":[{\"symbol\":\"C\",\"number\":9},{\"symbol\":\"H\",\"number\":8},{\"symbol\":\"N\",\"number\":1},{\"symbol\":\"O\",\"number\":2}]},{\"symbol\":\"Val\",\"name\":\"Valine\",\"mf\":\"C5H9NO\",\"kind\":\"aa\",\"oneLetter\":\"V\",\"alternativeOneLetter\":\"ν\",\"ocl\":{\"value\":\"diFHPBPOEgEInVfjjL`@\",\"coordinates\":\"!Bb@I~@Ha}_c~H@m]}_`BH_P\"},\"mass\":99.13125440594231,\"monoisotopicMass\":99.06841391407,\"unsaturation\":2,\"elements\":[{\"symbol\":\"C\",\"number\":5},{\"symbol\":\"H\",\"number\":9},{\"symbol\":\"N\",\"number\":1},{\"symbol\":\"O\",\"number\":1}]},{\"symbol\":\"Valoh\",\"name\":\"beta-Hydroxyvaline diradical\",\"mf\":\"C5H9NO2\",\"kind\":\"\",\"ocl\":{\"value\":\"defDPBS`|V\\\\TfyZfjjcH@\",\"coordinates\":\"!Bb@I~@Ha}b@I~Oxa}Owy~OpA~\"},\"mass\":115.13065933026058,\"monoisotopicMass\":115.06332853364,\"unsaturation\":2,\"elements\":[{\"symbol\":\"C\",\"number\":5},{\"symbol\":\"H\",\"number\":9},{\"symbol\":\"N\",\"number\":1},{\"symbol\":\"O\",\"number\":2}]},{\"symbol\":\"Valohp\",\"name\":\"beta-Hydroxyvaline triradical\",\"mf\":\"C5H8NO2\",\"kind\":\"\",\"ocl\":{\"value\":\"dmVDpFaPBQ\\\\Y|\\\\bTbaTjjjXq@@\",\"coordinates\":\"!BbGvHHa}_Xc|bGxb@KW_Wx@bGt\"},\"mass\":114.1227185762048,\"monoisotopicMass\":114.05550350141002,\"unsaturation\":3,\"elements\":[{\"symbol\":\"C\",\"number\":5},{\"symbol\":\"H\",\"number\":8},{\"symbol\":\"N\",\"number\":1},{\"symbol\":\"O\",\"number\":2}]},{\"symbol\":\"Xan\",\"name\":\"Xanthyl\",\"mf\":\"C13H9O\",\"kind\":\"\",\"ocl\":{\"value\":\"d@\",\"coordinates\":\"\"},\"mass\":181.21043836837848,\"monoisotopicMass\":181.06533990964002,\"unsaturation\":17,\"elements\":[{\"symbol\":\"C\",\"number\":13},{\"symbol\":\"H\",\"number\":9},{\"symbol\":\"O\",\"number\":1}]},{\"symbol\":\"Xle\",\"name\":\"Leucine or Isoleucine diradical\",\"mf\":\"C6H11NO\",\"kind\":\"aa\",\"oneLetter\":\"J\",\"mass\":113.15787181078912,\"monoisotopicMass\":113.08406397853,\"unsaturation\":2,\"elements\":[{\"symbol\":\"C\",\"number\":6},{\"symbol\":\"H\",\"number\":11},{\"symbol\":\"N\",\"number\":1},{\"symbol\":\"O\",\"number\":1}]},{\"symbol\":\"Z\",\"name\":\"Benzyloxycarbonyl\",\"mf\":\"C8H7O2\",\"kind\":\"\",\"ocl\":{\"value\":\"dmtD`DpEeImYVUfh@@@@\",\"coordinates\":\"!Bb@I~@Ha}b@JH_Xc|_c~H_Xa}_c|\"},\"mass\":135.14028230090898,\"monoisotopicMass\":135.04460446475,\"unsaturation\":9,\"elements\":[{\"symbol\":\"C\",\"number\":8},{\"symbol\":\"H\",\"number\":7},{\"symbol\":\"O\",\"number\":2}]},{\"symbol\":\"Damp\",\"name\":\"Desoxyadenosine monophosphate diradical\",\"mf\":\"C10H12N5O5P\",\"kind\":\"DNAp\",\"oneLetter\":\"A\",\"alternativeOneLetter\":\"α\",\"ocl\":{\"value\":\"fnsiS@IASUlJB]xGbkplxyDhhldhiEEUeSdTekUUUULBATXPlKd@@\",\"coordinates\":\"!Bqc}{JxyO|XoSWC}W]poGQ\\\\Ou}]rmx\\\\Ou}]{qpza|qb}MJwlk^sFO|X\"},\"mass\":313.2069506932622,\"monoisotopicMass\":313.05760550518,\"unsaturation\":14,\"elements\":[{\"symbol\":\"C\",\"number\":10},{\"symbol\":\"H\",\"number\":12},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":5},{\"symbol\":\"P\",\"number\":1}]},{\"symbol\":\"Dcmp\",\"name\":\"Desoxycytidine monophosphate diradical\",\"mf\":\"C9H12N3O6P\",\"kind\":\"DNAp\",\"oneLetter\":\"C\",\"alternativeOneLetter\":\"ς\",\"ocl\":{\"value\":\"fjmps@IQKB`g^BCqUxV\\\\\\\\bTTVRTTbb^iqNZjjjifVkBEa\\\\`@\",\"coordinates\":\"!Bqc}{JxyO|XoSWA}_W]poGQ\\\\GuMKuMh\\\\Gu}]{qpSF]tWQTvatP\"},\"mass\":289.18221329795364,\"monoisotopicMass\":289.04637211589,\"unsaturation\":10,\"elements\":[{\"symbol\":\"C\",\"number\":9},{\"symbol\":\"H\",\"number\":12},{\"symbol\":\"N\",\"number\":3},{\"symbol\":\"O\",\"number\":6},{\"symbol\":\"P\",\"number\":1}]},{\"symbol\":\"Dgmp\",\"name\":\"Desoxyguanosine monophosphate diradical\",\"mf\":\"C10H12N5O6P\",\"kind\":\"DNAp\",\"oneLetter\":\"G\",\"alternativeOneLetter\":\"γ\",\"ocl\":{\"value\":\"fakhs@IASUlJB]{hOEWaYqrIQQYIQRJJkQTyEIZuUUUSRtsUaBpnP@\",\"coordinates\":\"!Bqc}{JxyO|XoSWA}W]poGQ\\\\Gu}]rmx\\\\Ou}]{qpza|qb}MJwlk^sFza|q`\"},\"mass\":329.20635561758047,\"monoisotopicMass\":329.05252012475,\"unsaturation\":14,\"elements\":[{\"symbol\":\"C\",\"number\":10},{\"symbol\":\"H\",\"number\":12},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":6},{\"symbol\":\"P\",\"number\":1}]},{\"symbol\":\"Dtmp\",\"name\":\"Desoxythymidine monophosphate diradical\",\"mf\":\"C10H13N2O7P\",\"kind\":\"DNAp\",\"oneLetter\":\"T\",\"alternativeOneLetter\":\"τ\",\"ocl\":{\"value\":\"ff}Qs@IQaPSoAjCqUxV\\\\\\\\bTTVRTTbbZUNIsUUUULsSVDKBy@@\",\"coordinates\":\"!Bqc}{JxyO|XoSWC}_W]poGQ\\\\GuMKuMh\\\\Gu}]{qpSF]tWQTvaSZGQ\"},\"mass\":304.1935916616171,\"monoisotopicMass\":304.04603776326,\"unsaturation\":10,\"elements\":[{\"symbol\":\"C\",\"number\":10},{\"symbol\":\"H\",\"number\":13},{\"symbol\":\"N\",\"number\":2},{\"symbol\":\"O\",\"number\":7},{\"symbol\":\"P\",\"number\":1}]},{\"symbol\":\"Dump\",\"name\":\"Desoxyuridine monophosphate diradical\",\"mf\":\"C9H11N2O7P\",\"kind\":\"DNAp\",\"oneLetter\":\"U\",\"alternativeOneLetter\":\"υ\",\"ocl\":{\"value\":\"fjmQs@IQaPSoAJCqUxV\\\\\\\\bTTVRTTbb^iqNZjjjifYkBEa\\\\`@\",\"coordinates\":\"!Bqc}{JxyO|XoSWA}_W]poGQ\\\\GuMKuMh\\\\Gu}]{qpSF]tWQTvatP\"},\"mass\":290.1669742567703,\"monoisotopicMass\":290.0303876988,\"unsaturation\":10,\"elements\":[{\"symbol\":\"C\",\"number\":9},{\"symbol\":\"H\",\"number\":11},{\"symbol\":\"N\",\"number\":2},{\"symbol\":\"O\",\"number\":7},{\"symbol\":\"P\",\"number\":1}]},{\"symbol\":\"Drmp\",\"name\":\"Desoxyribose monophosphate diradical\",\"mf\":\"C5H7O5P\",\"kind\":\"DNAp\",\"ocl\":{\"value\":\"d@\",\"coordinates\":\"\"},\"mass\":178.08005138207807,\"monoisotopicMass\":178.00311032188,\"unsaturation\":4,\"elements\":[{\"symbol\":\"C\",\"number\":5},{\"symbol\":\"H\",\"number\":7},{\"symbol\":\"O\",\"number\":5},{\"symbol\":\"P\",\"number\":1}]},{\"symbol\":\"Dadp\",\"name\":\"Desoxyadenosine diphosphate diradical\",\"mf\":\"C10H13N5O8P2\",\"kind\":\"DNApp\",\"oneLetter\":\"A\",\"ocl\":{\"value\":\"fmwhH`IASM\\\\JBl{wQ`|U^F_AkbdlsjsSOoRtyEMYuUUUM@pSEQaBpnP@\",\"coordinates\":\"!BIi[Rx{_grZOSXa}_]^H@mQbGu}utnDM^HGwWzf~_Ih}M_`AKvto[_`@_`A~grZ_I`\"},\"mass\":393.1868682186928,\"monoisotopicMass\":393.02393639454,\"unsaturation\":14,\"elements\":[{\"symbol\":\"C\",\"number\":10},{\"symbol\":\"H\",\"number\":13},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":8},{\"symbol\":\"P\",\"number\":2}]},{\"symbol\":\"Dcdp\",\"name\":\"Desoxycytidine diphosphate diradical\",\"mf\":\"C9H13N3O9P2\",\"kind\":\"DNApp\",\"oneLetter\":\"C\",\"ocl\":{\"value\":\"fikqH`IQGB`kN|EoP^JoCOaUqrIQQYIQRJKGRJgDejjjjZYfZkBEa\\\\`@\",\"coordinates\":\"!BIi[Rx{_grZOSXa}_]^H@mQbGuMcqLX@m^H@gwWKB__t]Q_`@SFGx@Owx@_mQ\"},\"mass\":369.16213082338425,\"monoisotopicMass\":369.01270300525005,\"unsaturation\":10,\"elements\":[{\"symbol\":\"C\",\"number\":9},{\"symbol\":\"H\",\"number\":13},{\"symbol\":\"N\",\"number\":3},{\"symbol\":\"O\",\"number\":9},{\"symbol\":\"P\",\"number\":2}]},{\"symbol\":\"Dgdp\",\"name\":\"Desoxyguanosine diphosphate diradical\",\"mf\":\"C10H13N5O9P2\",\"kind\":\"DNApp\",\"oneLetter\":\"G\",\"ocl\":{\"value\":\"fcoiH`IASM\\\\JBl{wQ{Axj|L~CWEIYgUff_^fZ\\\\bflzjjjfiZifZlHVEr@@\",\"coordinates\":\"!BIi[Rx{_grZOSXa}_]^H@mQbGu}utnD@m^H@gwWzf~_Ih}M_`AKvto[_`@_`A~gr[j[y|f\"},\"mass\":409.186273143011,\"monoisotopicMass\":409.01885101411,\"unsaturation\":14,\"elements\":[{\"symbol\":\"C\",\"number\":10},{\"symbol\":\"H\",\"number\":13},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":9},{\"symbol\":\"P\",\"number\":2}]},{\"symbol\":\"Dtdp\",\"name\":\"Desoxythymidine diphosphate diradical\",\"mf\":\"C10H14N2O10P2\",\"kind\":\"DNApp\",\"oneLetter\":\"T\",\"ocl\":{\"value\":\"fe{Ph`IQaPUg^Ct\\\\p^JoCO`uqrIQQYIQRJKEJQTxdmUUUSSMTsVDKBy@@\",\"coordinates\":\"!BIi[Rx{_grZOSXa}_]^HMQbGuMcqLX@m^H@gwWKB__t]Q_`@SFALX_`@_`A~w}D\"},\"mass\":384.1735091870477,\"monoisotopicMass\":384.01236865262,\"unsaturation\":10,\"elements\":[{\"symbol\":\"C\",\"number\":10},{\"symbol\":\"H\",\"number\":14},{\"symbol\":\"N\",\"number\":2},{\"symbol\":\"O\",\"number\":10},{\"symbol\":\"P\",\"number\":2}]},{\"symbol\":\"Dudp\",\"name\":\"Desoxyuridine diphosphate diradical\",\"mf\":\"C9H12N2O10P2\",\"kind\":\"DNApp\",\"oneLetter\":\"U\",\"ocl\":{\"value\":\"fikPh`IQaPUg^Bwhp^JoCOaUqrIQQYIQRJKGRJgDejjjjZYjYkBEa\\\\`@\",\"coordinates\":\"!BIi[Rx{_grZOSXa}_]^H@mQbGuMcqLX@m^H@gwWKB__t]Q_`@SFGx@Owx@_mQ\"},\"mass\":370.1468917822009,\"monoisotopicMass\":369.99671858816,\"unsaturation\":10,\"elements\":[{\"symbol\":\"C\",\"number\":9},{\"symbol\":\"H\",\"number\":12},{\"symbol\":\"N\",\"number\":2},{\"symbol\":\"O\",\"number\":10},{\"symbol\":\"P\",\"number\":2}]},{\"symbol\":\"Datp\",\"name\":\"Desoxyadenosine triphosphate diradical\",\"mf\":\"C10H14N5O11P3\",\"kind\":\"DNAppp\",\"oneLetter\":\"A\",\"ocl\":{\"value\":\"eohZMJ@I@diehJAKGOFnakg`OESpr|Mo@yqrIQQYIQRJKYZQKVRcbIJjZjjjihFAhjZcAAXKb@@\",\"coordinates\":\"!BIi[Rx{_grZOSXa}_]^H@mQbGu}utnDM^H@gwWzf~_Ih}M_`AKvto[@hcW@`A~grZ_Igx@_`@@_c}~\"},\"mass\":473.16678574412344,\"monoisotopicMass\":472.9902672839,\"unsaturation\":14,\"elements\":[{\"symbol\":\"C\",\"number\":10},{\"symbol\":\"H\",\"number\":14},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":11},{\"symbol\":\"P\",\"number\":3}]},{\"symbol\":\"Dctp\",\"name\":\"Desoxycytidine triphosphate diradical\",\"mf\":\"C9H14N3O12P3\",\"kind\":\"DNAppp\",\"oneLetter\":\"C\",\"ocl\":{\"value\":\"fkopZ`IQGB`kN|Fk^{NCqUxY|I~BwGHeEEdeEHhl]HlYJ\\\\RVjjjiifVjfkBEa\\\\`@\",\"coordinates\":\"!BIi[Rx{_grZOSXa}_]^H@mQbGuMcqLX@m^H@gwWKB__t]Q_`@SFOrHupH@_mQ_`A~@@A~Owx\"},\"mass\":449.14204834881485,\"monoisotopicMass\":448.97903389461004,\"unsaturation\":10,\"elements\":[{\"symbol\":\"C\",\"number\":9},{\"symbol\":\"H\",\"number\":14},{\"symbol\":\"N\",\"number\":3},{\"symbol\":\"O\",\"number\":12},{\"symbol\":\"P\",\"number\":3}]},{\"symbol\":\"Dgtp\",\"name\":\"Desoxyguanosine triphosphate diradical\",\"mf\":\"C10H14N5O12P3\",\"kind\":\"DNAppp\",\"oneLetter\":\"G\",\"ocl\":{\"value\":\"e`TZCJ@I@diehJAKGOFnamgo`OESpr|CoByqrIQQYIQRJKYZQQYrT\\\\QIUSUUUUMRuMLtuVBBpWD@@\",\"coordinates\":\"!BIi[Rx{_grZOSXa}_]^H@mQbGu}utnD@m^H@gwWzf~_Ih}M_`AKvto[@hcW@`A~gr[j[y|f_`A~@@A~Owx\"},\"mass\":489.16619066844174,\"monoisotopicMass\":488.98518190347005,\"unsaturation\":14,\"elements\":[{\"symbol\":\"C\",\"number\":10},{\"symbol\":\"H\",\"number\":14},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":12},{\"symbol\":\"P\",\"number\":3}]},{\"symbol\":\"Dttp\",\"name\":\"Desoxythymidine triphosphate diradical\",\"mf\":\"C10H15N2O13P3\",\"kind\":\"DNAppp\",\"oneLetter\":\"T\",\"ocl\":{\"value\":\"fgQZ`IQaPUg^BwhygnCqUxY|E~FwGHeEEdeEHhlTiDSISbRuUUUMLuMMMVDKBy@@\",\"coordinates\":\"!BIi[Rx{_grZOSXa}_]^H@mQbGuMcqLX@m^H@gwWKB__t]Q_`@SFALXHcW@`A~w}E~@Gx@@Gx_`\"},\"mass\":464.15342671247834,\"monoisotopicMass\":463.97869954198,\"unsaturation\":10,\"elements\":[{\"symbol\":\"C\",\"number\":10},{\"symbol\":\"H\",\"number\":15},{\"symbol\":\"N\",\"number\":2},{\"symbol\":\"O\",\"number\":13},{\"symbol\":\"P\",\"number\":3}]},{\"symbol\":\"Dutp\",\"name\":\"Desoxyuridine triphosphate diradical\",\"mf\":\"C9H13N2O13P3\",\"kind\":\"DNAppp\",\"oneLetter\":\"U\",\"ocl\":{\"value\":\"fkoQZ`IQaPUg^CUoQ{NCqUxY|I~BwGHeEEdeEHhl]HlYJ\\\\RVjjjiiffffkBEa\\\\`@\",\"coordinates\":\"!BIi[Rx{_grZOSXa}_]^H@mQbGuMcqLX@m^H@gwWKB__t]Q_`@SFOrHupH@_mQ_`A~@@A~Owx\"},\"mass\":450.1268093076315,\"monoisotopicMass\":449.96304947752,\"unsaturation\":10,\"elements\":[{\"symbol\":\"C\",\"number\":9},{\"symbol\":\"H\",\"number\":13},{\"symbol\":\"N\",\"number\":2},{\"symbol\":\"O\",\"number\":13},{\"symbol\":\"P\",\"number\":3}]},{\"symbol\":\"Dade\",\"name\":\"Desoxyadenosine diradical\",\"mf\":\"C10H11N5O2\",\"kind\":\"DNA\",\"oneLetter\":\"A\",\"ocl\":{\"value\":\"fluha@IF]ELJ@|QNJRsN|rntyYpXuUUTBATXPlKd@@\",\"coordinates\":\"!B\\\\KqpQARcg|T^|X@@Id`zeHo@Ie}]vaLcg|T^qAMDDvN_xy\"},\"mass\":233.22703316783156,\"monoisotopicMass\":233.09127461582,\"unsaturation\":14,\"elements\":[{\"symbol\":\"C\",\"number\":10},{\"symbol\":\"H\",\"number\":11},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":2}]},{\"symbol\":\"Dcyt\",\"name\":\"Desoxycytidine diradical\",\"mf\":\"C9H11N3O3\",\"kind\":\"DNA\",\"oneLetter\":\"C\",\"ocl\":{\"value\":\"fhiqa@IVCBa`^HgEIYg^Y~gG^jjjiejpaXWH@\",\"coordinates\":\"!BBOpH_UARcc}TN|Y@PIe`zeIO@MDSIrpXTd}RSqLgTd|\"},\"mass\":209.202295772523,\"monoisotopicMass\":209.08004122653,\"unsaturation\":10,\"elements\":[{\"symbol\":\"C\",\"number\":9},{\"symbol\":\"H\",\"number\":11},{\"symbol\":\"N\",\"number\":3},{\"symbol\":\"O\",\"number\":3}]},{\"symbol\":\"Dgua\",\"name\":\"Desoxyguanosine diradical\",\"mf\":\"C10H11N5O3\",\"kind\":\"DNA\",\"oneLetter\":\"G\",\"ocl\":{\"value\":\"fbmia@IF]ELJYAxb\\\\Tef]ye^Z\\\\lxLZjjjeZfkBEa\\\\`@\",\"coordinates\":\"!B\\\\KqpQARcg|T^|X@@Id`zeHo@Ie}]vaLcg|T^qAMDDvN_vaLcg|\"},\"mass\":249.22643809214986,\"monoisotopicMass\":249.08618923539,\"unsaturation\":14,\"elements\":[{\"symbol\":\"C\",\"number\":10},{\"symbol\":\"H\",\"number\":11},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":3}]},{\"symbol\":\"Dthy\",\"name\":\"Desoxythymidine diradical\",\"mf\":\"C10H12N2O4\",\"kind\":\"DNA\",\"oneLetter\":\"T\",\"ocl\":{\"value\":\"fdyPQ@IVaPtP^HgEIYg^YuiqwjjjjYikBEa\\\\`@\",\"coordinates\":\"!BBOpH_UARcc}TN|Y@PIe`zeIO@MDSIrpXTd}RSqLgDr]RSp\"},\"mass\":224.2136741361865,\"monoisotopicMass\":224.07970687390002,\"unsaturation\":10,\"elements\":[{\"symbol\":\"C\",\"number\":10},{\"symbol\":\"H\",\"number\":12},{\"symbol\":\"N\",\"number\":2},{\"symbol\":\"O\",\"number\":4}]},{\"symbol\":\"Dura\",\"name\":\"Desoxyuridine diradical\",\"mf\":\"C9H10N2O4\",\"kind\":\"DNA\",\"oneLetter\":\"U\",\"ocl\":{\"value\":\"fhiPQ@IVaPpP^HgEIYg^Y~gG^jjjifZpaXWH@\",\"coordinates\":\"!BBOpH_UARcc}TN|Y@PIe`zeIO@MDSIrpXTd}RSqLgTd|\"},\"mass\":210.1870567313397,\"monoisotopicMass\":210.06405680944,\"unsaturation\":10,\"elements\":[{\"symbol\":\"C\",\"number\":9},{\"symbol\":\"H\",\"number\":10},{\"symbol\":\"N\",\"number\":2},{\"symbol\":\"O\",\"number\":4}]},{\"symbol\":\"Amp\",\"name\":\"Adenosine monophosphate diradical\",\"mf\":\"C10H12N5O6P\",\"kind\":\"RNAp\",\"oneLetter\":\"A\",\"alternativeOneLetter\":\"α\",\"ocl\":{\"value\":\"fakhs@INBwlJ\\\\TgHOFwaEqrIQQSYQJIRIMLyxMVuUUUPLpEPQDqBId@@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuPBOq_qopHBGtgD}D@RpPH_Wtw@aOTd}RtPCQ@@\"},\"mass\":329.20635561758047,\"monoisotopicMass\":329.05252012475,\"unsaturation\":14,\"elements\":[{\"symbol\":\"C\",\"number\":10},{\"symbol\":\"H\",\"number\":12},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":6},{\"symbol\":\"P\",\"number\":1}]},{\"symbol\":\"Cmp\",\"name\":\"Cytidine monophosphate diradical\",\"mf\":\"C9H12N3O7P\",\"kind\":\"RNAp\",\"oneLetter\":\"C\",\"alternativeOneLetter\":\"ς\",\"ocl\":{\"value\":\"ff}qs@I^kBgENSdGc[pbxyDhhilheDiLv\\\\BVjjjjYfZbHfHQL`@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuPBOpcbpXBGtSItuPSU@H_Wtw@`lFDuP\"},\"mass\":305.1816182222719,\"monoisotopicMass\":305.04128673546,\"unsaturation\":10,\"elements\":[{\"symbol\":\"C\",\"number\":9},{\"symbol\":\"H\",\"number\":12},{\"symbol\":\"N\",\"number\":3},{\"symbol\":\"O\",\"number\":7},{\"symbol\":\"P\",\"number\":1}]},{\"symbol\":\"Gmp\",\"name\":\"Guanosine monophosphate diradical\",\"mf\":\"C10H12N5O7P\",\"kind\":\"RNAp\",\"oneLetter\":\"G\",\"alternativeOneLetter\":\"γ\",\"ocl\":{\"value\":\"fi{is@INBwlJ\\\\TgHp^MoBKcdRbbfrbTRdR\\\\SN^CUmUUUUKMSMQDSDHfP@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuPBOq_qopHBGtgD}D@RpPH_Wtw@aOTd}RtP@gD}D@\"},\"mass\":345.20576054189877,\"monoisotopicMass\":345.04743474432,\"unsaturation\":14,\"elements\":[{\"symbol\":\"C\",\"number\":10},{\"symbol\":\"H\",\"number\":12},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":7},{\"symbol\":\"P\",\"number\":1}]},{\"symbol\":\"Tmp\",\"name\":\"Thymidine monophosphate diradical\",\"mf\":\"C10H13N2O8P\",\"kind\":\"RNAp\",\"oneLetter\":\"T\",\"alternativeOneLetter\":\"τ\",\"ocl\":{\"value\":\"fncPK@I^aSbgIrtGc[pbxyDhhilheDiLjs`RuUUUSLuMDQLPbY@@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuPBOpcbpXBGtSItuPSU@H_Wtw@`lFBpXSU@\"},\"mass\":320.1929965859354,\"monoisotopicMass\":320.04095238282997,\"unsaturation\":10,\"elements\":[{\"symbol\":\"C\",\"number\":10},{\"symbol\":\"H\",\"number\":13},{\"symbol\":\"N\",\"number\":2},{\"symbol\":\"O\",\"number\":8},{\"symbol\":\"P\",\"number\":1}]},{\"symbol\":\"Ump\",\"name\":\"Uridine monophosphate diradical\",\"mf\":\"C9H11N2O8P\",\"kind\":\"RNAp\",\"oneLetter\":\"U\",\"alternativeOneLetter\":\"υ\",\"ocl\":{\"value\":\"ff}PK@I^aSbgIsTGc[pbxyDhhilheDiLv\\\\BVjjjjYffbHfHQL`@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuPBOpcbpXBGtSItuPSU@H_Wtw@`lFDuP\"},\"mass\":306.1663791810886,\"monoisotopicMass\":306.02530231837,\"unsaturation\":10,\"elements\":[{\"symbol\":\"C\",\"number\":9},{\"symbol\":\"H\",\"number\":11},{\"symbol\":\"N\",\"number\":2},{\"symbol\":\"O\",\"number\":8},{\"symbol\":\"P\",\"number\":1}]},{\"symbol\":\"Rmp\",\"name\":\"Ribose monophosphate diradical\",\"mf\":\"C5H7O6P\",\"kind\":\"RNAp\",\"ocl\":{\"value\":\"d@\",\"coordinates\":\"\"},\"mass\":194.07945630639637,\"monoisotopicMass\":193.99802494145,\"unsaturation\":4,\"elements\":[{\"symbol\":\"C\",\"number\":5},{\"symbol\":\"H\",\"number\":7},{\"symbol\":\"O\",\"number\":6},{\"symbol\":\"P\",\"number\":1}]},{\"symbol\":\"Adp\",\"name\":\"Adenosine diphosphate diradical\",\"mf\":\"C10H13N5O9P2\",\"kind\":\"RNApp\",\"oneLetter\":\"A\",\"ocl\":{\"value\":\"fcoiH`INCt\\\\J\\\\UENU{Axv|F~DwGHeEEMeDheHd\\\\eHsg`u{UUUU@mAEMPQDqBId@@\",\"coordinates\":\"!BvuPfpDnDtEK_t_rHtXBH_TwPbOr_IorHbGtgD}F@RxPBuxc|_]^OTh}R_`CQ`MF@_`@_`A~\"},\"mass\":409.186273143011,\"monoisotopicMass\":409.01885101411,\"unsaturation\":14,\"elements\":[{\"symbol\":\"C\",\"number\":10},{\"symbol\":\"H\",\"number\":13},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":9},{\"symbol\":\"P\",\"number\":2}]},{\"symbol\":\"Cdp\",\"name\":\"Cytidine diphosphate diradical\",\"mf\":\"C9H13N3O10P2\",\"kind\":\"RNApp\",\"oneLetter\":\"C\",\"ocl\":{\"value\":\"fe{ph`I^[BgENbgHy`|[^E_CkcdRbbfrbTRdqrdYpIZjjjieijZbHfHQL`@\",\"coordinates\":\"!BvuPfpDnDtEK_t_rHtXBH_TwPb@K_cbpXbKtSItwPS]@Bux`Bo]\\\\lFGx@S]A~@C}~@Gx\"},\"mass\":385.1615357477025,\"monoisotopicMass\":385.00761762482,\"unsaturation\":10,\"elements\":[{\"symbol\":\"C\",\"number\":9},{\"symbol\":\"H\",\"number\":13},{\"symbol\":\"N\",\"number\":3},{\"symbol\":\"O\",\"number\":10},{\"symbol\":\"P\",\"number\":2}]},{\"symbol\":\"Gdp\",\"name\":\"Guanosine diphosphate diradical\",\"mf\":\"C10H13N5O10P2\",\"kind\":\"RNApp\",\"oneLetter\":\"G\",\"ocl\":{\"value\":\"fkhh`INCt\\\\J\\\\UENY{NCqmxM|EnNQJJJ[JIQJQHzIRLyxM^uUUUTkUSLuQDSDHfP@\",\"coordinates\":\"!BvuPfpDnDtEK_tPJHtXBH_TwPb@J_I`JHbGtgD}F@RxPBux`B_]^OTh}R_`CQ`B\\\\StXA~@C}~@Gx\"},\"mass\":425.1856780673293,\"monoisotopicMass\":425.01376563368,\"unsaturation\":14,\"elements\":[{\"symbol\":\"C\",\"number\":10},{\"symbol\":\"H\",\"number\":13},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":10},{\"symbol\":\"P\",\"number\":2}]},{\"symbol\":\"Tdp\",\"name\":\"Thymidine diphosphate diradical\",\"mf\":\"C10H14N2O11P2\",\"kind\":\"RNApp\",\"oneLetter\":\"T\",\"ocl\":{\"value\":\"fmgQh`I^aSbgQSglu`|[^C_@[bdls^rruo}LxDmUUUTruTsTQDqBId@@\",\"coordinates\":\"!BvuPfpDnDtEK_tPJHtXBH_TwPbOs_cbpXbGtSItwPS]@Bux`B_]\\\\lFBpX_`AMtGx@Owx@_`\"},\"mass\":400.172914111366,\"monoisotopicMass\":400.00728327219,\"unsaturation\":10,\"elements\":[{\"symbol\":\"C\",\"number\":10},{\"symbol\":\"H\",\"number\":14},{\"symbol\":\"N\",\"number\":2},{\"symbol\":\"O\",\"number\":11},{\"symbol\":\"P\",\"number\":2}]},{\"symbol\":\"Udp\",\"name\":\"Uridine diphosphate diradical\",\"mf\":\"C9H12N2O11P2\",\"kind\":\"RNApp\",\"oneLetter\":\"U\",\"ocl\":{\"value\":\"fe{Qh`I^aSbgQSehy`|[^E_CkcdRbbfrbTRdqrdYpIZjjjiejfZbHfHQL`@\",\"coordinates\":\"!BvuPfpDnDtEK_t_rHtXBH_TwPb@K_cbpXbKtSItwPS]@Bux`Bo]\\\\lFGx@S]A~@C}~@Gx\"},\"mass\":386.14629670651925,\"monoisotopicMass\":385.99163320773005,\"unsaturation\":10,\"elements\":[{\"symbol\":\"C\",\"number\":9},{\"symbol\":\"H\",\"number\":12},{\"symbol\":\"N\",\"number\":2},{\"symbol\":\"O\",\"number\":11},{\"symbol\":\"P\",\"number\":2}]},{\"symbol\":\"Atp\",\"name\":\"Adenosine triphosphate diradical\",\"mf\":\"C10H14N5O12P3\",\"kind\":\"RNAppp\",\"oneLetter\":\"A\",\"ocl\":{\"value\":\"e`TZCJ@IG@nahJNEHdliemgo`OFspZ|CoByqrIQQSYQJIRIGIRWRL\\\\^AU]UUUUPKPQMTuABDpaBX`@\",\"coordinates\":\"!BvuPfpDnDtEK_t_rHtXBH_TwPbOr_IorHbGtgD}F@RxS|uxc|_]^OTh}R_`CQ`MF@@hcW@A~_`A~@@A~Owx\"},\"mass\":489.16619066844174,\"monoisotopicMass\":488.98518190347005,\"unsaturation\":14,\"elements\":[{\"symbol\":\"C\",\"number\":10},{\"symbol\":\"H\",\"number\":14},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":12},{\"symbol\":\"P\",\"number\":3}]},{\"symbol\":\"Ctp\",\"name\":\"Cytidine triphosphate diradical\",\"mf\":\"C9H14N3O13P3\",\"kind\":\"RNAppp\",\"oneLetter\":\"C\",\"ocl\":{\"value\":\"fgqZ`I^[BgENbgOQsO\\\\Gc[pkxK|MnNQJJJ[JIQJSGJPzQg@ejjjjfVffjZbHfHQL`@\",\"coordinates\":\"!BvuPfpDnDtEK_tPJHtXBH_TwPb@K_cbpXbGtSItwPS]C|ux`B_]\\\\lFGx@S]@BbM\\\\B@Gy~@Gx@@Gx_`\"},\"mass\":465.1414532731331,\"monoisotopicMass\":464.97394851418,\"unsaturation\":10,\"elements\":[{\"symbol\":\"C\",\"number\":9},{\"symbol\":\"H\",\"number\":14},{\"symbol\":\"N\",\"number\":3},{\"symbol\":\"O\",\"number\":13},{\"symbol\":\"P\",\"number\":3}]},{\"symbol\":\"Gtp\",\"name\":\"Guanosine triphosphate diradical\",\"mf\":\"C10H14N5O13P3\",\"kind\":\"RNAppp\",\"oneLetter\":\"G\",\"ocl\":{\"value\":\"eh\\\\ZKJ@IG@nahJNEHdliemco`POFspZ|KoAyqrIQQSYQJIRIGQJQzQccpJkjjjjjeZjYZijbDIaBDq@@\",\"coordinates\":\"!BvuPfpDnDtEK_tPJHtXBH_TwPb@J_I`JHbGtgD}F@RxPBux`B_]^OTh}R_`CQ`B\\\\StX@BbM_|@Gy~@Gx@@Gx_`\"},\"mass\":505.16559559276,\"monoisotopicMass\":504.98009652304,\"unsaturation\":14,\"elements\":[{\"symbol\":\"C\",\"number\":10},{\"symbol\":\"H\",\"number\":14},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":13},{\"symbol\":\"P\",\"number\":3}]},{\"symbol\":\"Ttp\",\"name\":\"Thymidine triphosphate diradical\",\"mf\":\"C10H15N2O14P3\",\"kind\":\"RNAppp\",\"oneLetter\":\"T\",\"ocl\":{\"value\":\"eo`TGJ@IOHJNEGHdlnaiekg`OFspZ|Mo@yqrIQQSYQJIRY[ZPzQc`HjjjjjYZjVjZbDIaBDq@@\",\"coordinates\":\"!BvuPfpDnDtEK_tPJHtXBH_TwPb@K_cbpXbGtSItwPS]@Bux`B_]\\\\lFBpX_`AMt@JHupH@_gx@_`@@_c}~\"},\"mass\":480.15283163679663,\"monoisotopicMass\":479.97361416155,\"unsaturation\":10,\"elements\":[{\"symbol\":\"C\",\"number\":10},{\"symbol\":\"H\",\"number\":15},{\"symbol\":\"N\",\"number\":2},{\"symbol\":\"O\",\"number\":14},{\"symbol\":\"P\",\"number\":3}]},{\"symbol\":\"Utp\",\"name\":\"Uridine triphosphate diradical\",\"mf\":\"C9H13N2O14P3\",\"kind\":\"RNAppp\",\"oneLetter\":\"U\",\"ocl\":{\"value\":\"fgPz`I^aSbgQSeoQsO\\\\Gc[pkxK|MnNQJJJ[JIQJSGJPzQg@ejjjjfVjVjZbHfHQL`@\",\"coordinates\":\"!BvuPfpDnDtEK_tPJHtXBH_TwPb@K_cbpXbGtSItwPS]C|ux`B_]\\\\lFGx@S]@BbM\\\\B@Gy~@Gx@@Gx_`\"},\"mass\":466.12621423194986,\"monoisotopicMass\":465.95796409709004,\"unsaturation\":10,\"elements\":[{\"symbol\":\"C\",\"number\":9},{\"symbol\":\"H\",\"number\":13},{\"symbol\":\"N\",\"number\":2},{\"symbol\":\"O\",\"number\":14},{\"symbol\":\"P\",\"number\":3}]},{\"symbol\":\"Ade\",\"name\":\"Adenosine diradical\",\"mf\":\"C10H11N5O3\",\"kind\":\"RNA\",\"oneLetter\":\"A\",\"ocl\":{\"value\":\"fbmia@IV|gLJ\\\\Axj\\\\Tef[vyWV\\\\]zJZjjj`PJ`bIbDSH@\",\"coordinates\":\"!BBOpH_UARccFPEP{PId{RpBN[~i|BEP{iVA@fUARU@QTADBYPId\"},\"mass\":249.22643809214986,\"monoisotopicMass\":249.08618923539,\"unsaturation\":14,\"elements\":[{\"symbol\":\"C\",\"number\":10},{\"symbol\":\"H\",\"number\":11},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":3}]},{\"symbol\":\"Cyt\",\"name\":\"Cytidine diradical\",\"mf\":\"C9H11N3O4\",\"kind\":\"RNA\",\"oneLetter\":\"C\",\"ocl\":{\"value\":\"fdypQ@INcBgK@|UNJRsM{\\\\~sg`uUUULmQDSDHfP@\",\"coordinates\":\"!BBOpH_UARccFPEP{PId{RpBN[~iRTBpgDq`@c`BNKB\\\\@c`\"},\"mass\":225.20170069684127,\"monoisotopicMass\":225.0749558461,\"unsaturation\":10,\"elements\":[{\"symbol\":\"C\",\"number\":9},{\"symbol\":\"H\",\"number\":11},{\"symbol\":\"N\",\"number\":3},{\"symbol\":\"O\",\"number\":4}]},{\"symbol\":\"Gua\",\"name\":\"Guanosine diradical\",\"mf\":\"C10H11N5O4\",\"kind\":\"RNA\",\"oneLetter\":\"G\",\"ocl\":{\"value\":\"fj}hQ@IV|gLJ\\\\JCqTxiKLwmroKNN}EMUUUTkTuDQLPbY@@\",\"coordinates\":\"!BBOpH_UARccFPEP{PId{RpBN[~k|BEP{iVA@fUARU@QTADBYiVA@fP\"},\"mass\":265.22584301646816,\"monoisotopicMass\":265.08110385496,\"unsaturation\":14,\"elements\":[{\"symbol\":\"C\",\"number\":10},{\"symbol\":\"H\",\"number\":11},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":4}]},{\"symbol\":\"Thy\",\"name\":\"Thymidine diradical\",\"mf\":\"C10H12N2O5\",\"kind\":\"RNA\",\"oneLetter\":\"T\",\"ocl\":{\"value\":\"fleQQ@INaSed`|UNJRsM{\\\\zlyxMUUUSMMDQLPbY@@\",\"coordinates\":\"!BBOpH_UARccFPEP{PId{RpBN[~iRTBpgDq`@c`BNKB\\\\lIpBN\"},\"mass\":240.21307906050478,\"monoisotopicMass\":240.07462149347,\"unsaturation\":10,\"elements\":[{\"symbol\":\"C\",\"number\":10},{\"symbol\":\"H\",\"number\":12},{\"symbol\":\"N\",\"number\":2},{\"symbol\":\"O\",\"number\":5}]},{\"symbol\":\"Ura\",\"name\":\"Uridine diradical\",\"mf\":\"C9H10N2O5\",\"kind\":\"RNA\",\"oneLetter\":\"U\",\"ocl\":{\"value\":\"fdyQQ@INaSeh`|UNJRsM{\\\\~sg`uUUULsQDSDHfP@\",\"coordinates\":\"!BBOpH_UARccFPEP{PId{RpBN[~iRTBpgDq`@c`BNKB\\\\@c`\"},\"mass\":226.18646165565798,\"monoisotopicMass\":226.05897142901,\"unsaturation\":10,\"elements\":[{\"symbol\":\"C\",\"number\":9},{\"symbol\":\"H\",\"number\":10},{\"symbol\":\"N\",\"number\":2},{\"symbol\":\"O\",\"number\":5}]},{\"symbol\":\"Dam\",\"name\":\"1,2′-O-dimethyladenosine monophosphate diradical 01A\",\"mf\":\"C12H16N5O6P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"œ\",\"ocl\":{\"value\":\"feghs@E^ct\\\\J\\\\udhOEw`eqrIQQQKZIQJQIiLxFK^uUUUUKLtuQDSDHfP@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuOSU@HEF@`H_R\\\\StPAKA@a}_S_|BD}RSuKQ@MD@SuH\"},\"mass\":357.2595904272741,\"monoisotopicMass\":357.08382025367,\"unsaturation\":14,\"elements\":[{\"symbol\":\"C\",\"number\":12},{\"symbol\":\"H\",\"number\":16},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":6},{\"symbol\":\"P\",\"number\":1}]},{\"symbol\":\"Dgm\",\"name\":\"1,2′-O-dimethylguanosine monophosphate diradical 01G\",\"mf\":\"C12H16N5O7P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"ε\",\"ocl\":{\"value\":\"fmwis@E^ct\\\\J\\\\udlp^KoAKcdRbbbVtRbTbSbSNAbwmUUUURsMSUDQLPbY@@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuOSU@HEF@`H_R\\\\StPAKA@a}_S_|BD}RSuKQ@B\\\\StPAOT`\"},\"mass\":373.2589953515923,\"monoisotopicMass\":373.07873487324,\"unsaturation\":14,\"elements\":[{\"symbol\":\"C\",\"number\":12},{\"symbol\":\"H\",\"number\":16},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":7},{\"symbol\":\"P\",\"number\":1}]},{\"symbol\":\"Dim\",\"name\":\"1,2′-O-dimethylinosine monophosphate diradical 019A\",\"mf\":\"C12O7N4H15P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"ξ\",\"ocl\":{\"value\":\"fegIs@E^cvENZrTXOEw`eqrIQQQKZIQJQIiLxFK^uUUUUKLtuQDSDHfP@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuOSU@HEF@`H_R\\\\StPAKA@a}_S_|BD}RSuKQ@MD@SuH\"},\"mass\":358.2443513860907,\"monoisotopicMass\":358.06783583658,\"unsaturation\":14,\"elements\":[{\"symbol\":\"C\",\"number\":12},{\"symbol\":\"H\",\"number\":15},{\"symbol\":\"N\",\"number\":4},{\"symbol\":\"O\",\"number\":7},{\"symbol\":\"P\",\"number\":1}]},{\"symbol\":\"Tia\",\"name\":\"2- methylthiomethylenethio-N6-isopentenyl-adenosine monophosphate diradical\",\"mf\":\"C17H24N5O6PS2\",\"kind\":\"NucleotideP\",\"oneLetter\":\"£\",\"ocl\":{\"value\":\"eh\\\\ZFJ@IG@nahJNEDl`OFspb\\\\V`cXHrIQQSYQJIRINIYIKQccpJkjjjjjAfBJjfjBDIaBDq@@\",\"coordinates\":\"!BpBYTvxBNFY|bEJObGvOS\\\\@Yt]~DUEJOctu~@Ha}`HzOSTwPTh~H@hc|_`BH_Xa}b@JH@gx@bGvH@h`B_`BH_P\"},\"mass\":489.50637075565066,\"monoisotopicMass\":489.09056286031,\"unsaturation\":16,\"elements\":[{\"symbol\":\"C\",\"number\":17},{\"symbol\":\"H\",\"number\":24},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":6},{\"symbol\":\"P\",\"number\":1},{\"symbol\":\"S\",\"number\":2}]},{\"symbol\":\"Mhc\",\"name\":\"2′‐O‐Methyl-5-hydroxymethylcytidine monophosphate diradical\",\"mf\":\"C11H16N3O8P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"¡\",\"ocl\":{\"value\":\"fikpK@EA{BgM^rTXOEw`eqrIQQQKZIQJSJigHujjjjifYjkBHQL`@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@HoTuOSU@HC~NKA`HoQLgSUAMT@a}oS_|BBpXKAaMT@CQ\"},\"mass\":349.2342579562838,\"monoisotopicMass\":349.06750148395,\"unsaturation\":10,\"elements\":[{\"symbol\":\"C\",\"number\":11},{\"symbol\":\"H\",\"number\":16},{\"symbol\":\"N\",\"number\":3},{\"symbol\":\"O\",\"number\":8},{\"symbol\":\"P\",\"number\":1}]},{\"symbol\":\"Odg\",\"name\":\"N2,2′-O-dimethylguanosine monophosphate diradical 02G\",\"mf\":\"C12H16N5O7P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"γ\",\"ocl\":{\"value\":\"fmwis@E^ct\\\\J\\\\udlp^KoAKcdRbbbVtRbTbSbsNAbwmUUUURsMSUDQLPbY@@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuOSU@HEF@`H_R\\\\StPAKA@a}_S_|BD}RSuKQ@B\\\\StPAOT`\"},\"mass\":373.2589953515923,\"monoisotopicMass\":373.07873487324,\"unsaturation\":14,\"elements\":[{\"symbol\":\"C\",\"number\":12},{\"symbol\":\"H\",\"number\":16},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":7},{\"symbol\":\"P\",\"number\":1}]},{\"symbol\":\"Ntg\",\"name\":\"N2,N2,2′-O-trimethylguanosine monophosphate diradical 022G\",\"mf\":\"C13H18N5O7P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"|\",\"ocl\":{\"value\":\"fcois@E^ct\\\\J\\\\udlp^KoAKcdRbbbVtRbTbSbTYpLVcjjjjjVYjZjHbXaDr@@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuOSU@HEF@`H_R\\\\StPAKA@a}_S_|BD}RSuHgD}D@tPBNOt}R\"},\"mass\":387.2856127564392,\"monoisotopicMass\":387.0943849377,\"unsaturation\":14,\"elements\":[{\"symbol\":\"C\",\"number\":13},{\"symbol\":\"H\",\"number\":18},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":7},{\"symbol\":\"P\",\"number\":1}]},{\"symbol\":\"Otg\",\"name\":\"N2,7,2′-O-trimethylguanosine monophosphate diradical 027G\",\"mf\":\"C13H20N5O7P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"æ\",\"ocl\":{\"value\":\"fcoisBE^bN\\\\J\\\\udjp^KoAKcFU}dRbbbVtRbTbRlQYpLVcjjjjjVYjjjHbXaDr@@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuOSU@HEF@`H_R\\\\StPAKA@a}_S_|BD}RSuKFPMD@IqOQ@D}R\"},\"mass\":389.30149426455074,\"monoisotopicMass\":389.11003500216,\"unsaturation\":12,\"elements\":[{\"symbol\":\"C\",\"number\":13},{\"symbol\":\"H\",\"number\":20},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":7},{\"symbol\":\"P\",\"number\":1}]},{\"symbol\":\"Rya\",\"name\":\"2′-O-ribosyladenosine monophosphate diradical 00A\",\"mf\":\"C15H20N5O9P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"^\",\"ocl\":{\"value\":\"e`\\\\ZIL@DaegobFAIO@hlm`OGSp\\\\\\\\\\\\bbbfrRbdTT\\\\rbRQUCDQTrusuUUUUMUU@pET@@@\",\"coordinates\":\"!BIlAKaMARw}DBbMF@bGuMtHc|KAbH_ZU`@GzH_WwW@h`XKFjKB_jXB\\\\SiVA`zmG_Irp_hQKctvOSR\\\\lIrp\"},\"mass\":445.3217759066577,\"monoisotopicMass\":445.09986424130005,\"unsaturation\":16,\"elements\":[{\"symbol\":\"C\",\"number\":15},{\"symbol\":\"H\",\"number\":20},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":9},{\"symbol\":\"P\",\"number\":1}]},{\"symbol\":\"Ryg\",\"name\":\"2′-O-ribosylguanosine monophosphate diradical 00G\",\"mf\":\"C15H20N5O10P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"ℑ\",\"ocl\":{\"value\":\"ehRZEL@DaegobFAIO@hlm`POGSp\\\\\\\\\\\\bbbfrRbdTT\\\\rbRQbhXbJfVn^jjjjijjjVZfj@@@\",\"coordinates\":\"!BIlAKaMARw}DBbMF@bGuMtH`BKAbH_ZU`@GzH_WwW@h`XKFjKB_jXB\\\\SiVA`zmG_Irp_hQKctvOSR\\\\lt]|gK@\"},\"mass\":461.321180830976,\"monoisotopicMass\":461.09477886087,\"unsaturation\":16,\"elements\":[{\"symbol\":\"C\",\"number\":15},{\"symbol\":\"H\",\"number\":20},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":10},{\"symbol\":\"P\",\"number\":1}]},{\"symbol\":\"Tmu\",\"name\":\"2-thio-2′-O-methyluridine monophosphate diradical 02U\",\"mf\":\"C10H13N2O7PS\",\"kind\":\"NucleotideP\",\"oneLetter\":\"∏\",\"ocl\":{\"value\":\"fncQp`EAaSfleZCq]x^BDnNQJJJI[QJIRYlyFmUUUULsSQDSDHfP@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuOSU@HC~NKA`H_QLgSUAMT@a}_S_|BBpXSU@\"},\"mass\":336.25837906774416,\"monoisotopicMass\":336.01810893766003,\"unsaturation\":10,\"elements\":[{\"symbol\":\"C\",\"number\":10},{\"symbol\":\"H\",\"number\":13},{\"symbol\":\"N\",\"number\":2},{\"symbol\":\"O\",\"number\":7},{\"symbol\":\"P\",\"number\":1},{\"symbol\":\"S\",\"number\":1}]},{\"symbol\":\"Dmut\",\"name\":\"3,2′-O-dimethyluridine monophosphate diradical 03U\",\"mf\":\"C11H15N2O8P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"σ\",\"ocl\":{\"value\":\"fasPK@EAaSfoYKtGb{pRxyDhhhemDheIhv\\\\cVjjjjfYjZHbXaDr@@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuOSU@HC~NKA`H_QLgSUAMT@a}_S_|BBpXOxyMT@\"},\"mass\":334.2196139907822,\"monoisotopicMass\":334.05660244729,\"unsaturation\":10,\"elements\":[{\"symbol\":\"C\",\"number\":11},{\"symbol\":\"H\",\"number\":15},{\"symbol\":\"N\",\"number\":2},{\"symbol\":\"O\",\"number\":8},{\"symbol\":\"P\",\"number\":1}]},{\"symbol\":\"Amc\",\"name\":\"N4-acetyl-2′-O-methylcytidine monophosphate diradical 042C\",\"mf\":\"C12H16N3O8P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"ℵ\",\"ocl\":{\"value\":\"fe{pK@EA[BgM^rTXOEw`eqrIQQQKZIQJSMJLyFmUUUULsMMQDSDHfP@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuOSU@HC~NKA`H_QLgSUAMT@a}_S_|BBpXSU@caLgSU@\"},\"mass\":361.244993853019,\"monoisotopicMass\":361.06750148395,\"unsaturation\":12,\"elements\":[{\"symbol\":\"C\",\"number\":12},{\"symbol\":\"H\",\"number\":16},{\"symbol\":\"N\",\"number\":3},{\"symbol\":\"O\",\"number\":8},{\"symbol\":\"P\",\"number\":1}]},{\"symbol\":\"Tmc\",\"name\":\"N4,N4,2′-O-trimethylcytidine monophosphate diradical 044C\",\"mf\":\"C12H18N3O7P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"β\",\"ocl\":{\"value\":\"fikqs@EA[BgM^rTGb{pRxyDhhhemDheIfhsdZuUUUTsLuTQDqBId@@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuOSU@HC~NKA`H_QLgSUAMT@a}_S_|BBpXSU@cbpX\"},\"mass\":347.2614704368123,\"monoisotopicMass\":347.08823692884005,\"unsaturation\":10,\"elements\":[{\"symbol\":\"C\",\"number\":12},{\"symbol\":\"H\",\"number\":18},{\"symbol\":\"N\",\"number\":3},{\"symbol\":\"O\",\"number\":7},{\"symbol\":\"P\",\"number\":1}]},{\"symbol\":\"Dcy\",\"name\":\"N4,2′-O-dimethylcytidine monophosphate diradical 04C\",\"mf\":\"C11H16N3O7P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"λ\",\"ocl\":{\"value\":\"fasqs@EA[BgM^rTGb{pRxyDhhhemDheIff\\\\cVjjjjfYfjHbXaDr@@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuOSU@HC~NKA`H_QLgSUAMT@a}_S_|BBpXSU@lF@\"},\"mass\":333.23485303196554,\"monoisotopicMass\":333.07258686438,\"unsaturation\":10,\"elements\":[{\"symbol\":\"C\",\"number\":11},{\"symbol\":\"H\",\"number\":16},{\"symbol\":\"N\",\"number\":3},{\"symbol\":\"O\",\"number\":7},{\"symbol\":\"P\",\"number\":1}]},{\"symbol\":\"Muo\",\"name\":\"2′-O-methyluridine 5-oxyacetic acid methyl ester monophosphate diradical 0503U\",\"mf\":\"C13H17N2O11P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"Ͽ\",\"ocl\":{\"value\":\"fkoQk@EAaSfoYJwj}`|W^BWGHeEEDmheDiLjlif\\\\cVjjjjfYjZZhbIbDSH@\",\"coordinates\":\"!BKAb@tURD@m\\\\YpMAMpBYMcvjbOplIwx@bGuMc}\\\\Bb@JH@dvOcuKPSXa}bGvHH`BbGu~Oxc|bGt\"},\"mass\":408.25518206531905,\"monoisotopicMass\":408.05699637046,\"unsaturation\":12,\"elements\":[{\"symbol\":\"C\",\"number\":13},{\"symbol\":\"H\",\"number\":17},{\"symbol\":\"N\",\"number\":2},{\"symbol\":\"O\",\"number\":11},{\"symbol\":\"P\",\"number\":1}]},{\"symbol\":\"Xmu\",\"name\":\"5-carboxymethylaminomethyl-2′-O-methyluridine monophosphate diradical 051U\",\"mf\":\"C13H18N3O10P\",\"kind\":\"NucleotideP\",\"oneLetter\":\")\",\"ocl\":{\"value\":\"fkopk@EAGBgM^rWns`|W^BWGHeEEDmheDiLjleF\\\\cVjjjjfYjZfhbIbDSH@\",\"coordinates\":\"!BKAb@tURD@m\\\\YpMAMpBYMcvjb@HlIwx@bGuMc}\\\\Bb@JH@dvOcuKPSXa}bGvH@h`BbGvH@gx@bKt\"},\"mass\":407.2704211065024,\"monoisotopicMass\":407.07298078755,\"unsaturation\":12,\"elements\":[{\"symbol\":\"C\",\"number\":13},{\"symbol\":\"H\",\"number\":18},{\"symbol\":\"N\",\"number\":3},{\"symbol\":\"O\",\"number\":10},{\"symbol\":\"P\",\"number\":1}]},{\"symbol\":\"Mmu\",\"name\":\"5-methoxycarbonylmethyl-2′-O-methyluridine monophosphate diradical 0521U\",\"mf\":\"C13H17N2O10P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"∩\",\"ocl\":{\"value\":\"fcwPk@EAaSfoYKvZp^KoAKcdRbbbVtRbTfUVfYrMZjjjjYfifjHbXaDr@@\",\"coordinates\":\"!BS]@lFJU`@Gyoza`lzf@lI}mK_`B@cm\\\\Bb@HlI}]}_`A~@BpgIqLXKH`Bb@I~@Ha}_c~HHa}\"},\"mass\":392.2557771410008,\"monoisotopicMass\":392.06208175089,\"unsaturation\":12,\"elements\":[{\"symbol\":\"C\",\"number\":13},{\"symbol\":\"H\",\"number\":17},{\"symbol\":\"N\",\"number\":2},{\"symbol\":\"O\",\"number\":10},{\"symbol\":\"P\",\"number\":1}]},{\"symbol\":\"Cue\",\"name\":\"5-(carboxyhydroxymethyl)-2′-O-methyluridine methyl ester monophosphate diradical 0522U\",\"mf\":\"C13H17N2O11P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"∩\",\"ocl\":{\"value\":\"fkoQk@EAaSfoYKtZ}`|W^BWGHeEEDmheDiLjhYf\\\\cVjjjjfYjZZhbIbDSH@\",\"coordinates\":\"!BS]@lFJU`@Gyoza`lzf@lI}mK_`B@cm\\\\Bb@HlI}]}_`A~@BpgIqLXKH`Bb@I~@Gx@bGu~Oxc|bGt\"},\"mass\":408.25518206531905,\"monoisotopicMass\":408.05699637046,\"unsaturation\":12,\"elements\":[{\"symbol\":\"C\",\"number\":13},{\"symbol\":\"H\",\"number\":17},{\"symbol\":\"N\",\"number\":2},{\"symbol\":\"O\",\"number\":11},{\"symbol\":\"P\",\"number\":1}]},{\"symbol\":\"Cyu\",\"name\":\"5-carbamoylmethyl-2′-O-methyluridine monophosphate diradical 053U\",\"mf\":\"C12H16N3O9P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"~\",\"ocl\":{\"value\":\"fmgqK@EAWBgM^rWlp^KoAKcdRbbbVtRbTfUVcNQkUUUUSLuLuDQLPbY@@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuOSU@HC~NKA`H_QLgSUAMT@a}_S_|BBpXKAaMTDuPOxxlF@\"},\"mass\":377.24439877733727,\"monoisotopicMass\":377.06241610352,\"unsaturation\":12,\"elements\":[{\"symbol\":\"C\",\"number\":12},{\"symbol\":\"H\",\"number\":16},{\"symbol\":\"N\",\"number\":3},{\"symbol\":\"O\",\"number\":9},{\"symbol\":\"P\",\"number\":1}]},{\"symbol\":\"Ipu\",\"name\":\"5-(isopentenylaminomethyl)-2′-O-methyluridine monophosphate diradical 0583U\",\"mf\":\"C16H24N3O8P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"¼\",\"ocl\":{\"value\":\"fgpK@EAGBgM^rWhOEw`eqrIQQQKZIQJSJkIJLyFmUUUULsTuMTQDqBId@@\",\"coordinates\":\"!BS]@lFJU`@Gyoza`lzf@lI}mK_`B@cm\\\\Bb@HlI}]}_`A~@BpgIqLXKH`Bb@I~@Ha}b@JH_Xc|_`BH_P\"},\"mass\":417.35146347240624,\"monoisotopicMass\":417.13010174179004,\"unsaturation\":12,\"elements\":[{\"symbol\":\"C\",\"number\":16},{\"symbol\":\"H\",\"number\":24},{\"symbol\":\"N\",\"number\":3},{\"symbol\":\"O\",\"number\":8},{\"symbol\":\"P\",\"number\":1}]},{\"symbol\":\"Mcy\",\"name\":\"5,2′-O-dimethylcytidine monophosphate diradical monophosphate diradical 05C\",\"mf\":\"C11H16N3O7P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"τ\",\"ocl\":{\"value\":\"fasqs@EA{BgM^rTGb{pRxyDhhhemDheIeV\\\\cVjjjjfYfjHbXaDr@@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuOSU@HC~NKA`H_QLgSUAMT@a}_S_|BBpXKAaMT@\"},\"mass\":333.23485303196554,\"monoisotopicMass\":333.07258686438,\"unsaturation\":10,\"elements\":[{\"symbol\":\"C\",\"number\":11},{\"symbol\":\"H\",\"number\":16},{\"symbol\":\"N\",\"number\":3},{\"symbol\":\"O\",\"number\":7},{\"symbol\":\"P\",\"number\":1}]},{\"symbol\":\"Dmuf\",\"name\":\"5,2′-O-dimethyluridine monophosphate diradical 05U\",\"mf\":\"C11H15N2O8P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"\\\\\",\"ocl\":{\"value\":\"fasPK@EAaSfoYKtGb{pRxyDhhhemDheIeV\\\\cVjjjjfYjZHbXaDr@@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuOSU@HC~NKA`H_QLgSUAMT@a}_S_|BBpXKAaMT@\"},\"mass\":334.2196139907822,\"monoisotopicMass\":334.05660244729,\"unsaturation\":10,\"elements\":[{\"symbol\":\"C\",\"number\":11},{\"symbol\":\"H\",\"number\":15},{\"symbol\":\"N\",\"number\":2},{\"symbol\":\"O\",\"number\":8},{\"symbol\":\"P\",\"number\":1}]},{\"symbol\":\"Tma\",\"name\":\"N6,N6,2′-O-trimethyladenosine monophosphate diradical 066A\",\"mf\":\"C13H18N5O6P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"η\",\"ocl\":{\"value\":\"fmwhs@E^ct\\\\J\\\\udhOEw`eqrIQQQKZIQJQIkQg@q[vjjjj`Y`JjBHfHQL`@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuOSU@HEF@`H_R\\\\StPAKA@a}_S_|BD}RSuKQ@MD@SuHXK@\"},\"mass\":371.2862078321209,\"monoisotopicMass\":371.09947031813005,\"unsaturation\":14,\"elements\":[{\"symbol\":\"C\",\"number\":13},{\"symbol\":\"H\",\"number\":18},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":6},{\"symbol\":\"P\",\"number\":1}]},{\"symbol\":\"Nda\",\"name\":\"N6,2′-O-dimethyladenosine monophosphate diradical 06A\",\"mf\":\"C12H16N5O6P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"χ\",\"ocl\":{\"value\":\"feghs@E^ct\\\\J\\\\udhOEw`eqrIQQQKZIQJQIkLxFK^uUUUTCLAUADSDHfP@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuOSU@HEF@`H_R\\\\StPAKA@a}_S_|BD}RSuKQ@MD@FBp\"},\"mass\":357.2595904272741,\"monoisotopicMass\":357.08382025367,\"unsaturation\":14,\"elements\":[{\"symbol\":\"C\",\"number\":12},{\"symbol\":\"H\",\"number\":16},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":6},{\"symbol\":\"P\",\"number\":1}]},{\"symbol\":\"Fmc\",\"name\":\"5-formyl-2′-O-methylcytidine monophosphate diradical 071C\",\"mf\":\"C10H12N3O8P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"°\",\"ocl\":{\"value\":\"faspK@I^[BgENSghOFwaEqrIQQSYQJIRYULxDmUUUTsLttQDqBId@@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuPBOpcbpXBGtSItuPSU@H_Wtw@`lFBpXSU@@tP\"},\"mass\":333.1917590433254,\"monoisotopicMass\":333.03620135502996,\"unsaturation\":12,\"elements\":[{\"symbol\":\"C\",\"number\":10},{\"symbol\":\"H\",\"number\":12},{\"symbol\":\"N\",\"number\":3},{\"symbol\":\"O\",\"number\":8},{\"symbol\":\"P\",\"number\":1}]},{\"symbol\":\"Omi\",\"name\":\"2′-O-methylinosine monophosphate diradical 09A\",\"mf\":\"C11H13N4O7P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"≤\",\"ocl\":{\"value\":\"fi{Is@E^cvENZrTXOEw`eqrIQQQKZIQJQIig@q[vjjjjiYffhbIbDSH@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuOSU@HEF@`H_R\\\\StPAKA@a}_S_|BD}RSuKQ@MD@\"},\"mass\":344.21773398124395,\"monoisotopicMass\":344.05218577211997,\"unsaturation\":14,\"elements\":[{\"symbol\":\"C\",\"number\":11},{\"symbol\":\"H\",\"number\":13},{\"symbol\":\"N\",\"number\":4},{\"symbol\":\"O\",\"number\":7},{\"symbol\":\"P\",\"number\":1}]},{\"symbol\":\"Opu\",\"name\":\"2′-O-methylpseudouridine monophosphate diradical 09U\",\"mf\":\"C10H13N2O8P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"Z\",\"ocl\":{\"value\":\"fncPK@@qaSfoYJtGb{pRxyDhhhemDheIfsdZuUUULuMMDQLPbY@@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuOSU@HC~NKA`H_QLgSUAMT@a}_S_|BBpXSU@\"},\"mass\":320.1929965859354,\"monoisotopicMass\":320.04095238282997,\"unsaturation\":10,\"elements\":[{\"symbol\":\"C\",\"number\":10},{\"symbol\":\"H\",\"number\":13},{\"symbol\":\"N\",\"number\":2},{\"symbol\":\"O\",\"number\":8},{\"symbol\":\"P\",\"number\":1}]},{\"symbol\":\"Oma\",\"name\":\"2′-O-methyladenosine monophosphate diradical 0A\",\"mf\":\"C11H14N5O6P\",\"kind\":\"NucleotideP\",\"oneLetter\":\":\",\"ocl\":{\"value\":\"fi{hs@E^ct\\\\J\\\\udhOEw`eqrIQQQKZIQJQIig@q[vjjjj`Y`J`bIbDSH@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuOSU@HEF@`H_R\\\\StPAKA@a}_S_|BD}RSuKQ@MD@\"},\"mass\":343.2329730224273,\"monoisotopicMass\":343.06817018921,\"unsaturation\":14,\"elements\":[{\"symbol\":\"C\",\"number\":11},{\"symbol\":\"H\",\"number\":14},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":6},{\"symbol\":\"P\",\"number\":1}]},{\"symbol\":\"Omc\",\"name\":\"2′-O-methylcytidine monophosphate diradical 0C\",\"mf\":\"C10H14N3O7P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"B\",\"ocl\":{\"value\":\"fncqs@EA[BgM^rTGb{pRxyDhhhemDheIfsdZuUUUTsLuDQLPbY@@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuOSU@HC~NKA`H_QLgSUAMT@a}_S_|BBpXSU@\"},\"mass\":319.2082356271187,\"monoisotopicMass\":319.05693679992004,\"unsaturation\":10,\"elements\":[{\"symbol\":\"C\",\"number\":10},{\"symbol\":\"H\",\"number\":14},{\"symbol\":\"N\",\"number\":3},{\"symbol\":\"O\",\"number\":7},{\"symbol\":\"P\",\"number\":1}]},{\"symbol\":\"Omg\",\"name\":\"2′-O-methylguanosine monophosphate diradical 0G\",\"mf\":\"C11H14N5O7P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"#\",\"ocl\":{\"value\":\"fegis@E^ct\\\\J\\\\udlp^KoAKcdRbbbVtRbTbSbYpLV}jjjjjVYjZbHfHQL`@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@HoTuOSU@HEF@`H_R\\\\StPAKA@a}_S_|BD}RSuKQ@B\\\\StP@\"},\"mass\":359.23237794674554,\"monoisotopicMass\":359.06308480878,\"unsaturation\":14,\"elements\":[{\"symbol\":\"C\",\"number\":11},{\"symbol\":\"H\",\"number\":14},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":7},{\"symbol\":\"P\",\"number\":1}]},{\"symbol\":\"Omu\",\"name\":\"2′-O-methyluridinemonophosphate diradical 0U\",\"mf\":\"C10H13N2O8P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"J\",\"ocl\":{\"value\":\"fncPK@EAaSfoYJtGb{pRxyDhhhemDheIfsdZuUUUTsMMDQLPbY@@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuOSU@HC~NKA`H_QLgSUAMT@a}_S_|BBpXSU@\"},\"mass\":320.1929965859354,\"monoisotopicMass\":320.04095238282997,\"unsaturation\":10,\"elements\":[{\"symbol\":\"C\",\"number\":10},{\"symbol\":\"H\",\"number\":13},{\"symbol\":\"N\",\"number\":2},{\"symbol\":\"O\",\"number\":8},{\"symbol\":\"P\",\"number\":1}]},{\"symbol\":\"Cdg\",\"name\":\"7-cyano-7-deazaguanosine monophosphate diradical 100G\",\"mf\":\"C12H12N5O7P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"φ\",\"ocl\":{\"value\":\"fmwis@INzM\\\\J\\\\TgLp^MoBKcdRbbfrbTRdRUbSN^CWmUUUUKLuSuDQLPbY@@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuPBOq_qopHBGtgD}D@RpPH_Wtw@aOTd}RqdCQ@B\\\\StPCFP@\"},\"mass\":369.22723233536925,\"monoisotopicMass\":369.04743474432,\"unsaturation\":18,\"elements\":[{\"symbol\":\"C\",\"number\":12},{\"symbol\":\"H\",\"number\":12},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":7},{\"symbol\":\"P\",\"number\":1}]},{\"symbol\":\"Azg\",\"name\":\"7-aminomethyl-7-deazaguanosine monophosphate diradical 101G\",\"mf\":\"C12H16N5O7P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"∉\",\"ocl\":{\"value\":\"fmwis@INzM\\\\J\\\\TgLp^MoBKcdRbbfrbTRdRUbSN^CWmUUUUKLuSUDQLPbY@@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuPBOq_qopHBGtgD}D@RpPH_Wtw@aOTd}RqdCQ@B\\\\StPA`z`\"},\"mass\":373.2589953515923,\"monoisotopicMass\":373.07873487324,\"unsaturation\":14,\"elements\":[{\"symbol\":\"C\",\"number\":12},{\"symbol\":\"H\",\"number\":16},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":7},{\"symbol\":\"P\",\"number\":1}]},{\"symbol\":\"Eqo\",\"name\":\"epoxyqueuosine monophosphate diradical 102G\",\"mf\":\"C17H22N5O10P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"ς\",\"ocl\":{\"value\":\"el^ZEL@IGNaehJNEDlig`TPOFspb\\\\\\\\bTTTvTRbTbRlRjbbfXx|Bjz~aAajjjjiYfjZjjjjHPfDHSD@@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuPBOq_qopHBGtgD}D@RpPH_Wtw@aOTd}RqdCQ@B\\\\StP@{ULY@TEIKA@a}tPA}BOpHAEP\"},\"mass\":487.3585341325581,\"monoisotopicMass\":487.11042892533,\"unsaturation\":18,\"elements\":[{\"symbol\":\"C\",\"number\":17},{\"symbol\":\"H\",\"number\":22},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":10},{\"symbol\":\"P\",\"number\":1}]},{\"symbol\":\"Aes\",\"name\":\"archaeosine monophosphate diradical 103G\",\"mf\":\"C12H15N6O7P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"(\",\"ocl\":{\"value\":\"fcoYs@INzM^xTxiNY`|[^DWGHeEEMeDheHdkDhsg`u{UUUURsMTmTQDqBId@@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuPBOq_qopHBGtgD}D@RpPH_Wtw@aOTd}RqdCQ@B\\\\StP@{UFCj\"},\"mass\":386.2577578089824,\"monoisotopicMass\":386.07398384544,\"unsaturation\":16,\"elements\":[{\"symbol\":\"C\",\"number\":12},{\"symbol\":\"H\",\"number\":15},{\"symbol\":\"N\",\"number\":6},{\"symbol\":\"O\",\"number\":7},{\"symbol\":\"P\",\"number\":1}]},{\"symbol\":\"Goq\",\"name\":\"galactosyl-queuosine monophosphate diradical 104G\",\"mf\":\"C23H32N5O14P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"9\",\"ocl\":{\"value\":\"ekXzGL@IGNaehJNEDliod\\\\VU]SPOFspb\\\\\\\\bTTTvTRbTbRlRjbTrTrbfRXx|Bjz^AyEjjjjiYfjZijjjjjjbDIaBDq@@\",\"coordinates\":\"!BvuPfpDnDtEK_tPJHtXBH_TwPb@J_IorHbGtgD}F@RxRH_WwW@hbOTh}RIlCQ`B\\\\StXC[UB[@RxSPT`JHbGwQ`H`BaEQ~@Ha}bOq~Ox`BbGu~@Ha}bOrH@`\"},\"mass\":633.4999767508004,\"monoisotopicMass\":633.16833772591,\"unsaturation\":20,\"elements\":[{\"symbol\":\"C\",\"number\":23},{\"symbol\":\"H\",\"number\":32},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":14},{\"symbol\":\"P\",\"number\":1}]},{\"symbol\":\"Gaq\",\"name\":\"glutamyl-queuosine monophosphate diradical105G\",\"mf\":\"C22H29N6O12P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"⊄\",\"ocl\":{\"value\":\"emWVCL@IGNaejXJNEDlioh\\\\YUPOFspb\\\\\\\\bTTTvTRbTbRlRjbTJTtrTXx|Bjz^AjjjjiYfjZijfjfjbDIaBDq@@\",\"coordinates\":\"!BTmB@c`JHUMmMtL@YtEHYgxQTaDoQ`L@YFY|gKMARH`Ygy|fpAfN`Hz@`H{PTb\\\\ltEIRtHBNHaTv|@YFYPTha}b@I~@Ha}_c~H@ha}bOq~@Ha}\"},\"mass\":600.473311954707,\"monoisotopicMass\":600.15810739451,\"unsaturation\":22,\"elements\":[{\"symbol\":\"C\",\"number\":22},{\"symbol\":\"H\",\"number\":29},{\"symbol\":\"N\",\"number\":6},{\"symbol\":\"O\",\"number\":12},{\"symbol\":\"P\",\"number\":1}]},{\"symbol\":\"Moq\",\"name\":\"mannosyl-queuosine monophosphate diradical 106G\",\"mf\":\"C23H32N5O14P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"8\",\"ocl\":{\"value\":\"ekXzGL@IGNaehJNEDliod\\\\VU]SPOFspb\\\\\\\\bTTTvTRbTbRlRjbTrTrbfRXx|Bjz^AyEjjjjiYfjZijjjjjjbDIaBDq@@\",\"coordinates\":\"!BvuPfpDnDtEK_tPJHtXBH_TwPb@J_IorHbGtgD}F@RxRH_WwW@hbOTh}RIlCQ`B\\\\StXC[UB[@RxSPT`JHbGwQ`H`BaEQ~@Ha}bOq~Ox`BbGu~@Ha}bOrH@`\"},\"mass\":633.4999767508004,\"monoisotopicMass\":633.16833772591,\"unsaturation\":20,\"elements\":[{\"symbol\":\"C\",\"number\":23},{\"symbol\":\"H\",\"number\":32},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":14},{\"symbol\":\"P\",\"number\":1}]},{\"symbol\":\"Qus\",\"name\":\"queuosine monophosphate diradical 10G\",\"mf\":\"C17H22N5O9P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"Q\",\"ocl\":{\"value\":\"edZZIL@IGNaehJNEDliohPOFspb\\\\\\\\bTTTvTRbTbRlRjbTKGG`UWSpMUUUUKLuSUMUTPaLHPfH@@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuPBOq_qopHBGtgD}D@RpPHoWtw@aOTd}RqdCQ@B\\\\StP@{ULY@RpQPTopHBGwQ@@QT\"},\"mass\":471.35912920823984,\"monoisotopicMass\":471.11551430576,\"unsaturation\":18,\"elements\":[{\"symbol\":\"C\",\"number\":17},{\"symbol\":\"H\",\"number\":22},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":9},{\"symbol\":\"P\",\"number\":1}]},{\"symbol\":\"Cpo\",\"name\":\"1-methyl-3-(3-amino-3-carboxypropyl)pseudouridine monophosphate diradical 1309U\",\"mf\":\"C14H20N3O10P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"α\",\"ocl\":{\"value\":\"fgpk@OAWBgENSgi{`|[^DWGHeEEMeDheIhjbihs`RuUUTsTuSUMQDSDHfP@\",\"coordinates\":\"!BTh|SI~ioOwy`iR\\\\SiV|SFGxw}FH_]]}DqbH@gx_c|SFA`lIqOW_Xa}uwu~Ox`BbGu~Ox`B_`BH_P\"},\"mass\":421.2970385113492,\"monoisotopicMass\":421.08863085201,\"unsaturation\":12,\"elements\":[{\"symbol\":\"C\",\"number\":14},{\"symbol\":\"H\",\"number\":20},{\"symbol\":\"N\",\"number\":3},{\"symbol\":\"O\",\"number\":10},{\"symbol\":\"P\",\"number\":1}]},{\"symbol\":\"Mls\",\"name\":\"1-methylinosine monophosphate diradical 19A\",\"mf\":\"C11H13N4O7P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"O\",\"ocl\":{\"value\":\"fi{Is@INBvENJSghOFwaEqrIQQSYQJIRIMIgOAjvjjjjefZZhbIbDSH@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuPBOq_qopHBGtgD}D@RpPH_Wtw@aOTd}RtPCQ@D}R\"},\"mass\":344.21773398124395,\"monoisotopicMass\":344.05218577211997,\"unsaturation\":14,\"elements\":[{\"symbol\":\"C\",\"number\":11},{\"symbol\":\"H\",\"number\":13},{\"symbol\":\"N\",\"number\":4},{\"symbol\":\"O\",\"number\":7},{\"symbol\":\"P\",\"number\":1}]},{\"symbol\":\"Mpu\",\"name\":\"1-methylpseudouridine monophosphate diradical 19U\",\"mf\":\"C10H13N2O8P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"]\",\"ocl\":{\"value\":\"fncPK@OAaSbgIrtGc[pbxyDhhilheDiLjs`RuUUTsTuMDQLPbY@@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuPBOpcbpXBGtSItuPSU@H_Wtw@`lFBpXSU@\"},\"mass\":320.1929965859354,\"monoisotopicMass\":320.04095238282997,\"unsaturation\":10,\"elements\":[{\"symbol\":\"C\",\"number\":10},{\"symbol\":\"H\",\"number\":13},{\"symbol\":\"N\",\"number\":2},{\"symbol\":\"O\",\"number\":8},{\"symbol\":\"P\",\"number\":1}]},{\"symbol\":\"Mad\",\"name\":\"1-methyladenosine monophosphate diradical 1A\",\"mf\":\"C11H14N5O6P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"\\\"\",\"ocl\":{\"value\":\"fi{hs@INBwlJ\\\\TgHOFwaEqrIQQSYQJIRIMIgOAjvjjjjefZZhbIbDSH@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuPBOq_qopHBGtgD}D@RpPH_Wtw@aOTd}RtPCQ@D}R\"},\"mass\":343.2329730224273,\"monoisotopicMass\":343.06817018921,\"unsaturation\":14,\"elements\":[{\"symbol\":\"C\",\"number\":11},{\"symbol\":\"H\",\"number\":14},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":6},{\"symbol\":\"P\",\"number\":1}]},{\"symbol\":\"Mgs\",\"name\":\"1-methylguanosine monophosphate diradical 1G\",\"mf\":\"C11H14N5O7P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"K\",\"ocl\":{\"value\":\"fegis@INBwlJ\\\\TgHp^MoBKcdRbbfrbTRdR\\\\RYspZmjjjjiYfijbHfHQL`@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuPBOq_qopHBGtgD}D@RpPH_Wtw@aOTd}RtP@gD}D@SuH\"},\"mass\":359.23237794674554,\"monoisotopicMass\":359.06308480878,\"unsaturation\":14,\"elements\":[{\"symbol\":\"C\",\"number\":11},{\"symbol\":\"H\",\"number\":14},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":7},{\"symbol\":\"P\",\"number\":1}]},{\"symbol\":\"Msu\",\"name\":\"5-aminomethyl-2-selenouridine monophosphate diradical 20510U\",\"mf\":\"C10H14N3O7PSe\",\"kind\":\"NucleotideP\",\"oneLetter\":\"π\",\"ocl\":{\"value\":\"fasqp`I^{BgEIrtGc[p\\\\bQ\\\\\\\\bTTTvTRbTfUSNAKUUUULsTuDQLPbY@@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuPBOpcbpXBGtSItuPSU@H_Wtw@`lFBpXSU@@tP\"},\"mass\":398.1676241841323,\"monoisotopicMass\":398.97345859992004,\"unsaturation\":null,\"elements\":[{\"symbol\":\"C\",\"number\":10},{\"symbol\":\"H\",\"number\":14},{\"symbol\":\"N\",\"number\":3},{\"symbol\":\"O\",\"number\":7},{\"symbol\":\"P\",\"number\":1},{\"symbol\":\"Se\",\"number\":1}]},{\"symbol\":\"Mse\",\"name\":\"5-methylaminomethyl-2-selenouridine monophosphate diradical 20511U\",\"mf\":\"C11H16N3O7PSe\",\"kind\":\"NucleotideP\",\"oneLetter\":\"≅\",\"ocl\":{\"value\":\"fikqp`I^{BgEIrtGc[p\\\\bQ\\\\\\\\bTTTvTRbTfUVYpIZjjjifZfjHbXaDr@@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuPBOpcbpXBGtSItuPSU@H_Wtw@`lFBpXSUAMTBpX\"},\"mass\":412.19424158897914,\"monoisotopicMass\":412.98910866438,\"unsaturation\":null,\"elements\":[{\"symbol\":\"C\",\"number\":11},{\"symbol\":\"H\",\"number\":16},{\"symbol\":\"N\",\"number\":3},{\"symbol\":\"O\",\"number\":7},{\"symbol\":\"P\",\"number\":1},{\"symbol\":\"Se\",\"number\":1}]},{\"symbol\":\"Cse\",\"name\":\"5-carboxymethylaminomethyl-2-selenouridine monophosphate diradical 2051U\",\"mf\":\"C12H16N3O9PSe\",\"kind\":\"NucleotideP\",\"oneLetter\":\"⊥\",\"ocl\":{\"value\":\"fcwqH`I^{BgEIru^p^MoArIEqrIQQSYQJIRYUYJLxDmUUUTsMSTuDQLPbY@@\",\"coordinates\":\"!BKAb@tURDM\\\\YpMAMpBYMcx`BKB]~@Ha}SXW@h`Bb@IMcx}RtDvH_Xa}b@JH@ha}b@I~@Ha}\"},\"mass\":456.20378733435086,\"monoisotopicMass\":456.97893790352,\"unsaturation\":null,\"elements\":[{\"symbol\":\"C\",\"number\":12},{\"symbol\":\"H\",\"number\":16},{\"symbol\":\"N\",\"number\":3},{\"symbol\":\"O\",\"number\":9},{\"symbol\":\"P\",\"number\":1},{\"symbol\":\"Se\",\"number\":1}]},{\"symbol\":\"Agm\",\"name\":\"agmatidine monophosphate diradical 20C\",\"mf\":\"C14H26N7O6P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"¿\",\"ocl\":{\"value\":\"fgxs@I^BuY{piqR\\\\`|[^DWGHeEEMeDeEHmUddhsgbuUUUSTuUUMIDSDHfP@\",\"coordinates\":\"!BDqc_tTnD_]\\\\fpH}MgrYRc}_|Dr_W_Wx@ThWM_|bOqRc}ARctu~@Gx@urH@gx@b@I~@H`BbGu~@@\"},\"mass\":419.373876184194,\"monoisotopicMass\":419.16821858483,\"unsaturation\":10,\"elements\":[{\"symbol\":\"C\",\"number\":14},{\"symbol\":\"H\",\"number\":26},{\"symbol\":\"N\",\"number\":7},{\"symbol\":\"O\",\"number\":6},{\"symbol\":\"P\",\"number\":1}]},{\"symbol\":\"Sou\",\"name\":\"2-selenouridine monophosphate diradical 20U\",\"mf\":\"C9H11N2O7PSe\",\"kind\":\"NucleotideP\",\"oneLetter\":\"ω\",\"ocl\":{\"value\":\"ff}Qp`I^aSbdyjCqmxNQHnNQJJJ[JIQJSMg@ejjjjfYihbIbDSH@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuPBOpcbpXBGtSItuPSU@H_Wtw@`lFDuP\"},\"mass\":369.1263628137839,\"monoisotopicMass\":369.9469094988,\"unsaturation\":null,\"elements\":[{\"symbol\":\"C\",\"number\":9},{\"symbol\":\"H\",\"number\":11},{\"symbol\":\"N\",\"number\":2},{\"symbol\":\"O\",\"number\":7},{\"symbol\":\"P\",\"number\":1},{\"symbol\":\"Se\",\"number\":1}]},{\"symbol\":\"Agu\",\"name\":\"5-aminomethyl-2-geranylthiouridine monophosphate diradical 21510U\",\"mf\":\"C20H30N3O7PS\",\"kind\":\"NucleotideP\",\"oneLetter\":\"Δ\",\"ocl\":{\"value\":\"ed\\\\\\\\NB@IOIhJNEDla`OFsp\\\\BHgGHeEEMeDheHdjdcEdhqpEUUUUURsUSMTuQBDpaBXdDt@\",\"coordinates\":\"!BDr__cdo[_X`fgx}RgqeRtM]}Dqa~O}\\\\BTmBH_]]}uwuRtMAMcuI~O}\\\\BupJH_]]}_`A~Oxa}uwu~Oxa}_cW_Xa}\"},\"mass\":487.5074340654907,\"monoisotopicMass\":487.15420849000003,\"unsaturation\":14,\"elements\":[{\"symbol\":\"C\",\"number\":20},{\"symbol\":\"H\",\"number\":30},{\"symbol\":\"N\",\"number\":3},{\"symbol\":\"O\",\"number\":7},{\"symbol\":\"P\",\"number\":1},{\"symbol\":\"S\",\"number\":1}]},{\"symbol\":\"Mgu\",\"name\":\"5-methylaminomethyl-2-geranylthiouridine monophosphate diradical 21511U\",\"mf\":\"C21H32N3O7PS\",\"kind\":\"NucleotideP\",\"oneLetter\":\"h\",\"ocl\":{\"value\":\"elR\\\\NB@IOIhJNEDla`OFsp\\\\BHgGHeEEMeDheHdjdlileFN@jjjjjjVZjYjijbDIaBDqHIh\",\"coordinates\":\"!BTv^cbn{__@fw|}RwqeRdK]}Tva~_{_|TiCp_[]}mwuRdIAMsuI~_{]|mwsp_[]}mwu~_{_||Gvw_Wy|Gu~_{]}|Gt\"},\"mass\":501.5340514703375,\"monoisotopicMass\":501.16985855446006,\"unsaturation\":14,\"elements\":[{\"symbol\":\"C\",\"number\":21},{\"symbol\":\"H\",\"number\":32},{\"symbol\":\"N\",\"number\":3},{\"symbol\":\"O\",\"number\":7},{\"symbol\":\"P\",\"number\":1},{\"symbol\":\"S\",\"number\":1}]},{\"symbol\":\"Cgu\",\"name\":\"5-carboxymethylaminomethyl-2-geranylthiouridine monophosphate diradical 2151U\",\"mf\":\"C22H32N3O9PS\",\"kind\":\"NucleotideP\",\"oneLetter\":\"f\",\"ocl\":{\"value\":\"ef^\\\\IB@IOIhJNEDla`XPOFsp\\\\BHgGHeEEMeDheHdjdlhehbhqpEUUUUURsUSMUMMTPaLHPfIAM@\",\"coordinates\":\"!BTv^cbn{_@fw|}RwqeRdK]}Tva~_{]|TiCp[_}muRdIAMsuI~_{]|mwsp_[]}mwu~_{]||Gvw_[_}_g}~_{]||Ou~_{]}|Gt\"},\"mass\":545.5435972157093,\"monoisotopicMass\":545.1596877935999,\"unsaturation\":16,\"elements\":[{\"symbol\":\"C\",\"number\":22},{\"symbol\":\"H\",\"number\":32},{\"symbol\":\"N\",\"number\":3},{\"symbol\":\"O\",\"number\":9},{\"symbol\":\"P\",\"number\":1},{\"symbol\":\"S\",\"number\":1}]},{\"symbol\":\"Mha\",\"name\":\"2-methylthio-N6-(cis-hydroxyisopentenyl) adenosine monophosphate diradical 2160A\",\"mf\":\"C16H22N5O7PS\",\"kind\":\"NucleotideP\",\"oneLetter\":\"≠\",\"ocl\":{\"value\":\"e`TZNB@IG@nahJNEDlo`OFspb\\\\V`cHeEEMeDheHdxeleDqqxEUuUUUU@sAETuTDHSBDIbP[P\",\"coordinates\":\"!BzfC@IeKPaDn}bHCQb@KQwuRDFALYpHCQt]WHc|TmCQw}~N`ME~@Gx@upJH@h`B_`BH_X`BbGvHGxbGt\"},\"mass\":459.41437086899504,\"monoisotopicMass\":459.09775624102,\"unsaturation\":16,\"elements\":[{\"symbol\":\"C\",\"number\":16},{\"symbol\":\"H\",\"number\":22},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":7},{\"symbol\":\"P\",\"number\":1},{\"symbol\":\"S\",\"number\":1}]},{\"symbol\":\"Mpa\",\"name\":\"2-methylthio-N6-isopentenyladenosine monophosphate diradical 2161A\",\"mf\":\"C16H22N5O6PS\",\"kind\":\"NucleotideP\",\"oneLetter\":\"*\",\"ocl\":{\"value\":\"eohZFB@IG@nahJNEDl`OFspb\\\\V`cHeEEMeDheHdxeleFNO@jnjjjjhFXHjfjBDIaBDq@@\",\"coordinates\":\"!BpBYTvxBNFY|bEJObGvOS\\\\@Yt]~DUEJOctu~@Ha}`HzOSTwPTh~H@h`B_`BH_Xa}bOrH@ha}b@I~@Ha}\"},\"mass\":443.4149659446768,\"monoisotopicMass\":443.10284162145,\"unsaturation\":16,\"elements\":[{\"symbol\":\"C\",\"number\":16},{\"symbol\":\"H\",\"number\":22},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":6},{\"symbol\":\"P\",\"number\":1},{\"symbol\":\"S\",\"number\":1}]},{\"symbol\":\"Mca\",\"name\":\"2-methylthio-N6-threonylcarbamoyladenosine monophosphate diradical 2162A\",\"mf\":\"C16H21N6O10PS\",\"kind\":\"NucleotideP\",\"oneLetter\":\"[\",\"ocl\":{\"value\":\"ebVVEB@IG@nachJNEDlm`XTPOFspb\\\\V`cHeEEMeDheHdxemLhhhqqxEUuUUUU@sAESUMUABDpaBX`@\",\"coordinates\":\"!BzfC@IeKPaDn}bHCQb@KQwuRDFALYpHCQt]W@h`BTmCQw}~N`ME~@Gx@upJH@h`B_`BH_Wxb@JH_WxbOrHo]^}_`BH_P\"},\"mass\":520.4113480993399,\"monoisotopicMass\":520.07774907193,\"unsaturation\":18,\"elements\":[{\"symbol\":\"C\",\"number\":16},{\"symbol\":\"H\",\"number\":21},{\"symbol\":\"N\",\"number\":6},{\"symbol\":\"O\",\"number\":10},{\"symbol\":\"P\",\"number\":1},{\"symbol\":\"S\",\"number\":1}]},{\"symbol\":\"Mva\",\"name\":\"2-methylthio-N6-hydroxynorvalylcarbamoyladenosine monophosphate diradical 2163A\",\"mf\":\"C17H23N6O10PS\",\"kind\":\"NucleotideP\",\"oneLetter\":\"≈\",\"ocl\":{\"value\":\"ej^VEB@IG@nachJNEDlm`XTPOFspb\\\\V`cHeEEMeDheHdxemLhhiVNO@jnjjjjhFXHjZijjBDIaBDq@@\",\"coordinates\":\"!BpBYTvxBNFY|BbEJObGvOS\\\\@Yt]~DUEJOctu~@Ha}`HzOSTwPTh~H@h`B_`BH_Xa}bOrH@gx@bGvHGx@bGwW@h`B_c~H@ha}\"},\"mass\":534.4379655041866,\"monoisotopicMass\":534.09339913639,\"unsaturation\":18,\"elements\":[{\"symbol\":\"C\",\"number\":17},{\"symbol\":\"H\",\"number\":23},{\"symbol\":\"N\",\"number\":6},{\"symbol\":\"O\",\"number\":10},{\"symbol\":\"P\",\"number\":1},{\"symbol\":\"S\",\"number\":1}]},{\"symbol\":\"Mya\",\"name\":\"2-methylthio cyclic N6-threonylcarbamoyladenosine monophosphate diradical 2164A\",\"mf\":\"C17H20N5O9PS\",\"kind\":\"NucleotideP\",\"oneLetter\":\"ÿ\",\"ocl\":{\"value\":\"elVZIB@IG@nkhJNEDlcghPOFspb\\\\V`cHeEEMeDheHdxeihiUFNO@jnkojjjjhFXHjfZjbHPfDHSD@@\",\"coordinates\":\"!BvuPfpDnDtEK_tPJHtXBH_TwPb@J_IorHbGtgD}F@RxRH_WwW@hbOTh}RIqOQ`MF@cuKW@hQTcttfpL@YS]@BbGvH@Gx\"},\"mass\":501.4080351062552,\"monoisotopicMass\":501.07193541570007,\"unsaturation\":20,\"elements\":[{\"symbol\":\"C\",\"number\":17},{\"symbol\":\"H\",\"number\":20},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":9},{\"symbol\":\"P\",\"number\":1},{\"symbol\":\"S\",\"number\":1}]},{\"symbol\":\"Hta\",\"name\":\"hydroxy-N6-threonylcarbamoyladenosine monophosphate diradical 2165A\",\"mf\":\"C15H19N6O11P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"«\",\"ocl\":{\"value\":\"elZVML@IG@fnehJNEDligo`TPOFspb\\\\\\\\bTTTvTRbTbSVTrbbeXx|BjZjjjj`Y`JZijjBDIaBDq@@\",\"coordinates\":\"!BpBYTvxBNFY|bEJObGvOS\\\\@Yt]~DUEJOctu~@Ha}`HzOSTwPTh~HH`BbGvH_Xc|_`BH_Xc|_`BH_]_|bOq~Oxc|bGt\"},\"mass\":490.31934821268436,\"monoisotopicMass\":490.08494245264,\"unsaturation\":18,\"elements\":[{\"symbol\":\"C\",\"number\":15},{\"symbol\":\"H\",\"number\":19},{\"symbol\":\"N\",\"number\":6},{\"symbol\":\"O\",\"number\":11},{\"symbol\":\"P\",\"number\":1}]},{\"symbol\":\"Lyd\",\"name\":\"2-lysidine monophosphate diradical 21C\",\"mf\":\"C15H24N5O8P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"}\",\"ocl\":{\"value\":\"eo`ZAL@IGOFmhJNEDlkg`OFspb\\\\\\\\bTTTvTRbTbSVRTtXxBJjjjjfYjZjfhaBXPaLP@\",\"coordinates\":\"!BTh|SI~ioOwy`iR\\\\SiV|SFGxw}FH_]]}Dqa~Oxc|_c|SFA`lIqOW_Xa}_c~HHa}bOrH_WxbOq~@Ha}\"},\"mass\":433.3541339985626,\"monoisotopicMass\":433.13624975064994,\"unsaturation\":12,\"elements\":[{\"symbol\":\"C\",\"number\":15},{\"symbol\":\"H\",\"number\":24},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":8},{\"symbol\":\"P\",\"number\":1}]},{\"symbol\":\"Gtu\",\"name\":\"2-geranylthiouridine monophosphate diradical 21U\",\"mf\":\"C19H27N2O7PS\",\"kind\":\"NucleotideP\",\"oneLetter\":\"Γ\",\"ocl\":{\"value\":\"e`XTNB@IOHJNEDln`OFsp\\\\BHgGHeEEMeDheHdtmEdhqpEUUUUURsUKUMTPaLHPfIAu@\",\"coordinates\":\"!BTv^cbn{__@fw|}RwqeRdK]}Tva~_{_|TiCp_[]}mwuRdIAMsuI~_{]||Gvw_Wy|Gvw_Wy|Gu~_{]}|Gt\"},\"mass\":458.46617269514235,\"monoisotopicMass\":458.12765938888003,\"unsaturation\":14,\"elements\":[{\"symbol\":\"C\",\"number\":19},{\"symbol\":\"H\",\"number\":27},{\"symbol\":\"N\",\"number\":2},{\"symbol\":\"O\",\"number\":7},{\"symbol\":\"P\",\"number\":1},{\"symbol\":\"S\",\"number\":1}]},{\"symbol\":\"Tyg\",\"name\":\"N2,N2,7-trimethylguanosine cap monophosphate diradical (cap TMG) 2279553N\",\"mf\":\"C13H20N5O10P2\",\"kind\":\"NucleotideP\",\"oneLetter\":\"¶\",\"ocl\":{\"value\":\"e`TZEBHIG@aihJNEHdleck`OFspz|MgDJTef[vVVe_gifNO@jijjjjjUijifjhaBXPaLP@\",\"coordinates\":\"!BvuPfpDnDtEK_t_rHtXBH_TwPbOr_I`JHbGtgD}F@RxS|uxc|_]^OTh}RIlA~@B\\\\StXCQ`Gx@Owx@_h{_cuH\"},\"mass\":468.2734710359255,\"monoisotopicMass\":468.06854085929,\"unsaturation\":13,\"elements\":[{\"symbol\":\"C\",\"number\":13},{\"symbol\":\"H\",\"number\":20},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":10},{\"symbol\":\"P\",\"number\":2}]},{\"symbol\":\"Tmg\",\"name\":\"N2,N2,7-trimethylguanosine monophosphate diradical 227G\",\"mf\":\"C13H20N5O7P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"∠\",\"ocl\":{\"value\":\"fcoisBINCt\\\\J\\\\TgLp^MoBKbFY}dRbbfrbTRdRUbtYspZcjjjjiYfjjjHbXaDr@@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuPBOq_qopHBGtgD}D@RpPH_Wtw@aOTd}Rqd@gD}D@tPBNOt}R\"},\"mass\":389.30149426455074,\"monoisotopicMass\":389.11003500216,\"unsaturation\":12,\"elements\":[{\"symbol\":\"C\",\"number\":13},{\"symbol\":\"H\",\"number\":20},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":7},{\"symbol\":\"P\",\"number\":1}]},{\"symbol\":\"Dgu\",\"name\":\"N2,N2-dimethylguanosine monophosphate diradical 22G\",\"mf\":\"C12H16N5O7P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"R\",\"ocl\":{\"value\":\"fmwis@INBwlJ\\\\TgHp^MoBKcdRbbfrbTRdR\\\\RcN^CWmUUUUKLuMUDQLPbY@@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuPBOq_qopHBGtgD}D@RpPH_Wtw@aOTd}RIqOQ@MD@cc}OT`\"},\"mass\":373.2589953515923,\"monoisotopicMass\":373.07873487324,\"unsaturation\":14,\"elements\":[{\"symbol\":\"C\",\"number\":12},{\"symbol\":\"H\",\"number\":16},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":7},{\"symbol\":\"P\",\"number\":1}]},{\"symbol\":\"Atu\",\"name\":\"5-aminomethyl-2-thiouridine monophosphate diradical 2510U\",\"mf\":\"C10H14N3O7PS\",\"kind\":\"NucleotideP\",\"oneLetter\":\"∫\",\"ocl\":{\"value\":\"fasqp`I^{BgEIrtGc[p\\\\DQ\\\\\\\\bTTTvTRbTfUSNAKUUUULsTuDQLPbY@@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuPBOpcbpXBGtSItuPSU@H_Wtw@`lFBpXSU@@tP\"},\"mass\":351.27302303324575,\"monoisotopicMass\":351.02900797432005,\"unsaturation\":10,\"elements\":[{\"symbol\":\"C\",\"number\":10},{\"symbol\":\"H\",\"number\":14},{\"symbol\":\"N\",\"number\":3},{\"symbol\":\"O\",\"number\":7},{\"symbol\":\"P\",\"number\":1},{\"symbol\":\"S\",\"number\":1}]},{\"symbol\":\"Mou\",\"name\":\"5-methylaminomethyl-2-thiouridine monophosphate diradical 2511U\",\"mf\":\"C11H16N3O7PS\",\"kind\":\"NucleotideP\",\"oneLetter\":\"S\",\"ocl\":{\"value\":\"fikqp`I^{BgEIrtGc[p\\\\DQ\\\\\\\\bTTTvTRbTfUVYpIZjjjifZfjHbXaDr@@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuPBOpcbpXBGtSItuPSU@H_Wtw@`lFBpXSUAMTBpX\"},\"mass\":365.2996404380926,\"monoisotopicMass\":365.04465803878,\"unsaturation\":10,\"elements\":[{\"symbol\":\"C\",\"number\":11},{\"symbol\":\"H\",\"number\":16},{\"symbol\":\"N\",\"number\":3},{\"symbol\":\"O\",\"number\":7},{\"symbol\":\"P\",\"number\":1},{\"symbol\":\"S\",\"number\":1}]},{\"symbol\":\"Ctu\",\"name\":\"5-carboxymethylaminomethyl-2-thiouridine monophosphate diradical 251U\",\"mf\":\"C12H16N3O9PS\",\"kind\":\"NucleotideP\",\"oneLetter\":\"$\",\"ocl\":{\"value\":\"fcwqH`I^{BgEIru^p^MoApQEqrIQQSYQJIRYUYJLxDmUUUTsMSTuDQLPbY@@\",\"coordinates\":\"!BKAb@tURDM\\\\YpMAMpBYMcx`BKB]~@Ha}SXW@h`Bb@IMcx}RtDvH_Xa}b@JH@ha}b@I~@Ha}\"},\"mass\":409.3091861834643,\"monoisotopicMass\":409.03448727792,\"unsaturation\":12,\"elements\":[{\"symbol\":\"C\",\"number\":12},{\"symbol\":\"H\",\"number\":16},{\"symbol\":\"N\",\"number\":3},{\"symbol\":\"O\",\"number\":9},{\"symbol\":\"P\",\"number\":1},{\"symbol\":\"S\",\"number\":1}]},{\"symbol\":\"Myu\",\"name\":\"5-methoxycarbonylmethyl-2-thiouridine monophosphate diradical 2521U\",\"mf\":\"C12H15N2O9PS\",\"kind\":\"NucleotideP\",\"oneLetter\":\"3\",\"ocl\":{\"value\":\"fmgQH`I^aSbdyZNXOFw`xHbxyDhhilheDiLjmLs`RuUUUSLuLuQDSDHfP@\",\"coordinates\":\"!BS]@lFJU`@Gyoza`lzf@lIwx@`H{WHc|KB_W_Wx@_`@lIr\\\\SFBrH@h`B_`BH_WxbOrH_P\"},\"mass\":394.2945422179627,\"monoisotopicMass\":394.02358824126003,\"unsaturation\":12,\"elements\":[{\"symbol\":\"C\",\"number\":12},{\"symbol\":\"H\",\"number\":15},{\"symbol\":\"N\",\"number\":2},{\"symbol\":\"O\",\"number\":9},{\"symbol\":\"P\",\"number\":1},{\"symbol\":\"S\",\"number\":1}]},{\"symbol\":\"Cou\",\"name\":\"5-carbamoylmethyl-2-thiouridine monophosphate diradical 253U\",\"mf\":\"C11H14N3O8PS\",\"kind\":\"NucleotideP\",\"oneLetter\":\"l\",\"ocl\":{\"value\":\"fe{pH`I^gBgEIrtXOFw`xHbxyDhhilheDiLjmF\\\\BVjjjjYfifhbIbDSH@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuPBOpcbpXBGtSItuPSU@H_Wtw@`lFBpXSUAMTC~NKA`\"},\"mass\":379.2831638542993,\"monoisotopicMass\":379.02392259389,\"unsaturation\":12,\"elements\":[{\"symbol\":\"C\",\"number\":11},{\"symbol\":\"H\",\"number\":14},{\"symbol\":\"N\",\"number\":3},{\"symbol\":\"O\",\"number\":8},{\"symbol\":\"P\",\"number\":1},{\"symbol\":\"S\",\"number\":1}]},{\"symbol\":\"Cau\",\"name\":\"5-carboxymethyl-2-thiouridine monophosphate diradical 2540U\",\"mf\":\"C11H13N2O9PS\",\"kind\":\"NucleotideP\",\"oneLetter\":\"℘\",\"ocl\":{\"value\":\"fe{QH`I^aSbdyZNXOFw`xHbxyDhhilheDiLjmF\\\\BVjjjjYfifhbIbDSH@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuPBOpcbpXBGtSItuPSU@H_Wtw@`lFBpXSUAMTC~NKA`\"},\"mass\":380.26792481311594,\"monoisotopicMass\":380.00793817680005,\"unsaturation\":12,\"elements\":[{\"symbol\":\"C\",\"number\":11},{\"symbol\":\"H\",\"number\":13},{\"symbol\":\"N\",\"number\":2},{\"symbol\":\"O\",\"number\":9},{\"symbol\":\"P\",\"number\":1},{\"symbol\":\"S\",\"number\":1}]},{\"symbol\":\"Tau\",\"name\":\"5-taurinomethyl-2-thiouridine monophosphate diradical 254U\",\"mf\":\"C12H18N3O10PS2\",\"kind\":\"NucleotideP\",\"oneLetter\":\"∃\",\"ocl\":{\"value\":\"fgpj`I^{BgEIrwY{`|[^C`bKblHrIQQSYQJIRYUYIRLxDmUUUTsMSUKTQDqBId@@\",\"coordinates\":\"!BKAb@tURD@m\\\\YpMAMpBYMcx`BKB]~@Ha}SXW@h`Bb@IMcx}RtDvH_Xa}b@JH@ha}b@JH__rH_]^H_P\"},\"mass\":459.3892600220213,\"monoisotopicMass\":459.01712313635005,\"unsaturation\":10,\"elements\":[{\"symbol\":\"C\",\"number\":12},{\"symbol\":\"H\",\"number\":18},{\"symbol\":\"N\",\"number\":3},{\"symbol\":\"O\",\"number\":10},{\"symbol\":\"P\",\"number\":1},{\"symbol\":\"S\",\"number\":2}]},{\"symbol\":\"Itu\",\"name\":\"5-(isopentenylaminomethyl)-2-thiouridine monophosphate diradical 2583U\",\"mf\":\"C15H22N3O7PS\",\"kind\":\"NucleotideP\",\"oneLetter\":\"½\",\"ocl\":{\"value\":\"fkoqp`I^{BgEIrtGc[p\\\\DQ\\\\\\\\bTTTvTRbTfUVRTYpIZjjjifZfijbHfHQL`@\",\"coordinates\":\"!BS]@lFJU`@Gyoza`lzf@lIwx@`H{W@h`BKB_W_Wx@_`@lIr\\\\SFBrH@h`B_`BH_Xc|bGvH@gx@bGt\"},\"mass\":419.3902285493682,\"monoisotopicMass\":419.09160823216,\"unsaturation\":12,\"elements\":[{\"symbol\":\"C\",\"number\":15},{\"symbol\":\"H\",\"number\":22},{\"symbol\":\"N\",\"number\":3},{\"symbol\":\"O\",\"number\":7},{\"symbol\":\"P\",\"number\":1},{\"symbol\":\"S\",\"number\":1}]},{\"symbol\":\"Mth\",\"name\":\"5-methyl-2-thiouridine monophosphate diradical 25U\",\"mf\":\"C10H13N2O7PS\",\"kind\":\"NucleotideP\",\"oneLetter\":\"F\",\"ocl\":{\"value\":\"fncQp`I^aSbdyZCqmxNBHnNQJJJ[JIQJSJlxDmUUUTsMSQDSDHfP@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuPBOpcbpXBGtSItuPSU@H_Wtw@`lFBpXSU@\"},\"mass\":336.25837906774416,\"monoisotopicMass\":336.01810893766003,\"unsaturation\":10,\"elements\":[{\"symbol\":\"C\",\"number\":10},{\"symbol\":\"H\",\"number\":13},{\"symbol\":\"N\",\"number\":2},{\"symbol\":\"O\",\"number\":7},{\"symbol\":\"P\",\"number\":1},{\"symbol\":\"S\",\"number\":1}]},{\"symbol\":\"Dmg\",\"name\":\"N2,7-dimethylguanosine monophosphate diradical 27G\",\"mf\":\"C12H18N5O7P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"∨\",\"ocl\":{\"value\":\"fmwisBINCt\\\\J\\\\TgLp^MoBKbFY}dRbbfrbTRdRUbKN^CWmUUUUKLuUUDQLPbY@@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuPBOq_qopHBGtgD}D@RpPH_Wtw@aOTd}RqdCQ@B\\\\StPAOT`\"},\"mass\":375.27487685970397,\"monoisotopicMass\":375.0943849377,\"unsaturation\":12,\"elements\":[{\"symbol\":\"C\",\"number\":12},{\"symbol\":\"H\",\"number\":18},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":7},{\"symbol\":\"P\",\"number\":1}]},{\"symbol\":\"Dma\",\"name\":\"2,8-dimethyladenosine monophosphate diradical 28A\",\"mf\":\"C12H16N5O6P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"±\",\"ocl\":{\"value\":\"feghs@INCv\\\\J\\\\UdhOFw`eqrIQQSYQJJJQKqLyxK^uUUUPMLAUADSDHfP@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuPBOq_qopHBGtgD}D@RpP@c`a}_S_|BD}RSuKQ@B\\\\StP@\"},\"mass\":357.2595904272741,\"monoisotopicMass\":357.08382025367,\"unsaturation\":14,\"elements\":[{\"symbol\":\"C\",\"number\":12},{\"symbol\":\"H\",\"number\":16},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":6},{\"symbol\":\"P\",\"number\":1}]},{\"symbol\":\"Mas\",\"name\":\"2-methyladenosine monophosphate diradical 2A\",\"mf\":\"C11H14N5O6P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"/\",\"ocl\":{\"value\":\"fi{hs@INBt\\\\J\\\\TgHOFwaEqrIQQSYQJIRINIgOAjvjjjjAf@j`bIbDSH@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuPBOq_qopHBGtgD}D@RpPH_Wtw@aOTd}RtP@gD}D@\"},\"mass\":343.2329730224273,\"monoisotopicMass\":343.06817018921,\"unsaturation\":14,\"elements\":[{\"symbol\":\"C\",\"number\":11},{\"symbol\":\"H\",\"number\":14},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":6},{\"symbol\":\"P\",\"number\":1}]},{\"symbol\":\"Tcy\",\"name\":\"2-thiocytidine monophosphate diradical 2C\",\"mf\":\"C9H12N3O6PS\",\"kind\":\"NucleotideP\",\"oneLetter\":\"%\",\"ocl\":{\"value\":\"ff}pp`I^kBgEIrCqmxNBHnNQJJJ[JIQJSMg@ejjjjfYfhbIbDSH@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuPBOpcbpXBGtSItuPSU@H_Wtw@`lFDuP\"},\"mass\":321.2470007040807,\"monoisotopicMass\":321.01844329029,\"unsaturation\":10,\"elements\":[{\"symbol\":\"C\",\"number\":9},{\"symbol\":\"H\",\"number\":12},{\"symbol\":\"N\",\"number\":3},{\"symbol\":\"O\",\"number\":6},{\"symbol\":\"P\",\"number\":1},{\"symbol\":\"S\",\"number\":1}]},{\"symbol\":\"Nmg\",\"name\":\"N2-methylguanosine monophosphate diradical 2G\",\"mf\":\"C11H14N5O7P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"L\",\"ocl\":{\"value\":\"fegis@INBwlJ\\\\TgHp^MoBKcdRbbfrbTRdR\\\\VYspZmjjjjiYfijbHfHQL`@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuPBOq_qopHBGtgD}D@RpPH_Wtw@aOTd}RtP@gD}D@SuH\"},\"mass\":359.23237794674554,\"monoisotopicMass\":359.06308480878,\"unsaturation\":14,\"elements\":[{\"symbol\":\"C\",\"number\":11},{\"symbol\":\"H\",\"number\":14},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":7},{\"symbol\":\"P\",\"number\":1}]},{\"symbol\":\"Thu\",\"name\":\"2-thiouridine monophosphate diradical 2U\",\"mf\":\"C9H11N2O7PS\",\"kind\":\"NucleotideP\",\"oneLetter\":\"2\",\"ocl\":{\"value\":\"ff}Qp`I^aSbdyjCqmxNBHnNQJJJ[JIQJSMg@ejjjjfYihbIbDSH@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuPBOpcbpXBGtSItuPSU@H_Wtw@`lFDuP\"},\"mass\":322.2317616628973,\"monoisotopicMass\":322.0024588732,\"unsaturation\":10,\"elements\":[{\"symbol\":\"C\",\"number\":9},{\"symbol\":\"H\",\"number\":11},{\"symbol\":\"N\",\"number\":2},{\"symbol\":\"O\",\"number\":7},{\"symbol\":\"P\",\"number\":1},{\"symbol\":\"S\",\"number\":1}]},{\"symbol\":\"Ahu\",\"name\":\"3-(3-amino-3-carboxypropyl)-5,6-dihydrouridine monophosphate diradical 308U\",\"mf\":\"C13H20N3O10P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"Ð\",\"ocl\":{\"value\":\"fkopk@I^gBgENSens`|[^DWGHeEEMeDheIhueMF\\\\BVjjjjZfijfhbIbDSH@\",\"coordinates\":\"!BTh|SI~ioOwy`iR\\\\SiV|SFGxw}FH_]]}DqbH@gx_c|SFA`lIqOW_Xa}_c~HHa}_c~H@gx@bGt\"},\"mass\":409.28630261461393,\"monoisotopicMass\":409.08863085201,\"unsaturation\":10,\"elements\":[{\"symbol\":\"C\",\"number\":13},{\"symbol\":\"H\",\"number\":20},{\"symbol\":\"N\",\"number\":3},{\"symbol\":\"O\",\"number\":10},{\"symbol\":\"P\",\"number\":1}]},{\"symbol\":\"App\",\"name\":\"3-(3-amino-3-carboxypropyl)pseudouridine monophosphate diradical 309U\",\"mf\":\"C13H18N3O10P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"Þ\",\"ocl\":{\"value\":\"fkopk@OAgBgENSens`|[^DWGHeEEMeDheIhueMF\\\\BVjjjfZfijfhbIbDSH@\",\"coordinates\":\"!BTh|SI~ioOwy`iR\\\\SiV|SFGxw}FH_]]}DqbH@gx_c|SFA`lIqOW_Xa}_c~HHa}_c~H@gx@bGt\"},\"mass\":407.2704211065024,\"monoisotopicMass\":407.07298078755,\"unsaturation\":12,\"elements\":[{\"symbol\":\"C\",\"number\":13},{\"symbol\":\"H\",\"number\":18},{\"symbol\":\"N\",\"number\":3},{\"symbol\":\"O\",\"number\":10},{\"symbol\":\"P\",\"number\":1}]},{\"symbol\":\"Apu\",\"name\":\"3-(3-amino-3-carboxypropyl)uridine monophosphate diradical 30U\",\"mf\":\"C13H18N3O10P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"X\",\"ocl\":{\"value\":\"fkopk@I^gBgENSens`|[^DWGHeEEMeDheIhueMF\\\\BVjjjjYfijfhbIbDSH@\",\"coordinates\":\"!BTh|SI~ioOwy`iR\\\\SiV|SFGxw}FH_]]}DqbH@gx_c|SFA`lIqOW_Xa}_c~HHa}_c~H@gx@bGt\"},\"mass\":407.2704211065024,\"monoisotopicMass\":407.07298078755,\"unsaturation\":12,\"elements\":[{\"symbol\":\"C\",\"number\":13},{\"symbol\":\"H\",\"number\":18},{\"symbol\":\"N\",\"number\":3},{\"symbol\":\"O\",\"number\":10},{\"symbol\":\"P\",\"number\":1}]},{\"symbol\":\"Mws\",\"name\":\"methylwyosine monophosphate diradical 342G\",\"mf\":\"C15H18N5O7P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"∑\",\"ocl\":{\"value\":\"eghZNL@IG@nahJNEDli`OFspb\\\\\\\\bTTTvTRbTbb\\\\rVSGG`SPrvuUUUUKMTsUUIBDpaBX`@\",\"coordinates\":\"!B_`CW@mF@ctvDUI|fRxPYgtwP[zV_IorHFY|gD}F@RxPYg|@YgrZOTh{_cuJOS]F@tXAKaI|fw}EMt@\"},\"mass\":411.3070845499097,\"monoisotopicMass\":411.0943849377,\"unsaturation\":18,\"elements\":[{\"symbol\":\"C\",\"number\":15},{\"symbol\":\"H\",\"number\":18},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":7},{\"symbol\":\"P\",\"number\":1}]},{\"symbol\":\"Uhw\",\"name\":\"undermodified hydroxywybutosine monophosphate diradical 3470G\",\"mf\":\"C18H23N6O10P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"š\",\"ocl\":{\"value\":\"ejQVEL@IG@nahXJNEDliolRPOFspb\\\\\\\\bTTTvTRbTbb\\\\rVVTttXx|BZFVvjjjjiYjfZjjfjRDIaBDq@@\",\"coordinates\":\"!BKB^@ceS[H`Yg}ARpAeMtHa}KAcPTh{_S]CjXES[pAeMtH}MtEK@IdnDpBXBbES[UMo@F]ARaERH_X`B_`BH_WxbOq~@Ha}\"},\"mass\":514.3839139947949,\"monoisotopicMass\":514.12132796199,\"unsaturation\":20,\"elements\":[{\"symbol\":\"C\",\"number\":18},{\"symbol\":\"H\",\"number\":23},{\"symbol\":\"N\",\"number\":6},{\"symbol\":\"O\",\"number\":10},{\"symbol\":\"P\",\"number\":1}]},{\"symbol\":\"Acw\",\"name\":\"7-aminocarboxypropylwyosine monophosphate diradical 347G\",\"mf\":\"C18H23N6O9P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"Ω\",\"ocl\":{\"value\":\"eb^VIL@IG@na`XJNEDlid\\\\POFspb\\\\\\\\bTTTvTRbTbb\\\\rVRrfcGG`SPrvuUUUUKMTsUUSUIBDpaBX`@\",\"coordinates\":\"!BDr]RcwwWpAg_tUS[cm~DUAf_XJUTvx}MaEP@_gwWcm~DUDnDUMo|urH@m_@FWwW_]^NwuS[bGtYgx`BbGu~Ox`B_`BH_P\"},\"mass\":498.38450907047655,\"monoisotopicMass\":498.12641334242,\"unsaturation\":20,\"elements\":[{\"symbol\":\"C\",\"number\":18},{\"symbol\":\"H\",\"number\":23},{\"symbol\":\"N\",\"number\":6},{\"symbol\":\"O\",\"number\":9},{\"symbol\":\"P\",\"number\":1}]},{\"symbol\":\"Hwy\",\"name\":\"methylated undermodified hydroxywybutosine monophosphate diradical 3480G\",\"mf\":\"C19H25N6O10P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"y\",\"ocl\":{\"value\":\"efYVEL@IG@nahXJNEDliolRPOFspb\\\\\\\\bTTTvTRbTbb\\\\rVVTttsGG`SPrvuUUUUKMTsUUTuTdHSBDIb@@\",\"coordinates\":\"!B`HyRtL@f_XbDRxz@UHS_chc|S]BN`MAMwxyKaL@fUHS_cmG_chCjXI|YzfA}bL@fpBYTaHz@F\\\\BH@gx@upJH@ha}_`CWHc|_`@\"},\"mass\":528.4105313996416,\"monoisotopicMass\":528.1369780264499,\"unsaturation\":20,\"elements\":[{\"symbol\":\"C\",\"number\":19},{\"symbol\":\"H\",\"number\":25},{\"symbol\":\"N\",\"number\":6},{\"symbol\":\"O\",\"number\":10},{\"symbol\":\"P\",\"number\":1}]},{\"symbol\":\"Hwb\",\"name\":\"hydroxywybutosine monophosphate diradical 34830G\",\"mf\":\"C21H27N6O12P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"⊆\",\"ocl\":{\"value\":\"ee[VCL@IG@nahXJNEDliobZV^POFspb\\\\\\\\bTTTvTRbTbb\\\\rVVTtRbfsGG`SPrvuUUUUKMTsUUULuUIBDpaBX`@\",\"coordinates\":\"!BKB^@ceS[@h`Yg}ARpAeMtHa}KAcPTh{_S]CjXES[pAeMtH}MtEK@IdnDpBXBbES[UMo@F]ARaERH_X`B_`BH_X`B_c~H_]]}bGu~Ox`B_c~H_P\"},\"mass\":586.4466945498602,\"monoisotopicMass\":586.14245733005,\"unsaturation\":22,\"elements\":[{\"symbol\":\"C\",\"number\":21},{\"symbol\":\"H\",\"number\":27},{\"symbol\":\"N\",\"number\":6},{\"symbol\":\"O\",\"number\":12},{\"symbol\":\"P\",\"number\":1}]},{\"symbol\":\"Pwb\",\"name\":\"peroxywybutosine monophosphate diradical 34832G\",\"mf\":\"C21H27N6O13P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"W\",\"ocl\":{\"value\":\"emWVKL@IG@nadXJNEDliohZV^QPOFspb\\\\\\\\bTTTvTRbTbb\\\\rVVTRfTTvXx|BZFVvjjjjiYjfZjjjYjjRDIaBDq@@\",\"coordinates\":\"!BKB^@ceS[@h`Yg}ARpAeMtHa}KAcPTh{_S]CjXES[pAeMtH}MtEK@IdnDpB[|bES[UMo@F]ARaERH_X`B_`BH_X`Bb@I~Oxa}uwvH_Wxb@I~Oxa}\"},\"mass\":602.4460994741785,\"monoisotopicMass\":602.1373719496199,\"unsaturation\":22,\"elements\":[{\"symbol\":\"C\",\"number\":21},{\"symbol\":\"H\",\"number\":27},{\"symbol\":\"N\",\"number\":6},{\"symbol\":\"O\",\"number\":13},{\"symbol\":\"P\",\"number\":1}]},{\"symbol\":\"Wyb\",\"name\":\"wybutosine monophosphate diradical 3483G\",\"mf\":\"C21H27N6O11P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"Y\",\"ocl\":{\"value\":\"eiSVML@IG@na`XJNEDlilRZVPOFspb\\\\\\\\bTTTvTRbTbb\\\\rVVRbTTvXx|BZFVvjjjjiYjfZjjfZjdaBXPaLP@\",\"coordinates\":\"!BsJ\\\\@ciP{@`YWuARPAeMT@a}sNaPThxSUCjhIP{PAeMTD}MTEI@IllDPB[|BIP{eCm@FUARAIPH_Pc|BGtHGzBGtw_Pa}_k|HGzBGt\"},\"mass\":570.4472896255419,\"monoisotopicMass\":570.14754271048,\"unsaturation\":22,\"elements\":[{\"symbol\":\"C\",\"number\":21},{\"symbol\":\"H\",\"number\":27},{\"symbol\":\"N\",\"number\":6},{\"symbol\":\"O\",\"number\":11},{\"symbol\":\"P\",\"number\":1}]},{\"symbol\":\"Awo\",\"name\":\"7-aminocarboxypropylwyosine methyl ester monophosphate diradical 348G\",\"mf\":\"C19H25N6O9P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"⇑\",\"ocl\":{\"value\":\"ejQVIL@IG@na`XJNEDlid\\\\POFspb\\\\\\\\bTTTvTRbTbb\\\\rVVRffXx|BZFVvjjjjiYjfZjjZjRDIaBDq@@\",\"coordinates\":\"!B`HyRtL@f_XbDRxz@UHS_ch`BS]BN`MAMwxyKaL@fUHS_cmG_chCjXI|YzfA}bL@fpBYTaHz@F\\\\BHHa}bOq~@Ha}_c~H@ha}\"},\"mass\":512.4111264753234,\"monoisotopicMass\":512.14206340688,\"unsaturation\":20,\"elements\":[{\"symbol\":\"C\",\"number\":19},{\"symbol\":\"H\",\"number\":25},{\"symbol\":\"N\",\"number\":6},{\"symbol\":\"O\",\"number\":9},{\"symbol\":\"P\",\"number\":1}]},{\"symbol\":\"Wyo\",\"name\":\"wyosine monophosphate diradical 34G\",\"mf\":\"C14H16N5O7P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"€\",\"ocl\":{\"value\":\"ek`ZNL@IG@nahJNEDli`OFspb\\\\\\\\bTTTvTRbTbb\\\\rVXx|BZFVvjjjjiYjfZjdaBXPaLP@\",\"coordinates\":\"!B_`CWMF@ctvDUI|fRxPYgtwP[zV_IorHFY|gD}F@RxPYg|@YgrZOTh{_cuJOS]F@tXAKaI|fw}D\"},\"mass\":397.2804671450629,\"monoisotopicMass\":397.07873487324,\"unsaturation\":18,\"elements\":[{\"symbol\":\"C\",\"number\":14},{\"symbol\":\"H\",\"number\":16},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":7},{\"symbol\":\"P\",\"number\":1}]},{\"symbol\":\"Pdu\",\"name\":\"3-methylpseudouridine monophosphate diradical 39U\",\"mf\":\"C10H13N2O8P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"κ\",\"ocl\":{\"value\":\"fncPK@OAaSbgIrtGc[pbxyDhhilheDiMFs`RuUUTsTuMDQLPbY@@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuPBOpcbpXBGtSItuPSU@HoWtw@`lFC~NSU@\"},\"mass\":320.1929965859354,\"monoisotopicMass\":320.04095238282997,\"unsaturation\":10,\"elements\":[{\"symbol\":\"C\",\"number\":10},{\"symbol\":\"H\",\"number\":13},{\"symbol\":\"N\",\"number\":2},{\"symbol\":\"O\",\"number\":8},{\"symbol\":\"P\",\"number\":1}]},{\"symbol\":\"Mri\",\"name\":\"3-methyluridine monophosphate diradical 3U\",\"mf\":\"C10H13N2O8P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"δ\",\"ocl\":{\"value\":\"fncPK@I^aSbgIrtGc[pbxyDhhilheDiMFs`RuUUUSLuMDQLPbY@@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuPBOpcbpXBGtSItuPSU@HoWtw@`lFC~NSU@\"},\"mass\":320.1929965859354,\"monoisotopicMass\":320.04095238282997,\"unsaturation\":10,\"elements\":[{\"symbol\":\"C\",\"number\":10},{\"symbol\":\"H\",\"number\":13},{\"symbol\":\"N\",\"number\":2},{\"symbol\":\"O\",\"number\":8},{\"symbol\":\"P\",\"number\":1}]},{\"symbol\":\"Acc\",\"name\":\"N4-acetylcytidine monophosphate diradical 42C\",\"mf\":\"C11H14N3O8P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"M\",\"ocl\":{\"value\":\"fikpK@I^kBgENSghOFwaEqrIQQSYQJIRYiQg@ejjjjfYffhbIbDSH@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuPBOpcbpXBGtSItuPSU@H_Wtw@`lFDuPOxxSItuP\"},\"mass\":347.21837644817225,\"monoisotopicMass\":347.05185141949,\"unsaturation\":12,\"elements\":[{\"symbol\":\"C\",\"number\":11},{\"symbol\":\"H\",\"number\":14},{\"symbol\":\"N\",\"number\":3},{\"symbol\":\"O\",\"number\":8},{\"symbol\":\"P\",\"number\":1}]},{\"symbol\":\"Iws\",\"name\":\"isowyosine monophosphate diradical 42G\",\"mf\":\"C14H16N5O7P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"⊇\",\"ocl\":{\"value\":\"ek`ZNL@IG@fnhJNEDla`OFspb\\\\\\\\bTTTvTRbTbSbRrXx|BjzfVjjjjiYjYjjdaBXPaLP@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuPBOq_qopHBGtgD}D@RpPH_Wtw@aOTd}RStwQ@MD@RpQ_qcQSU@\"},\"mass\":397.2804671450629,\"monoisotopicMass\":397.07873487324,\"unsaturation\":18,\"elements\":[{\"symbol\":\"C\",\"number\":14},{\"symbol\":\"H\",\"number\":16},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":7},{\"symbol\":\"P\",\"number\":1}]},{\"symbol\":\"Dmc\",\"name\":\"N4,N4-dimethylcytidine monophosphate diradical 44C\",\"mf\":\"C11H16N3O7P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"μ\",\"ocl\":{\"value\":\"fasqs@I^kBgENSdGc[pbxyDhhilheDiLuF\\\\BVjjjjYfZjHbXaDr@@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuPBGpcbpXBGtSItuPSU@H_Wtw@`lFDuPOxxlF@\"},\"mass\":333.23485303196554,\"monoisotopicMass\":333.07258686438,\"unsaturation\":10,\"elements\":[{\"symbol\":\"C\",\"number\":11},{\"symbol\":\"H\",\"number\":16},{\"symbol\":\"N\",\"number\":3},{\"symbol\":\"O\",\"number\":7},{\"symbol\":\"P\",\"number\":1}]},{\"symbol\":\"Adw\",\"name\":\"7-aminocarboxypropyl-demethylwyosine monophosphate diradical 47G\",\"mf\":\"C17H21N6O9P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"¥\",\"ocl\":{\"value\":\"elVVIL@IG@fnohJNEDlahTPOFspb\\\\\\\\bTTTvTRbTbSbRrrTtXx|BjzfVjjjjiYjYjjijdaBXPaLP@\",\"coordinates\":\"!B`MERc|@Y_]^DUH{_UMo_tXa}SXPTh{_w}GjXES[pAg_t]F@cm@Il@f@haTvuS[pAgPThQTbGvH@ha}_c~HGx@bGt\"},\"mass\":484.3578916656298,\"monoisotopicMass\":484.1107632779601,\"unsaturation\":20,\"elements\":[{\"symbol\":\"C\",\"number\":17},{\"symbol\":\"H\",\"number\":21},{\"symbol\":\"N\",\"number\":6},{\"symbol\":\"O\",\"number\":9},{\"symbol\":\"P\",\"number\":1}]},{\"symbol\":\"Ncd\",\"name\":\"N4-methylcytidine monophosphate diradical 4C\",\"mf\":\"C10H14N3O7P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"ν\",\"ocl\":{\"value\":\"fncqs@I^kBgENSdGc[pbxyDhhilheDiLts`RuUUUSLsUDQLPbY@@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuPBOpcbpXBGtSItuPSU@H_Wtw@`lFDuPKA`\"},\"mass\":319.2082356271187,\"monoisotopicMass\":319.05693679992004,\"unsaturation\":10,\"elements\":[{\"symbol\":\"C\",\"number\":10},{\"symbol\":\"H\",\"number\":14},{\"symbol\":\"N\",\"number\":3},{\"symbol\":\"O\",\"number\":7},{\"symbol\":\"P\",\"number\":1}]},{\"symbol\":\"Dmw\",\"name\":\"4-demethylwyosine monophosphate diradical 4G\",\"mf\":\"C13H14N5O7P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"†\",\"ocl\":{\"value\":\"fcis@INBwlJ\\\\TgHp^MoBKcdRbbfrbTRdR\\\\RVYspZ}fnjjjjefifjiHbXaDr@@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuPBOq_qopHBGtgD}D@RpPH_Wtw@aOTd}RStwQ@MD@RpQ_qcQ\"},\"mass\":383.253849740216,\"monoisotopicMass\":383.06308480878,\"unsaturation\":18,\"elements\":[{\"symbol\":\"C\",\"number\":13},{\"symbol\":\"H\",\"number\":14},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":7},{\"symbol\":\"P\",\"number\":1}]},{\"symbol\":\"Mtu\",\"name\":\"5-methoxyuridine monophosphate diradical 501U\",\"mf\":\"C10H13N2O9P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"5\",\"ocl\":{\"value\":\"fasQK@I^aSbgIsUhOFwaEqrIQQSYQJIRYULxDmUUUTsMSTQDqBId@@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuPBOpcbpXBGtSItuPSU@H_Wtw@`lFBpXSU@@tP\"},\"mass\":336.19240151025366,\"monoisotopicMass\":336.03586700240004,\"unsaturation\":10,\"elements\":[{\"symbol\":\"C\",\"number\":10},{\"symbol\":\"H\",\"number\":13},{\"symbol\":\"N\",\"number\":2},{\"symbol\":\"O\",\"number\":9},{\"symbol\":\"P\",\"number\":1}]},{\"symbol\":\"Uoa\",\"name\":\"uridine 5-oxyacetic acid monophosphate diradical 502U\",\"mf\":\"C11H13N2O11P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"V\",\"ocl\":{\"value\":\"fmgQk@I^aSbgIsUlu`|[^DWGHeEEMeDheIeUeF\\\\BVjjjjYfiijHbXaDr@@\",\"coordinates\":\"!BS]@lFJU`@Gyoza`lzf@lIwx@`H{WHc|KB_W_Wx@_`@lIr\\\\SFBrHHc|_`BH_Xc|_`BH_P\"},\"mass\":380.2019472556255,\"monoisotopicMass\":380.02569624154,\"unsaturation\":12,\"elements\":[{\"symbol\":\"C\",\"number\":11},{\"symbol\":\"H\",\"number\":13},{\"symbol\":\"N\",\"number\":2},{\"symbol\":\"O\",\"number\":11},{\"symbol\":\"P\",\"number\":1}]},{\"symbol\":\"Ume\",\"name\":\"uridine 5-oxyacetic acid methyl ester monophosphate diradical 503U\",\"mf\":\"C12H15N2O11P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"υ\",\"ocl\":{\"value\":\"fcwQk@I^aSbgIsUlu`|[^DWGHeEEMeDheIeUeLs`RuUUUSLuMMTQDqBId@@\",\"coordinates\":\"!BKAb@tURDM\\\\YpMAMpBYMcxc|KB]~@Ha}SXWHc|bOqMcx}RtDvH_Xa}bOrH@ha}_c~HHa}\"},\"mass\":394.2285646604723,\"monoisotopicMass\":394.041346306,\"unsaturation\":12,\"elements\":[{\"symbol\":\"C\",\"number\":12},{\"symbol\":\"H\",\"number\":15},{\"symbol\":\"N\",\"number\":2},{\"symbol\":\"O\",\"number\":11},{\"symbol\":\"P\",\"number\":1}]},{\"symbol\":\"Hxc\",\"name\":\"5-hydroxycytidine monophosphate diradical 50C\",\"mf\":\"C9H12N3O8P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"Ç\",\"ocl\":{\"value\":\"fncpK@I^[BgENSfhOFwaEqrIQQSYQJIRYUg@ejjjjfYfjHbXaDr@@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuPBOpcbpXBGtSItuPSU@H_Wtw@`lFBpXSU@\"},\"mass\":321.1810231465902,\"monoisotopicMass\":321.03620135502996,\"unsaturation\":10,\"elements\":[{\"symbol\":\"C\",\"number\":9},{\"symbol\":\"H\",\"number\":12},{\"symbol\":\"N\",\"number\":3},{\"symbol\":\"O\",\"number\":8},{\"symbol\":\"P\",\"number\":1}]},{\"symbol\":\"Hxu\",\"name\":\"5-hydroxyuridine monophosphate diradical 50U\",\"mf\":\"C9H11N2O9P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"∝\",\"ocl\":{\"value\":\"fncQK@I^aSbgIsUhOFwaEqrIQQSYQJIRYUg@ejjjjfYjZHbXaDr@@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuPBOpcbpXBGtSItuPSU@H_Wtw@`lFBpXSU@\"},\"mass\":322.1657841054069,\"monoisotopicMass\":322.02021693794,\"unsaturation\":10,\"elements\":[{\"symbol\":\"C\",\"number\":9},{\"symbol\":\"H\",\"number\":11},{\"symbol\":\"N\",\"number\":2},{\"symbol\":\"O\",\"number\":9},{\"symbol\":\"P\",\"number\":1}]},{\"symbol\":\"Amu\",\"name\":\"5-aminomethyluridine monophosphate diradical 510U\",\"mf\":\"C10H14N3O8P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"∪\",\"ocl\":{\"value\":\"faspK@I^{BgENSehOFwaEqrIQQSYQJIRYULxDmUUUTsMSTQDqBId@@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuPBOpcbpXBGtSItuPSU@H_Wtw@`lFBpXSU@@tP\"},\"mass\":335.207640551437,\"monoisotopicMass\":335.05185141949,\"unsaturation\":10,\"elements\":[{\"symbol\":\"C\",\"number\":10},{\"symbol\":\"H\",\"number\":14},{\"symbol\":\"N\",\"number\":3},{\"symbol\":\"O\",\"number\":8},{\"symbol\":\"P\",\"number\":1}]},{\"symbol\":\"Mau\",\"name\":\"5-methylaminomethyluridine monophosphate diradical 511U\",\"mf\":\"C11H16N3O8P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"{\",\"ocl\":{\"value\":\"fikpK@I^{BgENSehOFwaEqrIQQSYQJIRYUYg@ejjjjfYjZhbIbDSH@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuPBOpcbpXBGtSItuPSU@H_Wtw@`lFBpXSUAMTBpX\"},\"mass\":349.2342579562838,\"monoisotopicMass\":349.06750148395,\"unsaturation\":10,\"elements\":[{\"symbol\":\"C\",\"number\":11},{\"symbol\":\"H\",\"number\":16},{\"symbol\":\"N\",\"number\":3},{\"symbol\":\"O\",\"number\":8},{\"symbol\":\"P\",\"number\":1}]},{\"symbol\":\"Hmc\",\"name\":\"5-hydroxymethylcytidine monophosphate diradical 51C\",\"mf\":\"C10H14N3O8P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"∅\",\"ocl\":{\"value\":\"faspK@I^[BgENSghOFwaEqrIQQSYQJIRYULxDmUUUTsLuTQDqBId@@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuPBOpcbpXBGtSItuPSU@H_Wtw@`lFBpXSU@@tP\"},\"mass\":335.207640551437,\"monoisotopicMass\":335.05185141949,\"unsaturation\":10,\"elements\":[{\"symbol\":\"C\",\"number\":10},{\"symbol\":\"H\",\"number\":14},{\"symbol\":\"N\",\"number\":3},{\"symbol\":\"O\",\"number\":8},{\"symbol\":\"P\",\"number\":1}]},{\"symbol\":\"Cur\",\"name\":\"5-carboxymethylaminomethyluridine monophosphate diradical 51U\",\"mf\":\"C12H16N3O10P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"!\",\"ocl\":{\"value\":\"fcwpk@I^{BgENSej}`|[^DWGHeEEMeDheIeUdhs`RuUUUSLuMSTQDqBId@@\",\"coordinates\":\"!BKAb@tURDM\\\\YpMAMpBYMcx`BKB]~@Ha}SXW@h`Bb@IMcx}RtDvH_Xa}b@JH@ha}b@I~@Ha}\"},\"mass\":393.24380370165557,\"monoisotopicMass\":393.05733072309,\"unsaturation\":12,\"elements\":[{\"symbol\":\"C\",\"number\":12},{\"symbol\":\"H\",\"number\":16},{\"symbol\":\"N\",\"number\":3},{\"symbol\":\"O\",\"number\":10},{\"symbol\":\"P\",\"number\":1}]},{\"symbol\":\"Chr\",\"name\":\"5-carboxyhydroxymethyluridine monophosphate diradical 520U\",\"mf\":\"C11H13N2O11P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"≥\",\"ocl\":{\"value\":\"fmgQk@I^aSbgIrwlu`|[^DWGHeEEMeDheIeUCF\\\\BVjjjjYfiijHbXaDr@@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuPBOpcbpXBGtSItuPSU@H_Wtw@`lFBpXSU@@tTuPOxxlF@\"},\"mass\":380.2019472556255,\"monoisotopicMass\":380.02569624154,\"unsaturation\":12,\"elements\":[{\"symbol\":\"C\",\"number\":11},{\"symbol\":\"H\",\"number\":13},{\"symbol\":\"N\",\"number\":2},{\"symbol\":\"O\",\"number\":11},{\"symbol\":\"P\",\"number\":1}]},{\"symbol\":\"Mcu\",\"name\":\"5-methoxycarbonylmethyluridine monophosphate diradical 521U\",\"mf\":\"C12H15N2O10P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"1\",\"ocl\":{\"value\":\"fmgPk@I^aSbgIrt\\\\p^MoBKcdRbbfrbTRdrjtsNAKUUUULsTsUDQLPbY@@\",\"coordinates\":\"!BS]@lFJU`@Gyoza`lzf@lIwx@`H{WHc|KB_W_Wx@_`@lIr\\\\SFBrH@h`B_`BH_WxbOrH_P\"},\"mass\":378.229159736154,\"monoisotopicMass\":378.04643168643,\"unsaturation\":12,\"elements\":[{\"symbol\":\"C\",\"number\":12},{\"symbol\":\"H\",\"number\":15},{\"symbol\":\"N\",\"number\":2},{\"symbol\":\"O\",\"number\":10},{\"symbol\":\"P\",\"number\":1}]},{\"symbol\":\"Hme\",\"name\":\"5-(carboxyhydroxymethyl)uridine methyl ester monophosphate diradical 522U\",\"mf\":\"C12H15N2O11P\",\"kind\":\"NucleotideP\",\"oneLetter\":\",\",\"ocl\":{\"value\":\"fcwQk@I^aSbgIrwlu`|[^DWGHeEEMeDheIeUCLs`RuUUUSLuMMTQDqBId@@\",\"coordinates\":\"!BS]@lFJU`@Gyoza`lzf@lIwx@`H{WHc|KB_W_Wx@_`@lIr\\\\SFBrHHc|_`A~@Ha}_c~H@ha}\"},\"mass\":394.2285646604723,\"monoisotopicMass\":394.041346306,\"unsaturation\":12,\"elements\":[{\"symbol\":\"C\",\"number\":12},{\"symbol\":\"H\",\"number\":15},{\"symbol\":\"N\",\"number\":2},{\"symbol\":\"O\",\"number\":11},{\"symbol\":\"P\",\"number\":1}]},{\"symbol\":\"Cxu\",\"name\":\"5-carboxymethyluridine monophosphate diradical 52U\",\"mf\":\"C11H13N2O10P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"◊\",\"ocl\":{\"value\":\"fe{Pk@I^aSbgIrt\\\\p^MoBKcdRbbfrbTRdrjtYpIZjjjifZfZbHfHQL`@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuPBOpcbpXBGtSItuPSU@H_Wtw@`lFBpXSUAMTC~NKA`\"},\"mass\":364.2025423313072,\"monoisotopicMass\":364.03078162197,\"unsaturation\":12,\"elements\":[{\"symbol\":\"C\",\"number\":11},{\"symbol\":\"H\",\"number\":13},{\"symbol\":\"N\",\"number\":2},{\"symbol\":\"O\",\"number\":10},{\"symbol\":\"P\",\"number\":1}]},{\"symbol\":\"Hmu\",\"name\":\"5-carbamoylhydroxymethyluridine monophosphate diradical 531U\",\"mf\":\"C11H14N3O10P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"r\",\"ocl\":{\"value\":\"fmgpk@I^WBgENSeoY`|[^DWGHeEEMeDheIeUCF\\\\BVjjjjYfiijHbXaDr@@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuPBOpcbpXBGtSItuPSU@H_Wtw@`lFBpXSU@@tTuPOxxlF@\"},\"mass\":379.21718629680873,\"monoisotopicMass\":379.04168065863,\"unsaturation\":12,\"elements\":[{\"symbol\":\"C\",\"number\":11},{\"symbol\":\"H\",\"number\":14},{\"symbol\":\"N\",\"number\":3},{\"symbol\":\"O\",\"number\":10},{\"symbol\":\"P\",\"number\":1}]},{\"symbol\":\"Ymu\",\"name\":\"5-carbamoylmethyluridine monophosphate diradical 53U\",\"mf\":\"C11H14N3O9P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"&\",\"ocl\":{\"value\":\"fe{qK@I^gBgENSehp^MoBKcdRbbfrbTRdrjtYpIZjjjifZfZbHfHQL`@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuPBOpcbpXBGtSItuPSU@H_Wtw@`lFBpXSUAMTC~NKA`\"},\"mass\":363.2177813724905,\"monoisotopicMass\":363.04676603906006,\"unsaturation\":12,\"elements\":[{\"symbol\":\"C\",\"number\":11},{\"symbol\":\"H\",\"number\":14},{\"symbol\":\"N\",\"number\":3},{\"symbol\":\"O\",\"number\":9},{\"symbol\":\"P\",\"number\":1}]},{\"symbol\":\"Ttu\",\"name\":\"5-taurinomethyluridine monophosphate diradical 54U\",\"mf\":\"C12H18N3O11PS\",\"kind\":\"NucleotideP\",\"oneLetter\":\"Ê\",\"ocl\":{\"value\":\"fgqh`I^{BgENSenswAxv|HnJpcHeEEMeDheIeUdeHs`RuUUUSLuMTmQDSDHfP@\",\"coordinates\":\"!BKAb@tURD@m\\\\YpMAMpBYMcx`BKB]~@Ha}SXW@h`Bb@IMcx}RtDvH_Xa}b@JH@ha}b@JH__rH_]^H_P\"},\"mass\":443.32387754021244,\"monoisotopicMass\":443.03996658152005,\"unsaturation\":10,\"elements\":[{\"symbol\":\"C\",\"number\":12},{\"symbol\":\"H\",\"number\":18},{\"symbol\":\"N\",\"number\":3},{\"symbol\":\"O\",\"number\":11},{\"symbol\":\"P\",\"number\":1},{\"symbol\":\"S\",\"number\":1}]},{\"symbol\":\"Cmu\",\"name\":\"5-cyanomethyluridine monophosphate diradical 55U\",\"mf\":\"C11H12N3O8P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"Ѷ\",\"ocl\":{\"value\":\"fikpK@I^GBgENSehOFwaEqrIQQSYQJIRYUYg@ejjjjfYj[hbIbDSH@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuPBOpcbpXBGtSItuPSU@H_Wtw@`lFBpXSU@@tPCQ\"},\"mass\":345.20249494006066,\"monoisotopicMass\":345.03620135502996,\"unsaturation\":14,\"elements\":[{\"symbol\":\"C\",\"number\":11},{\"symbol\":\"H\",\"number\":12},{\"symbol\":\"N\",\"number\":3},{\"symbol\":\"O\",\"number\":8},{\"symbol\":\"P\",\"number\":1}]},{\"symbol\":\"Pyu\",\"name\":\"5-(isopentenylaminomethyl)uridine monophosphate diradical 583U\",\"mf\":\"C15H22N3O8P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"¾\",\"ocl\":{\"value\":\"fkopK@I^{BgENSehOFwaEqrIQQSYQJIRYUYIQg@ejjjjfYjZfjHbXaDr@@\",\"coordinates\":\"!BS]@lFJU`@Gyoza`lzf@lIwx@`H{W@h`BKB_W_Wx@_`@lIr\\\\SFBrH@h`B_`BH_Xc|bGvH@gx@bGt\"},\"mass\":403.32484606755946,\"monoisotopicMass\":403.11445167733,\"unsaturation\":12,\"elements\":[{\"symbol\":\"C\",\"number\":15},{\"symbol\":\"H\",\"number\":22},{\"symbol\":\"N\",\"number\":3},{\"symbol\":\"O\",\"number\":8},{\"symbol\":\"P\",\"number\":1}]},{\"symbol\":\"Mdu\",\"name\":\"5-methyldihydrouridine monophosphate diradical 58U\",\"mf\":\"C10H15N2O8P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"ρ\",\"ocl\":{\"value\":\"fncPK@I^aSbgIrtGc[pbxyDhhilheDiLjs`RuUUUSTuMDQLPbY@@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuPBOpcbpXBGtSItuPSU@H_Wtw@`lFBpXSU@\"},\"mass\":322.20887809404695,\"monoisotopicMass\":322.05660244729,\"unsaturation\":8,\"elements\":[{\"symbol\":\"C\",\"number\":10},{\"symbol\":\"H\",\"number\":15},{\"symbol\":\"N\",\"number\":2},{\"symbol\":\"O\",\"number\":8},{\"symbol\":\"P\",\"number\":1}]},{\"symbol\":\"Mcd\",\"name\":\"5-methylcytidine monophosphate diradical 5C\",\"mf\":\"C10H14N3O7P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"?\",\"ocl\":{\"value\":\"fncqs@I^[BgENSdGc[pbxyDhhilheDiLjs`RuUUUSLsUDQLPbY@@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuPBOpcbpXBGtSItuPSU@H_Wtw@`lFBpXSU@\"},\"mass\":319.2082356271187,\"monoisotopicMass\":319.05693679992004,\"unsaturation\":10,\"elements\":[{\"symbol\":\"C\",\"number\":10},{\"symbol\":\"H\",\"number\":14},{\"symbol\":\"N\",\"number\":3},{\"symbol\":\"O\",\"number\":7},{\"symbol\":\"P\",\"number\":1}]},{\"symbol\":\"Hia\",\"name\":\"N6-(cis-hydroxyisopentenyl)adenosine monophosphate diradical 60A\",\"mf\":\"C15H20N5O7P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"`\",\"ocl\":{\"value\":\"eg`ZNL@IG@fnhJNEDlk`OFspb\\\\\\\\bTTTvTRbTbSVRTSGG`USUUUUTCLATuTDHSBDIbPSH\",\"coordinates\":\"!BzfC@IeKPaDn}bHCQb@KQwuRDFALYpHCQt]W@h`BTmCQw}~N`ME~@Gx@b@JH@ha}bOrH_Wxb@JH_P\"},\"mass\":413.3229660580212,\"monoisotopicMass\":413.11003500216003,\"unsaturation\":16,\"elements\":[{\"symbol\":\"C\",\"number\":15},{\"symbol\":\"H\",\"number\":20},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":7},{\"symbol\":\"P\",\"number\":1}]},{\"symbol\":\"Mta\",\"name\":\"2-methylthio-N6-methyladenosine monophosphate diradical 621A\",\"mf\":\"C12H16N5O6PS\",\"kind\":\"NucleotideP\",\"oneLetter\":\"∞\",\"ocl\":{\"value\":\"fmwhp`CQstZLDxipEfGa[qZDYEIlheDdhXdmDmKR\\\\u{MUUUU@aEUAFPTdmH@\",\"coordinates\":\"!BBGw|B@a}_S\\\\H@a}TEJNOuP{Ntm@fPBN[~iRSpHUCneXDBYTEITAEPDiVA@fTBYU@Sj[p\"},\"mass\":389.3243778334011,\"monoisotopicMass\":389.05589142807,\"unsaturation\":14,\"elements\":[{\"symbol\":\"C\",\"number\":12},{\"symbol\":\"H\",\"number\":16},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":6},{\"symbol\":\"P\",\"number\":1},{\"symbol\":\"S\",\"number\":1}]},{\"symbol\":\"Tca\",\"name\":\"N6-threonylcarbamoyladenosine monophosphate diradical 62A\",\"mf\":\"C15H19N6O10P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"6\",\"ocl\":{\"value\":\"edRVEL@IG@fnehJNEDligo`POFspb\\\\\\\\bTTTvTRbTbSVTrbbcGG`USUUUUTCLASUMUABDpaBX`@\",\"coordinates\":\"!BzfC@IeKPaDn}bHCQbOsQwuRDFALYpHCQt]W@h`BTmCQw}~N`ME~@Gx@b@JH@ha}_c~H@ha}_c~H@ha}uwu~@Ha}\"},\"mass\":474.31994328836606,\"monoisotopicMass\":474.09002783307,\"unsaturation\":18,\"elements\":[{\"symbol\":\"C\",\"number\":15},{\"symbol\":\"H\",\"number\":19},{\"symbol\":\"N\",\"number\":6},{\"symbol\":\"O\",\"number\":10},{\"symbol\":\"P\",\"number\":1}]},{\"symbol\":\"Hva\",\"name\":\"N6-hydroxynorvalylcarbamoyladenosine monophosphate diradical 63A\",\"mf\":\"C16H21N6O10P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"√\",\"ocl\":{\"value\":\"elZVIB@IG@fnehJNDligo`POEQql|HgGHeEEMeDheHdueLhhiVNO@jfjjjjhFXBfjZj`aBXPaLP@\",\"coordinates\":\"!BpBYTvxBNFY|bEJObGvOS\\\\@Yt]~DUEJOctu~@Ha}`HzOSTwPTh~HH`BbGvH_Xc|_`BH_Xc|_`BH_]_|bOq~Oxc|bGt\"},\"mass\":488.34656069321284,\"monoisotopicMass\":488.10567789753003,\"unsaturation\":18,\"elements\":[{\"symbol\":\"C\",\"number\":16},{\"symbol\":\"H\",\"number\":21},{\"symbol\":\"N\",\"number\":6},{\"symbol\":\"O\",\"number\":10},{\"symbol\":\"P\",\"number\":1}]},{\"symbol\":\"Aya\",\"name\":\"N6-acetyladenosine monophosphate diradical 64A\",\"mf\":\"C12H14N5O7P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"⇓\",\"ocl\":{\"value\":\"fmwis@INBwlJ\\\\TgLp^MoBKcdRbbfrbTRdRZrcN^CUmUUUTCLASTDQLPbY@@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuPBOq_qopHBGtgD}D@RpPH_Wtw@aOTd}RtPCQ@D}RIqOQ@@\"},\"mass\":371.2431138434808,\"monoisotopicMass\":371.06308480878,\"unsaturation\":16,\"elements\":[{\"symbol\":\"C\",\"number\":12},{\"symbol\":\"H\",\"number\":14},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":7},{\"symbol\":\"P\",\"number\":1}]},{\"symbol\":\"Gca\",\"name\":\"N6-glycinylcarbamoyladenosine monophosphate diradical 65A\",\"mf\":\"C13H15N6O9P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"≡\",\"ocl\":{\"value\":\"eohVIL@IG@fnehJNEDlikg`OFspb\\\\\\\\bTTTvTRbTbSVTrTXx|BjZjjjj`Y`JZfhHPfDHSD@@\",\"coordinates\":\"!BzfC@IeKPaDn}bHCQb@KQwuRDFALYpHCQt]W@h`BTmCQw}~N`ME~@Gx@bOrHHa}_c~H@ha}bOq~@Ha}\"},\"mass\":430.2673035543541,\"monoisotopicMass\":430.06381308458,\"unsaturation\":18,\"elements\":[{\"symbol\":\"C\",\"number\":13},{\"symbol\":\"H\",\"number\":15},{\"symbol\":\"N\",\"number\":6},{\"symbol\":\"O\",\"number\":9},{\"symbol\":\"P\",\"number\":1}]},{\"symbol\":\"Tya\",\"name\":\"N6-methyl-N6-threonylcarbamoyladenosinemonophosphate diradical 662A\",\"mf\":\"C16H21N6O10P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"E\",\"ocl\":{\"value\":\"elZVEL@IG@fnmhJNEDleo`XPOFspb\\\\\\\\bTTTvTRbTbSVbaTTTXx|BjZjjjj`Y`JfjZjBDIaBDq@@\",\"coordinates\":\"!BzfC@IeKPaDn}bHCQb@KQwuRDFALYpHCQt]W@h`BTmCQw}~N`ME~@Gx@bOrHHa}_`A~Ox`BbGu~Ox`BbGwW_Wx@bGt\"},\"mass\":488.34656069321284,\"monoisotopicMass\":488.10567789753003,\"unsaturation\":18,\"elements\":[{\"symbol\":\"C\",\"number\":16},{\"symbol\":\"H\",\"number\":21},{\"symbol\":\"N\",\"number\":6},{\"symbol\":\"O\",\"number\":10},{\"symbol\":\"P\",\"number\":1}]},{\"symbol\":\"Nna\",\"name\":\"N6,N6-dimethyladenosine monophosphate diradical 66A\",\"mf\":\"C12H16N5O6P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"ζ\",\"ocl\":{\"value\":\"feghs@INBwlJ\\\\TgHOFwaEqrIQQSYQJIRIMZLyxMVuUUUPLpEUADSDHfP@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuPBOq_qopHBGtgD}D@RpPH_Wtw@aOTd}RtPCQ@D}RFBp\"},\"mass\":357.2595904272741,\"monoisotopicMass\":357.08382025367,\"unsaturation\":14,\"elements\":[{\"symbol\":\"C\",\"number\":12},{\"symbol\":\"H\",\"number\":16},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":6},{\"symbol\":\"P\",\"number\":1}]},{\"symbol\":\"Fya\",\"name\":\"N6-formyladenosine monophosphate diradical 67A\",\"mf\":\"C11H12N5O7P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"Ϩ\",\"ocl\":{\"value\":\"fegis@INBwlJ\\\\TgLp^MoBKcdRbbfrbTRdRZrYspZmjjjj`Y`JZBHfHQL`@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuPBOq_qopHBGtgD}D@RpPH_Wtw@aOTd}RtPCQ@D}RtP@\"},\"mass\":357.216496438634,\"monoisotopicMass\":357.04743474432,\"unsaturation\":16,\"elements\":[{\"symbol\":\"C\",\"number\":11},{\"symbol\":\"H\",\"number\":12},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":7},{\"symbol\":\"P\",\"number\":1}]},{\"symbol\":\"Hma\",\"name\":\"N6-hydroxymethyladenosine monophosphate diradical 68A\",\"mf\":\"C11H14N5O7P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"Ϫ\",\"ocl\":{\"value\":\"fegis@INBwlJ\\\\TgLp^MoBKcdRbbfrbTRdRZrYspZmjjjj`Y`JjBHfHQL`@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuPBOq_qopHBGtgD}D@RpPH_Wtw@aOTd}RtPCQ@D}RtP@\"},\"mass\":359.23237794674554,\"monoisotopicMass\":359.06308480878,\"unsaturation\":14,\"elements\":[{\"symbol\":\"C\",\"number\":11},{\"symbol\":\"H\",\"number\":14},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":7},{\"symbol\":\"P\",\"number\":1}]},{\"symbol\":\"Cca\",\"name\":\"cyclic N6-threonylcarbamoyladenosine monophosphate diradical 69A\",\"mf\":\"C15H17N6O9P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"e\",\"ocl\":{\"value\":\"ehRVIL@IG@fnehJNEDliko`OFspb\\\\\\\\bTTTvTRbTbSVTRRtXx|BjZvNjjjj`Y`IjfjbHPfDHSD`z`\",\"coordinates\":\"!BvuPfpDnDtEK_tPJHtXBH_TwPb@J_IorHbGtgD}F@RxRH_WwW@hbOTh}RtXCQ`A`l_`A`iVCjKAcjX@A~@h`Bup\"},\"mass\":456.30465685593623,\"monoisotopicMass\":456.07946314904,\"unsaturation\":20,\"elements\":[{\"symbol\":\"C\",\"number\":15},{\"symbol\":\"H\",\"number\":17},{\"symbol\":\"N\",\"number\":6},{\"symbol\":\"O\",\"number\":9},{\"symbol\":\"P\",\"number\":1}]},{\"symbol\":\"Fcy\",\"name\":\"5-formylcytidine monophosphate diradical71C\",\"mf\":\"C10H12N3O8P\",\"kind\":\"NucleotideP\",\"oneLetter\":\">\",\"ocl\":{\"value\":\"faspK@I^[BgENSghOFwaEqrIQQSYQJIRYULxDmUUUTsLttQDqBId@@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuPBOpcbpXBGtSItuPSU@H_Wtw@`lFBpXSU@@tP\"},\"mass\":333.1917590433254,\"monoisotopicMass\":333.03620135502996,\"unsaturation\":12,\"elements\":[{\"symbol\":\"C\",\"number\":10},{\"symbol\":\"H\",\"number\":12},{\"symbol\":\"N\",\"number\":3},{\"symbol\":\"O\",\"number\":8},{\"symbol\":\"P\",\"number\":1}]},{\"symbol\":\"Tur\",\"name\":\"4-thiouridine monophosphate diradical 74U\",\"mf\":\"C9H11N2O7PS\",\"kind\":\"NucleotideP\",\"oneLetter\":\"4\",\"ocl\":{\"value\":\"ff}Qp`I^aSbgIrCqmxQ\\\\ZaFQJJJ[JIQJSMg@ejjjjfYihbIbDSH@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuPBOpcbpXBGtSItuPSU@H_Wtw@`lFDuP\"},\"mass\":322.2317616628973,\"monoisotopicMass\":322.0024588732,\"unsaturation\":10,\"elements\":[{\"symbol\":\"C\",\"number\":9},{\"symbol\":\"H\",\"number\":11},{\"symbol\":\"N\",\"number\":2},{\"symbol\":\"O\",\"number\":7},{\"symbol\":\"P\",\"number\":1},{\"symbol\":\"S\",\"number\":1}]},{\"symbol\":\"Meg\",\"name\":\"7-methylguanosine monophosphate diradical 7G\",\"mf\":\"C11H15N5O7P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"7\",\"ocl\":{\"value\":\"fegisDINCt\\\\J\\\\TgLp^MoBKbF\\\\bTTTvTRbTbRlSN^CWmUUUUKLuSTQDqBId@@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuPBOq_qopHBGtgD}D@RpPH_Wtw@aOTd}RqdCQ@B\\\\StP@\"},\"mass\":360.2403187008013,\"monoisotopicMass\":360.07090984101,\"unsaturation\":13,\"elements\":[{\"symbol\":\"C\",\"number\":11},{\"symbol\":\"H\",\"number\":15},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":7},{\"symbol\":\"P\",\"number\":1}]},{\"symbol\":\"Mea\",\"name\":\"8-methyladenosine monophosphate diradical 8A\",\"mf\":\"C11H14N5O6P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"â\",\"ocl\":{\"value\":\"fi{hs@INCt\\\\J\\\\UdhOFw`eqrIQQSYQJJJQKigOA[vjjjjAi`J`bIbDSH@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuPBOq_qopHBGtgD}D@RpP@c`a}_S_|BD}RSuKQ@MD@\"},\"mass\":343.2329730224273,\"monoisotopicMass\":343.06817018921,\"unsaturation\":14,\"elements\":[{\"symbol\":\"C\",\"number\":11},{\"symbol\":\"H\",\"number\":14},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":6},{\"symbol\":\"P\",\"number\":1}]},{\"symbol\":\"Dhu\",\"name\":\"dihydrouridine monophosphate diradical 8U\",\"mf\":\"C9H13N2O8P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"D\",\"ocl\":{\"value\":\"ff}PK@I^aSbgIsTGc[pbxyDhhilheDiLv\\\\BVjjjjZffbHfHQL`@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuPBOpcbpXBGtSItuPSU@H_Wtw@`lFDuP\"},\"mass\":308.1822606892002,\"monoisotopicMass\":308.04095238282997,\"unsaturation\":8,\"elements\":[{\"symbol\":\"C\",\"number\":9},{\"symbol\":\"H\",\"number\":13},{\"symbol\":\"N\",\"number\":2},{\"symbol\":\"O\",\"number\":8},{\"symbol\":\"P\",\"number\":1}]},{\"symbol\":\"Ins\",\"name\":\"inosine monophosphate diradical 9A\",\"mf\":\"C10H11N4O7P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"I\",\"ocl\":{\"value\":\"fakIs@INBvENJSghOFwaEqrIQQSYQJIRIMLyxMVuUUUTlsSTQDqBId@@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuPBOq_qopHBGtgD}D@RpPH_Wtw@aOTd}RtPCQ@@\"},\"mass\":330.1911165763972,\"monoisotopicMass\":330.03653570766,\"unsaturation\":14,\"elements\":[{\"symbol\":\"C\",\"number\":10},{\"symbol\":\"H\",\"number\":11},{\"symbol\":\"N\",\"number\":4},{\"symbol\":\"O\",\"number\":7},{\"symbol\":\"P\",\"number\":1}]},{\"symbol\":\"Pis\",\"name\":\"pseudouridine monophosphate diradical 9U\",\"mf\":\"C9H11N2O8P\",\"kind\":\"NucleotideP\",\"oneLetter\":\"P\",\"ocl\":{\"value\":\"ff}PK@OAaSbgIsTGc[pbxyDhhilheDiLv\\\\BVjjjfZffbHfHQL`@\",\"coordinates\":\"!BNuSFPDlDTEHt_pHtP@H_TuPBOpcbpXBGtSItuPSU@H_Wtw@`lFDuP\"},\"mass\":306.1663791810886,\"monoisotopicMass\":306.02530231837,\"unsaturation\":10,\"elements\":[{\"symbol\":\"C\",\"number\":9},{\"symbol\":\"H\",\"number\":11},{\"symbol\":\"N\",\"number\":2},{\"symbol\":\"O\",\"number\":8},{\"symbol\":\"P\",\"number\":1}]},{\"symbol\":\"Pqb\",\"name\":\"preQ0base 100G diradical (base)\",\"mf\":\"C7H5N5O\",\"kind\":\"Nucleotide\",\"oneLetter\":\"ψ\",\"ocl\":{\"value\":\"dk^h@DxYLLbbTTRekiujYj^`@\",\"coordinates\":\"!B|Gwp_Gy|Gwp_[lk_gp_Ag_wrYRs}|f\"},\"mass\":175.1477760289729,\"monoisotopicMass\":175.04940980287,\"unsaturation\":14,\"elements\":[{\"symbol\":\"C\",\"number\":7},{\"symbol\":\"H\",\"number\":5},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":1}]},{\"symbol\":\"Pqg\",\"name\":\"preQ1base 101G diradical (base)\",\"mf\":\"C7H9N5O\",\"kind\":\"Nucleotide\",\"oneLetter\":\"∇\",\"ocl\":{\"value\":\"dk^h@DxYLLbbTTRckiUjYij`@\",\"coordinates\":\"!BWyfe[tlDWye_fXx@RpRe[wtHSuHH@a}\"},\"mass\":179.179539045196,\"monoisotopicMass\":179.08070993179,\"unsaturation\":10,\"elements\":[{\"symbol\":\"C\",\"number\":7},{\"symbol\":\"H\",\"number\":9},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":1}]},{\"symbol\":\"Qba\",\"name\":\"Qbase 10G diradical (base)\",\"mf\":\"C12H15N5O3\",\"kind\":\"Nucleotide\",\"oneLetter\":\"∴\",\"ocl\":{\"value\":\"fbmi`@D\\\\EHpHyrJIQQJMJIPtyIPTmSMMUMUP@@\",\"coordinates\":\"!BRpQ_f^i`RpQKAEARzfA_f_pHtP@H_Pc|BGuPThxUCl{RtBYTd|\"},\"mass\":277.27967290184347,\"monoisotopicMass\":277.11748936431,\"unsaturation\":14,\"elements\":[{\"symbol\":\"C\",\"number\":12},{\"symbol\":\"H\",\"number\":15},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":3}]},{\"symbol\":\"Dgc\",\"name\":\"N2,7-dimethylguanosine cap (cap DMG) diradical 279553N\",\"mf\":\"C12H18N5O11P2\",\"kind\":\"Nucleotide\",\"oneLetter\":\"®\",\"ocl\":{\"value\":\"e`TZMBHIG@aihJNEHdlemck`OFspz|OgDJ\\\\bTTTvTRbTbRvbtfKGG`UPuUUUUJtuTmUTPaLHPfH@@\",\"coordinates\":\"!BvuPfpDnDtEK_t_rHtXBH_TwPbOr_IorHbGtgD}F@RxS|uxc|_]^OTh}RIlBH_]F@IqOQ`@A~_c|bH}RbGt\"},\"mass\":470.24625855539705,\"monoisotopicMass\":470.04780541440005,\"unsaturation\":13,\"elements\":[{\"symbol\":\"C\",\"number\":12},{\"symbol\":\"H\",\"number\":18},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":11},{\"symbol\":\"P\",\"number\":2}]},{\"symbol\":\"Dpa\",\"name\":\"5′-(3′-dephosphoacetyl-CoA) diradical 4155N\",\"mf\":\"C23H35N7O16P3S\",\"kind\":\"Nucleotide\",\"oneLetter\":\"♣\",\"ocl\":{\"value\":\"elz~@jDCHlemnSTLBAEKBjfckgbV]XpEfCpB|IoCtHZy{lbdvbbfrbTRdRNRdnTbefRTrRTdTRrFVfjjjj`V`bZjjfjZjZ`bbLSaRP@\",\"coordinates\":\"!BvtmKaMmKUMlfgto[tDw_cosWt]~H@dvObGv_F_sWbOpgKMG_R}m}bHa}HbOSX}M_cQw}G_OwzH_[wW_c~H_Wx@G{|bM]}bGvHGxbGu~Oxa}bOq~Oxa}_c~H_WxuwvH_P\"},\"mass\":790.5483266874629,\"monoisotopicMass\":790.1073852418399,\"unsaturation\":21,\"elements\":[{\"symbol\":\"C\",\"number\":23},{\"symbol\":\"H\",\"number\":35},{\"symbol\":\"N\",\"number\":7},{\"symbol\":\"O\",\"number\":16},{\"symbol\":\"P\",\"number\":3},{\"symbol\":\"S\",\"number\":1}]},{\"symbol\":\"Dpm\",\"name\":\"5′-(3′-dephosphomalonyl-CoA) diradical 4255N\",\"mf\":\"C24H35N7O18P3S\",\"kind\":\"Nucleotide\",\"oneLetter\":\"♥\",\"ocl\":{\"value\":\"efq~DjDCHlemnSTLBAEKBjfckgbV]XrzpEfCpB|IoCtHZy{lbdvbbfrbTRdRNRdnTbefRTrRTrdbbVPrtuUUUTBtDSUUTuSUSSTDTQb\\\\JR@@\",\"coordinates\":\"!BIlB_Ib[@pAe`zni`FALSF@A~FBq~OrpXbGveX@A~_c~OTa`lzf@_ha}_]_Q`MF@bOpXKA`loXbH__rHb@JHoX`B@m]}uwx@bGu~Ox`BbKvH@ha}_c~H@hb}b@JH_Xc|_`BH_X`B_`BHoP\"},\"mass\":834.5578724328346,\"monoisotopicMass\":834.0972144809799,\"unsaturation\":23,\"elements\":[{\"symbol\":\"C\",\"number\":24},{\"symbol\":\"H\",\"number\":35},{\"symbol\":\"N\",\"number\":7},{\"symbol\":\"O\",\"number\":18},{\"symbol\":\"P\",\"number\":3},{\"symbol\":\"S\",\"number\":1}]},{\"symbol\":\"Dsc\",\"name\":\"5′-(3′-dephosphosuccinyl-CoA) radical 4355N\",\"mf\":\"C25H37N7O18P3S\",\"kind\":\"Nucleotide\",\"oneLetter\":\"♦\",\"ocl\":{\"value\":\"eny~DjDCHlemnSTLBAEKBjfckgbV]XzvpOFCpB|IoCtHZy{lbdvbbfrbTRdRNRdnTbefRTrRTrTdTRrFVfjjjj`V`bZjjfjZjZfhHhcDxTd@@\",\"coordinates\":\"!B[~kjXFjiV[Ry|fcm}MtGwWctvH_]Q_c}KaGwWbGvN`H}MgrX@_gx@h`gKB\\\\lbGvOSX}M@m^H@gwWbGvH@ha}_Xc|bGxb@I~@Ha}b@JH_X`B_`BH_X`BbGvH@ha}_c~H@ha}b@I~@Ha}\"},\"mass\":848.5844898376815,\"monoisotopicMass\":848.11286454544,\"unsaturation\":23,\"elements\":[{\"symbol\":\"C\",\"number\":25},{\"symbol\":\"H\",\"number\":37},{\"symbol\":\"N\",\"number\":7},{\"symbol\":\"O\",\"number\":18},{\"symbol\":\"P\",\"number\":3},{\"symbol\":\"S\",\"number\":1}]},{\"symbol\":\"Dpc\",\"name\":\"5′-(3′-dephospho-CoA) radical 455N\",\"mf\":\"C21H32N7O13P2S\",\"kind\":\"Nucleotide\",\"oneLetter\":\"♠\",\"ocl\":{\"value\":\"ek_^KBDIG@nabYXJNEHdliemh\\\\QPEfspZ|CPcKmnrIQQSYQJIRIGIRWJQRsIJYIccpJkjjjjjAZBIjjjZijjBDIaBDq@@\",\"coordinates\":\"!B[zW[UI|YchAMc{vHcuJH@m~NbGuKvwvHb@JNwx}Rgqe}bHa}@h`gDr\\\\Sb@JOTh}R@m]~@@A~b@I~@H`B_X`_hb}_`CW@h`B_`BH@gx@upJH@gx@b@I~@@\"},\"mass\":684.5310558604504,\"monoisotopicMass\":684.1254042880199,\"unsaturation\":19,\"elements\":[{\"symbol\":\"C\",\"number\":21},{\"symbol\":\"H\",\"number\":32},{\"symbol\":\"N\",\"number\":7},{\"symbol\":\"O\",\"number\":13},{\"symbol\":\"P\",\"number\":2},{\"symbol\":\"S\",\"number\":1}]},{\"symbol\":\"Dpe\",\"name\":\"5′-diphosphate end 552N\",\"mf\":\"O3P\",\"kind\":\"Nucleotide\",\"oneLetter\":\"ϒ\",\"ocl\":{\"value\":\"gJQdebGF^Dx|duK@@\",\"coordinates\":\"!BbOq~@GxbGt\"},\"mass\":78.97197677137483,\"monoisotopicMass\":78.95850585713,\"unsaturation\":1,\"elements\":[{\"symbol\":\"O\",\"number\":3},{\"symbol\":\"P\",\"number\":1}]},{\"symbol\":\"Mgc\",\"name\":\"7-methylguanosine cap (cap 0) diradical 79553N\",\"mf\":\"C11H16N5O11P2\",\"kind\":\"Nucleotide\",\"oneLetter\":\"©\",\"ocl\":{\"value\":\"eohZMBHIG@aihJNEHdlemck`OFspz|GgDJ\\\\bTTTvTRbTbRvbtcXx|BjFjjjjiVfjejjHPfDHSD@@\",\"coordinates\":\"!BvuPfpDnDtEK_tPJHtXBH_TwPb@J_I`JHbGtgD}F@RxPBux`B_]^OTh}RIlBH_]F@IqOQ`@A~_c|BbHa}\"},\"mass\":456.2196411505502,\"monoisotopicMass\":456.03215534994,\"unsaturation\":13,\"elements\":[{\"symbol\":\"C\",\"number\":11},{\"symbol\":\"H\",\"number\":16},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":11},{\"symbol\":\"P\",\"number\":2}]},{\"symbol\":\"Gyy\",\"name\":\"guanylylated 5′ end (cap G) diradical 9553N\",\"mf\":\"C10H13N5O10P2\",\"kind\":\"Nucleotide\",\"oneLetter\":\"ϑ\",\"ocl\":{\"value\":\"fkhh`INCt\\\\J\\\\UENY{NCqmxM|EnNQJJJ[JIQJQHzIRLyxM^uUUUTkSULuQDSDHfP@\",\"coordinates\":\"!BvuPfpDnDtEK_tPJHtXBH_TwPb@J_I`JHbGtgD}F@RxPBux`B_]^OTh}R_`CQ`B\\\\StXA~@C}~@Gx\"},\"mass\":425.1856780673293,\"monoisotopicMass\":425.01376563368,\"unsaturation\":14,\"elements\":[{\"symbol\":\"C\",\"number\":10},{\"symbol\":\"H\",\"number\":13},{\"symbol\":\"N\",\"number\":5},{\"symbol\":\"O\",\"number\":10},{\"symbol\":\"P\",\"number\":2}]},{\"symbol\":\"Furp\",\"name\":\"furan phosphate radical\",\"mf\":\"C5H6O4P\",\"kind\":\"RNAp\",\"oneLetter\":\"⬠\",\"ocl\":{\"value\":\"dmtBPDpnAYcpRZ}eeYjii@@\",\"coordinates\":\"!B]w|Mw\\\\B_S]wW\\\\BtP@oKS~frpP\"},\"mass\":161.072705703704,\"monoisotopicMass\":161.00037067008,\"unsaturation\":5,\"elements\":[{\"symbol\":\"C\",\"number\":5},{\"symbol\":\"H\",\"number\":6},{\"symbol\":\"O\",\"number\":4},{\"symbol\":\"P\",\"number\":1}]}]","'use strict';\n\nconst groupsObject = require('./groupsObject.js');\n\n/**\n * Recreate a one letter sequence\n * @param {} mf\n */\n\nfunction groupsToSequence(mf) {\n  mf = mf.replace(/\\([^(]*\\)/g, '');\n  let parts = mf.split(/(?=[A-Z ])/);\n  let usefulParts = [];\n  for (let part of parts) {\n    if (part === ' ') {\n      usefulParts.push(' ');\n      continue;\n    }\n    if (!part.match(/^[A-Z][a-z]{2,6}/)) continue;\n    if (groupsObject[part] && groupsObject[part].oneLetter) {\n      usefulParts.push(groupsObject[part].oneLetter);\n    } else {\n      usefulParts.push('?');\n    }\n  }\n  return usefulParts.join('').replace(/ +/g, ' ').trim();\n}\n\nmodule.exports = groupsToSequence;\n","'use strict';\n\nconst groups = require('./groups.js');\nconst groupsToSequence = require('./groupsToSequence');\n\nfunction getGroupsObject() {\n  let object = {};\n  groups.forEach((e) => {\n    object[e.symbol] = e;\n  });\n  return object;\n}\n\nmodule.exports = {\n  groups,\n  getGroupsObject,\n  groupsToSequence,\n};\n","'use strict';\n\n// SOURCE: https://en.wikipedia.org/wiki/Amino_acid\n// Link for UTF8 code for modified: https://codepoints.net/search?sc=Grek\nmodule.exports = [\n  // Standard amino acids\n  {\n    name: 'Alanine',\n    aa3: 'Ala',\n    aa1: 'A',\n    sc: {\n      type: 'hydrophobic',\n    },\n    pKaC: 2.33,\n    pKaN: 9.71,\n  },\n  {\n    name: 'Arginine',\n    aa3: 'Arg',\n    aa1: 'R',\n    sc: {\n      type: 'positive',\n      pKa: 12.1,\n    },\n    pKaC: 2.03,\n    pKaN: 9.0,\n  },\n  {\n    name: 'Asparagine',\n    aa3: 'Asn',\n    aa1: 'N',\n    sc: {\n      type: 'polar',\n    },\n    pKaC: 2.13,\n    pKaN: 9.05,\n  },\n  {\n    name: 'Aspartic acid',\n    aa3: 'Asp',\n    aa1: 'D',\n    sc: {\n      type: 'negative',\n      pKa: 3.71,\n    },\n    pKaC: 1.95,\n    pKaN: 9.66,\n  },\n  {\n    name: 'Cysteine',\n    aa3: 'Cys',\n    aa1: 'C',\n    sc: {\n      type: 'special',\n      pKa: 8.14,\n    },\n    pKaC: 1.91,\n    pKaN: 10.28,\n  },\n  {\n    name: 'Glutamic acid',\n    aa3: 'Glu',\n    aa1: 'E',\n    sc: {\n      type: 'negative',\n      pKa: 4.15,\n    },\n    pKaC: 2.16,\n    pKaN: 9.58,\n  },\n  {\n    name: 'Glutamine',\n    aa3: 'Gln',\n    aa1: 'Q',\n    sc: {\n      type: 'polar',\n    },\n    pKaC: 2.18,\n    pKaN: 9.0,\n  },\n  {\n    name: 'Glycine',\n    aa3: 'Gly',\n    aa1: 'G',\n    sc: {\n      type: 'special',\n    },\n    pKaC: 2.34,\n    pKaN: 9.58,\n  },\n  {\n    name: 'Histidine',\n    aa3: 'His',\n    aa1: 'H',\n    sc: {\n      type: 'positive',\n      pKa: 6.04,\n    },\n    pKaC: 1.7,\n    pKaN: 9.09,\n  },\n  {\n    name: 'Isoleucine',\n    aa3: 'Ile',\n    aa1: 'I',\n    sc: {\n      type: 'hydrophobic',\n    },\n    pKaC: 2.26,\n    pKaN: 9.6,\n  },\n  {\n    name: 'Leucine',\n    aa3: 'Leu',\n    aa1: 'L',\n    sc: {\n      type: 'hydrophobic',\n    },\n    pKaC: 2.32,\n    pKaN: 9.58,\n  },\n  {\n    name: 'Lysine',\n    aa3: 'Lys',\n    aa1: 'K',\n    sc: {\n      type: 'positive',\n      pKa: 10.67,\n    },\n    pKaC: 2.15,\n    pKaN: 9.16,\n  },\n  {\n    name: 'Methionine',\n    aa3: 'Met',\n    aa1: 'M',\n    sc: {\n      type: 'hydrophobic',\n    },\n    pKaC: 2.16,\n    pKaN: 9.08,\n  },\n  {\n    name: 'Phenylalanine',\n    aa3: 'Phe',\n    aa1: 'F',\n    sc: {\n      type: 'hydrophobic',\n    },\n    pKaC: 2.18,\n    pKaN: 9.09,\n  },\n  {\n    name: 'Proline',\n    aa3: 'Pro',\n    aa1: 'P',\n    sc: {\n      type: 'special',\n    },\n    pKaC: 1.95,\n    pKaN: 10.47,\n  },\n  {\n    name: 'Serine',\n    aa3: 'Ser',\n    aa1: 'S',\n    sc: {\n      type: 'polar',\n    },\n    pKaC: 2.13,\n    pKaN: 9.05,\n  },\n  {\n    name: 'Threonine',\n    aa3: 'Thr',\n    aa1: 'T',\n    sc: {\n      type: 'polar',\n    },\n    pKaC: 2.2,\n    pKaN: 8.96,\n  },\n  {\n    name: 'Tryptophan',\n    aa3: 'Trp',\n    aa1: 'W',\n    sc: {\n      type: 'hydrophobic',\n    },\n    pKaC: 2.38,\n    pKaN: 9.34,\n  },\n  {\n    name: 'Tyrosine',\n    aa3: 'Tyr',\n    aa1: 'Y',\n    sc: {\n      type: 'hydrophobic',\n    },\n    pKaC: 2.24,\n    pKaN: 9.04,\n  },\n  {\n    name: 'Valine',\n    aa3: 'Val',\n    aa1: 'V',\n    sc: {\n      type: 'hydrophobic',\n    },\n    pKaC: 2.27,\n    pKaN: 9.52,\n  },\n  // Additional\n  {\n    name: 'Selenocysteine',\n    aa3: 'Sec',\n    aa1: 'U',\n  },\n  {\n    name: 'Pyrrolysine',\n    aa3: 'Pyl',\n    aa1: 'O',\n  },\n  // Ambiguous\n  {\n    name: 'Asparagine or aspartic acid',\n    aa3: 'Asx',\n    aa1: 'B',\n  },\n  {\n    name: 'Glutamine or glutamic acid',\n    aa3: 'Glx',\n    aa1: 'Z',\n  },\n  {\n    name: 'Leucine or isoleucine',\n    aa3: 'Xle',\n    aa1: 'J',\n  },\n  {\n    name: 'Unspecified or unknown',\n    aa3: 'Xaa',\n    aa1: 'X',\n  },\n];\n","'use strict';\n\nlet aa = require('./aminoAcids');\n\n// we will convert the data to an object to be much faster\nlet aaObject = {};\nfor (let i = 0; i < aa.length; i++) {\n  aaObject[aa[i].aa3] = aa[i];\n}\n\nfunction calculateCharge(aas, pH) {\n  if (!pH) pH = 7.0;\n  let combined = combine(aas);\n  if (!combined) return;\n  let charge = calculateForPh(combined, pH);\n  return Math.round(charge * 1000) / 1000;\n}\n\n// this methods required an array of aas\n\nfunction calculateIEP(aas) {\n  let combined = combine(aas);\n  if (!combined) return;\n  let first = 0;\n  let last = 14;\n  let current = 14;\n  let previous = 0;\n  let currentCharge;\n  while (Math.abs(current - previous) > 0.0001) {\n    previous = current;\n    current = (last + first) / 2;\n    currentCharge = calculateForPh(combined, current);\n    if (currentCharge > 0) {\n      first = current;\n    } else if (currentCharge < 0) {\n      last = current;\n    } else {\n      previous = current;\n    }\n  }\n  return Math.round(current * 1000) / 1000;\n}\n\nfunction calculateChart(aas) {\n  let combined = combine(aas);\n  if (!combined) return;\n  let y = [];\n  let x = [];\n  let yAbs = [];\n  for (let i = 0; i <= 14; i = i + 0.01) {\n    let charge = calculateForPh(combined, i);\n    x.push(i);\n    y.push(charge);\n    yAbs.push(Math.abs(charge));\n  }\n  combined.x = x;\n  combined.y = y;\n  combined.yAbs = yAbs;\n\n  return combined;\n}\n\nfunction calculateForPh(combined, pH) {\n  let total = 0;\n  total += 1 / (1 + Math.pow(10, pH - combined.first));\n  total += -1 / (1 + Math.pow(10, combined.last - pH));\n  for (let key in combined.acid) {\n    total +=\n      -combined.acid[key] / (1 + Math.pow(10, aaObject[key].sc.pKa - pH));\n  }\n  for (let key in combined.basic) {\n    total +=\n      combined.basic[key] / (1 + Math.pow(10, pH - aaObject[key].sc.pKa));\n  }\n  return total;\n}\n\n// we will combine the amino acids\nfunction combine(aas) {\n  let combined = {};\n  if (aaObject[aas[0]]) {\n    combined.first = aaObject[aas[0]].pKaN;\n  } else {\n    return;\n  }\n  if (aaObject[aas[aas.length - 1]]) {\n    combined.last = aaObject[aas[aas.length - 1]].pKaC;\n  } else {\n    return;\n  }\n  combined.basic = {};\n  combined.acid = {};\n  for (let i = 0; i < aas.length; i++) {\n    let aa = aas[i];\n    if (!aaObject[aa]) return;\n    if (aaObject[aa].sc && aaObject[aa].sc.type) {\n      if (aaObject[aa].sc.type === 'positive') {\n        if (!combined.basic[aa]) {\n          combined.basic[aa] = 0;\n        }\n        combined.basic[aa]++;\n      } else if (aaObject[aa].sc.type === 'negative') {\n        if (!combined.acid[aa]) {\n          combined.acid[aa] = 0;\n        }\n        combined.acid[aa]++;\n      }\n    }\n  }\n  return combined;\n}\n\n/*\n We can generate a color based on iep\n 0 -> 7 means that at pH 7 it is charged negatively (blue)\n 7 -> 14 means that at pH7 it is charged positively (red)\n */\nfunction getColor(iep) {\n  if (iep < 7) {\n    if (iep < 3) iep = 3;\n    let white = Math.round(255 - (7 - iep) * (200 / 4));\n    return `rgb(${white},${white},255)`;\n  } else if (iep > 7) {\n    if (iep > 11) iep = 11;\n    let white = Math.round(255 - (iep - 7) * (200 / 4));\n    return `rgb(255,${white},${white})`;\n  }\n  return 'rgb(255,255,255)';\n}\n\nmodule.exports = {\n  calculateIEP: calculateIEP,\n  calculateCharge: calculateCharge,\n  calculateChart: calculateChart,\n  getColor: getColor,\n};\n","'use strict';\n\nlet aa = require('./aminoAcids');\n\nfunction getAA(code) {\n  if (code.length === 1) {\n    for (let i = 0; i < aa.length; i++) {\n      if (aa[i].aa1 === code) {\n        return aa[i];\n      }\n    }\n  }\n  if (code.length === 3) {\n    for (let i = 0; i < aa.length; i++) {\n      if (aa[i].aa3 === code) {\n        return aa[i];\n      }\n    }\n  }\n}\n\nmodule.exports = getAA;\n","'use strict';\n\nlet getAA = require('./getAA');\n\n// SOURCE: https://en.wikipedia.org/wiki/Amino_acid\n\nfunction chargePeptide(mf, options = {}) {\n  if (options.pH === undefined) options.pH = 0;\n  if (Array.isArray(mf)) {\n    for (let i = 0; i < mf.length; i++) {\n      mf[i] = chargeOnePeptide(mf[i], options);\n    }\n    return mf;\n  } else {\n    return chargeOnePeptide(mf, options);\n  }\n}\n\nfunction chargeOnePeptide(mf, options) {\n  let pH = options.pH;\n  // we will allow to charge the peptide at a specific pH\n\n  // first amino acids (N-terminal)\n  if (mf.match(/^H[A-Z][a-z]{2}/)) {\n    let firstAA = mf.replace(/^H([A-Z][a-z]{2}).*/, '$1');\n    if (getAA(firstAA) && pH < getAA(firstAA).pKaN) {\n      mf = mf.replace(/^H([^+])/, 'H+H$1');\n    }\n  }\n\n  // last amino acids (C-terminal)\n  if (mf.match(/[A-Z][a-z]{2}OH$/)) {\n    let lastAA = mf.replace(/.*([A-Z][a-z]{2})OH$/, '$1');\n    if (getAA(lastAA) && pH > getAA(lastAA).pKaC) {\n      mf = mf.replace(/OH$/, 'O-');\n    }\n  }\n\n  // basic AA\n  if (pH < getAA('Arg').sc.pKa) mf = mf.replace(/(Arg)(?!\\()/g, '$1(H+)');\n  if (pH < getAA('His').sc.pKa) mf = mf.replace(/(His)(?!\\()/g, '$1(H+)');\n  if (pH < getAA('Lys').sc.pKa) mf = mf.replace(/(Lys)(?!\\()/g, '$1(H+)');\n\n  // acid AA\n  if (pH > getAA('Asp').sc.pKa) mf = mf.replace(/(Asp)(?!\\()/g, '$1(H-1-)');\n  if (pH > getAA('Glu').sc.pKa) mf = mf.replace(/(Glu)(?!\\()/g, '$1(H-1-)');\n\n  if (pH > getAA('Cys').sc.pKa) mf = mf.replace(/(Cys)(?!\\()/g, '$1(H-1-)');\n\n  return mf;\n}\n\nmodule.exports = chargePeptide;\n","'use strict';\n\nfunction allowNeutralLoss(mf, options) {\n  if (Array.isArray(mf)) {\n    for (let i = 0; i < mf.length; i++) {\n      mf[i] = allowOneNeutralLoss(mf[i], options);\n    }\n    return mf;\n  } else {\n    return allowOneNeutralLoss(mf, options);\n  }\n}\n\nfunction allowOneNeutralLoss(mf) {\n  mf = mf.replace(/(Ser|Thr|Asp|Glu)(?!\\()/g, '$1(H-2O-1)0-1');\n  mf = mf.replace(/(Arg|Lys|Asn|Gln)(?!\\()/g, '$1(N-1H-3)0-1');\n\n  return mf;\n}\n\nmodule.exports = allowNeutralLoss;\n","'use strict';\n\nfunction splitSequence(sequence) {\n  let aas = sequence.replace(/([A-Z])/g, ' $1').split(/ /);\n  let begin = 0;\n  while (aas[begin] === '' || aas[begin] === 'H') {\n    begin++;\n  }\n  let end = aas.length - 1;\n  while (aas[end] === 'O' || aas[end] === 'H') {\n    end--;\n  }\n  aas = aas.slice(begin, end + 1);\n  return aas;\n}\n\nmodule.exports = splitSequence;\n","'use strict';\n\n/*\nIotuibs:\n* minMissed (default: 0)\n* maxMissed (default: 0)\n* minResidue: 0;\n* maxResidue: infinity\n* enzyme: chymotrypsin, trypsin, glucph4, glucph8, thermolysin, cyanogenbromide : Mandatory, no default value !\n */\n\nfunction digestSequence(sequence, options = {}) {\n  sequence = sequence.replace(/^H([^a-z])/, '$1').replace(/OH$/, '');\n\n  options.enzyme = options.enzyme || 'trypsin';\n  if (options.minMissed === undefined) options.minMissed = 0;\n  if (options.maxMissed === undefined) options.maxMissed = 0;\n  if (options.minResidue === undefined) options.minResidue = 0;\n  if (options.maxResidue === undefined) options.maxResidue = Number.MAX_VALUE;\n  let regexp = getRegexp(options.enzyme);\n  let fragments = sequence\n    .replace(regexp, '$1 ')\n    .split(/ /)\n    .filter((entry) => entry);\n\n  let from = 0;\n  for (let i = 0; i < fragments.length; i++) {\n    let nbResidue = fragments[i]\n      .replace(/([A-Z][a-z][a-z])/g, ' $1')\n      .split(/ /)\n      .filter((entry) => entry).length;\n    fragments[i] = {\n      sequence: fragments[i],\n      nbResidue: nbResidue,\n      from: from,\n      to: from + nbResidue - 1,\n    };\n    from += nbResidue;\n  }\n\n  let results = [];\n\n  for (let i = 0; i < fragments.length - options.minMissed; i++) {\n    for (\n      let j = options.minMissed;\n      j <= Math.min(options.maxMissed, fragments.length - i - 1);\n      j++\n    ) {\n      let fragment = '';\n      let nbResidue = 0;\n      for (let k = i; k <= i + j; k++) {\n        fragment += fragments[k].sequence;\n        nbResidue += fragments[k].nbResidue;\n      }\n      let from = fragments[i].from + 1;\n      let to = fragments[i + j].to + 1;\n      if (\n        fragment &&\n        nbResidue >= options.minResidue &&\n        nbResidue <= options.maxResidue\n      ) {\n        results.push(`H${fragment}OH$D${from}>${to}`);\n      }\n    }\n  }\n\n  return results;\n}\n\nfunction getRegexp(enzyme) {\n  switch (enzyme.toLowerCase().replace(/[^a-z0-9]/g, '')) {\n    case 'chymotrypsin':\n      return /(Phe|Tyr|Trp)(?!Pro)/g;\n    case 'trypsin':\n      return /(Lys|Arg)(?!Pro)/g;\n    case 'lysc':\n      return /(Lys)(?!Pro)/g;\n    case 'glucph4':\n      return /(Glu)(?!Pro|Glu)/g;\n    case 'glucph8':\n      return /(Asp|Glu)(?!Pro|Glu)/g;\n    case 'thermolysin': // N-term of  Leu, Phe, Val, Ile, Ala, Met\n      return /()(?=Ile|Leu|Val|Ala|Met|Phe)/g;\n    case 'cyanogenbromide':\n      return /(Met)/g;\n    case 'any':\n      return /()(?=[A-Z][a-z][a-z])/g;\n    default:\n      throw new Error(`Digestion enzyme: ${enzyme} is unknown`);\n  }\n}\n\nmodule.exports = digestSequence;\n","'use strict';\n\nmodule.exports = function(mf, options) {\n  if (options === undefined) {\n    options = {\n      a: false,\n      b: true,\n      c: false,\n      x: false,\n      y: true,\n      z: false,\n      i: false,\n      ya: false,\n      yb: false,\n      yc: false,\n      zc: false,\n    };\n  }\n  options.maxInternal = options.maxInternal || Number.MAX_VALUE;\n  options.minInternal = options.minInternal || 0;\n\n  let mfs = [];\n  // need to allow 0-9 to deal with neutral loss\n  let mfparts = mf\n    .replace(/([a-z)0-9])([A-Z][a-z](?=[a-z]))/g, '$1 $2')\n    .split(/ /);\n\n  let nTerm = '';\n  let cTerm = '';\n\n  if (mfparts[0].startsWith('(')) {\n    nTerm += mfparts[0];\n    mfparts = mfparts.splice(1);\n  }\n\n  if (mfparts[mfparts.length - 1].includes('(')) {\n    cTerm += mfparts[mfparts.length - 1].replace(/^[^()]*/, '');\n    mfparts[mfparts.length - 1] = mfparts[mfparts.length - 1].replace(\n      /\\(.*/,\n      '',\n    );\n  }\n\n  for (let i = 1; i < mfparts.length; i++) {\n    nTerm += mfparts[i - 1];\n    cTerm = mfparts[mfparts.length - i] + cTerm;\n    addNTerm(mfs, nTerm, i, options);\n    addCTerm(mfs, cTerm, i, options);\n    if (options.i) mfs.push(`${mfparts[i]}HC-1O-1(+1)$i:${mfparts[i]}`);\n\n    if (options.ya || options.yb || options.yc || options.zc) {\n      // we have double fragmentations\n      for (\n        let j = i + 1;\n        j < Math.min(mfparts.length, options.maxInternal + i + 1);\n        j++\n      ) {\n        let iTerm = '';\n        if (j - i >= options.minInternal) {\n          for (let k = i; k < j; k++) {\n            iTerm += mfparts[k];\n          }\n          addITerm(mfs, iTerm, mfparts.length - i, j, options);\n        }\n      }\n    }\n  }\n\n  if (mfs.length === 0) {\n    mfs = mfs.concat([mf]);\n  }\n\n  return mfs;\n};\n\nfunction addNTerm(mfs, nTerm, i, options) {\n  if (options.a) mfs.push(`${nTerm}C-1O-1(+1)$a${i}`);\n  if (options.b) mfs.push(`${nTerm}(+1)$b${i}`);\n  if (options.c) mfs.push(`${nTerm}NH3(+1)$c${i}`);\n}\n\nfunction addITerm(mfs, iTerm, i, j, options) {\n  if (options.ya) mfs.push(`H${iTerm}C-1O-1(+1)$a${j}y${i}`);\n  if (options.yb) mfs.push(`H${iTerm}(+1)$b${j}y${i}`);\n  if (options.yc) mfs.push(`H${iTerm}NH3(+1)$c${j}y${i}`);\n  if (options.zc) mfs.push(`N-1${iTerm}NH3(+1)$c${j}z${i}`);\n}\n\nfunction addCTerm(mfs, cTerm, i, options) {\n  if (options.x) mfs.push(`CO(+1)${cTerm}$x${i}`);\n  if (options.y) mfs.push(`H2(+1)${cTerm}$y${i}`);\n  if (options.z) mfs.push(`N-1H-1(+1)${cTerm}$z${i}`);\n}\n","'use strict';\n\nconst aa = require('./aminoAcids');\n\nfunction convertAASequence(mf) {\n  // this function will check if it is a sequence of aa in 1 letter or 3 letters and convert them if it is the case\n  // it could be a multiline mf !\n  // if it is a multiline we could make some \"tricks\" ...\n\n  let newMF = mf;\n  // SEQRES   1 B  256  MET PRO VAL GLU ILE THR VAL LYS GLU LEU LEU GLU ALA\n  // SEQRES   2 B  256  GLY VAL HIS PHE GLY HIS GLU ARG LYS ARG TRP ASN PRO\n  // or\n  // MET PRO VAL GLU ILE THR VAL LYS GLU LEU LEU GLU ALA\n  // GLY VAL HIS PHE GLY HIS GLU ARG LYS ARG TRP ASN PRO\n  if (mf.search(/[A-Z]{3} [A-Z]{3} [A-Z]{3}/) > -1) {\n    // this is a PDB !\n    let tmpmf = mf.replace(/[\\r\\n]+/g, ' ');\n    tmpmf = tmpmf.replace(/(SEQRES|[0-9]+| [A-Z] | [0-9A-Z]{4-50})/g, '');\n    // we need to correct the uppercase / lowercase\n    let parts = tmpmf.split(' ');\n    newMF = 'H';\n    for (let i = 0; i < parts.length; i++) {\n      newMF += parts[i].substr(0, 1) + parts[i].substr(1).toLowerCase();\n    }\n    newMF += 'OH';\n  } else if (mf.includes('(') && isOneLetterCode(mf)) {\n    // we expect one letter code with modification\n    newMF = '';\n    let nTerminal = 'H';\n    let cTerminal = 'OH';\n    let parenthesisCounter = 0;\n    for (let i = 0; i < mf.length; i++) {\n      let currentSymbol = mf[i];\n      if (\n        currentSymbol === '(' ||\n        currentSymbol === ')' ||\n        parenthesisCounter > 0\n      ) {\n        if (currentSymbol === '(') {\n          parenthesisCounter++;\n          if (i === 0) nTerminal = '';\n        }\n        if (currentSymbol === ')') {\n          parenthesisCounter--;\n          if (i === mf.length - 1) cTerminal = '';\n        }\n        newMF += currentSymbol;\n        continue;\n      }\n      newMF += convertAA1To3(currentSymbol);\n    }\n    newMF = nTerminal + newMF + cTerminal;\n  } else if (\n    mf.search(/[A-Z]{3}/) > -1 &&\n    mf.search(/[a-zA-Z][a-z0-9]/) === -1\n  ) {\n    // UNIPROT\n    //   370        380        390        400        410        420\n    //GFKPNLRKTF VSGLFRESCG AHFYRGVDVK PFYIKKPVDN LFALMLILNR LRGWGVVGGM\n    //\n    //    430        440        450        460        470        480\n    //SDPRLYKVWV RLSSQVPSMF FGGTDLAADY YVVSPPTAVS VYTKTPYGRL LADTRTSGFR\n    // We remove all the number, all the spaces, etc\n    newMF = `H${convertAA1To3(newMF.replace(/[^A-Z]/g, ''))}OH`;\n  }\n\n  return newMF;\n}\n\nfunction convertAA1To3(mf) {\n  let newmf = '';\n  for (let i = 0; i < mf.length; i++) {\n    newmf += aa1To3(mf.charAt(i));\n  }\n  return newmf;\n}\n\nfunction aa1To3(code) {\n  for (let i = 0; i < aa.length; i++) {\n    if (aa[i].aa1 === code) {\n      return aa[i].aa3;\n    }\n  }\n  throw new Error(`Invalid 1 letter code: ${code}`);\n}\n\nmodule.exports = convertAASequence;\n\n// mf can contain as well parenthesis. We need to check if it is not yet a correct molecular formula\nfunction isOneLetterCode(mf) {\n  let parenthesisLevel = 0;\n  for (let char of mf) {\n    if (parenthesisLevel === 0 && char.match(/[a-z]/)) return false;\n    if (char === '(') parenthesisLevel++;\n    if (char === ')') parenthesisLevel--;\n  }\n  return true;\n}\n","'use strict';\n\nconst aa = require('./aminoAcids');\nconst IEP = require('./isoElectricPoint');\nconst chargePeptide = require('./chargePeptide');\nconst allowNeutralLoss = require('./allowNeutralLoss');\nconst splitPeptide = require('./splitPeptide');\nconst digestPeptide = require('./digestPeptide');\nconst generatePeptideFragments = require('./generatePeptideFragments');\nconst convertAASequence = require('./convertAASequence');\n\nexports.getInfo = function() {\n  return aa;\n};\n\n// sequence should be in the \"right\" format like HAlaGlyProOH\n\nexports.splitPeptide = splitPeptide;\nexports.digestPeptide = digestPeptide;\n\nexports.calculateIEP = function(sequence) {\n  let aas = splitPeptide(sequence);\n  let result = IEP.calculateIEP(aas);\n  return result;\n};\n\nexports.calculateIEPChart = function(sequence) {\n  let aas = splitPeptide(sequence);\n  let result = IEP.calculateChart(aas);\n  return result;\n};\n\nexports.getColorForIEP = function(iep) {\n  return IEP.getColor(iep);\n};\n\nexports.calculateCharge = function(sequence, ph) {\n  let aas = splitPeptide(sequence);\n  return IEP.calculateCharge(aas, ph);\n};\n\nexports.generatePeptideFragments = generatePeptideFragments;\n\nexports.chargePeptide = chargePeptide;\nexports.allowNeutralLoss = allowNeutralLoss;\n\nexports.convertAASequence = convertAASequence;\n\nexports.sequenceToMF = convertAASequence;\n","'use strict';\n\nconst { groupsToSequence } = require('chemical-groups');\nconst combineMFs = require('mf-generator');\nconst peptide = require('peptide');\n\n/**\n * Add a database starting from a peptidic sequence\n *\n * @param {string}         [sequence] Sequence as a string of 1 letter or 3 letters code. Could also be a correct molecular formula respecting uppercase, lowercase\n * @param {object}         [options={}]\n * @param {boolean}        [options.estimate=false] - estimate the number of MF without filters\n * @param {string}         [options.ionizations='']\n * @param {array}          [options.mfsArray=[]]\n * @param {boolean}        [options.protonation=false]\n * @param {number}         [options.protonationPH=7]\n * @param {boolean}        [options.allowNeutralLoss=false]\n * @param {number}         [options.limit=100000]\n *\n * @param {object}         [options.digestion={}] Object defining options for digestion\n * @param {number}         [options.digestion.minMissed=0] Minimal number of allowed missed cleavage\n * @param {number}         [options.digestion.maxMissed=0] Maximal number of allowed missed cleavage\n * @param {number}         [options.digestion.minResidue=0] Minimal number of residues\n * @param {number}         [options.digestion.maxResidue=+Infinity] Maximal number of residues\n * @param {string}         [options.digestion.enzyme] Mandatory field containing the name of the enzyme among: chymotrypsin, trypsin, glucph4, glucph8, thermolysin, cyanogenbromide\n *\n * @param {object}         [options.fragmentation={}] Object defining options for fragmentation\n * @param {boolean}        [options.fragmentation.a=false] If true allow fragments of type 'a'\n * @param {boolean}        [options.fragmentation.b=false] If true allow fragments of type 'b'\n * @param {boolean}        [options.fragmentation.c=false] If true allow fragments of type 'c'\n * @param {boolean}        [options.fragmentation.x=false] If true allow fragments of type 'x'\n * @param {boolean}        [options.fragmentation.y=false] If true allow fragments of type 'y'\n * @param {boolean}        [options.fragmentation.z=false] If true allow fragments of type 'z'\n * @param {boolean}        [options.fragmentation.ya=false] If true allow fragments of type 'ya'\n * @param {boolean}        [options.fragmentation.yb=false] If true allow fragments of type 'yb'\n * @param {boolean}        [options.fragmentation.yc=false] If true allow fragments of type 'yc'\n * @param {boolean}        [options.fragmentation.zc=false] If true allow fragments of type 'zc'\n * @param {number}         [options.fragmentation.minInternal=0] Minimal internal fragment length\n * @param {number}         [options.fragmentation.maxInternal=+Infinity] Maximal internal fragment length\n *\n * @param {object}         [options.filter={}] Object defining options for molecular formula filter\n * @param {number}         [options.filter.precision=1000] - The precision on the experimental mass\n * @param {number}         [options.filter.targetMass] - Target mass, allows to calculate error and filter results\n * @param {Array<number>}  [options.filter.targetMasses] - Target masses: SORTED array of numbers\n * @param {Array<number>}  [options.filter.targetIntensities] - Target intensities: SORTED array of numbers\n * @param {number}         [options.filter.minEM=0] - Minimal neutral monoisotopic mass\n * @param {number}         [options.filter.maxEM=+Infinity] - Maximal neutral monoisotopic mass\n * @param {number}         [options.filter.minMSEM=0] - Minimal observed monoisotopic mass\n * @param {number}         [options.filter.maxMSEM=+Infinity] - Maximal observed monoisotopic mass\n * @param {number}         [options.filter.minCharge=-Infinity] - Minimal charge\n * @param {number}         [options.filter.maxCharge=+Infinity] - Maximal charge\n * @param {number}         [options.filter.unsaturation={}]\n * @param {number}         [options.filter.unsaturation.min=-Infinity] - Minimal unsaturation\n * @param {number}         [options.filter.unsaturation.max=+Infinity] - Maximal unsaturation\n * @param {number}         [options.filter.unsaturation.onlyInteger=false] - Integer unsaturation\n * @param {number}         [options.filter.unsaturation.onlyNonInteger=false] - Non integer unsaturation\n */\n\nmodule.exports = function fromPeptidicSequence(sequence, options = {}) {\n  const {\n    digestion = {},\n    mfsArray = [],\n    allowNeutralLoss = false,\n    protonation = false,\n    protonationPH = 7,\n    fragmentation = {},\n    filter = {},\n    ionizations = '',\n    limit = 100000,\n    estimate = false,\n  } = options;\n\n  sequence = peptide.convertAASequence(sequence);\n\n  let fragmentsArray = [sequence];\n  // do we also have some digest fragments ?\n  if (digestion.enzyme) {\n    let digests = peptide.digestPeptide(sequence, digestion);\n    if (options.protonation) {\n      digests = peptide.chargePeptide(digests, {\n        pH: options.protonationPH,\n      });\n    }\n    fragmentsArray = fragmentsArray.concat(digests);\n  }\n\n  // allow neutral loss\n  if (allowNeutralLoss) {\n    sequence = peptide.allowNeutralLoss(sequence);\n  }\n\n  // apply protonation\n  if (protonation) {\n    sequence = peptide.chargePeptide(sequence, { pH: protonationPH });\n  }\n\n  // calculate fragmentation\n  let fragments = peptide.generatePeptideFragments(sequence, fragmentation);\n  fragmentsArray = fragmentsArray.concat(fragments);\n\n  mfsArray.push(fragmentsArray);\n\n  let combined = combineMFs(mfsArray, {\n    ionizations,\n    filter,\n    estimate,\n    limit,\n  });\n\n  if (!estimate) {\n    combined.forEach((result) => {\n      result.sequence = groupsToSequence(\n        result.parts.filter((part) => part).join(' '),\n      );\n    });\n  }\n\n  return combined;\n};\n","'use strict';\n\n/**\n * Ensure that the sequence is in uppercase taking into account possible modifications\n * @param {string} [options.circular=false]\n */\n\nfunction ensureUppercaseSequence(sequence) {\n  let parenthesisCounter = 0;\n  let parts = [];\n  let part = '';\n  for (let i = 0; i < sequence.length; i++) {\n    let currentSymbol = sequence[i];\n\n    if (currentSymbol === '(' && parenthesisCounter === 0 && part) {\n      parts.push(part);\n      part = currentSymbol;\n    } else if (currentSymbol === ')' && parenthesisCounter === 0) {\n      part += currentSymbol;\n      parts.push(part);\n      part = '';\n    } else {\n      part += currentSymbol;\n    }\n  }\n  if (part) parts.push(part);\n  for (let i = 0; i < parts.length; i++) {\n    if (!parts[i].startsWith('(') && parts[i].match(/^[a-z]+$/)) {\n      parts[i] = parts[i].toUpperCase();\n    }\n  }\n  return parts.join('');\n}\n\nmodule.exports = ensureUppercaseSequence;\n","'use strict';\n\nconst { groups } = require('chemical-groups');\n\nconst ensureUppercaseSequence = require('./ensureUppercaseSequence');\n\n/**\n * Convert a nucleic sequence to a MF\n * @param {String} sequence\n * @param {object} [options={}]\n * @param {string} [options.kind] - rna, ds-dna or dna. Default if contains U: rna, otherwise ds-dna\n * @param {string} [options.fivePrime=monophosphate] - alcohol, monophosphate, diphosphate, triphosphate\n * @param {string} [options.circular=false]\n */\n\nfunction sequenceToMF(sequence, options = {}) {\n  let fivePrimeTerminal = 'HO';\n  let threePrimeTerminal = 'H';\n  sequence = sequence.replace(/^HO/, '');\n  sequence = sequence.replace(/H$/, '');\n  sequence = sequence.trim();\n\n  if (sequence === '') return '';\n\n  sequence = ensureUppercaseSequence(sequence);\n\n  // if the sequence is in lowercase but the parenthesis we should convert it to uppercase\n\n  if (sequence.match(/^[a-z]+$/)) {\n    sequence = sequence.toUpperCase();\n  }\n\n  let { kind, circular, fivePrime = 'monophosphate' } = options;\n  fivePrime = fivePrime.replace(/[^a-zA-Z]/g, '').toLowerCase();\n\n  if (!kind) {\n    if (sequence.includes('U')) {\n      kind = 'rna';\n    } else {\n      kind = 'ds-dna';\n    }\n  }\n\n  kind = kind.replace(/[^A-Za-z]/g, '').toLowerCase();\n\n  if (sequence.includes('(') && kind === 'dsdna') {\n    throw new Error(\n      'Nucleotide sequenceToMF: modifications not allowed for ds-DNA',\n    );\n  }\n\n  let results = [[]];\n  if (kind === 'dsdna') results.push([]);\n\n  let parenthesisCounter = 0;\n\n  for (let i = 0; i < sequence.length; i++) {\n    let currentSymbol = sequence[i];\n    while (sequence[i + 1] && sequence[i + 1].match(/[a-z]/)) {\n      i++;\n      currentSymbol += sequence[i];\n    }\n\n    if (currentSymbol.length > 1) {\n      results[0].push(currentSymbol);\n      continue;\n    }\n\n    if (\n      currentSymbol === '(' ||\n      currentSymbol === ')' ||\n      parenthesisCounter > 0\n    ) {\n      if (currentSymbol === '(') {\n        parenthesisCounter++;\n        if (i === 0) fivePrimeTerminal = '';\n      }\n      if (currentSymbol === ')') {\n        parenthesisCounter--;\n        if (i === sequence.length - 1) threePrimeTerminal = '';\n      }\n      switch (kind) {\n        case 'dna':\n        case 'rna':\n          results[0].push(currentSymbol);\n          break;\n        default:\n          // eslint-disable-next-line no-console\n          console.warn(\n            `Nucleotide sequenceToMF with modification: unknown kind: ${kind}`,\n          );\n      }\n      continue;\n    }\n\n    let nucleotideType = i === 0 ? fivePrime : 'monophosphate';\n\n    currentSymbol = currentSymbol.replace(/[ \\t\\r\\n]/, '');\n    if (!currentSymbol) continue;\n\n    switch (kind) {\n      case 'dna':\n        results[0].push(desoxyNucleotides[nucleotideType][currentSymbol]);\n        break;\n      case 'rna':\n        results[0].push(oxyNucleotides[nucleotideType][currentSymbol]);\n        break;\n      case 'dsdna':\n        results[0].push(desoxyNucleotides[nucleotideType][currentSymbol]);\n        results[1].unshift(\n          desoxyNucleotides[nucleotideType][complementary[currentSymbol]],\n        );\n        break;\n      default:\n        // eslint-disable-next-line no-console\n        console.warn(`Nucleotide sequenceToMF: unknown kind: ${kind}`);\n    }\n  }\n\n  if (!circular) {\n    results.forEach((result) => result.unshift(fivePrimeTerminal));\n    results.forEach((result) => result.push(threePrimeTerminal));\n  }\n\n  return results.map((result) => result.join('')).join('.');\n}\n\nmodule.exports = sequenceToMF;\n\nconst complementary = {\n  A: 'T',\n  T: 'A',\n  C: 'G',\n  G: 'C',\n};\n\nconst desoxyNucleotides = {\n  alcohol: {},\n  monophosphate: {},\n  diphosphate: {},\n  triphosphate: {},\n};\n\ngroups\n  .filter((group) => group.kind === 'DNA')\n  .forEach((group) => {\n    if (group.oneLetter) {\n      desoxyNucleotides.alcohol[group.oneLetter] = group.symbol;\n    }\n  });\n\ngroups\n  .filter((group) => group.kind === 'DNAp')\n  .forEach((group) => {\n    if (group.oneLetter) {\n      desoxyNucleotides.monophosphate[group.oneLetter] = group.symbol;\n    }\n  });\n\ngroups\n  .filter((group) => group.kind === 'NucleotideP')\n  .forEach((group) => {\n    if (group.oneLetter) {\n      desoxyNucleotides.monophosphate[group.oneLetter] = group.symbol;\n    }\n  });\n\ngroups\n  .filter((group) => group.kind === 'DNApp')\n  .forEach((group) => {\n    if (group.oneLetter) {\n      desoxyNucleotides.diphosphate[group.oneLetter] = group.symbol;\n    }\n  });\n\ngroups\n  .filter((group) => group.kind === 'DNAppp')\n  .forEach((group) => {\n    if (group.oneLetter) {\n      desoxyNucleotides.triphosphate[group.oneLetter] = group.symbol;\n    }\n  });\n\nconst oxyNucleotides = {\n  alcohol: {},\n  monophosphate: {},\n  diphosphate: {},\n  triphosphate: {},\n};\n\ngroups\n  .filter((group) => group.kind === 'RNA')\n  .forEach((group) => {\n    if (group.oneLetter) {\n      oxyNucleotides.alcohol[group.oneLetter] = group.symbol;\n    }\n  });\n\ngroups\n  .filter((group) => group.kind === 'RNAp')\n  .forEach((group) => {\n    if (group.oneLetter) {\n      oxyNucleotides.monophosphate[group.oneLetter] = group.symbol;\n    }\n  });\n\ngroups\n  .filter((group) => group.kind === 'NucleotideP')\n  .forEach((group) => {\n    if (group.oneLetter) {\n      oxyNucleotides.monophosphate[group.oneLetter] = group.symbol;\n    }\n  });\n\ngroups\n  .filter((group) => group.kind === 'RNApp')\n  .forEach((group) => {\n    if (group.oneLetter) {\n      oxyNucleotides.diphosphate[group.oneLetter] = group.symbol;\n    }\n  });\n\ngroups\n  .filter((group) => group.kind === 'RNAppp')\n  .forEach((group) => {\n    if (group.oneLetter) {\n      oxyNucleotides.triphosphate[group.oneLetter] = group.symbol;\n    }\n  });\n","'use strict';\n\nfunction furanThreeTerm(nucleotide) {\n  // last residue should become a furan\n  let parts = nucleotide\n    .replace(/ /g, '')\n    .replace(/([a-z)0-9])([A-Z][a-z](?=[a-z]))/g, '$1 $2')\n    .split(/ /);\n  let last = parts.pop();\n  if (!last.match(/D[atcg]mp(.*)$/)) {\n    // eslint-disable-next-line no-console\n    console.warn(\n      `furanThreeTerm can not remove a non monophosphate nucleic acid: ${last}`,\n    );\n    return parts.join('') + last;\n  }\n  return parts.join('') + last.replace(/D[atcg]mp(.*)$/, 'Furp');\n}\n\nmodule.exports = furanThreeTerm;\n","'use strict';\n\nconst furanThreeTerm = require('./furanThreeTerm');\n\nfunction addFiveTerm(mfs, fiveTerm, i, options) {\n  if (options.a) mfs.push(`${fiveTerm}O-1H-1$a${i}`); // neutral ok\n  if (options.ab && i > 1) mfs.push(`${furanThreeTerm(fiveTerm)}$a${i}-B`); // A minus base\n  if (options.b) mfs.push(`${fiveTerm}H$b${i}`); // need to add an hydrogen, see: https://books.google.ch/books?id=B57e37bJjqAC&pg=PA172&lpg=PA172&dq=oligonucleotide+b+fragmentation&source=bl&ots=mRr29Pexx2&sig=1NUQcWV-wuj6o9q81my86AVoRto&hl=fr&sa=X&ved=2ahUKEwjI5M3yn-7fAhUJMewKHQR6Bcs4ChDoATADegQIBhAB#v=onepage&q&f=true\n  if (options.c) mfs.push(`${fiveTerm}PO2$c${i}`); // neutral ok\n  if (options.d) mfs.push(`${fiveTerm}PO3H2$d${i}`);\n  if (options.dh2o) mfs.push(`${fiveTerm}PO2$d${i}-H2O`);\n}\n\nmodule.exports = addFiveTerm;\n","'use strict';\n\nconst MF = require('mf-parser').MF;\n\nfunction mfDiff(mfString1, mfString2) {\n  let mf1 = new MF(mfString1).getInfo().atoms;\n  let mf2 = new MF(mfString2).getInfo().atoms;\n  let atoms = Object.keys(mf1);\n  Object.keys(mf2).forEach((atom) => {\n    if (!atoms.includes(atom)) atoms.push(atom);\n  });\n  let mf = '';\n  for (let atom of atoms) {\n    let diff = (mf1[atom] || 0) - (mf2[atom] || 0);\n    if (diff) mf += atom + diff;\n  }\n  return new MF(mf).toMF();\n}\n\nmodule.exports = mfDiff;\n","'use strict';\n\nconst mfDiff = require('mf-utilities/src/mfDiff');\n\nconst mfLosses = {};\n['Amp', 'Tmp', 'Cmp', 'Gmp', 'Ump'].forEach((nucleotide) => {\n  mfLosses[nucleotide] = {\n    code: nucleotide.charAt(0),\n    diff: mfDiff('Rmp', nucleotide),\n  };\n});\n\n['Damp', 'Dtmp', 'Dcmp', 'Dgmp', 'Dump'].forEach((nucleotide) => {\n  mfLosses[nucleotide] = {\n    code: nucleotide.charAt(1).toUpperCase(),\n    diff: mfDiff('Drmp', nucleotide),\n  };\n});\n\nfunction baseLoss(nucleotide) {\n  // any residue can loose a base\n  let results = [];\n\n  for (let key in mfLosses) {\n    const base = mfLosses[key];\n    if (nucleotide.includes(key)) {\n      results.push(`${nucleotide}(${base.diff})$${base.code}*`);\n    }\n  }\n\n  return results;\n}\n\nmodule.exports = baseLoss;\n","'use strict';\n\nconst baseLoss = require('./baseLoss');\n\nfunction addFiveTermBaseLoss(mfs, fiveTerm, i, options) {\n  if (!options.abcdBaseLoss) return;\n  let loss = baseLoss(fiveTerm);\n\n  loss.forEach((mf) => {\n    if (options.a) {\n      mfs.push(`${mf}`.replace('$', `O-1H-1$a${i} `));\n    }\n    if (options.b) {\n      mfs.push(`${mf}`.replace('$', `H-1$b${i} `));\n    }\n    if (options.c) {\n      mfs.push(`${mf}`.replace('$', `PO2$c${i} `));\n    }\n    if (options.d) {\n      mfs.push(`${mf}`.replace('$', `PO3H2$d${i} `));\n    }\n  });\n}\n\nmodule.exports = addFiveTermBaseLoss;\n","'use strict';\n\nconst furanThreeTerm = require('./furanThreeTerm');\n\n// https://books.google.ch/books?id=B57e37bJjqAC&pg=PA172&lpg=PA172&dq=oligonucleotide+b+fragmentation&source=bl&ots=mRr29Pexx2&sig=1NUQcWV-wuj6o9q81my86AVoRto&hl=fr&sa=X&ved=2ahUKEwjI5M3yn-7fAhUJMewKHQR6Bcs4ChDoATADegQIBhAB#v=onepage&q=oligonucleotide%20b%20fragmentation&f=false\n\nfunction addInternalTerm(mfs, internal, ter3, ter5, options = {}) {\n  if (options.aw) {\n    // without base loss\n    mfs.push(`HO${internal}O-1H-1$w${ter3}:a${ter5}`); // A W\n  }\n\n  if (options.bw) {\n    // without base loss\n    mfs.push(`HO${internal}H$w${ter3}:b${ter5}`); // B W\n  }\n\n  if (options.abw) {\n    // with base loss\n    let fragment = furanThreeTerm(internal);\n    mfs.push(`HO${fragment}$w${ter3}:a${ter5}-B`); // A minus base - W\n  }\n\n  if (options.aby) {\n    // with base loss\n    let fragment = furanThreeTerm(internal);\n    mfs.push(`O-2P-1${fragment}$y${ter3}:a${ter5}-B`); // A minus base - Y\n  }\n}\n\nmodule.exports = addInternalTerm;\n","'use strict';\n\nfunction addThreeTerm(mfs, threeTerm, i, options) {\n  if (options.w) mfs.push(`HO${threeTerm}$w${i}`); // neutral ok\n  if (options.x) mfs.push(`H-1${threeTerm}$x${i}`); // neutral ok\n  if (options.y) mfs.push(`O-2P-1${threeTerm}$y${i}`); // neutral ok\n  if (options.z) mfs.push(`O-3H-2P-1${threeTerm}$z${i}`); // neutral ok\n  if (options.zch2) mfs.push(`O-3H-4C-1P-1${threeTerm}$z${i}-CH2`); // TODO to confirm\n}\n\nmodule.exports = addThreeTerm;\n","'use strict';\n\nconst baseLoss = require('./baseLoss');\n\nfunction addThreeTermBaseLoss(mfs, threeTerm, i, options) {\n  if (!options.wxyzBaseLoss) return;\n  let loss = baseLoss(threeTerm);\n\n  loss.forEach((mf) => {\n    if (options.w) {\n      mfs.push(`HO${mf}`.replace('$', `$w${i} `));\n    }\n    if (options.x) {\n      mfs.push(`H-1${mf}`.replace('$', `$x${i} `));\n    }\n    if (options.y) {\n      mfs.push(`O-2P-1${mf}`.replace('$', `$y${i} `));\n    }\n    if (options.z) {\n      mfs.push(`O-3H-1P-1(+)${mf}`.replace('$', `$z${i} `));\n    }\n  });\n}\n\nmodule.exports = addThreeTermBaseLoss;\n","'use strict';\n\nconst addFiveTerm = require('./addFiveTerm');\nconst addFiveTermBaseLoss = require('./addFiveTermBaseLoss');\nconst addInternalTerm = require('./addInternalTerm');\nconst addThreeTerm = require('./addThreeTerm');\nconst addThreeTermBaseLoss = require('./addThreeTermBaseLoss');\n\nmodule.exports = function generateFragments(mf, options) {\n  if (options === undefined) {\n    options = {\n      a: false,\n      ab: false,\n      b: false,\n      c: false,\n      d: false,\n      dh2o: false,\n      w: false,\n      x: false,\n      y: false,\n      z: false,\n      zch2: false,\n      aw: false,\n      bw: false,\n      abw: false,\n      aby: false,\n      abcdBaseLoss: false,\n      wxyzBaseLoss: false,\n    };\n  }\n\n  let mfs = [];\n  // need to allow 0-9 to deal with neutral loss\n  let mfparts = mf\n    .replace(/([a-z)0-9])([A-Z][a-z](?=[a-z]))/g, '$1 $2')\n    .split(/ /);\n\n  let fiveTerm = '';\n  let threeTerm = '';\n\n  if (mfparts[0].startsWith('(')) {\n    fiveTerm += mfparts[0];\n    mfparts = mfparts.splice(1);\n  }\n\n  if (mfparts[mfparts.length - 1].includes('(')) {\n    threeTerm += mfparts[mfparts.length - 1].replace(/^[^()]*/, '');\n    mfparts[mfparts.length - 1] = mfparts[mfparts.length - 1].replace(\n      /\\(.*/,\n      '',\n    );\n  }\n\n  for (let ter5 = 1; ter5 < mfparts.length; ter5++) {\n    fiveTerm += mfparts[ter5 - 1];\n    threeTerm = mfparts[mfparts.length - ter5] + threeTerm;\n\n    addFiveTerm(mfs, fiveTerm, ter5, options);\n    addFiveTermBaseLoss(mfs, fiveTerm, ter5, options);\n    addThreeTerm(mfs, threeTerm, ter5, options);\n    addThreeTermBaseLoss(mfs, threeTerm, ter5, options);\n  }\n\n  for (let i = 1; i < mfparts.length - 1; i++) {\n    let internal = '';\n    for (let j = i; j < mfparts.length - 1; j++) {\n      internal += mfparts[j];\n      if (j > i) {\n        addInternalTerm(mfs, internal, mfparts.length - i, j + 1, options);\n      }\n    }\n  }\n\n  return mfs;\n};\n","'use strict';\n\nmodule.exports = {\n  sequenceToMF: require('./sequenceToMF'),\n  generateFragments: require('./generateFragments'),\n  furanThreeTerm: require('./furanThreeTerm'),\n  baseLoss: require('./baseLoss'),\n};\n","'use strict';\n\nconst { groupsToSequence } = require('chemical-groups');\nconst combineMFs = require('mf-generator');\nconst nucleotide = require('nucleotide');\n\n/**\n * Add a database starting from a peptidic sequence\n *\n * @param {string} [sequence] Sequence as a string of 1 letter or 3 letters code. Could also be a correct molecular formula respecting uppercase, lowercase\n * @param {object} [options={}]\n * @param {boolean}       [options.estimate=false] - estimate the number of MF without filters\n * @param {number}         [options.limit=100000]\n * @param {string} [options.ionizations='']\n * @param {object} [options.info={}]\n * @param {string} [options.info.kind] - rna, ds-dna or dna. Default if contains U: rna, otherwise ds-dna\n * @param {string} [options.info.fivePrime=monophosphate] - alcohol, monophosphate, diphosphate, triphosphate\n * @param {string} [options.info.circular=false]\n * @param {array}   [options.mfsArray=[]]\n * @param {object}  [options.fragmentation={}] Object defining options for fragmentation\n * @param {boolean} [options.fragmentation.a=false] If true allow fragments of type 'a'\n * @param {boolean} [options.fragmentation.ab=false] If true allow fragments of type 'a' minus base\n * @param {boolean} [options.fragmentation.b=false] If true allow fragments of type 'b'\n * @param {boolean} [options.fragmentation.c=false] If true allow fragments of type 'c'\n * @param {boolean} [options.fragmentation.d=false] If true allow fragments of type 'd'\n * @param {boolean} [options.fragmentation.dh2o=false] If true allow fragments of type 'd' with water loss\n * @param {boolean} [options.fragmentation.w=false] If true allow fragments of type 'w'\n * @param {boolean} [options.fragmentation.x=false] If true allow fragments of type 'x'\n * @param {boolean} [options.fragmentation.y=false] If true allow fragments of type 'y'\n * @param {boolean} [options.fragmentation.z=false] If true allow fragments of type 'z'\n * @param {boolean} [options.baseLoss=false] If true allow base loss at all the positions\n *\n * @param {object} [options.filter={}] Object defining options for molecular formula filter\n * @param {number} [options.filter.minMass=0] - Minimal monoisotopic mass\n * @param {number} [options.filter.maxMass=+Infinity] - Maximal monoisotopic mass\n * @param {number} [options.filter.minEM=0] - Minimal neutral monoisotopic mass\n * @param {number} [options.filter.maxEM=+Infinity] - Maximal neutral monoisotopic mass\n * @param {number} [options.filter.minMSEM=0] - Minimal observed monoisotopic mass\n * @param {number} [options.filter.maxMSEM=+Infinity] - Maximal observed monoisotopic mass\n * @param {number} [options.filter.minCharge=-Infinity] - Minimal charge\n * @param {number} [options.filter.maxCharge=+Infinity] - Maximal charge\n * @param {number} [options.filter.unsaturation={}]\n * @param {number} [options.filter.unsaturation.min=-Infinity] - Minimal unsaturation\n * @param {number} [options.filter.unsaturation.max=+Infinity] - Maximal unsaturation\n * @param {number} [options.filter.unsaturation.onlyInteger=false] - Integer unsaturation\n * @param {number} [options.filter.unsaturation.onlyNonInteger=false] - Non integer unsaturation\n */\n\nmodule.exports = function fromNucleicSequence(sequencesString, options = {}) {\n  const {\n    mfsArray = [],\n    fragmentation = {},\n    filter = {},\n    ionizations = '',\n    info = {},\n    estimate = false,\n    limit = 100000,\n  } = options;\n\n  let sequences = nucleotide.sequenceToMF(sequencesString, info).split('.');\n\n  let fragmentsArray = sequences.slice();\n\n  // calculate fragmentation\n  for (let i = 0; i < sequences.length; i++) {\n    let sequence = sequences[i];\n    let fragments = nucleotide.generateFragments(sequence, fragmentation);\n    if (i === 1) {\n      // complementary sequence\n      fragments = fragments.map((fragment) => fragment.replace(/\\$/g, '$cmp-'));\n    }\n    fragmentsArray = fragmentsArray.concat(fragments);\n    if (fragmentation.baseLoss) {\n      fragmentsArray = fragmentsArray.concat(nucleotide.baseLoss(sequence));\n    }\n  }\n\n  mfsArray.push(fragmentsArray);\n\n  let combined = combineMFs(mfsArray, {\n    ionizations,\n    filter,\n    uniqueMFs: false,\n    estimate,\n    limit,\n  });\n\n  if (Array.isArray(combined)) {\n    // not an estimation\n    combined.forEach((result) => {\n      result.sequence = groupsToSequence(\n        result.parts.filter((part) => part).join(' '),\n      );\n    });\n  }\n\n  return combined;\n};\n","const toString = Object.prototype.toString;\n\nexport default function isAnyArray(object) {\n  return toString.call(object).endsWith('Array]');\n}\n","'use strict';\n\nfunction _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }\n\nvar isArray = _interopDefault(require('is-any-array'));\n\nfunction max(input, options = {}) {\r\n  if (!isArray(input)) {\r\n    throw new TypeError('input must be an array');\r\n  }\r\n\r\n  if (input.length === 0) {\r\n    throw new TypeError('input must not be empty');\r\n  }\r\n\r\n  const { fromIndex = 0, toIndex = input.length } = options;\r\n\r\n  if (\r\n    fromIndex < 0 ||\r\n    fromIndex >= input.length ||\r\n    !Number.isInteger(fromIndex)\r\n  ) {\r\n    throw new Error('fromIndex must be a positive integer smaller than length');\r\n  }\r\n\r\n  if (\r\n    toIndex <= fromIndex ||\r\n    toIndex > input.length ||\r\n    !Number.isInteger(toIndex)\r\n  ) {\r\n    throw new Error(\r\n      'toIndex must be an integer greater than fromIndex and at most equal to length',\r\n    );\r\n  }\r\n\r\n  let maxValue = input[fromIndex];\r\n  for (let i = fromIndex + 1; i < toIndex; i++) {\r\n    if (input[i] > maxValue) maxValue = input[i];\r\n  }\r\n  return maxValue;\r\n}\n\nmodule.exports = max;\n","'use strict';\n\nfunction _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }\n\nvar isArray = _interopDefault(require('is-any-array'));\n\nfunction min(input, options = {}) {\r\n  if (!isArray(input)) {\r\n    throw new TypeError('input must be an array');\r\n  }\r\n\r\n  if (input.length === 0) {\r\n    throw new TypeError('input must not be empty');\r\n  }\r\n\r\n  const { fromIndex = 0, toIndex = input.length } = options;\r\n\r\n  if (\r\n    fromIndex < 0 ||\r\n    fromIndex >= input.length ||\r\n    !Number.isInteger(fromIndex)\r\n  ) {\r\n    throw new Error('fromIndex must be a positive integer smaller than length');\r\n  }\r\n\r\n  if (\r\n    toIndex <= fromIndex ||\r\n    toIndex > input.length ||\r\n    !Number.isInteger(toIndex)\r\n  ) {\r\n    throw new Error(\r\n      'toIndex must be an integer greater than fromIndex and at most equal to length',\r\n    );\r\n  }\r\n\r\n  let minValue = input[fromIndex];\r\n  for (let i = fromIndex + 1; i < toIndex; i++) {\r\n    if (input[i] < minValue) minValue = input[i];\r\n  }\r\n  return minValue;\r\n}\n\nmodule.exports = min;\n","'use strict';\n\nconst toString = Object.prototype.toString;\n\nfunction isAnyArray(object) {\n  return toString.call(object).endsWith('Array]');\n}\n\nmodule.exports = isAnyArray;\n","export default function maybeToPrecision(value, digits) {\n  if (value < 0) {\n    value = 0 - value;\n    if (typeof digits === 'number') {\n      return `- ${value.toPrecision(digits)}`;\n    } else {\n      return `- ${value.toString()}`;\n    }\n  } else {\n    if (typeof digits === 'number') {\n      return value.toPrecision(digits);\n    } else {\n      return value.toString();\n    }\n  }\n}\n","import isAnyArray from 'is-any-array';\n\nexport default function checkArraySize(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","import isAnyArray from 'is-any-array';\n\nexport { default as maybeToPrecision } from './maybeToPrecision';\nexport { default as checkArrayLength } from './checkArrayLength';\nexport default class BaseRegression {\n  constructor() {\n    if (new.target === BaseRegression) {\n      throw new Error('BaseRegression must be subclassed');\n    }\n  }\n\n  predict(x) {\n    if (typeof x === 'number') {\n      return this._predict(x);\n    } else if (isAnyArray(x)) {\n      const y = [];\n      for (let i = 0; i < x.length; i++) {\n        y.push(this._predict(x[i]));\n      }\n      return y;\n    } else {\n      throw new TypeError('x must be a number or array');\n    }\n  }\n\n  _predict() {\n    throw new Error('_predict must be implemented');\n  }\n\n  train() {\n    // Do nothing for this package\n  }\n\n  toString() {\n    return '';\n  }\n\n  toLaTeX() {\n    return '';\n  }\n\n  /**\n   * Return the correlation coefficient of determination (r) and chi-square.\n   * @param {Array<number>} x\n   * @param {Array<number>} y\n   * @return {object}\n   */\n  score(x, y) {\n    if (!isAnyArray(x) || !isAnyArray(y) || x.length !== y.length) {\n      throw new Error('x and y must be arrays of the same length');\n    }\n\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\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\n    const r =\n      (n * xY - xSum * ySum) /\n      Math.sqrt((n * xSquared - xSum * xSum) * (n * ySquared - ySum * ySum));\n\n    return {\n      r: r,\n      r2: r * r,\n      chi2: chi2,\n      rmsd: Math.sqrt(rmsd / n),\n    };\n  }\n}\n","(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 isArray from 'is-any-array';\nimport quickSelectMedian from 'median-quickselect';\n\nfunction median(input) {\n  if (!isArray(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 default median;\n","'use strict';\n\nfunction _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }\n\nvar BaseRegression = require('ml-regression-base');\nvar BaseRegression__default = _interopDefault(BaseRegression);\nvar median = _interopDefault(require('ml-array-median'));\n\nclass TheilSenRegression extends BaseRegression__default {\n  /**\n   * Theil–Sen estimator\n   * https://en.wikipedia.org/wiki/Theil%E2%80%93Sen_estimator\n   * @param {Array<number>|boolean} x\n   * @param {Array<number>|object} y\n   * @constructor\n   */\n  constructor(x, y) {\n    super();\n    if (x === true) {\n      // loads the model\n      this.slope = y.slope;\n      this.intercept = y.intercept;\n      this.coefficients = y.coefficients;\n    } else {\n      // creates the model\n      BaseRegression.checkArrayLength(x, y);\n      theilSen(this, x, y);\n    }\n  }\n\n  toJSON() {\n    return {\n      name: 'TheilSenRegression',\n      slope: this.slope,\n      intercept: this.intercept\n    };\n  }\n\n  _predict(input) {\n    return this.slope * input + this.intercept;\n  }\n\n  computeX(input) {\n    return (input - this.intercept) / this.slope;\n  }\n\n  toString(precision) {\n    var result = 'f(x) = ';\n    if (this.slope) {\n      var xFactor = BaseRegression.maybeToPrecision(this.slope, precision);\n      result += `${Math.abs(xFactor - 1) < 1e-5 ? '' : `${xFactor} * `}x`;\n      if (this.intercept) {\n        var absIntercept = Math.abs(this.intercept);\n        var operator = absIntercept === this.intercept ? '+' : '-';\n        result +=\n          ` ${operator} ${BaseRegression.maybeToPrecision(absIntercept, precision)}`;\n      }\n    } else {\n      result += BaseRegression.maybeToPrecision(this.intercept, precision);\n    }\n    return result;\n  }\n\n  toLaTeX(precision) {\n    return this.toString(precision);\n  }\n\n  static load(json) {\n    if (json.name !== 'TheilSenRegression') {\n      throw new TypeError('not a Theil-Sen model');\n    }\n    return new TheilSenRegression(true, json);\n  }\n}\n\nfunction theilSen(regression, x, y) {\n  let len = x.length;\n  let slopes = new Array(len * len);\n  let count = 0;\n  for (let i = 0; i < len; ++i) {\n    for (let j = i + 1; j < len; ++j) {\n      if (x[i] !== x[j]) {\n        slopes[count++] = (y[j] - y[i]) / (x[j] - x[i]);\n      }\n    }\n  }\n  slopes.length = count;\n  let medianSlope = median(slopes);\n\n  let cuts = new Array(len);\n  for (let i = 0; i < len; ++i) {\n    cuts[i] = y[i] - medianSlope * x[i];\n  }\n\n  regression.slope = medianSlope;\n  regression.intercept = median(cuts);\n  regression.coefficients = [regression.intercept, regression.slope];\n}\n\nmodule.exports = TheilSenRegression;\n","'use strict';\n\nconst max = require('ml-array-max/lib/index');\nconst min = require('ml-array-min/lib/index');\nconst Regression = require('ml-regression-theil-sen/lib/index');\n\nfunction massShifts(similarities, options = {}) {\n  const { minSimilarity = 0.95, minLength = 10 } = options;\n\n  let results = [];\n  if (!Array.isArray(similarities)) {\n    for (let key of results) {\n      for (let entry of results[key]) {\n        results.push(entry);\n      }\n    }\n  } else {\n    results = similarities;\n  }\n\n  results = results.filter(\n    (result) =>\n      result.ms &&\n      result.ms.similarity &&\n      result.ms.similarity.value > minSimilarity,\n  );\n\n  if (results.length < minLength) {\n    throw new Error(\n      `X rescale can not be applied. We need at least ${minLength} peaks with over ${Math.round(\n        minSimilarity * 100,\n      )}% similarity`,\n    );\n  }\n\n  const data = results\n    .map((result) => {\n      return {\n        em: result.ms.em,\n        delta: result.ms.delta,\n      };\n    })\n    .sort((a, b) => a.em - b.em);\n\n  let shifts = { x: [], y: [] };\n  data.forEach((datum) => {\n    shifts.x.push(Number(datum.em));\n    shifts.y.push(Number(datum.delta));\n  });\n\n  const regression = new Regression(shifts.x, shifts.y);\n\n  let minX = min(shifts.x);\n  let maxX = max(shifts.x);\n\n  let shiftsPPM = { x: shifts.x, y: [] };\n  data.forEach((datum) => {\n    shiftsPPM.y.push(Number((datum.delta / datum.em) * 1e6));\n  });\n\n  let regressionChart = { x: [], y: [] };\n\n  for (let i = minX; i < maxX; i += (maxX - minX) / 1000) {\n    regressionChart.x.push(i);\n    regressionChart.y.push(regression.predict(i));\n  }\n\n  return {\n    shifts,\n    shiftsPPM,\n    fit: regressionChart,\n    score: regression.score(shifts.x, shifts.y),\n    // eslint-disable-next-line no-new-func\n    predictFct: regression.predict.bind(regression),\n    tex: regression.toLaTeX(3),\n    slope: regression.slope,\n    intercept: regression.intercept,\n    predictFctString: `${regression.slope} * mass + ${regression.intercept}`,\n  };\n}\n\nmodule.exports = massShifts;\n","'use strict';\n\nconst matcher = require('mf-matcher').general;\n\n/**\n    Searching by various criteria. This mass will not take into account the mass\n    of the mass of the electron\n* @param {object}   [filter={}}]\n* @param {number}   [filter.minMW=0] - Minimal molecular weight\n* @param {number}   [filter.maxMW=+Infinity] - Maximal molecular weight\n* @param {number}   [filter.minEM=0] - Minimal monoisotopic mass\n* @param {number}   [filter.maxEM=+Infinity] - Maximal monoisotopic mass\n* @param {number}   [filter.minCharge=-Infinity] - Minimal charge\n* @param {number}   [filter.maxCharge=+Infinity] - Maximal charge\n* @param {object}   [filter.unsaturation={}}]\n* @param {number}   [filter.unsaturation.min=-Infinity] - Minimal unsaturation\n* @param {number}   [filter.unsaturation.max=+Infinity] - Maximal unsaturation\n* @param {number}   [filter.unsaturation.onlyInteger=false] - Integer unsaturation\n* @param {number}   [filter.unsaturation.onlyNonInteger=false] - Non integer unsaturation\n* @param {object}   [filter.atoms] - object of atom:{min, max}\n\n* @param {object}   [options={}]\n* @param {array}    [options.databases] - an array containing the name of the databases so search, by default all\n* @param {boolean}  [options.flatten=false] - should we return the array as a flat result\n\n *\n*/\n\nmodule.exports = function search(filter, options = {}) {\n  let { databases = Object.keys(this.databases), flatten = false } = options;\n\n  let results = {};\n  for (let database of databases) {\n    results[database] = this.databases[database].filter((entry) =>\n      matcher(entry, filter),\n    );\n  }\n\n  if (flatten) {\n    let flattenResults = [];\n    for (let database of databases) {\n      for (let entry of results[database]) {\n        entry.database = database;\n        flattenResults.push(entry);\n      }\n    }\n    return flattenResults;\n  } else {\n    return results;\n  }\n};\n","'use strict';\n\nconst matcher = require('mf-matcher/src/msemMatcher');\nconst preprocessIonizations = require('mf-utilities/src/preprocessIonizations');\n\n/**\nSearch for an experimental monoisotopic mass\n* @param {number}   msem - The observed monoisotopic mass\n* @param {object}   [options={}]\n* @param {array}    [options.databases] - an array containing the name of the databases so search, by default all\n* @param {boolean}  [options.flatten=false] - should we return the array as a flat result\n* @param {object}   [options.filter={}]\n* @param {string}   [options.ionizations] - list the allowed ionizations possibilities\n * @param {number}         [options.filter.targetMass] - Target mass, allows to calculate error and filter results\n * @param {Array<number>}  [options.filter.targetMasses] - Target masses: SORTED array of numbers\n * @param {Array<number>}  [options.filter.targetIntensities] - Target intensities: SORTED array of numbers\n * @param {number}         [options.filter.minEM=0] - Minimal monoisotopic mass\n * @param {number}         [options.filter.maxEM=+Infinity] - Maximal monoisotopic mass\n * @param {number}         [options.filter.minMSEM=0] - Minimal monoisotopic mass observed by mass\n * @param {number}         [options.filter.maxMSEM=+Infinity] - Maximal monoisotopic mass observed by mass\n * @param {number}         [options.filter.minCharge=-Infinity] - Minimal charge\n * @param {number}         [options.filter.maxCharge=+Infinity] - Maximal charge\n * @param {object}         [options.filter.unsaturation={}}]\n * @param {number}         [options.filter.unsaturation.min=-Infinity] - Minimal unsaturation\n * @param {number}         [options.filter.unsaturation.max=+Infinity] - Maximal unsaturation\n * @param {number}         [options.filter.unsaturation.onlyInteger=false] - Integer unsaturation\n * @param {number}         [options.filter.unsaturation.onlyNonInteger=false] - Non integer unsaturation\n * @param {object}         [options.filter.callback] - a function to filter the MF\n * @param {object}         [options.filter.atoms] - object of atom:{min, max}\n*/\n\nmodule.exports = function searchMSEM(msem, options = {}) {\n  let filter = Object.assign({}, options.filter || {}, { targetMass: msem });\n  let { databases = Object.keys(this.databases), flatten = false } = options;\n\n  let ionizations = preprocessIonizations(options.ionizations);\n  let results = {};\n  for (let database of databases) {\n    results[database] = [];\n  }\n  for (let ionization of ionizations) {\n    filter.ionization = ionization;\n    for (let database of databases) {\n      for (let entry of this.databases[database]) {\n        let match = matcher(entry, filter);\n        if (match) {\n          results[database].push(\n            Object.assign({}, entry, {\n              ms: match.ms,\n              ionization: match.ionization,\n            }),\n          );\n        }\n      }\n    }\n  }\n  if (flatten) {\n    let flattenResults = [];\n    for (let database of databases) {\n      for (let entry of results[database]) {\n        entry.database = database;\n        flattenResults.push(entry);\n      }\n    }\n    flattenResults.sort((a, b) => Math.abs(a.ms.ppm) - Math.abs(b.ms.ppm));\n    return flattenResults;\n  } else {\n    Object.keys(results).forEach((k) =>\n      results[k].sort((a, b) => Math.abs(a.ms.ppm) - Math.abs(b.ms.ppm)),\n    );\n    return results;\n  }\n};\n","'use strict';\n\nconst fetch = require('node-fetch');\n\nmodule.exports = async function fetchJSONBrowser(url) {\n  const result = await fetch(url);\n  return result.json();\n};\n","'use strict';\n\nconst mfParser = require('mf-parser');\nconst getMsInfo = require('mf-utilities/src/getMsInfo');\nconst preprocessIonizations = require('mf-utilities/src/preprocessIonizations');\n\nconst fetch = require('./util/fetchJSON.js');\n\n/**\n * Generates a database 'pubchem' based on all molecular formula available\n * in the database and a monoisotopic mass.\n * @param {number} mass - Observed monoisotopic mass\n * @param {object} [options={}]\n * @param {string} [options.databaseName='pubchem']\n * @param {string} [options.ionizations=''] - string containing a comma separated list of modifications\n * @param {number} [options.precision=1000] - Precision of the monoisotopic mass in ppm\n * @param {number} [options.limit=1000] - Maximal number of entries to return\n * @param {number} [options.minPubchemEntries=5] - Minimal number of molecules having a specific MF\n * @param {number} [options.allowNeutralMolecules=false] - Should we display uncharged molecules (non observable by mass)\n * @param {number} [options.url='https://pubchem.cheminfo.org/mfs/em'] - URL of the webservice\n */\n\nmodule.exports = async function searchPubchem(mass, options = {}) {\n  const {\n    url = 'https://pubchem.cheminfo.org/mfs/em',\n    precision = 1000,\n    limit = 1000,\n    minPubchemEntries = 5,\n    allowNeutralMolecules = false,\n  } = options;\n\n  let promises = [];\n  let ionizations = preprocessIonizations(options.ionizations);\n  for (let ionization of ionizations) {\n    let realMass = mass * ionization.charge - ionization.em;\n    promises.push(\n      fetch(\n        `${url}?em=${realMass}&precision=${precision}&limit=${limit}&minPubchemEntries=${minPubchemEntries}`,\n      ),\n    );\n  }\n\n  let results = await Promise.all(promises);\n\n  let mfs = [];\n  for (let i = 0; i < results.length; i++) {\n    for (let mf of results[i].result) {\n      try {\n        let mfInfo = new mfParser.MF(mf.mf).getInfo();\n        mfInfo.ionization = ionizations[i];\n        mfInfo.em = mfInfo.monoisotopicMass;\n        mfInfo.ms = getMsInfo(mfInfo, {\n          targetMass: mass,\n          allowNeutralMolecules,\n        }).ms;\n        mfInfo.info = { nbPubchemEntries: mf.total };\n        mfs.push(mfInfo);\n      } catch (e) {\n        // eslint-disable-next-line no-console\n        console.warn(`${e}`);\n      }\n    }\n  }\n  // because we can combine many ionizations we should resort the data\n  mfs.sort((a, b) => Math.abs(a.ms.ppm) - Math.abs(b.ms.ppm));\n  return mfs;\n};\n","export const GAUSSIAN_EXP_FACTOR = -4 * Math.LN2;\nexport const ROOT_PI_OVER_LN2 = Math.sqrt(Math.PI / Math.LN2);\nexport const ROOT_THREE = Math.sqrt(3);\nexport const ROOT_2LN2 = Math.sqrt(2 * Math.LN2);\nexport const ROOT_2LN2_MINUS_ONE = Math.sqrt(2 * Math.LN2) - 1;\n","// https://en.wikipedia.org/wiki/Error_function#Inverse_functions\n// This code yields to a good approximation\n\n// If needed a better implementation using polynomial can be found on https://en.wikipedia.org/wiki/Error_function#Inverse_functions\n\nexport default function erfinv(x) {\n  let a = 0.147;\n  if (x === 0) return 0;\n  let ln1MinusXSqrd = Math.log(1 - x * x);\n  let lnEtcBy2Plus2 = ln1MinusXSqrd / 2 + 2 / (Math.PI * a);\n  let firstSqrt = Math.sqrt(lnEtcBy2Plus2 ** 2 - ln1MinusXSqrd / a);\n  let secondSqrt = Math.sqrt(firstSqrt - lnEtcBy2Plus2);\n  return secondSqrt * (x > 0 ? 1 : -1);\n}\n","import {\n  ROOT_2LN2,\n  GAUSSIAN_EXP_FACTOR,\n  ROOT_PI_OVER_LN2,\n} from '../util/constants';\nimport erfinv from '../util/erfinv';\n\nexport class Gaussian {\n  /**\n   * @param {object} [options = {}]\n   * @param {number} [options.height=x] Define the height of the peak, by default area=1 (normalized)\n   * @param {number} [options.fwhm = 500] - Full Width at Half Maximum in the number of points in FWHM.\n   * @param {number} [options.sd] - Standard deviation, if it's defined options.fwhm will be ignored and the value will be computed sd * Math.sqrt(8 * Math.LN2);\n   */\n  constructor(options = {}) {\n    this.fwhm = options.sd\n      ? Gaussian.widthToFWHM(2 * options.sd)\n      : options.fwhm\n      ? options.fwhm\n      : 500;\n    this.height =\n      options.height === undefined\n        ? Math.sqrt(-GAUSSIAN_EXP_FACTOR / Math.PI) / this.fwhm\n        : options.height;\n  }\n  /**\n   * Calculate a gaussian shape\n   * @param {object} [options = {}]\n   * @param {number} [options.factor = 6] - Number of time to take fwhm to calculate length. Default covers 99.99 % of area.\n   * @param {number} [options.length = fwhm * factor + 1] - total number of points to calculate\n   * @return {Float64Array} y values\n   */\n\n  getData(options = {}) {\n    let { length, factor = this.getFactor() } = options;\n\n    if (!length) {\n      length = Math.min(Math.ceil(this.fwhm * factor), Math.pow(2, 25) - 1);\n      if (length % 2 === 0) length++;\n    }\n\n    const center = (length - 1) / 2;\n    const data = new Float64Array(length);\n    for (let i = 0; i <= center; i++) {\n      data[i] = this.fct(i - center) * this.height;\n      data[length - 1 - i] = data[i];\n    }\n\n    return data;\n  }\n\n  /**\n   * Return a parameterized function of a gaussian shape (see README for equation).\n   * @param {number} x - x value to calculate.\n   * @returns {number} - the y value of gaussian with the current parameters.\n   */\n  fct(x) {\n    return Gaussian.fct(x, this.fwhm);\n  }\n\n  /**\n   * Calculate the number of times FWHM allows to reach a specific area coverage\n   * @param {number} [area=0.9999]\n   * @returns {number}\n   */\n  getFactor(area = 0.9999) {\n    return Gaussian.getFactor(area);\n  }\n\n  /**\n   * Calculate the area of the shape.\n   * @returns {number} - returns the area.\n   */\n\n  getArea() {\n    return Gaussian.getArea(this.fwhm, { height: this.height });\n  }\n\n  /**\n   * Compute the value of Full Width at Half Maximum (FWHM) from the width between the inflection points.\n   * //https://mathworld.wolfram.com/GaussianFunction.html\n   * @param {number} width - Width between the inflection points\n   * @returns {number} fwhm\n   */\n  widthToFWHM(width) {\n    //https://mathworld.wolfram.com/GaussianFunction.html\n    return Gaussian.widthToFWHM(width);\n  }\n\n  /**\n   * Compute the value of width between the inflection points from Full Width at Half Maximum (FWHM).\n   * //https://mathworld.wolfram.com/GaussianFunction.html\n   * @param {number} fwhm - Full Width at Half Maximum.\n   * @returns {number} width\n   */\n  fwhmToWidth(fwhm = this.fwhm) {\n    return Gaussian.fwhmToWidth(fwhm);\n  }\n\n  /**\n   * set a new full width at half maximum\n   * @param {number} fwhm - full width at half maximum\n   */\n  setFWHM(fwhm) {\n    this.fwhm = fwhm;\n  }\n\n  /**\n   * set a new height\n   * @param {number} height - The maximal intensity of the shape.\n   */\n  setHeight(height) {\n    this.height = height;\n  }\n}\n\n/**\n * Return a parameterized function of a gaussian shape (see README for equation).\n * @param {number} x - x value to calculate.\n * @param {number} fwhm - full width half maximum\n * @returns {number} - the y value of gaussian with the current parameters.\n */\nGaussian.fct = function fct(x, fwhm = 500) {\n  return Math.exp(GAUSSIAN_EXP_FACTOR * Math.pow(x / fwhm, 2));\n};\n\n/**\n * Compute the value of Full Width at Half Maximum (FWHM) from the width between the inflection points.\n * //https://mathworld.wolfram.com/GaussianFunction.html\n * @param {number} width - Width between the inflection points\n * @returns {number} fwhm\n */\nGaussian.widthToFWHM = function widthToFWHM(width) {\n  return width * ROOT_2LN2;\n};\n\n/**\n * Compute the value of width between the inflection points from Full Width at Half Maximum (FWHM).\n * //https://mathworld.wolfram.com/GaussianFunction.html\n * @param {number} fwhm - Full Width at Half Maximum.\n * @returns {number} width\n */\nGaussian.fwhmToWidth = function fwhmToWidth(fwhm) {\n  return fwhm / ROOT_2LN2;\n};\n\n/**\n * Calculate the area of a specific shape.\n * @param {number} fwhm - Full width at half maximum.\n * @param {object} [options = {}] - options.\n * @param {number} [options.height = 1] - Maximum y value of the shape.\n * @returns {number} - returns the area of the specific shape and parameters.\n */\n\nGaussian.getArea = function getArea(fwhm, options = {}) {\n  let { height = 1 } = options;\n  return (height * ROOT_PI_OVER_LN2 * fwhm) / 2;\n};\n\n/**\n * Calculate the number of times FWHM allows to reach a specific area coverage.\n * @param {number} [area=0.9999]\n * @returns {number}\n */\nGaussian.getFactor = function getFactor(area = 0.9999) {\n  return Math.sqrt(2) * erfinv(area);\n};\n","import { ROOT_THREE } from '../util/constants';\n\nexport class Lorentzian {\n  /**\n   * @param {object} [options = {}]\n   * @param {number} [options.height=x] Define the height of the peak, by default area=1 (normalized)\n   * @param {number} [options.fwhm = 500] - Full Width at Half Maximum in the number of points in FWHM.\n   * @param {number} [options.sd] - Standard deviation, if it's defined options.fwhm will be ignored and the value will be computed sd * Math.sqrt(8 * Math.LN2);\n   */\n  constructor(options = {}) {\n    this.fwhm = options.fwhm === undefined ? 500 : options.fwhm;\n    this.height =\n      options.height === undefined ? 2 / Math.PI / this.fwhm : options.height;\n  }\n  /**\n   * Calculate a lorentzian shape\n   * @param {object} [options = {}]\n   * @param {number} [options.factor = Math.tan(Math.PI * (0.9999 - 0.5))] - Number of time to take fwhm to calculate length. Default covers 99.99 % of area.\n   * @param {number} [options.length = fwhm * factor + 1] - total number of points to calculate\n   * @return {Float64Array} y values\n   */\n  getData(options = {}) {\n    let { length, factor = this.getFactor() } = options;\n\n    if (!length) {\n      length = Math.min(Math.ceil(this.fwhm * factor), Math.pow(2, 25) - 1);\n      if (length % 2 === 0) length++;\n    }\n\n    const center = (length - 1) / 2;\n    const data = new Float64Array(length);\n    for (let i = 0; i <= center; i++) {\n      data[i] = this.fct(i - center) * this.height;\n      data[length - 1 - i] = data[i];\n    }\n    return data;\n  }\n\n  /**\n   * Return a parameterized function of a lorentzian shape (see README for equation).\n   * @param {number} x - x value to calculate.\n   * @returns {number} - the y value of lorentzian with the current parameters.\n   */\n  fct(x) {\n    return Lorentzian.fct(x, this.fwhm);\n  }\n\n  /**\n   * Calculate the number of times FWHM allows to reach a specific area coverage\n   * @param {number} [area=0.9999]\n   * @returns {number}\n   */\n  getFactor(area = 0.9999) {\n    return Lorentzian.getFactor(area);\n  }\n\n  /**\n   * Calculate the area of the shape.\n   * @returns {number} - returns the area.\n   */\n\n  getArea() {\n    return Lorentzian.getArea(this.fwhm, { height: this.height });\n  }\n\n  /**\n   * Compute the value of width between the inflection points of a specific shape from Full Width at Half Maximum (FWHM).\n   * //https://mathworld.wolfram.com/LorentzianFunction.html\n   * @param {number} [fwhm] - Full Width at Half Maximum.\n   * @returns {number} width between the inflection points\n   */\n  fwhmToWidth(fwhm = this.fwhm) {\n    return Lorentzian.fwhmToWidth(fwhm);\n  }\n\n  /**\n   * Compute the value of Full Width at Half Maximum (FWHM) of a specific shape from the width between the inflection points.\n   * //https://mathworld.wolfram.com/LorentzianFunction.html\n   * @param {number} [width] Width between the inflection points\n   * @returns {number} fwhm\n   */\n  widthToFWHM(width) {\n    return Lorentzian.widthToFWHM(width);\n  }\n  /**\n   * set a new full width at half maximum\n   * @param {number} fwhm - full width at half maximum\n   */\n  setFWHM(fwhm) {\n    this.fwhm = fwhm;\n  }\n\n  /**\n   * set a new height\n   * @param {number} height - The maximal intensity of the shape.\n   */\n  setHeight(height) {\n    this.height = height;\n  }\n}\n\n/**\n * Return a parameterized function of a gaussian shape (see README for equation).\n * @param {number} x - x value to calculate.\n * @param {number} fwhm - full width half maximum\n * @returns {number} - the y value of gaussian with the current parameters.\n */\nLorentzian.fct = function fct(x, fwhm) {\n  const squareFWHM = fwhm * fwhm;\n  return squareFWHM / (4 * Math.pow(x, 2) + squareFWHM);\n};\n\n/**\n * Compute the value of width between the inflection points of a specific shape from Full Width at Half Maximum (FWHM).\n * //https://mathworld.wolfram.com/LorentzianFunction.html\n * @param {number} [fwhm] - Full Width at Half Maximum.\n * @returns {number} width between the inflection points\n */\nLorentzian.fwhmToWidth = function fwhmToWidth(fwhm) {\n  return fwhm / ROOT_THREE;\n};\n\n/**\n * Compute the value of Full Width at Half Maximum (FWHM) of a specific shape from the width between the inflection points.\n * //https://mathworld.wolfram.com/LorentzianFunction.html\n * @param {number} [width] Width between the inflection points\n * @returns {number} fwhm\n */\nLorentzian.widthToFWHM = function widthToFWHM(width) {\n  return width * ROOT_THREE;\n};\n\n/**\n * Calculate the area of a specific shape.\n * @param {number} fwhm - Full width at half maximum.\n * @param {*} [options = {}] - options.\n * @param {number} [options.height = 1] - Maximum y value of the shape.\n * @returns {number} - returns the area of the specific shape and parameters.\n */\nLorentzian.getArea = function getArea(fwhm, options = {}) {\n  let { height = 1 } = options;\n\n  return (height * Math.PI * fwhm) / 2;\n};\n\n/**\n * Calculate the number of times FWHM allows to reach a specific area coverage\n * @param {number} [area=0.9999]\n * @returns {number}\n */\nLorentzian.getFactor = function getFactor(area = 0.9999) {\n  return 2 * Math.tan(Math.PI * (area - 0.5));\n};\n","import {\n  GAUSSIAN_EXP_FACTOR,\n  ROOT_2LN2_MINUS_ONE,\n  ROOT_PI_OVER_LN2,\n} from '../util/constants';\n\nimport { Gaussian } from './Gaussian';\nimport { Lorentzian } from './Lorentzian';\n\nexport class PseudoVoigt {\n  /**\n   * @param {object} [options={}]\n   * @param {number} [options.height=x] Define the height of the peak, by default area=1 (normalized)\n   * @param {number} [options.fwhm=500] - Full Width at Half Maximum in the number of points in FWHM.\n   * @param {number} [options.mu=0.5] - ratio of gaussian contribution.\n   */\n\n  constructor(options = {}) {\n    this.mu = options.mu === undefined ? 0.5 : options.mu;\n    this.fwhm = options.fwhm === undefined ? 500 : options.fwhm;\n    this.height =\n      options.height === undefined\n        ? 1 /\n          ((this.mu / Math.sqrt(-GAUSSIAN_EXP_FACTOR / Math.PI)) * this.fwhm +\n            ((1 - this.mu) * this.fwhm * Math.PI) / 2)\n        : options.height;\n  }\n\n  /**\n   * Calculate a linear combination of gaussian and lorentzian function width an same full width at half maximum\n   * @param { object } [options = {}]\n   * @param { number } [options.factor = 2 * Math.tan(Math.PI * (0.9999 - 0.5))] - Number of time to take fwhm in the calculation of the length.Default covers 99.99 % of area.\n   * @param { number } [options.length = fwhm * factor + 1] - total number of points to calculate\n   * @return { object } - { fwhm, data<Float64Array>} - An with the number of points at half maximum and the array of y values covering the 99.99 % of the area.\n   */\n\n  getData(options = {}) {\n    let { length, factor = this.getFactor() } = options;\n    if (!length) {\n      length = Math.ceil(this.fwhm * factor);\n      if (length % 2 === 0) length++;\n    }\n\n    const center = (length - 1) / 2;\n\n    let data = new Float64Array(length);\n    for (let i = 0; i <= center; i++) {\n      data[i] = this.fct(i - center) * this.height;\n      data[length - 1 - i] = data[i];\n    }\n\n    return data;\n  }\n\n  /**\n   * Return a parameterized function of a linear combination of Gaussian and Lorentzian shapes where the full width at half maximum are the same for both kind of shapes (see README for equation).\n   * @param {number} [x] x value to calculate.\n   * @returns {number} - the y value of a pseudo voigt with the current parameters.\n   */\n\n  fct(x) {\n    return PseudoVoigt.fct(x, this.fwhm, this.mu);\n  }\n\n  /**\n   * Calculate the number of times FWHM allows to reach a specific area coverage\n   * @param {number} [area=0.9999] - required area to be coverage\n   * @param {number} [mu=this.mu] - ratio of gaussian contribution.\n   * @returns {number}\n   */\n  getFactor(area = 0.9999, mu = this.mu) {\n    return PseudoVoigt.getFactor(area, mu);\n  }\n\n  /**\n   * Calculate the area of the shape.\n   * @returns {number} - returns the area.\n   */\n  getArea() {\n    return PseudoVoigt.getArea(this.fwhm, { height: this.height, mu: this.mu });\n  }\n\n  /**\n   * Compute the value of Full Width at Half Maximum (FMHM) from width between the inflection points.\n   * @param {number} width - width between the inflection points\n   * @param {number} [mu = 0.5] - ratio of gaussian contribution.\n   * @returns {number} Full Width at Half Maximum (FMHM).\n   */\n  widthToFWHM(width, mu) {\n    return PseudoVoigt.widthToFWHM(width, mu);\n  }\n  /**\n   * Compute the value of width between the inflection points from Full Width at Half Maximum (FWHM).\n   * @param {number} fwhm - Full Width at Half Maximum.\n   * @param {number} [mu] - ratio of gaussian contribution.\n   * @returns {number} width between the inflection points.\n   */\n  fwhmToWidth(fwhm = this.fwhm, mu = this.mu) {\n    return PseudoVoigt.fwhmToWidth(fwhm, mu);\n  }\n\n  /**\n   * set a new full width at half maximum\n   * @param {number} fwhm - full width at half maximum\n   */\n  setFWHM(fwhm) {\n    this.fwhm = fwhm;\n  }\n\n  /**\n   * set a new height\n   * @param {number} height - The maximal intensity of the shape.\n   */\n  setHeight(height) {\n    this.height = height;\n  }\n\n  /**\n   * set a new mu\n   * @param {number} mu - ratio of gaussian contribution.\n   */\n  setMu(mu) {\n    this.mu = mu;\n  }\n}\n\n/**\n * Return a parameterized function of a gaussian shape (see README for equation).\n * @param {number} x - x value to calculate.\n * @param {number} fwhm - full width half maximum\n * @param {number} [mu=0.5] - ratio of gaussian contribution.\n * @returns {number} - the y value of gaussian with the current parameters.\n */\nPseudoVoigt.fct = function fct(x, fwhm, mu = 0.5) {\n  return (1 - mu) * Lorentzian.fct(x, fwhm) + mu * Gaussian.fct(x, fwhm);\n};\n\n/**\n * Compute the value of Full Width at Half Maximum (FMHM) from width between the inflection points.\n * @param {number} width - width between the inflection points\n * @param {number} [mu = 0.5] - ratio of gaussian contribution.\n * @returns {number} Full Width at Half Maximum (FMHM).\n */\nPseudoVoigt.widthToFWHM = function widthToFWHM(width, mu = 0.5) {\n  return width * (mu * ROOT_2LN2_MINUS_ONE + 1);\n};\n/**\n * Compute the value of width between the inflection points from Full Width at Half Maximum (FWHM).\n * @param {number} fwhm - Full Width at Half Maximum.\n * @param {number} [mu = 0.5] - ratio of gaussian contribution.\n * @returns {number} width between the inflection points.\n */\nPseudoVoigt.fwhmToWidth = function fwhmToWidth(fwhm, mu = 0.5) {\n  return fwhm / (mu * ROOT_2LN2_MINUS_ONE + 1);\n};\n\n/**\n * Calculate the area of a specific shape.\n * @param {number} fwhm - Full width at half maximum.\n * @param {*} [options = {}] - options.\n * @param {number} [options.height = 1] - Maximum y value of the shape.\n * @param {number} [options.mu = 0.5] - ratio of gaussian contribution.\n * @returns {number} - returns the area of the specific shape and parameters.\n */\nPseudoVoigt.getArea = function getArea(fwhm, options = {}) {\n  let { height = 1, mu = 0.5 } = options;\n  return (fwhm * height * (mu * ROOT_PI_OVER_LN2 + (1 - mu) * Math.PI)) / 2;\n};\n\n/**\n * Calculate the number of times FWHM allows to reach a specific area coverage\n * @param {number} [area=0.9999] - required area to be coverage\n * @param {number} [mu=this.mu] - ratio of gaussian contribution.\n * @returns {number}\n */\nPseudoVoigt.getFactor = function getFactor(area = 0.9999, mu = 0.5) {\n  return mu < 1 ? Lorentzian.getFactor(area) : Gaussian.getFactor(area);\n};\n","import { Gaussian } from '../classes/Gaussian';\nimport { Lorentzian } from '../classes/Lorentzian';\nimport { PseudoVoigt } from '../classes/PseudoVoigt';\n\nexport function getShapeGenerator(options) {\n  let { kind = 'Gaussian', options: shapeOptions } = options;\n  switch (kind.toLowerCase().replace(/[^a-z]/g, '')) {\n    case 'gaussian':\n      return new Gaussian(shapeOptions);\n    case 'lorentzian':\n      return new Lorentzian(shapeOptions);\n    case 'pseudovoigt':\n      return new PseudoVoigt(shapeOptions);\n    default:\n      throw new Error(`Unknown kind: ${kind}`);\n  }\n}\n","export default function addBaseline(data, baselineFct) {\n  if (!baselineFct) return data;\n  let xs = data.x;\n  let ys = data.y;\n  for (let i = 0; i < xs.length; i++) {\n    ys[i] += baselineFct(xs[i]);\n  }\n  return data;\n}\n","export default Math.random;\n","import defaultSource from \"./defaultSource.js\";\n\nexport default (function sourceRandomUniform(source) {\n  function randomUniform(min, max) {\n    min = min == null ? 0 : +min;\n    max = max == null ? 1 : +max;\n    if (arguments.length === 1) max = min, min = 0;\n    else max -= min;\n    return function() {\n      return source() * max + min;\n    };\n  }\n\n  randomUniform.source = sourceRandomUniform;\n\n  return randomUniform;\n})(defaultSource);\n","import defaultSource from \"./defaultSource.js\";\n\nexport default (function sourceRandomNormal(source) {\n  function randomNormal(mu, sigma) {\n    var x, r;\n    mu = mu == null ? 0 : +mu;\n    sigma = sigma == null ? 1 : +sigma;\n    return function() {\n      var y;\n\n      // If available, use the second previously-generated uniform random.\n      if (x != null) y = x, x = null;\n\n      // Otherwise, generate a new x and y.\n      else do {\n        x = source() * 2 - 1;\n        y = source() * 2 - 1;\n        r = x * x + y * y;\n      } while (!r || r > 1);\n\n      return mu + sigma * y * Math.sqrt(-2 * Math.log(r) / r);\n    };\n  }\n\n  randomNormal.source = sourceRandomNormal;\n\n  return randomNormal;\n})(defaultSource);\n","const LOOP = 8;\nconst FLOAT_MUL = 1 / 16777216;\nconst sh1 = 15;\nconst sh2 = 18;\nconst sh3 = 11;\nfunction multiply_uint32(n, m) {\n    n >>>= 0;\n    m >>>= 0;\n    const nlo = n & 0xffff;\n    const nhi = n - nlo;\n    return (((nhi * m) >>> 0) + nlo * m) >>> 0;\n}\nexport default class XSadd {\n    constructor(seed = Date.now()) {\n        this.state = new Uint32Array(4);\n        this.init(seed);\n        this.random = this.getFloat.bind(this);\n    }\n    /**\n     * Returns a 32-bit integer r (0 <= r < 2^32)\n     */\n    getUint32() {\n        this.nextState();\n        return (this.state[3] + this.state[2]) >>> 0;\n    }\n    /**\n     * Returns a floating point number r (0.0 <= r < 1.0)\n     */\n    getFloat() {\n        return (this.getUint32() >>> 8) * FLOAT_MUL;\n    }\n    init(seed) {\n        if (!Number.isInteger(seed)) {\n            throw new TypeError('seed must be an integer');\n        }\n        this.state[0] = seed;\n        this.state[1] = 0;\n        this.state[2] = 0;\n        this.state[3] = 0;\n        for (let i = 1; i < LOOP; i++) {\n            this.state[i & 3] ^=\n                (i +\n                    multiply_uint32(1812433253, this.state[(i - 1) & 3] ^ ((this.state[(i - 1) & 3] >>> 30) >>> 0))) >>>\n                    0;\n        }\n        this.periodCertification();\n        for (let i = 0; i < LOOP; i++) {\n            this.nextState();\n        }\n    }\n    periodCertification() {\n        if (this.state[0] === 0 &&\n            this.state[1] === 0 &&\n            this.state[2] === 0 &&\n            this.state[3] === 0) {\n            this.state[0] = 88; // X\n            this.state[1] = 83; // S\n            this.state[2] = 65; // A\n            this.state[3] = 68; // D\n        }\n    }\n    nextState() {\n        let t = this.state[0];\n        t ^= t << sh1;\n        t ^= t >>> sh2;\n        t ^= this.state[3] << sh3;\n        this.state[0] = this.state[1];\n        this.state[1] = this.state[2];\n        this.state[2] = this.state[3];\n        this.state[3] = t;\n    }\n}\n","import { randomUniform, randomNormal } from 'd3-random';\nimport XSAdd from 'ml-xsadd';\n\nexport default function addNoise(data, percent = 0, options = {}) {\n  const { distribution = 'uniform', seed } = options;\n\n  let generateRandomNumber;\n  switch (distribution) {\n    case 'uniform': {\n      generateRandomNumber = getRandom(randomUniform, seed, -0.5, 0.5);\n      break;\n    }\n    case 'normal': {\n      generateRandomNumber = getRandom(randomNormal, seed);\n      break;\n    }\n    default:\n      throw new Error(`Unknown distribution ${options.distribution}`);\n  }\n\n  if (!percent) return data;\n  let ys = data.y;\n  let factor = (percent * findMax(ys)) / 100;\n  for (let i = 0; i < ys.length; i++) {\n    ys[i] += generateRandomNumber() * factor;\n  }\n  return data;\n}\n\nfunction getRandom(func, seed, ...args) {\n  return typeof seed === 'number'\n    ? func.source(new XSAdd(seed).random)(...args)\n    : func(...args);\n}\n\nfunction findMax(array) {\n  let max = Number.MIN_VALUE;\n  for (let item of array) {\n    if (item > max) max = item;\n  }\n  return max;\n}\n","import { getShapeGenerator } from 'ml-peak-shape-generator';\n\nimport addBaseline from './util/addBaseline.js';\nimport addNoise from './util/addNoise.js';\n\nexport class SpectrumGenerator {\n  constructor(options = {}) {\n    options = Object.assign(\n      {},\n      {\n        from: 0,\n        to: 1000,\n        nbPoints: 10001,\n        peakWidthFct: () => 5,\n        shape: {\n          kind: 'gaussian',\n        },\n      },\n      options,\n    );\n\n    this.from = options.from;\n    this.to = options.to;\n    this.nbPoints = options.nbPoints;\n    this.interval = (this.to - this.from) / (this.nbPoints - 1);\n    this.peakWidthFct = options.peakWidthFct;\n    this.maxPeakHeight = Number.MIN_SAFE_INTEGER;\n\n    let shapeGenerator = getShapeGenerator(options.shape);\n    this.shape = shapeGenerator;\n\n    assertNumber(this.from, 'from');\n    assertNumber(this.to, 'to');\n    assertInteger(this.nbPoints, 'nbPoints');\n\n    if (this.to <= this.from) {\n      throw new RangeError('to option must be larger than from');\n    }\n\n    if (typeof this.peakWidthFct !== 'function') {\n      throw new TypeError('peakWidthFct option must be a function');\n    }\n\n    this.reset();\n  }\n\n  addPeaks(peaks, options) {\n    if (\n      !Array.isArray(peaks) &&\n      (typeof peaks !== 'object' ||\n        peaks.x === undefined ||\n        peaks.y === undefined ||\n        !Array.isArray(peaks.x) ||\n        !Array.isArray(peaks.y) ||\n        peaks.x.length !== peaks.y.length)\n    ) {\n      throw new TypeError(\n        'peaks must be an array or an object containing x[] and y[]',\n      );\n    }\n    if (Array.isArray(peaks)) {\n      for (const peak of peaks) {\n        this.addPeak(peak, options);\n      }\n    } else {\n      for (let i = 0; i < peaks.x.length; i++) {\n        this.addPeak([peaks.x[i], peaks.y[i]], options);\n      }\n    }\n\n    return this;\n  }\n\n  addPeak(peak, options = {}) {\n    if (\n      typeof peak !== 'object' ||\n      (peak.length !== 2 &&\n        peak.length !== 3 &&\n        (peak.x === undefined || peak.y === undefined))\n    ) {\n      throw new Error(\n        'peak must be an array with two (or three) values or an object with {x,y,width?}',\n      );\n    }\n\n    let xPosition;\n    let intensity;\n    let peakWidth;\n    if (Array.isArray(peak)) {\n      [xPosition, intensity, peakWidth] = peak;\n    } else {\n      xPosition = peak.x;\n      intensity = peak.y;\n      peakWidth = peak.width;\n    }\n\n    if (intensity > this.maxPeakHeight) this.maxPeakHeight = intensity;\n\n    let {\n      width = peakWidth === undefined\n        ? this.peakWidthFct(xPosition)\n        : peakWidth,\n      widthLeft,\n      widthRight,\n      shape: shapeOptions,\n    } = options;\n\n    let shapeGenerator = shapeOptions\n      ? getShapeGenerator(shapeOptions)\n      : this.shape;\n\n    if (!widthLeft) widthLeft = width;\n    if (!widthRight) widthRight = width;\n\n    let factor =\n      options.factor === undefined\n        ? shapeGenerator.getFactor()\n        : options.factor;\n\n    const firstValue = xPosition - (widthLeft / 2) * factor;\n    const lastValue = xPosition + (widthRight / 2) * factor;\n\n    const firstPoint = Math.max(\n      0,\n      Math.floor((firstValue - this.from) / this.interval),\n    );\n    const lastPoint = Math.min(\n      this.nbPoints - 1,\n      Math.ceil((lastValue - this.from) / this.interval),\n    );\n    const middlePoint = Math.round((xPosition - this.from) / this.interval);\n    // PEAK SHAPE MAY BE ASYMMETRC (widthLeft and widthRight) !\n    // we calculate the left part of the shape\n\n    shapeGenerator.setFWHM(widthLeft);\n    for (let index = firstPoint; index < Math.max(middlePoint, 0); index++) {\n      this.data.y[index] +=\n        intensity * shapeGenerator.fct(this.data.x[index] - xPosition);\n    }\n\n    // we calculate the right part of the gaussian\n    shapeGenerator.setFWHM(widthRight);\n    for (\n      let index = Math.min(middlePoint, lastPoint);\n      index <= lastPoint;\n      index++\n    ) {\n      this.data.y[index] +=\n        intensity * shapeGenerator.fct(this.data.x[index] - xPosition);\n    }\n\n    return this;\n  }\n\n  addBaseline(baselineFct) {\n    addBaseline(this.data, baselineFct);\n    return this;\n  }\n\n  addNoise(percent, options) {\n    addNoise(this.data, percent, options);\n    return this;\n  }\n\n  getSpectrum(options = {}) {\n    if (typeof options === 'boolean') {\n      options = { copy: options };\n    }\n    const { copy = true, threshold = 0 } = options;\n    if (threshold) {\n      let minPeakHeight = this.maxPeakHeight * threshold;\n      let x = [];\n      let y = [];\n      for (let i = 0; i < this.data.x.length; i++) {\n        if (this.data.y[i] >= minPeakHeight) {\n          x.push(this.data.x[i]);\n          y.push(this.data.y[i]);\n        }\n      }\n      return { x, y };\n    }\n    if (copy) {\n      return {\n        x: this.data.x.slice(),\n        y: this.data.y.slice(),\n      };\n    } else {\n      return this.data;\n    }\n  }\n\n  reset() {\n    const spectrum = (this.data = {\n      x: new Float64Array(this.nbPoints),\n      y: new Float64Array(this.nbPoints),\n    });\n\n    for (let i = 0; i < this.nbPoints; i++) {\n      spectrum.x[i] = this.from + i * this.interval;\n    }\n\n    return this;\n  }\n}\n\nfunction assertInteger(value, name) {\n  if (!Number.isInteger(value)) {\n    throw new TypeError(`${name} option must be an integer`);\n  }\n}\n\nfunction assertNumber(value, name) {\n  if (!Number.isFinite(value)) {\n    throw new TypeError(`${name} option must be a number`);\n  }\n}\n\nexport function generateSpectrum(peaks, options = {}) {\n  const generator = new SpectrumGenerator(options);\n\n  generator.addPeaks(peaks, options);\n  if (options.baseline) generator.addBaseline(options.baseline);\n  if (options.noise) generator.addNoise(options.noise.percent, options.noise);\n  return generator.getSpectrum({\n    threshold: options.threshold,\n  });\n}\n","'use strict';\n\nmodule.exports = function sortX() {\n  this.ySorted = false;\n  if (this.xSorted) return this;\n  this.array.sort((a, b) => a.x - b.x);\n  this.xSorted = true;\n  return this;\n};\n","'use strict';\n\nmodule.exports = function sortY() {\n  this.xSorted = false;\n  if (this.ySorted) return this;\n  this.array.sort((a, b) => b.y - a.y);\n  this.ySorted = true;\n  return this;\n};\n","'use strict';\n\n/**\n * Join x values if there are similar\n */\n\nmodule.exports = function joinX(threshold = Number.EPSILON) {\n  // when we join we will use the center of mass\n  let result = [];\n  this.sortX();\n  let current = {\n    x: Number.MIN_SAFE_INTEGER,\n    y: 0,\n  };\n  for (let item of this.array) {\n    if (item.x - current.x <= threshold) {\n      // weighted sum\n      current.x =\n        (item.y / (current.y + item.y)) * (item.x - current.x) + current.x;\n      current.y += item.y;\n    } else {\n      current = {\n        x: item.x,\n        y: item.y,\n      };\n      result.push(current);\n    }\n  }\n  this.array = result;\n  this.ySorted = false;\n  return this;\n};\n","'use strict';\n\nmodule.exports = function topY(limit) {\n  if (!limit) return this;\n  if (this.array.length <= limit) return this;\n  this.sortY();\n  this.array.splice(limit);\n  return this;\n};\n","'use strict';\n\n/**\n * Sum of Y to 1\n */\n\nmodule.exports = function maxToOne() {\n  if (this.array.length === 0) return this;\n  let currentMax = this.array[0].y;\n  for (let item of this.array) {\n    if (item.y > currentMax) currentMax = item.y;\n  }\n  for (let item of this.array) {\n    item.y /= currentMax;\n  }\n  return this;\n};\n","'use strict';\n\nmodule.exports = function multiply(b, options = {}) {\n  const { minY = 1e-8, maxLines = 5000, deltaX = 1e-2 } = options;\n  const result = new this.constructor();\n\n  this.sortY();\n  b.sortY();\n\n  for (let entryA of this.array) {\n    for (let entryB of b.array) {\n      let y = entryA.y * entryB.y;\n      if (y > minY) result.push(entryA.x + entryB.x, y);\n      if (result.length > maxLines) {\n        result.join(deltaX);\n        result.topY(maxLines / 2);\n      }\n    }\n  }\n  result.join(deltaX);\n  result.topY(maxLines / 2);\n  this.move(result);\n  return this;\n};\n","'use strict';\n\nmodule.exports = function square(options = {}) {\n  return this.multiply(this, options);\n};\n","'use strict';\n\n// https://en.wikipedia.org/wiki/Exponentiation_by_squaring\n\nmodule.exports = function power(p, options = {}) {\n  if (p <= 0) throw new Error('power must be larger than 0');\n  if (p === 1) return this;\n  if (p === 2) {\n    return this.square();\n  }\n\n  p--;\n  let base = this.copy(); // linear time\n  while (p !== 0) {\n    if ((p & 1) !== 0) {\n      this.multiply(base, options); // executed <= log2(p) times\n    }\n    p >>= 1;\n    if (p !== 0) base.square(options); // executed <= log2(p) times\n  }\n\n  return this;\n};\n","'use strict';\n\n/**\n * Sum of Y to 1\n */\n\nmodule.exports = function normalize() {\n  let sum = 0;\n  for (let item of this.array) {\n    sum += item.y;\n  }\n  for (let item of this.array) {\n    item.y /= sum;\n  }\n  return this;\n};\n","'use strict';\n\nmodule.exports = function closestPointX(target) {\n  this.sortX();\n\n  let low = 0;\n  let high = this.array.length - 1;\n  let middle = 0;\n  while (high - low > 1) {\n    middle = low + ((high - low) >> 1);\n    if (this.array[middle].x < target) {\n      low = middle;\n    } else if (this.array[middle].x > target) {\n      high = middle;\n    } else {\n      return this.array[middle];\n    }\n  }\n\n  if (low < this.array.length - 1) {\n    if (\n      Math.abs(target - this.array[low].x) <\n      Math.abs(this.array[low + 1].x - target)\n    ) {\n      return this.array[low];\n    } else {\n      return this.array[low + 1];\n    }\n  } else {\n    return this.array[low];\n  }\n};\n","'use strict';\n\nclass Distribution {\n  constructor(array) {\n    if (Array.isArray(array)) {\n      this.array = array;\n      this.xSorted = false;\n      this.ySorted = false;\n    } else {\n      this.array = [];\n      this.xSorted = true;\n      this.ySorted = true;\n    }\n  }\n\n  get length() {\n    return this.array.length;\n  }\n\n  get xs() {\n    return this.array.map((p) => p.x);\n  }\n\n  get ys() {\n    return this.array.map((p) => p.y);\n  }\n\n  get minX() {\n    if (!this.xSorted) this.sortX();\n    return this.array[0].x;\n  }\n\n  get maxX() {\n    if (!this.xSorted) this.sortX();\n    return this.array[this.array.length - 1].x;\n  }\n\n  get minY() {\n    if (!this.ySorted) this.sortY();\n    return this.array[0].y;\n  }\n\n  get maxY() {\n    if (!this.ySorted) this.sortY();\n    return this.array[this.array.length - 1];\n  }\n}\n\nDistribution.prototype.multiplyY = function multiplyY(value) {\n  this.array.forEach((item) => (item.y *= value));\n};\n\nDistribution.prototype.setArray = function setArray(array) {\n  this.array = array;\n  this.xSorted = false;\n  this.ySorted = false;\n};\n\nDistribution.prototype.move = function move(other) {\n  this.xSorted = other.xSorted;\n  this.ySorted = other.ySorted;\n  this.array = other.array;\n};\n\nDistribution.prototype.copy = function copy() {\n  let distCopy = new this.constructor();\n  distCopy.xSorted = this.xSorted;\n  distCopy.ySorted = this.ySorted;\n  distCopy.array = JSON.parse(JSON.stringify(this.array));\n  return distCopy;\n};\n\nDistribution.prototype.push = function push(x, y) {\n  this.array.push({ x, y });\n  this.xSorted = false;\n  this.ySorted = false;\n};\n\n/**\n * Appen another distribution to the current distribution\n * @param {*} distribution\n */\nDistribution.prototype.append = function append(distribution) {\n  for (let item of distribution.array) {\n    this.array.push(item);\n  }\n  this.xSorted = false;\n  this.ySorted = false;\n};\n\nDistribution.prototype.sortX = require('./utils/sortX.js');\nDistribution.prototype.sortY = require('./utils/sortY.js');\nDistribution.prototype.join = require('./utils/join.js');\nDistribution.prototype.topY = require('./utils/topY.js');\nDistribution.prototype.maxToOne = require('./utils/maxToOne.js');\nDistribution.prototype.multiply = require('./utils/multiply.js');\nDistribution.prototype.square = require('./utils/square.js');\nDistribution.prototype.power = require('./utils/power.js');\nDistribution.prototype.normalize = require('./utils/normalize.js');\nDistribution.prototype.closestPointX = require('./utils/closestPointX.js');\n\nmodule.exports = Distribution;\n","'use strict';\n\nconst ELECTRON_MASS = require('chemical-elements').ELECTRON_MASS;\nconst SpectrumGenerator = require('spectrum-generator').SpectrumGenerator;\nconst MF = require('mf-parser').MF;\nconst getMsInfo = require('mf-utilities/src/getMsInfo');\nconst preprocessIonizations = require('mf-utilities/src/preprocessIonizations');\n\nconst Distribution = require('./Distribution');\n\n/**\n * An object containing two arrays\n * @typedef {object} XY\n * @property {Array<number>} x - The x array\n * @property {Array<number>} y - The y array\n */\n\nclass IsotopicDistribution {\n  /**\n   * Class that manage isotopic distribution\n   * @param {string|array} value - Molecular formula or an array of parts\n   * @param {object} [options={}]\n   * @param {string} [options.ionizations=''] - string containing a comma separated list of modifications\n   * @param {number} [options.fwhm=0.01] - Amount of Dalton under which 2 peaks are joined\n   * @param {number} [options.maxLines=5000] - Maximal number of lines during calculations\n   * @param {number} [options.minY=1e-8] - Minimal signal height during calculations\n   * @param {number} [options.ensureCase=false] - Ensure uppercase / lowercase\n   * @param {number} [options.allowNeutral=true] - Should we keep the distribution if the molecule has no charge\n   */\n\n  constructor(value, options = {}) {\n    if (Array.isArray(value)) {\n      this.parts = JSON.parse(JSON.stringify(value));\n      for (let part of this.parts) {\n        part.confidence = 0;\n        part.isotopesInfo = new MF(\n          `${part.mf}(${part.ionization.mf})`,\n        ).getIsotopesInfo();\n      }\n    } else {\n      let mf = new MF(value, { ensureCase: options.ensureCase });\n      let mfInfo = mf.getInfo();\n      let ionizations = preprocessIonizations(options.ionizations);\n      let parts = mfInfo.parts || [mfInfo];\n      this.parts = [];\n      for (let partOriginal of parts) {\n        // we calculate information for each part\n        for (const ionization of ionizations) {\n          let part = JSON.parse(JSON.stringify(partOriginal));\n          part.em = part.monoisotopicMass; // TODO: To remove !!! we change the name !?\n          part.isotopesInfo = new MF(\n            `${part.mf}(${ionization.mf})`,\n          ).getIsotopesInfo();\n          part.confidence = 0;\n          let msInfo = getMsInfo(part, {\n            ionization,\n          });\n          part.ionization = msInfo.ionization;\n          part.ms = msInfo.ms;\n          this.parts.push(part);\n        }\n      }\n    }\n\n    this.cachedDistribution = undefined;\n    this.fwhm = options.fwhm === undefined ? 0.01 : options.fwhm;\n    // if fwhm is under 1e-8 there are some artifacts in the spectra\n    if (this.fwhm < 1e-8) this.fwhm = 1e-8;\n    this.minY = options.minY === undefined ? 1e-8 : options.minY;\n    this.maxLines = options.maxLines || 5000;\n    this.allowNeutral =\n      options.allowNeutral === undefined ? true : options.allowNeutral;\n  }\n\n  getParts() {\n    return this.parts;\n  }\n\n  /**\n   * @return {Distribution} returns the total distribution (for all parts)\n   */\n  getDistribution() {\n    if (this.cachedDistribution) return this.cachedDistribution;\n    let options = {\n      maxLines: this.maxLines,\n      minY: this.minY,\n      deltaX: this.fwhm,\n    };\n    let finalDistribution = new Distribution();\n    this.confidence = 0;\n    // TODO need to cache each part without ionization\n    // in case of many ionization we don't need to recalculate everything !\n    for (let part of this.parts) {\n      let totalDistribution = new Distribution([\n        {\n          x: 0,\n          y: 1,\n        },\n      ]);\n      let charge = part.ms.charge;\n      let absoluteCharge = Math.abs(charge);\n      if (charge || this.allowNeutral) {\n        for (let isotope of part.isotopesInfo.isotopes) {\n          if (isotope.number < 0) return [];\n          if (isotope.number > 0) {\n            let isotopeDistribution = new Distribution(isotope.distribution);\n            isotopeDistribution.power(isotope.number, options);\n            totalDistribution.multiply(isotopeDistribution, options);\n          }\n        }\n        this.confidence += totalDistribution.array.reduce(\n          (sum, value) => sum + value.y,\n          0,\n        );\n\n        // we finally deal with the charge\n\n        if (charge) {\n          totalDistribution.array.forEach((e) => {\n            e.x = (e.x - ELECTRON_MASS * charge) / absoluteCharge;\n          });\n        }\n\n        if (totalDistribution.array) {\n          totalDistribution.sortX();\n          part.fromX = totalDistribution.array[0].x;\n          part.toX =\n            totalDistribution.array[totalDistribution.array.length - 1].x;\n        }\n\n        if (\n          part.ms.target &&\n          part.ms.target.intensity &&\n          part.ms.target.intensity !== 1\n        ) {\n          // intensity is the value of the monoisotopic mass !\n          // need to find the intensity of the peak corresponding\n          // to the monoisotopic mass\n          if (part.ms.target.mass) {\n            let target = totalDistribution.closestPointX(part.ms.target.mass);\n            totalDistribution.multiplyY(part.ms.target.intensity / target.y);\n          } else {\n            totalDistribution.multiplyY(part.ms.target.intensity);\n          }\n        } else if (part.intensity && part.intensity !== 1) {\n          totalDistribution.multiplyY(part.intensity);\n        }\n\n        part.isotopicDistribution = totalDistribution.array;\n\n        if (finalDistribution.array.length === 0) {\n          finalDistribution = totalDistribution;\n        } else {\n          finalDistribution.append(totalDistribution);\n        }\n      }\n    }\n    if (finalDistribution) finalDistribution.join(this.fwhm);\n    this.confidence /= this.parts.length;\n    this.cachedDistribution = finalDistribution;\n    return finalDistribution;\n  }\n\n  getCSV() {\n    return this.getText({ delimiter: ', ' });\n  }\n\n  getTSV() {\n    return this.getText({ delimiter: '\\t' });\n  }\n\n  getTable(options = {}) {\n    const { maxValue, xLabel = 'x', yLabel = 'y' } = options;\n    let points = this.getDistribution().array;\n    let factor = 1;\n    if (maxValue) {\n      let maxY = this.getMaxY(points);\n      factor = maxValue / maxY;\n    }\n    return points.map((point) => {\n      let newPoint = {};\n      newPoint[xLabel] = point.x;\n      newPoint[yLabel] = point.y * factor;\n      return newPoint;\n    });\n  }\n\n  getText(options = {}) {\n    const { delimiter = '\\t', numberDecimals = 3 } = options;\n    let points = this.getDistribution().array;\n    let csv = [];\n    for (let point of points) {\n      csv.push(\n        `${point.x.toFixed(5)}${delimiter}${(point.y * 100).toFixed(\n          numberDecimals,\n        )}`,\n      );\n    }\n    return csv.join('\\n');\n  }\n\n  getMaxY(points) {\n    let maxY = points[0].y;\n    for (let point of points) {\n      if (point.y > maxY) maxY = point.y;\n    }\n    return maxY;\n  }\n\n  /**\n   * Returns the isotopic distirubtion\n   * @return {XY} an object containing 2 properties: x:[] and y:[]\n   */\n  getXY(options = {}) {\n    const { maxValue = 100 } = options;\n    let points = this.getDistribution().array;\n    if (points.length === 0) return [];\n    let factor = 1;\n    if (maxValue) {\n      let maxY = this.getMaxY(points);\n      factor = maxY / maxValue;\n    }\n\n    return {\n      x: points.map((a) => a.x),\n      y: points.map((a) => a.y / factor),\n    };\n  }\n\n  /**\n   * Returns the isotopic distribution as the sum of gaussian\n   * @param {object} [options={}]\n   * @param {number} [options.gaussianWidth=10]\n   * @param {number} [options.threshold=0.00001] // minimal height to return point\n   * @param {number} [options.maxLength=1e6] // minimal height to return point\n   * @param {number} [options.maxValue] // rescale Y to reach maxValue\n   * @param {function} [options.peakWidthFct=(mz)=>(this.fwhm)]\n   * @return {XY} isotopic distribution as an object containing 2 properties: x:[] and y:[]\n   */\n\n  getGaussian(options = {}) {\n    const {\n      peakWidthFct = () => this.fwhm,\n      threshold = 0.00001,\n      gaussianWidth = 10,\n      maxValue,\n      maxLength = 1e6,\n    } = options;\n\n    let points = this.getTable({ maxValue });\n    if (points.length === 0) return { x: [], y: [] };\n    const from = Math.floor(options.from || points[0].x - 2);\n    const to = Math.ceil(options.to || points[points.length - 1].x + 2);\n    const nbPoints = Math.round(((to - from) * gaussianWidth) / this.fwhm + 1);\n    if (nbPoints > maxLength) {\n      throw Error(\n        `Number of points is over the maxLength: ${nbPoints}>${maxLength}`,\n      );\n    }\n    let gaussianOptions = {\n      from,\n      to,\n      nbPoints,\n      peakWidthFct,\n    };\n\n    let spectrumGenerator = new SpectrumGenerator(gaussianOptions);\n    for (let point of points) {\n      spectrumGenerator.addPeak([point.x, point.y]);\n    }\n    let spectrum = spectrumGenerator.getSpectrum({ threshold });\n    return spectrum;\n  }\n}\n\nmodule.exports = IsotopicDistribution;\n","'use strict';\n\nconst IsotopicDistribution = require('./IsotopicDistribution');\n\nmodule.exports = IsotopicDistribution;\n","'use strict';\n\nfunction compareNumbers(a, b) {\n    return a - b;\n}\n\n/**\n * Computes the sum of the given values\n * @param {Array} values\n * @returns {number}\n */\nexports.sum = function sum(values) {\n    var sum = 0;\n    for (var i = 0; i < values.length; i++) {\n        sum += values[i];\n    }\n    return sum;\n};\n\n/**\n * Computes the maximum of the given values\n * @param {Array} values\n * @returns {number}\n */\nexports.max = function max(values) {\n    var max = values[0];\n    var l = values.length;\n    for (var i = 1; i < l; i++) {\n        if (values[i] > max) max = values[i];\n    }\n    return max;\n};\n\n/**\n * Computes the minimum of the given values\n * @param {Array} values\n * @returns {number}\n */\nexports.min = function min(values) {\n    var min = values[0];\n    var l = values.length;\n    for (var i = 1; i < l; i++) {\n        if (values[i] < min) min = values[i];\n    }\n    return min;\n};\n\n/**\n * Computes the min and max of the given values\n * @param {Array} values\n * @returns {{min: number, max: number}}\n */\nexports.minMax = function minMax(values) {\n    var min = values[0];\n    var max = values[0];\n    var l = values.length;\n    for (var i = 1; i < l; i++) {\n        if (values[i] < min) min = values[i];\n        if (values[i] > max) max = values[i];\n    }\n    return {\n        min: min,\n        max: max\n    };\n};\n\n/**\n * Computes the arithmetic mean of the given values\n * @param {Array} values\n * @returns {number}\n */\nexports.arithmeticMean = function arithmeticMean(values) {\n    var sum = 0;\n    var l = values.length;\n    for (var i = 0; i < l; i++) {\n        sum += values[i];\n    }\n    return sum / l;\n};\n\n/**\n * {@link arithmeticMean}\n */\nexports.mean = exports.arithmeticMean;\n\n/**\n * Computes the geometric mean of the given values\n * @param {Array} values\n * @returns {number}\n */\nexports.geometricMean = function geometricMean(values) {\n    var mul = 1;\n    var l = values.length;\n    for (var i = 0; i < l; i++) {\n        mul *= values[i];\n    }\n    return Math.pow(mul, 1 / l);\n};\n\n/**\n * Computes the mean of the log of the given values\n * If the return value is exponentiated, it gives the same result as the\n * geometric mean.\n * @param {Array} values\n * @returns {number}\n */\nexports.logMean = function logMean(values) {\n    var lnsum = 0;\n    var l = values.length;\n    for (var i = 0; i < l; i++) {\n        lnsum += Math.log(values[i]);\n    }\n    return lnsum / l;\n};\n\n/**\n * Computes the weighted grand mean for a list of means and sample sizes\n * @param {Array} means - Mean values for each set of samples\n * @param {Array} samples - Number of original values for each set of samples\n * @returns {number}\n */\nexports.grandMean = function grandMean(means, samples) {\n    var sum = 0;\n    var n = 0;\n    var l = means.length;\n    for (var i = 0; i < l; i++) {\n        sum += samples[i] * means[i];\n        n += samples[i];\n    }\n    return sum / n;\n};\n\n/**\n * Computes the truncated mean of the given values using a given percentage\n * @param {Array} values\n * @param {number} percent - The percentage of values to keep (range: [0,1])\n * @param {boolean} [alreadySorted=false]\n * @returns {number}\n */\nexports.truncatedMean = function truncatedMean(values, percent, alreadySorted) {\n    if (alreadySorted === undefined) alreadySorted = false;\n    if (!alreadySorted) {\n        values = [].concat(values).sort(compareNumbers);\n    }\n    var l = values.length;\n    var k = Math.floor(l * percent);\n    var sum = 0;\n    for (var i = k; i < (l - k); i++) {\n        sum += values[i];\n    }\n    return sum / (l - 2 * k);\n};\n\n/**\n * Computes the harmonic mean of the given values\n * @param {Array} values\n * @returns {number}\n */\nexports.harmonicMean = function harmonicMean(values) {\n    var sum = 0;\n    var l = values.length;\n    for (var i = 0; i < l; i++) {\n        if (values[i] === 0) {\n            throw new RangeError('value at index ' + i + 'is zero');\n        }\n        sum += 1 / values[i];\n    }\n    return l / sum;\n};\n\n/**\n * Computes the contraharmonic mean of the given values\n * @param {Array} values\n * @returns {number}\n */\nexports.contraHarmonicMean = function contraHarmonicMean(values) {\n    var r1 = 0;\n    var r2 = 0;\n    var l = values.length;\n    for (var i = 0; i < l; i++) {\n        r1 += values[i] * values[i];\n        r2 += values[i];\n    }\n    if (r2 < 0) {\n        throw new RangeError('sum of values is negative');\n    }\n    return r1 / r2;\n};\n\n/**\n * Computes the median of the given values\n * @param {Array} values\n * @param {boolean} [alreadySorted=false]\n * @returns {number}\n */\nexports.median = function median(values, alreadySorted) {\n    if (alreadySorted === undefined) alreadySorted = false;\n    if (!alreadySorted) {\n        values = [].concat(values).sort(compareNumbers);\n    }\n    var l = values.length;\n    var half = Math.floor(l / 2);\n    if (l % 2 === 0) {\n        return (values[half - 1] + values[half]) * 0.5;\n    } else {\n        return values[half];\n    }\n};\n\n/**\n * Computes the variance of the given values\n * @param {Array} values\n * @param {boolean} [unbiased=true] - if true, divide by (n-1); if false, divide by n.\n * @returns {number}\n */\nexports.variance = function variance(values, unbiased) {\n    if (unbiased === undefined) unbiased = true;\n    var theMean = exports.mean(values);\n    var theVariance = 0;\n    var l = values.length;\n\n    for (var i = 0; i < l; i++) {\n        var x = values[i] - theMean;\n        theVariance += x * x;\n    }\n\n    if (unbiased) {\n        return theVariance / (l - 1);\n    } else {\n        return theVariance / l;\n    }\n};\n\n/**\n * Computes the standard deviation of the given values\n * @param {Array} values\n * @param {boolean} [unbiased=true] - if true, divide by (n-1); if false, divide by n.\n * @returns {number}\n */\nexports.standardDeviation = function standardDeviation(values, unbiased) {\n    return Math.sqrt(exports.variance(values, unbiased));\n};\n\nexports.standardError = function standardError(values) {\n    return exports.standardDeviation(values) / Math.sqrt(values.length);\n};\n\n/**\n * IEEE Transactions on biomedical engineering, vol. 52, no. 1, january 2005, p. 76-\n * Calculate the standard deviation via the Median of the absolute deviation\n *  The formula for the standard deviation only holds for Gaussian random variables.\n * @returns {{mean: number, stdev: number}}\n */\nexports.robustMeanAndStdev = function robustMeanAndStdev(y) {\n    var mean = 0, stdev = 0;\n    var length = y.length, i = 0;\n    for (i = 0; i < length; i++) {\n        mean += y[i];\n    }\n    mean /= length;\n    var averageDeviations = new Array(length);\n    for (i = 0; i < length; i++)\n        averageDeviations[i] = Math.abs(y[i] - mean);\n    averageDeviations.sort(compareNumbers);\n    if (length % 2 === 1) {\n        stdev = averageDeviations[(length - 1) / 2] / 0.6745;\n    } else {\n        stdev = 0.5 * (averageDeviations[length / 2] + averageDeviations[length / 2 - 1]) / 0.6745;\n    }\n\n    return {\n        mean: mean,\n        stdev: stdev\n    };\n};\n\nexports.quartiles = function quartiles(values, alreadySorted) {\n    if (typeof (alreadySorted) === 'undefined') alreadySorted = false;\n    if (!alreadySorted) {\n        values = [].concat(values).sort(compareNumbers);\n    }\n\n    var quart = values.length / 4;\n    var q1 = values[Math.ceil(quart) - 1];\n    var q2 = exports.median(values, true);\n    var q3 = values[Math.ceil(quart * 3) - 1];\n\n    return {q1: q1, q2: q2, q3: q3};\n};\n\nexports.pooledStandardDeviation = function pooledStandardDeviation(samples, unbiased) {\n    return Math.sqrt(exports.pooledVariance(samples, unbiased));\n};\n\nexports.pooledVariance = function pooledVariance(samples, unbiased) {\n    if (typeof (unbiased) === 'undefined') unbiased = true;\n    var sum = 0;\n    var length = 0, l = samples.length;\n    for (var i = 0; i < l; i++) {\n        var values = samples[i];\n        var vari = exports.variance(values);\n\n        sum += (values.length - 1) * vari;\n\n        if (unbiased)\n            length += values.length - 1;\n        else\n            length += values.length;\n    }\n    return sum / length;\n};\n\nexports.mode = function mode(values) {\n    var l = values.length,\n        itemCount = new Array(l),\n        i;\n    for (i = 0; i < l; i++) {\n        itemCount[i] = 0;\n    }\n    var itemArray = new Array(l);\n    var count = 0;\n\n    for (i = 0; i < l; i++) {\n        var index = itemArray.indexOf(values[i]);\n        if (index >= 0)\n            itemCount[index]++;\n        else {\n            itemArray[count] = values[i];\n            itemCount[count] = 1;\n            count++;\n        }\n    }\n\n    var maxValue = 0, maxIndex = 0;\n    for (i = 0; i < count; i++) {\n        if (itemCount[i] > maxValue) {\n            maxValue = itemCount[i];\n            maxIndex = i;\n        }\n    }\n\n    return itemArray[maxIndex];\n};\n\nexports.covariance = function covariance(vector1, vector2, unbiased) {\n    if (typeof (unbiased) === 'undefined') unbiased = true;\n    var mean1 = exports.mean(vector1);\n    var mean2 = exports.mean(vector2);\n\n    if (vector1.length !== vector2.length)\n        throw 'Vectors do not have the same dimensions';\n\n    var cov = 0, l = vector1.length;\n    for (var i = 0; i < l; i++) {\n        var x = vector1[i] - mean1;\n        var y = vector2[i] - mean2;\n        cov += x * y;\n    }\n\n    if (unbiased)\n        return cov / (l - 1);\n    else\n        return cov / l;\n};\n\nexports.skewness = function skewness(values, unbiased) {\n    if (typeof (unbiased) === 'undefined') unbiased = true;\n    var theMean = exports.mean(values);\n\n    var s2 = 0, s3 = 0, l = values.length;\n    for (var i = 0; i < l; i++) {\n        var dev = values[i] - theMean;\n        s2 += dev * dev;\n        s3 += dev * dev * dev;\n    }\n    var m2 = s2 / l;\n    var m3 = s3 / l;\n\n    var g = m3 / (Math.pow(m2, 3 / 2.0));\n    if (unbiased) {\n        var a = Math.sqrt(l * (l - 1));\n        var b = l - 2;\n        return (a / b) * g;\n    } else {\n        return g;\n    }\n};\n\nexports.kurtosis = function kurtosis(values, unbiased) {\n    if (typeof (unbiased) === 'undefined') unbiased = true;\n    var theMean = exports.mean(values);\n    var n = values.length, s2 = 0, s4 = 0;\n\n    for (var i = 0; i < n; i++) {\n        var dev = values[i] - theMean;\n        s2 += dev * dev;\n        s4 += dev * dev * dev * dev;\n    }\n    var m2 = s2 / n;\n    var m4 = s4 / n;\n\n    if (unbiased) {\n        var v = s2 / (n - 1);\n        var a = (n * (n + 1)) / ((n - 1) * (n - 2) * (n - 3));\n        var b = s4 / (v * v);\n        var c = ((n - 1) * (n - 1)) / ((n - 2) * (n - 3));\n\n        return a * b - 3 * c;\n    } else {\n        return m4 / (m2 * m2) - 3;\n    }\n};\n\nexports.entropy = function entropy(values, eps) {\n    if (typeof (eps) === 'undefined') eps = 0;\n    var sum = 0, l = values.length;\n    for (var i = 0; i < l; i++)\n        sum += values[i] * Math.log(values[i] + eps);\n    return -sum;\n};\n\nexports.weightedMean = function weightedMean(values, weights) {\n    var sum = 0, l = values.length;\n    for (var i = 0; i < l; i++)\n        sum += values[i] * weights[i];\n    return sum;\n};\n\nexports.weightedStandardDeviation = function weightedStandardDeviation(values, weights) {\n    return Math.sqrt(exports.weightedVariance(values, weights));\n};\n\nexports.weightedVariance = function weightedVariance(values, weights) {\n    var theMean = exports.weightedMean(values, weights);\n    var vari = 0, l = values.length;\n    var a = 0, b = 0;\n\n    for (var i = 0; i < l; i++) {\n        var z = values[i] - theMean;\n        var w = weights[i];\n\n        vari += w * (z * z);\n        b += w;\n        a += w * w;\n    }\n\n    return vari * (b / (b * b - a));\n};\n\nexports.center = function center(values, inPlace) {\n    if (typeof (inPlace) === 'undefined') inPlace = false;\n\n    var result = values;\n    if (!inPlace)\n        result = [].concat(values);\n\n    var theMean = exports.mean(result), l = result.length;\n    for (var i = 0; i < l; i++)\n        result[i] -= theMean;\n};\n\nexports.standardize = function standardize(values, standardDev, inPlace) {\n    if (typeof (standardDev) === 'undefined') standardDev = exports.standardDeviation(values);\n    if (typeof (inPlace) === 'undefined') inPlace = false;\n    var l = values.length;\n    var result = inPlace ? values : new Array(l);\n    for (var i = 0; i < l; i++)\n        result[i] = values[i] / standardDev;\n    return result;\n};\n\nexports.cumulativeSum = function cumulativeSum(array) {\n    var l = array.length;\n    var result = new Array(l);\n    result[0] = array[0];\n    for (var i = 1; i < l; i++)\n        result[i] = result[i - 1] + array[i];\n    return result;\n};\n","'use strict';\n\nvar arrayStat = require('./array');\n\nfunction compareNumbers(a, b) {\n    return a - b;\n}\n\nexports.max = function max(matrix) {\n    var max = -Infinity;\n    for (var i = 0; i < matrix.length; i++) {\n        for (var j = 0; j < matrix[i].length; j++) {\n            if (matrix[i][j] > max) max = matrix[i][j];\n        }\n    }\n    return max;\n};\n\nexports.min = function min(matrix) {\n    var min = Infinity;\n    for (var i = 0; i < matrix.length; i++) {\n        for (var j = 0; j < matrix[i].length; j++) {\n            if (matrix[i][j] < min) min = matrix[i][j];\n        }\n    }\n    return min;\n};\n\nexports.minMax = function minMax(matrix) {\n    var min = Infinity;\n    var max = -Infinity;\n    for (var i = 0; i < matrix.length; i++) {\n        for (var j = 0; j < matrix[i].length; j++) {\n            if (matrix[i][j] < min) min = matrix[i][j];\n            if (matrix[i][j] > max) max = matrix[i][j];\n        }\n    }\n    return {\n        min:min,\n        max:max\n    };\n};\n\nexports.entropy = function entropy(matrix, eps) {\n    if (typeof (eps) === 'undefined') {\n        eps = 0;\n    }\n    var sum = 0,\n        l1 = matrix.length,\n        l2 = matrix[0].length;\n    for (var i = 0; i < l1; i++) {\n        for (var j = 0; j < l2; j++) {\n            sum += matrix[i][j] * Math.log(matrix[i][j] + eps);\n        }\n    }\n    return -sum;\n};\n\nexports.mean = function mean(matrix, dimension) {\n    if (typeof (dimension) === 'undefined') {\n        dimension = 0;\n    }\n    var rows = matrix.length,\n        cols = matrix[0].length,\n        theMean, N, i, j;\n\n    if (dimension === -1) {\n        theMean = [0];\n        N = rows * cols;\n        for (i = 0; i < rows; i++) {\n            for (j = 0; j < cols; j++) {\n                theMean[0] += matrix[i][j];\n            }\n        }\n        theMean[0] /= N;\n    } else if (dimension === 0) {\n        theMean = new Array(cols);\n        N = rows;\n        for (j = 0; j < cols; j++) {\n            theMean[j] = 0;\n            for (i = 0; i < rows; i++) {\n                theMean[j] += matrix[i][j];\n            }\n            theMean[j] /= N;\n        }\n    } else if (dimension === 1) {\n        theMean = new Array(rows);\n        N = cols;\n        for (j = 0; j < rows; j++) {\n            theMean[j] = 0;\n            for (i = 0; i < cols; i++) {\n                theMean[j] += matrix[j][i];\n            }\n            theMean[j] /= N;\n        }\n    } else {\n        throw new Error('Invalid dimension');\n    }\n    return theMean;\n};\n\nexports.sum = function sum(matrix, dimension) {\n    if (typeof (dimension) === 'undefined') {\n        dimension = 0;\n    }\n    var rows = matrix.length,\n        cols = matrix[0].length,\n        theSum, i, j;\n\n    if (dimension === -1) {\n        theSum = [0];\n        for (i = 0; i < rows; i++) {\n            for (j = 0; j < cols; j++) {\n                theSum[0] += matrix[i][j];\n            }\n        }\n    } else if (dimension === 0) {\n        theSum = new Array(cols);\n        for (j = 0; j < cols; j++) {\n            theSum[j] = 0;\n            for (i = 0; i < rows; i++) {\n                theSum[j] += matrix[i][j];\n            }\n        }\n    } else if (dimension === 1) {\n        theSum = new Array(rows);\n        for (j = 0; j < rows; j++) {\n            theSum[j] = 0;\n            for (i = 0; i < cols; i++) {\n                theSum[j] += matrix[j][i];\n            }\n        }\n    } else {\n        throw new Error('Invalid dimension');\n    }\n    return theSum;\n};\n\nexports.product = function product(matrix, dimension) {\n    if (typeof (dimension) === 'undefined') {\n        dimension = 0;\n    }\n    var rows = matrix.length,\n        cols = matrix[0].length,\n        theProduct, i, j;\n\n    if (dimension === -1) {\n        theProduct = [1];\n        for (i = 0; i < rows; i++) {\n            for (j = 0; j < cols; j++) {\n                theProduct[0] *= matrix[i][j];\n            }\n        }\n    } else if (dimension === 0) {\n        theProduct = new Array(cols);\n        for (j = 0; j < cols; j++) {\n            theProduct[j] = 1;\n            for (i = 0; i < rows; i++) {\n                theProduct[j] *= matrix[i][j];\n            }\n        }\n    } else if (dimension === 1) {\n        theProduct = new Array(rows);\n        for (j = 0; j < rows; j++) {\n            theProduct[j] = 1;\n            for (i = 0; i < cols; i++) {\n                theProduct[j] *= matrix[j][i];\n            }\n        }\n    } else {\n        throw new Error('Invalid dimension');\n    }\n    return theProduct;\n};\n\nexports.standardDeviation = function standardDeviation(matrix, means, unbiased) {\n    var vari = exports.variance(matrix, means, unbiased), l = vari.length;\n    for (var i = 0; i < l; i++) {\n        vari[i] = Math.sqrt(vari[i]);\n    }\n    return vari;\n};\n\nexports.variance = function variance(matrix, means, unbiased) {\n    if (typeof (unbiased) === 'undefined') {\n        unbiased = true;\n    }\n    means = means || exports.mean(matrix);\n    var rows = matrix.length;\n    if (rows === 0) return [];\n    var cols = matrix[0].length;\n    var vari = new Array(cols);\n\n    for (var j = 0; j < cols; j++) {\n        var sum1 = 0, sum2 = 0, x = 0;\n        for (var i = 0; i < rows; i++) {\n            x = matrix[i][j] - means[j];\n            sum1 += x;\n            sum2 += x * x;\n        }\n        if (unbiased) {\n            vari[j] = (sum2 - ((sum1 * sum1) / rows)) / (rows - 1);\n        } else {\n            vari[j] = (sum2 - ((sum1 * sum1) / rows)) / rows;\n        }\n    }\n    return vari;\n};\n\nexports.median = function median(matrix) {\n    var rows = matrix.length, cols = matrix[0].length;\n    var medians = new Array(cols);\n\n    for (var i = 0; i < cols; i++) {\n        var data = new Array(rows);\n        for (var j = 0; j < rows; j++) {\n            data[j] = matrix[j][i];\n        }\n        data.sort(compareNumbers);\n        var N = data.length;\n        if (N % 2 === 0) {\n            medians[i] = (data[N / 2] + data[(N / 2) - 1]) * 0.5;\n        } else {\n            medians[i] = data[Math.floor(N / 2)];\n        }\n    }\n    return medians;\n};\n\nexports.mode = function mode(matrix) {\n    var rows = matrix.length,\n        cols = matrix[0].length,\n        modes = new Array(cols),\n        i, j;\n    for (i = 0; i < cols; i++) {\n        var itemCount = new Array(rows);\n        for (var k = 0; k < rows; k++) {\n            itemCount[k] = 0;\n        }\n        var itemArray = new Array(rows);\n        var count = 0;\n\n        for (j = 0; j < rows; j++) {\n            var index = itemArray.indexOf(matrix[j][i]);\n            if (index >= 0) {\n                itemCount[index]++;\n            } else {\n                itemArray[count] = matrix[j][i];\n                itemCount[count] = 1;\n                count++;\n            }\n        }\n\n        var maxValue = 0, maxIndex = 0;\n        for (j = 0; j < count; j++) {\n            if (itemCount[j] > maxValue) {\n                maxValue = itemCount[j];\n                maxIndex = j;\n            }\n        }\n\n        modes[i] = itemArray[maxIndex];\n    }\n    return modes;\n};\n\nexports.skewness = function skewness(matrix, unbiased) {\n    if (typeof (unbiased) === 'undefined') unbiased = true;\n    var means = exports.mean(matrix);\n    var n = matrix.length, l = means.length;\n    var skew = new Array(l);\n\n    for (var j = 0; j < l; j++) {\n        var s2 = 0, s3 = 0;\n        for (var i = 0; i < n; i++) {\n            var dev = matrix[i][j] - means[j];\n            s2 += dev * dev;\n            s3 += dev * dev * dev;\n        }\n\n        var m2 = s2 / n;\n        var m3 = s3 / n;\n        var g = m3 / Math.pow(m2, 3 / 2);\n\n        if (unbiased) {\n            var a = Math.sqrt(n * (n - 1));\n            var b = n - 2;\n            skew[j] = (a / b) * g;\n        } else {\n            skew[j] = g;\n        }\n    }\n    return skew;\n};\n\nexports.kurtosis = function kurtosis(matrix, unbiased) {\n    if (typeof (unbiased) === 'undefined') unbiased = true;\n    var means = exports.mean(matrix);\n    var n = matrix.length, m = matrix[0].length;\n    var kurt = new Array(m);\n\n    for (var j = 0; j < m; j++) {\n        var s2 = 0, s4 = 0;\n        for (var i = 0; i < n; i++) {\n            var dev = matrix[i][j] - means[j];\n            s2 += dev * dev;\n            s4 += dev * dev * dev * dev;\n        }\n        var m2 = s2 / n;\n        var m4 = s4 / n;\n\n        if (unbiased) {\n            var v = s2 / (n - 1);\n            var a = (n * (n + 1)) / ((n - 1) * (n - 2) * (n - 3));\n            var b = s4 / (v * v);\n            var c = ((n - 1) * (n - 1)) / ((n - 2) * (n - 3));\n            kurt[j] = a * b - 3 * c;\n        } else {\n            kurt[j] = m4 / (m2 * m2) - 3;\n        }\n    }\n    return kurt;\n};\n\nexports.standardError = function standardError(matrix) {\n    var samples = matrix.length;\n    var standardDeviations = exports.standardDeviation(matrix);\n    var l = standardDeviations.length;\n    var standardErrors = new Array(l);\n    var sqrtN = Math.sqrt(samples);\n\n    for (var i = 0; i < l; i++) {\n        standardErrors[i] = standardDeviations[i] / sqrtN;\n    }\n    return standardErrors;\n};\n\nexports.covariance = function covariance(matrix, dimension) {\n    return exports.scatter(matrix, undefined, dimension);\n};\n\nexports.scatter = function scatter(matrix, divisor, dimension) {\n    if (typeof (dimension) === 'undefined') {\n        dimension = 0;\n    }\n    if (typeof (divisor) === 'undefined') {\n        if (dimension === 0) {\n            divisor = matrix.length - 1;\n        } else if (dimension === 1) {\n            divisor = matrix[0].length - 1;\n        }\n    }\n    var means = exports.mean(matrix, dimension);\n    var rows = matrix.length;\n    if (rows === 0) {\n        return [[]];\n    }\n    var cols = matrix[0].length,\n        cov, i, j, s, k;\n\n    if (dimension === 0) {\n        cov = new Array(cols);\n        for (i = 0; i < cols; i++) {\n            cov[i] = new Array(cols);\n        }\n        for (i = 0; i < cols; i++) {\n            for (j = i; j < cols; j++) {\n                s = 0;\n                for (k = 0; k < rows; k++) {\n                    s += (matrix[k][j] - means[j]) * (matrix[k][i] - means[i]);\n                }\n                s /= divisor;\n                cov[i][j] = s;\n                cov[j][i] = s;\n            }\n        }\n    } else if (dimension === 1) {\n        cov = new Array(rows);\n        for (i = 0; i < rows; i++) {\n            cov[i] = new Array(rows);\n        }\n        for (i = 0; i < rows; i++) {\n            for (j = i; j < rows; j++) {\n                s = 0;\n                for (k = 0; k < cols; k++) {\n                    s += (matrix[j][k] - means[j]) * (matrix[i][k] - means[i]);\n                }\n                s /= divisor;\n                cov[i][j] = s;\n                cov[j][i] = s;\n            }\n        }\n    } else {\n        throw new Error('Invalid dimension');\n    }\n\n    return cov;\n};\n\nexports.correlation = function correlation(matrix) {\n    var means = exports.mean(matrix),\n        standardDeviations = exports.standardDeviation(matrix, true, means),\n        scores = exports.zScores(matrix, means, standardDeviations),\n        rows = matrix.length,\n        cols = matrix[0].length,\n        i, j;\n\n    var cor = new Array(cols);\n    for (i = 0; i < cols; i++) {\n        cor[i] = new Array(cols);\n    }\n    for (i = 0; i < cols; i++) {\n        for (j = i; j < cols; j++) {\n            var c = 0;\n            for (var k = 0, l = scores.length; k < l; k++) {\n                c += scores[k][j] * scores[k][i];\n            }\n            c /= rows - 1;\n            cor[i][j] = c;\n            cor[j][i] = c;\n        }\n    }\n    return cor;\n};\n\nexports.zScores = function zScores(matrix, means, standardDeviations) {\n    means = means || exports.mean(matrix);\n    if (typeof (standardDeviations) === 'undefined') standardDeviations = exports.standardDeviation(matrix, true, means);\n    return exports.standardize(exports.center(matrix, means, false), standardDeviations, true);\n};\n\nexports.center = function center(matrix, means, inPlace) {\n    means = means || exports.mean(matrix);\n    var result = matrix,\n        l = matrix.length,\n        i, j, jj;\n\n    if (!inPlace) {\n        result = new Array(l);\n        for (i = 0; i < l; i++) {\n            result[i] = new Array(matrix[i].length);\n        }\n    }\n\n    for (i = 0; i < l; i++) {\n        var row = result[i];\n        for (j = 0, jj = row.length; j < jj; j++) {\n            row[j] = matrix[i][j] - means[j];\n        }\n    }\n    return result;\n};\n\nexports.standardize = function standardize(matrix, standardDeviations, inPlace) {\n    if (typeof (standardDeviations) === 'undefined') standardDeviations = exports.standardDeviation(matrix);\n    var result = matrix,\n        l = matrix.length,\n        i, j, jj;\n\n    if (!inPlace) {\n        result = new Array(l);\n        for (i = 0; i < l; i++) {\n            result[i] = new Array(matrix[i].length);\n        }\n    }\n\n    for (i = 0; i < l; i++) {\n        var resultRow = result[i];\n        var sourceRow = matrix[i];\n        for (j = 0, jj = resultRow.length; j < jj; j++) {\n            if (standardDeviations[j] !== 0 && !isNaN(standardDeviations[j])) {\n                resultRow[j] = sourceRow[j] / standardDeviations[j];\n            }\n        }\n    }\n    return result;\n};\n\nexports.weightedVariance = function weightedVariance(matrix, weights) {\n    var means = exports.mean(matrix);\n    var rows = matrix.length;\n    if (rows === 0) return [];\n    var cols = matrix[0].length;\n    var vari = new Array(cols);\n\n    for (var j = 0; j < cols; j++) {\n        var sum = 0;\n        var a = 0, b = 0;\n\n        for (var i = 0; i < rows; i++) {\n            var z = matrix[i][j] - means[j];\n            var w = weights[i];\n\n            sum += w * (z * z);\n            b += w;\n            a += w * w;\n        }\n\n        vari[j] = sum * (b / (b * b - a));\n    }\n\n    return vari;\n};\n\nexports.weightedMean = function weightedMean(matrix, weights, dimension) {\n    if (typeof (dimension) === 'undefined') {\n        dimension = 0;\n    }\n    var rows = matrix.length;\n    if (rows === 0) return [];\n    var cols = matrix[0].length,\n        means, i, ii, j, w, row;\n\n    if (dimension === 0) {\n        means = new Array(cols);\n        for (i = 0; i < cols; i++) {\n            means[i] = 0;\n        }\n        for (i = 0; i < rows; i++) {\n            row = matrix[i];\n            w = weights[i];\n            for (j = 0; j < cols; j++) {\n                means[j] += row[j] * w;\n            }\n        }\n    } else if (dimension === 1) {\n        means = new Array(rows);\n        for (i = 0; i < rows; i++) {\n            means[i] = 0;\n        }\n        for (j = 0; j < rows; j++) {\n            row = matrix[j];\n            w = weights[j];\n            for (i = 0; i < cols; i++) {\n                means[j] += row[i] * w;\n            }\n        }\n    } else {\n        throw new Error('Invalid dimension');\n    }\n\n    var weightSum = arrayStat.sum(weights);\n    if (weightSum !== 0) {\n        for (i = 0, ii = means.length; i < ii; i++) {\n            means[i] /= weightSum;\n        }\n    }\n    return means;\n};\n\nexports.weightedCovariance = function weightedCovariance(matrix, weights, means, dimension) {\n    dimension = dimension || 0;\n    means = means || exports.weightedMean(matrix, weights, dimension);\n    var s1 = 0, s2 = 0;\n    for (var i = 0, ii = weights.length; i < ii; i++) {\n        s1 += weights[i];\n        s2 += weights[i] * weights[i];\n    }\n    var factor = s1 / (s1 * s1 - s2);\n    return exports.weightedScatter(matrix, weights, means, factor, dimension);\n};\n\nexports.weightedScatter = function weightedScatter(matrix, weights, means, factor, dimension) {\n    dimension = dimension || 0;\n    means = means || exports.weightedMean(matrix, weights, dimension);\n    if (typeof (factor) === 'undefined') {\n        factor = 1;\n    }\n    var rows = matrix.length;\n    if (rows === 0) {\n        return [[]];\n    }\n    var cols = matrix[0].length,\n        cov, i, j, k, s;\n\n    if (dimension === 0) {\n        cov = new Array(cols);\n        for (i = 0; i < cols; i++) {\n            cov[i] = new Array(cols);\n        }\n        for (i = 0; i < cols; i++) {\n            for (j = i; j < cols; j++) {\n                s = 0;\n                for (k = 0; k < rows; k++) {\n                    s += weights[k] * (matrix[k][j] - means[j]) * (matrix[k][i] - means[i]);\n                }\n                cov[i][j] = s * factor;\n                cov[j][i] = s * factor;\n            }\n        }\n    } else if (dimension === 1) {\n        cov = new Array(rows);\n        for (i = 0; i < rows; i++) {\n            cov[i] = new Array(rows);\n        }\n        for (i = 0; i < rows; i++) {\n            for (j = i; j < rows; j++) {\n                s = 0;\n                for (k = 0; k < cols; k++) {\n                    s += weights[k] * (matrix[j][k] - means[j]) * (matrix[i][k] - means[i]);\n                }\n                cov[i][j] = s * factor;\n                cov[j][i] = s * factor;\n            }\n        }\n    } else {\n        throw new Error('Invalid dimension');\n    }\n\n    return cov;\n};\n","'use strict';\n\nexports.array = require('./array');\nexports.matrix = require('./matrix');\n","'use strict';\n\nvar COMMON_NO = 0;\nvar COMMON_FIRST = 1;\nvar COMMON_SECOND = 2;\nvar COMMON_BOTH = 3; // should be a binary operation !\n\nvar Stat = require('ml-stat').array;\n\n/**\n * Create a comparator class\n * {object} [options={}]\n * {string} [options.common=''] should we take only common peaks 'first', 'second', 'both', ''\n * {number} [options.widthBottom=2] bottom trapezoid width for similarity evaluation\n * {number} [options.widthTop=1] top trapezoid width for similarity evaluation\n * {number} [options.from] from region used for similarity calculation\n * {number} [options.to] to region used for similarity calculation\n */\n\nmodule.exports = function Comparator(options = {}) {\n  var widthTop, widthBottom, from, to;\n  var array1Extract, array2Extract, widthSlope, array1ExtractInfo, array2ExtractInfo;\n  var common, commonFactor;\n\n  setOptions(options);\n\n  var array1 = [];\n  var array2 = [];\n\n  /*\n     2 formats are allowed:\n     [[x1,x2,...],[y1,y2,...]] or [[x1,y1],[x2,y2], ...]\n    */\n\n  function setOptions(newOptions) {\n    options = newOptions || {};\n    if (typeof options.common === 'string') {\n      if (options.common.toLowerCase() === 'first') {\n        common = COMMON_FIRST;\n      } else if (options.common.toLowerCase() === 'second') {\n        common = COMMON_SECOND;\n      } else if (options.common.toLowerCase() === 'both') {\n        common = COMMON_BOTH;\n      } else {\n        common = COMMON_NO;\n      }\n    } else {\n      if (options.common === true) {\n        common = COMMON_BOTH;\n      } else {\n        common = COMMON_NO;\n      }\n    }\n    commonFactor = options.commonFactor || commonFactor || 4;\n\n    if (options.widthBottom === undefined) {\n      options.widthBottom = widthBottom || 2;\n    }\n    if (options.widthTop === undefined) {\n      options.widthTop = widthTop || 1;\n    }\n    setTrapezoid(options.widthBottom, options.widthTop);\n    setFromTo(options.from || from, options.to || to);\n  }\n\n  function setPeaks1(anArray) {\n    array1 = checkArray(anArray);\n\n    if (common) {\n      var extracts = commonExtractAndNormalize(array1, array2, widthBottom, from, to, common);\n      array1Extract = extracts.data1;\n      array1ExtractInfo = extracts.info1;\n      array2Extract = extracts.data2;\n      array2ExtractInfo = extracts.info2;\n    } else {\n      var extract = extractAndNormalize(array1, from, to);\n      array1Extract = extract.data;\n      array1ExtractInfo = extract.info;\n    }\n  }\n  function setPeaks2(anArray) {\n    array2 = checkArray(anArray);\n    if (common) {\n      var extracts = commonExtractAndNormalize(array1, array2, widthBottom, from, to, common);\n      array1Extract = extracts.data1;\n      array1ExtractInfo = extracts.info1;\n      array2Extract = extracts.data2;\n      array2ExtractInfo = extracts.info2;\n    } else {\n      var extract = extractAndNormalize(array2, from, to);\n      array2Extract = extract.data;\n      array2ExtractInfo = extract.info;\n    }\n  }\n\n  function getExtract1() {\n    return array1Extract;\n  }\n\n  function getExtract2() {\n    return array2Extract;\n  }\n\n\n  function getExtractInfo1() {\n    return array1ExtractInfo;\n  }\n\n  function getExtractInfo2() {\n    return array2ExtractInfo;\n  }\n\n  function setTrapezoid(newWidthBottom, newWidthTop) {\n    widthTop = newWidthTop;\n    widthBottom = newWidthBottom;\n    widthSlope = (widthBottom - widthTop) / 2;\n    if (widthBottom < widthTop) throw new Error('widthBottom has to be larger than widthTop');\n  }\n\n  function setFromTo(newFrom, newTo) {\n    if (newFrom === from && newTo === to) return;\n    from = newFrom;\n    to = newTo;\n    if (common) {\n      var extracts = commonExtractAndNormalize(array1, array2, widthBottom, from, to, common, commonFactor);\n      array1Extract = extracts.data1;\n      array1ExtractInfo = extracts.info1;\n      array2Extract = extracts.data2;\n      array2ExtractInfo = extracts.info2;\n    } else {\n      var extract = extractAndNormalize(array1, from, to);\n      array1Extract = extract.data;\n      array1ExtractInfo = extract.info;\n      extract = extractAndNormalize(array2, from, to);\n      array2Extract = extract.data;\n      array2ExtractInfo = extract.info;\n    }\n  }\n\n\n  function getOverlap(x1, y1, x2, y2) {\n    if (y1 === 0 || y2 === 0) return 0;\n\n    // TAKE CARE !!! We multiply the diff by 2 !!!\n    var diff = Math.abs(x1 - x2) * 2;\n\n    if (diff > widthBottom) return 0;\n    if (diff <= widthTop) {\n      return Math.min(y1, y2);\n    }\n\n    var maxValue = Math.max(y1, y2) * (widthBottom - diff) / (widthBottom - widthTop);\n    return Math.min(y1, y2, maxValue);\n  }\n\n  // This is the old trapezoid similarity\n  function getOverlapTrapezoid(x1, y1, x2, y2) {\n    var factor = 2 / (widthTop + widthBottom); // correction for surface=1\n    if (y1 === 0 || y2 === 0) return 0;\n    if (x1 === x2) { // they have the same position\n      return Math.min(y1, y2);\n    }\n\n    var diff = Math.abs(x1 - x2);\n    if (diff >= widthBottom) return 0;\n    if (y1 === y2) { // do they have the same height ???\n      // we need to find the common length\n      if (diff <= widthTop) {\n        return (((widthTop + widthBottom) / 2 - diff) * y1) * factor;\n      } else if (diff <= widthBottom) {\n        return (widthBottom - diff) * y1 / 2 * (diff - widthTop) / (widthBottom - widthTop) * factor;\n      }\n      return 0;\n    } else { // the height are different and not the same position ...\n      // we need to consider only one segment to find its intersection\n\n      var small = Math.min(y1, y2);\n      var big = Math.max(y1, y2);\n\n      var targets = [\n        [[0, 0], [widthSlope, small]],\n        [[widthSlope, small], [widthSlope + widthTop, small]],\n        [[widthTop + widthSlope, small], [widthBottom, 0]]\n      ];\n      var segment;\n      if ((x1 > x2 && y1 > y2) || (x1 < x2 && y1 < y2)) {\n        segment = [[diff, 0], [diff + widthSlope, big]];\n      } else {\n        segment = [[diff + widthSlope, big], [diff, 0]];\n      }\n\n\n      for (var i = 0; i < 3; i++) {\n        var intersection = getIntersection(targets[i], segment);\n        if (intersection) {\n          switch (i) {\n            case 0:\n              return small - ((diff * intersection.y / 2)) * factor;\n            case 1: // to simplify ...\n              //     console.log(\"           \",widthSlope,small,big,intersection.x)\n              return ((widthSlope * small / (2 * big)) * small +\n                                (widthTop + widthSlope - intersection.x) * small +\n                                widthSlope * small / 2) * factor;\n            case 2:\n              return ((widthBottom - diff) * intersection.y / 2) * factor;\n            default:\n              throw new Error(`unexpected intersection value: ${i}`);\n          }\n        }\n      }\n    }\n    return NaN;\n  }\n\n\n  // this method calculates the total diff. The sum of positive value will yield to overlap\n  function calculateDiff() {\n    // we need to take 2 pointers\n    // and travel progressively between them ...\n    var newFirst = [\n      [].concat(array1Extract[0]),\n      [].concat(array1Extract[1])\n    ];\n    var newSecond = [\n      [].concat(array2Extract[0]),\n      [].concat(array2Extract[1])\n    ];\n    var array1Length = array1Extract[0] ? array1Extract[0].length : 0;\n    var array2Length = array2Extract[0] ? array2Extract[0].length : 0;\n\n    var pos1 = 0;\n    var pos2 = 0;\n    var previous2 = 0;\n    while (pos1 < array1Length) {\n      var diff = newFirst[0][pos1] - array2Extract[0][pos2];\n      if (Math.abs(diff) < widthBottom) { // there is some overlap\n        var overlap;\n        if (options.trapezoid) {\n          overlap = getOverlapTrapezoid(newFirst[0][pos1], newFirst[1][pos1], newSecond[0][pos2], newSecond[1][pos2], widthTop, widthBottom);\n        } else {\n          overlap = getOverlap(newFirst[0][pos1], newFirst[1][pos1], newSecond[0][pos2], newSecond[1][pos2], widthTop, widthBottom);\n        }\n        newFirst[1][pos1] -= overlap;\n        newSecond[1][pos2] -= overlap;\n        if (pos2 < (array2Length - 1)) {\n          pos2++;\n        } else {\n          pos1++;\n          pos2 = previous2;\n        }\n      } else {\n        if (diff > 0 && pos2 < (array2Length - 1)) {\n          pos2++;\n          previous2 = pos2;\n        } else {\n          pos1++;\n          pos2 = previous2;\n        }\n      }\n    }\n    return newSecond;\n  }\n\n\n  /*\n        This code requires the use of an array like  [[x1,y1],[x2,y2], ...]\n        If it is not the right format, we will just convert it\n        Otherwise we return the correct format\n     */\n  function checkArray(points) {\n    // if it is already a 2D array of points, we just return them\n    if (Array.isArray(points) && Array.isArray(points[0]) && points.length === 2) return points;\n    var x = new Array(points.length);\n    var y = new Array(points.length);\n    for (var i = 0; i < points.length; i++) {\n      x[i] = points[i][0];\n      y[i] = points[i][1];\n    }\n    return [x, y];\n  }\n\n  function getSimilarity(newPeaks1, newPeaks2) {\n    if (newPeaks1) setPeaks1(newPeaks1);\n    if (newPeaks2) setPeaks2(newPeaks2);\n    var result = {};\n    result.diff = calculateDiff();\n    result.extract1 = getExtract1();\n    result.extract2 = getExtract2();\n    result.extractInfo1 = getExtractInfo1();\n    result.extractInfo2 = getExtractInfo2();\n    result.similarity = calculateOverlapFromDiff(result.diff);\n    result.widthBottom = widthBottom;\n    result.widthTop = widthTop;\n    return result;\n  }\n\n  /*\n    This works mainly when you have a array1 that is fixed\n    newPeaks2 have to be normalized ! (sum to 1)\n  */\n  function fastSimilarity(newPeaks2, from, to) {\n    array1Extract = extract(array1, from, to);\n    array2Extract = newPeaks2;\n    if (common & COMMON_SECOND) array1Extract = getCommonArray(array1Extract, array2Extract, widthBottom);\n    normalize(array1Extract);\n    var diff = calculateDiff();\n    return calculateOverlapFromDiff(diff);\n  }\n\n\n  this.setPeaks1 = setPeaks1;\n  this.setPeaks2 = setPeaks2;\n  this.getExtract1 = getExtract1;\n  this.getExtract2 = getExtract2;\n  this.getExtractInfo1 = getExtractInfo1;\n  this.getExtractInfo2 = getExtractInfo2;\n  this.setFromTo = setFromTo;\n  this.setOptions = setOptions;\n  this.setTrapezoid = setTrapezoid;\n  this.getSimilarity = getSimilarity;\n  this.getCommonArray = getCommonArray;\n\n  this.fastSimilarity = fastSimilarity;\n};\n\n\n// returns an new array based on array1 where there is a peak of array2 at a distance under width/2\nfunction getCommonArray(array1, array2, width) {\n  var newArray = [[], []];\n  var pos2 = 0;\n  width /= 2;\n  var j = 0;\n  var array1Length = array1[0] ? array1[0].length : 0;\n  var array2Length = array2[0] ? array2[0].length : 0;\n\n  for (var i = 0; i < array1Length; i++) {\n    while (pos2 < array2Length && (array1[0][i] > (array2[0][pos2] + width))) {\n      pos2++;\n    }\n    if ((pos2 < array2Length) && (array1[0][i] > array2[0][pos2] - width)) {\n      newArray[0][j] = array1[0][i];\n      newArray[1][j] = array1[1][i];\n      j++;\n    }\n  }\n  return newArray;\n}\n\n\n// Adapted from: http://stackoverflow.com/questions/563198/how-do-you-detect-where-two-line-segments-intersect/1968345#1968345\nfunction getIntersection(segment1, segment2) {\n  var p0X = segment1[0][0];\n  var p0Y = segment1[0][1];\n  var p1X = segment1[1][0];\n  var p1Y = segment1[1][1];\n  var p2X = segment2[0][0];\n  var p2Y = segment2[0][1];\n  var p3X = segment2[1][0];\n  var p3Y = segment2[1][1];\n\n  var s1X, s1Y, s2X, s2Y;\n  s1X = p1X - p0X;\n  s1Y = p1Y - p0Y;\n  s2X = p3X - p2X;\n  s2Y = p3Y - p2Y;\n  var s, t;\n  s = (-s1Y * (p0X - p2X) + s1X * (p0Y - p2Y)) / (-s2X * s1Y + s1X * s2Y);\n  t = (s2X * (p0Y - p2Y) - s2Y * (p0X - p2X)) / (-s2X * s1Y + s1X * s2Y);\n  if (s >= 0 && s <= 1 && t >= 0 && t <= 1) {\n    return {\n      x: p0X + (t * s1X),\n      y: p0Y + (t * s1Y)\n    };\n  }\n  return null; // No collision\n}\n\nfunction normalize(array) {\n  var min = Stat.min(array[1]);\n  var max = Stat.max(array[1]);\n  var sum = Stat.sum(array[1]);\n  var length = array[1] ? array[1].length : 0;\n  if (sum !== 0) {\n    for (var i = 0; i < length; i++) {\n      array[1][i] /= sum;\n    }\n  }\n  return {\n    sum: sum,\n    min: min,\n    max: max\n  };\n}\n\n// this method will systematically take care of both array\nfunction commonExtractAndNormalize(array1, array2, width, from, to, common) {\n  if (!(Array.isArray(array1)) || !(Array.isArray(array2))) {\n    return {\n      info: undefined,\n      data: undefined\n    };\n  }\n  var extract1 = extract(array1, from, to);\n  var extract2 = extract(array2, from, to);\n  var common1, common2, info1, info2;\n  if (common & COMMON_SECOND) {\n    common1 = getCommonArray(extract1, extract2, width);\n    info1 = normalize(common1);\n  } else {\n    common1 = extract1;\n    info1 = normalize(common1);\n  }\n  if (common & COMMON_FIRST) {\n    common2 = getCommonArray(extract2, extract1, width);\n    info2 = normalize(common2);\n  } else {\n    common2 = extract2;\n    info2 = normalize(common2);\n  }\n\n  return {\n    info1: info1,\n    info2: info2,\n    data1: common1,\n    data2: common2\n  };\n}\n\nfunction extract(array, from, to) {\n  var newArray = [[], []];\n  var j = 0;\n  var length = array[0] ? array[0].length : 0;\n  for (var i = 0; i < length; i++) {\n    if ((!from || array[0][i] >= from) && (!to || array[0][i] <= to)) {\n      newArray[0][j] = array[0][i];\n      newArray[1][j] = array[1][i];\n      j++;\n    }\n  }\n  return newArray;\n}\n\nfunction extractAndNormalize(array, from, to) {\n  if (!(Array.isArray(array))) {\n    return {\n      info: undefined,\n      data: undefined\n    };\n  }\n  var newArray = extract(array, from, to);\n  var info = normalize(newArray);\n  return {\n    info: info,\n    data: newArray\n  };\n}\n\nfunction calculateOverlapFromDiff(diffs) {\n  if (diffs[1].length === 0) return 0;\n  var sumPos = 0;\n  for (var i = 0; i < diffs[1].length; i++) {\n    sumPos += Math.abs(diffs[1][i]);\n  }\n  return 1 - sumPos;\n}\n","'use strict';\n\nconst IsotopicDistribution = require('isotopic-distribution');\nconst Similarity = require('peaks-similarity');\n/**\nSearch for an experimental monoisotopic mass and calculate the similarity\n* @param {object}   [options={}]\n* @param {array}    [options.databases] - an array containing the name of the databases so search, by default all\n* @param {boolean}  [options.flatten] - should we return the array as a flat result\n* @param {string}   [options.ionizations=''] - Comma separated list of ionizations (to charge the molecule)\n* @param {object}   [options.minSimilarity=0.5] - min similarity value\n\n* @param {object}   [options.filter={}]\n* @param {boolean}  [options.filter.forceIonization=false] - If true ignore existing ionizations\n* @param {number}   [options.filter.msem] - Observed monoisotopic mass in mass spectrometer\n* @param {number}   [options.filter.precision=1000] - The precision on the experimental mass\n* @param {number}   [options.filter.minCharge=-Infinity] - Minimal charge\n* @param {number}   [options.filter.maxCharge=+Infinity] - Maximal charge\n* @param {object}   [options.filter.unsaturation={}}]\n* @param {number}   [options.filter.unsaturation.min=-Infinity] - Minimal unsaturation\n* @param {number}   [options.filter.unsaturation.max=+Infinity] - Maximal unsaturation\n* @param {number}   [options.filter.unsaturation.onlyInteger=false] - Integer unsaturation\n* @param {number}   [options.filter.unsaturation.onlyNonInteger=false] - Non integer unsaturation\n* @param {object}   [options.filter.atoms] - object of atom:{min, max}\n* @param {object}   [options.filter.callback] - a function to filter the MF\n* @param {object}   [options.similarity={}]\n* @param {object}   [options.similarity.widthBottom]\n* @param {object}   [options.similarity.widthTop]\n* @param {object}   [options.similarity.widthFunction] - function called with mass that should return an object width containing top and bottom\n* @param {object}   [options.similarity.zone={}]\n* @param {object}   [options.similarity.zone.low=-0.5] - window shift based on observed monoisotopic mass\n* @param {object}   [options.similarity.zone.high=2.5] - to value for the comparison window\n* @param {object}   [options.similarity.common]\n*/\n\nmodule.exports = function searchSimilarity(options = {}) {\n  const { similarity = {}, minSimilarity = 0.5, filter = {} } = options;\n\n  let width = {\n    bottom: similarity.widthBottom,\n    top: similarity.widthTop,\n  };\n\n  if (\n    !this.experimentalSpectrum ||\n    !this.experimentalSpectrum.data.x.length > 0\n  ) {\n    throw Error(\n      'You need to add an experimental spectrum first using setMassSpectrum',\n    );\n  }\n\n  let experimentalData = this.experimentalSpectrum.data;\n  let sumY = this.experimentalSpectrum.sumY();\n\n  // the result of this query will be stored in a property 'ms'\n\n  let results = this.searchMSEM(filter.msem, options);\n  let flatEntries = [];\n  if (!options.flatten) {\n    for (let database of Object.keys(results)) {\n      for (let entry of results[database]) {\n        flatEntries.push(entry);\n      }\n    }\n  } else {\n    flatEntries = results;\n  }\n\n  let { widthFunction, zone = {} } = similarity;\n\n  if (widthFunction && typeof widthFunction === 'string') {\n    // eslint-disable-next-line no-new-func\n    widthFunction = new Function('mass', widthFunction);\n    let checkTopBottom = widthFunction(123);\n    if (!checkTopBottom.bottom || !checkTopBottom.top) {\n      throw Error(\n        'widthFunction should return an object with bottom and top properties',\n      );\n    }\n  }\n  const { low = -0.5, high = 2.5 } = zone;\n\n  // we need to calculate the similarity of the isotopic distribution\n  let similarityProcessor = new Similarity(similarity);\n  similarityProcessor.setPeaks1([experimentalData.x, experimentalData.y]);\n\n  for (let entry of flatEntries) {\n    let isotopicDistribution = new IsotopicDistribution(entry.mf, {\n      allowNeutral: false,\n      ionizations: [entry.ionization],\n    });\n\n    let distribution = isotopicDistribution.getDistribution();\n    // we need to define the comparison zone that depends of the charge\n    let from = entry.ms.em + low / Math.abs(entry.ms.charge);\n    let to = entry.ms.em + high / Math.abs(entry.ms.charge);\n    similarityProcessor.setFromTo(from, to);\n\n    if (widthFunction) {\n      width = widthFunction(entry.ms.em);\n      similarityProcessor.setTrapezoid(width.bottom, width.top);\n    }\n    similarityProcessor.setPeaks2([distribution.xs, distribution.ys]);\n    let result = similarityProcessor.getSimilarity();\n\n    result.extractInfo1.from = from;\n    result.extractInfo1.to = to;\n\n    if (result.similarity > minSimilarity) {\n      entry.ms.similarity = {\n        value: result.similarity,\n        experimental: result.extract1,\n        theoretical: result.extract2,\n        difference: result.diff,\n        experimentalInfo: result.extractInfo1,\n        thereoticalInfo: result.extractInfo2,\n        quantity: result.extractInfo1.sum / sumY,\n        width,\n      };\n    }\n  }\n\n  if (!options.flatten) {\n    for (let database of Object.keys(results)) {\n      results[database] = results[database]\n        .filter((entry) => entry.ms.similarity)\n        .sort((a, b) => b.ms.similarity.value - a.ms.similarity.value);\n      for (let entry of results[database]) {\n        flatEntries.push(entry);\n      }\n    }\n  } else {\n    results = results\n      .filter((entry) => entry.ms.similarity)\n      .sort((a, b) => b.ms.similarity.value - a.ms.similarity.value);\n  }\n\n  return results;\n};\n","'use strict';\n\nconst { Spectrum } = require('ms-spectrum');\n\nconst loadCommercialsPromise = require('./loadCommercials.js');\nconst loadGoogleSheetPromise = require('./loadGoogleSheet.js');\nconst loadKnapSackPromise = require('./loadKnapSack.js');\n\nfunction DBManager() {\n  this.databases = {};\n  this.experimentalSpectrum = undefined;\n}\n\nDBManager.prototype.setExperimentalSpectrum = function setExperimentalSpectrum(\n  data,\n) {\n  this.experimentalSpectrum = new Spectrum(data).normedY();\n};\n\n/**\n * Add a new database using the KnapSack content\n * @param {*} options\n */\nDBManager.prototype.loadKnapSack = async function loadKnapSack(options = {}) {\n  const { databaseName = 'knapSack', forceReload = false } = options;\n  if (this.databases[databaseName] && !forceReload) return;\n  this.databases[databaseName] = await loadKnapSackPromise();\n};\n\n/**\n * Add a new database of 12000 commercial products\n * @param {*} options\n */\nDBManager.prototype.loadCommercials = async function loadCommercials(\n  options = {},\n) {\n  const { databaseName = 'commercials', forceReload = false } = options;\n  if (this.databases[databaseName] && !forceReload) return;\n  this.databases[databaseName] = await loadCommercialsPromise();\n};\n\nDBManager.prototype.get = function get(databaseName) {\n  return this.databases[databaseName];\n};\n\n/**\n * Load the contaminants databvase from a google sheet document\n * @param {*} options\n * @param {string} ['contaminants'] databaseName\n */\nDBManager.prototype.loadContaminants = async function loadContaminants(\n  options = {},\n) {\n  const { databaseName = 'contaminants', forceReload = false } = options;\n  if (this.databases[databaseName] && !forceReload) return;\n  this.databases[databaseName] = await loadGoogleSheetPromise();\n};\n\n/**\n * Load a google sheet containin\n * @param {*} options\n * @param {string} ['sheet'] databaseName\n */\n\nDBManager.prototype.loadGoogleSheet = async function loadGoogleSheet(\n  options = {},\n) {\n  const { databaseName = 'sheet', forceReload = false } = options;\n  if (this.databases[databaseName] && !forceReload) return;\n  this.databases[databaseName] = await loadGoogleSheetPromise();\n};\n\nDBManager.prototype.loadTest = function loadTest() {\n  this.fromArray(['C1-100'], { databaseName: 'test', ionizations: '+' });\n};\n\nDBManager.prototype.loadNeutralTest = function loadNeutralTest(options = {}) {\n  const { maxC = 100 } = options;\n  this.fromArray([`C1-${maxC}`], { databaseName: 'test' });\n};\n\nDBManager.prototype.fromMonoisotopicMass = function fromMonoisotopicMass(\n  mass,\n  options = {},\n) {\n  const { databaseName = 'monoisotopic', append = false } = options;\n  let result = require('./fromMonoisotopicMass')(mass, options);\n  replaceOrAppend(this, databaseName, result.mfs, append);\n  return result;\n};\n\nDBManager.prototype.fromArray = function fromArray(sequence, options = {}) {\n  const { databaseName = 'generated', append = false, estimate } = options;\n  const results = require('./fromArray')(sequence, options);\n  if (estimate) return results;\n  replaceOrAppend(this, databaseName, results, append);\n};\n\nDBManager.prototype.fromRange = function fromRange(sequence, options = {}) {\n  const { databaseName = 'generated', append = false, estimate } = options;\n  const results = require('./fromRange')(sequence, options);\n  if (estimate) return results;\n  replaceOrAppend(this, databaseName, results, append);\n};\n\nDBManager.prototype.fromPeptidicSequence = function fromPeptidicSequence(\n  sequence,\n  options = {},\n) {\n  const { databaseName = 'peptidic', append = false, estimate } = options;\n  const results = require('./fromPeptidicSequence')(sequence, options);\n  if (estimate) return results;\n  replaceOrAppend(this, databaseName, results, append);\n};\n\nDBManager.prototype.fromNucleicSequence = function fromNucleicSequence(\n  sequence,\n  options = {},\n) {\n  const { databaseName = 'nucleic', append = false, estimate } = options;\n  const results = require('./fromNucleicSequence')(sequence, options);\n  if (estimate) return results;\n  replaceOrAppend(this, databaseName, results, append);\n};\n\nDBManager.prototype.listDatabases = function listDatabases() {\n  return Object.keys(this.databases).sort();\n};\n\nDBManager.prototype.getInfo = function getInfo() {\n  return {\n    databases: Object.keys(this.databases)\n      .sort()\n      .map((key) => {\n        return { name: key, nbEntries: this.databases[key].length };\n      }),\n  };\n};\n\nDBManager.prototype.massShifts = require('./massShifts');\nDBManager.prototype.search = require('./search');\nDBManager.prototype.searchMSEM = require('./searchMSEM');\nDBManager.prototype.searchPubchem = require('./searchPubchem');\nDBManager.prototype.searchSimilarity = require('./searchSimilarity');\n\nmodule.exports = DBManager;\n\nfunction replaceOrAppend(emdb, databaseName, results, append = false) {\n  if (!emdb.databases[databaseName] || !append) {\n    emdb.databases[databaseName] = results;\n    return;\n  }\n  emdb.databases[databaseName] = emdb.databases[databaseName].concat(results);\n}\n\nDBManager.Peptide = require('peptide');\nDBManager.Nucleotide = require('nucleotide');\nDBManager.MFParser = require('mf-parser');\nDBManager.IsotopicDistribution = require('isotopic-distribution');\n","'use strict';\n\n// SOURCE: https://en.wikipedia.org/wiki/Amino_acid\n// Link for UTF8 code for modified: https://codepoints.net/search?sc=Grek\nmodule.exports = [\n  // Standard amino acids\n  {\n    name: 'Alanine',\n    aa3: 'Ala',\n    aa1: 'A',\n    sc: {\n      type: 'hydrophobic',\n    },\n    pKaC: 2.33,\n    pKaN: 9.71,\n  },\n  {\n    name: 'Arginine',\n    aa3: 'Arg',\n    aa1: 'R',\n    sc: {\n      type: 'positive',\n      pKa: 12.1,\n    },\n    pKaC: 2.03,\n    pKaN: 9.0,\n  },\n  {\n    name: 'Asparagine',\n    aa3: 'Asn',\n    aa1: 'N',\n    sc: {\n      type: 'polar',\n    },\n    pKaC: 2.13,\n    pKaN: 9.05,\n  },\n  {\n    name: 'Aspartic acid',\n    aa3: 'Asp',\n    aa1: 'D',\n    sc: {\n      type: 'negative',\n      pKa: 3.71,\n    },\n    pKaC: 1.95,\n    pKaN: 9.66,\n  },\n  {\n    name: 'Cysteine',\n    aa3: 'Cys',\n    aa1: 'C',\n    sc: {\n      type: 'special',\n      pKa: 8.14,\n    },\n    pKaC: 1.91,\n    pKaN: 10.28,\n  },\n  {\n    name: 'Glutamic acid',\n    aa3: 'Glu',\n    aa1: 'E',\n    sc: {\n      type: 'negative',\n      pKa: 4.15,\n    },\n    pKaC: 2.16,\n    pKaN: 9.58,\n  },\n  {\n    name: 'Glutamine',\n    aa3: 'Gln',\n    aa1: 'Q',\n    sc: {\n      type: 'polar',\n    },\n    pKaC: 2.18,\n    pKaN: 9.0,\n  },\n  {\n    name: 'Glycine',\n    aa3: 'Gly',\n    aa1: 'G',\n    sc: {\n      type: 'special',\n    },\n    pKaC: 2.34,\n    pKaN: 9.58,\n  },\n  {\n    name: 'Histidine',\n    aa3: 'His',\n    aa1: 'H',\n    sc: {\n      type: 'positive',\n      pKa: 6.04,\n    },\n    pKaC: 1.7,\n    pKaN: 9.09,\n  },\n  {\n    name: 'Isoleucine',\n    aa3: 'Ile',\n    aa1: 'I',\n    sc: {\n      type: 'hydrophobic',\n    },\n    pKaC: 2.26,\n    pKaN: 9.6,\n  },\n  {\n    name: 'Leucine',\n    aa3: 'Leu',\n    aa1: 'L',\n    sc: {\n      type: 'hydrophobic',\n    },\n    pKaC: 2.32,\n    pKaN: 9.58,\n  },\n  {\n    name: 'Lysine',\n    aa3: 'Lys',\n    aa1: 'K',\n    sc: {\n      type: 'positive',\n      pKa: 10.67,\n    },\n    pKaC: 2.15,\n    pKaN: 9.16,\n  },\n  {\n    name: 'Methionine',\n    aa3: 'Met',\n    aa1: 'M',\n    sc: {\n      type: 'hydrophobic',\n    },\n    pKaC: 2.16,\n    pKaN: 9.08,\n  },\n  {\n    name: 'Phenylalanine',\n    aa3: 'Phe',\n    aa1: 'F',\n    sc: {\n      type: 'hydrophobic',\n    },\n    pKaC: 2.18,\n    pKaN: 9.09,\n  },\n  {\n    name: 'Proline',\n    aa3: 'Pro',\n    aa1: 'P',\n    sc: {\n      type: 'special',\n    },\n    pKaC: 1.95,\n    pKaN: 10.47,\n  },\n  {\n    name: 'Serine',\n    aa3: 'Ser',\n    aa1: 'S',\n    sc: {\n      type: 'polar',\n    },\n    pKaC: 2.13,\n    pKaN: 9.05,\n  },\n  {\n    name: 'Threonine',\n    aa3: 'Thr',\n    aa1: 'T',\n    sc: {\n      type: 'polar',\n    },\n    pKaC: 2.2,\n    pKaN: 8.96,\n  },\n  {\n    name: 'Tryptophan',\n    aa3: 'Trp',\n    aa1: 'W',\n    sc: {\n      type: 'hydrophobic',\n    },\n    pKaC: 2.38,\n    pKaN: 9.34,\n  },\n  {\n    name: 'Tyrosine',\n    aa3: 'Tyr',\n    aa1: 'Y',\n    sc: {\n      type: 'hydrophobic',\n    },\n    pKaC: 2.24,\n    pKaN: 9.04,\n  },\n  {\n    name: 'Valine',\n    aa3: 'Val',\n    aa1: 'V',\n    sc: {\n      type: 'hydrophobic',\n    },\n    pKaC: 2.27,\n    pKaN: 9.52,\n  },\n  // Additional\n  {\n    name: 'Selenocysteine',\n    aa3: 'Sec',\n    aa1: 'U',\n  },\n  {\n    name: 'Pyrrolysine',\n    aa3: 'Pyl',\n    aa1: 'O',\n  },\n  // Ambiguous\n  {\n    name: 'Asparagine or aspartic acid',\n    aa3: 'Asx',\n    aa1: 'B',\n  },\n  {\n    name: 'Glutamine or glutamic acid',\n    aa3: 'Glx',\n    aa1: 'Z',\n  },\n  {\n    name: 'Leucine or isoleucine',\n    aa3: 'Xle',\n    aa1: 'J',\n  },\n  {\n    name: 'Unspecified or unknown',\n    aa3: 'Xaa',\n    aa1: 'X',\n  },\n];\n","'use strict';\n\nlet aa = require('./aminoAcids');\n\n// we will convert the data to an object to be much faster\nlet aaObject = {};\nfor (let i = 0; i < aa.length; i++) {\n  aaObject[aa[i].aa3] = aa[i];\n}\n\nfunction calculateCharge(aas, pH) {\n  if (!pH) pH = 7.0;\n  let combined = combine(aas);\n  if (!combined) return;\n  let charge = calculateForPh(combined, pH);\n  return Math.round(charge * 1000) / 1000;\n}\n\n// this methods required an array of aas\n\nfunction calculateIEP(aas) {\n  let combined = combine(aas);\n  if (!combined) return;\n  let first = 0;\n  let last = 14;\n  let current = 14;\n  let previous = 0;\n  let currentCharge;\n  while (Math.abs(current - previous) > 0.0001) {\n    previous = current;\n    current = (last + first) / 2;\n    currentCharge = calculateForPh(combined, current);\n    if (currentCharge > 0) {\n      first = current;\n    } else if (currentCharge < 0) {\n      last = current;\n    } else {\n      previous = current;\n    }\n  }\n  return Math.round(current * 1000) / 1000;\n}\n\nfunction calculateChart(aas) {\n  let combined = combine(aas);\n  if (!combined) return;\n  let y = [];\n  let x = [];\n  let yAbs = [];\n  for (let i = 0; i <= 14; i = i + 0.01) {\n    let charge = calculateForPh(combined, i);\n    x.push(i);\n    y.push(charge);\n    yAbs.push(Math.abs(charge));\n  }\n  combined.x = x;\n  combined.y = y;\n  combined.yAbs = yAbs;\n\n  return combined;\n}\n\nfunction calculateForPh(combined, pH) {\n  let total = 0;\n  total += 1 / (1 + Math.pow(10, pH - combined.first));\n  total += -1 / (1 + Math.pow(10, combined.last - pH));\n  for (let key in combined.acid) {\n    total +=\n      -combined.acid[key] / (1 + Math.pow(10, aaObject[key].sc.pKa - pH));\n  }\n  for (let key in combined.basic) {\n    total +=\n      combined.basic[key] / (1 + Math.pow(10, pH - aaObject[key].sc.pKa));\n  }\n  return total;\n}\n\n// we will combine the amino acids\nfunction combine(aas) {\n  let combined = {};\n  if (aaObject[aas[0]]) {\n    combined.first = aaObject[aas[0]].pKaN;\n  } else {\n    return;\n  }\n  if (aaObject[aas[aas.length - 1]]) {\n    combined.last = aaObject[aas[aas.length - 1]].pKaC;\n  } else {\n    return;\n  }\n  combined.basic = {};\n  combined.acid = {};\n  for (let i = 0; i < aas.length; i++) {\n    let aa = aas[i];\n    if (!aaObject[aa]) return;\n    if (aaObject[aa].sc && aaObject[aa].sc.type) {\n      if (aaObject[aa].sc.type === 'positive') {\n        if (!combined.basic[aa]) {\n          combined.basic[aa] = 0;\n        }\n        combined.basic[aa]++;\n      } else if (aaObject[aa].sc.type === 'negative') {\n        if (!combined.acid[aa]) {\n          combined.acid[aa] = 0;\n        }\n        combined.acid[aa]++;\n      }\n    }\n  }\n  return combined;\n}\n\n/*\n We can generate a color based on iep\n 0 -> 7 means that at pH 7 it is charged negatively (blue)\n 7 -> 14 means that at pH7 it is charged positively (red)\n */\nfunction getColor(iep) {\n  if (iep < 7) {\n    if (iep < 3) iep = 3;\n    let white = Math.round(255 - (7 - iep) * (200 / 4));\n    return `rgb(${white},${white},255)`;\n  } else if (iep > 7) {\n    if (iep > 11) iep = 11;\n    let white = Math.round(255 - (iep - 7) * (200 / 4));\n    return `rgb(255,${white},${white})`;\n  }\n  return 'rgb(255,255,255)';\n}\n\nmodule.exports = {\n  calculateIEP: calculateIEP,\n  calculateCharge: calculateCharge,\n  calculateChart: calculateChart,\n  getColor: getColor,\n};\n","'use strict';\n\nlet aa = require('./aminoAcids');\n\nfunction getAA(code) {\n  if (code.length === 1) {\n    for (let i = 0; i < aa.length; i++) {\n      if (aa[i].aa1 === code) {\n        return aa[i];\n      }\n    }\n  }\n  if (code.length === 3) {\n    for (let i = 0; i < aa.length; i++) {\n      if (aa[i].aa3 === code) {\n        return aa[i];\n      }\n    }\n  }\n}\n\nmodule.exports = getAA;\n","'use strict';\n\nlet getAA = require('./getAA');\n\n// SOURCE: https://en.wikipedia.org/wiki/Amino_acid\n\nfunction chargePeptide(mf, options = {}) {\n  if (options.pH === undefined) options.pH = 0;\n  if (Array.isArray(mf)) {\n    for (let i = 0; i < mf.length; i++) {\n      mf[i] = chargeOnePeptide(mf[i], options);\n    }\n    return mf;\n  } else {\n    return chargeOnePeptide(mf, options);\n  }\n}\n\nfunction chargeOnePeptide(mf, options) {\n  let pH = options.pH;\n  // we will allow to charge the peptide at a specific pH\n\n  // first amino acids (N-terminal)\n  if (mf.match(/^H[A-Z][a-z]{2}/)) {\n    let firstAA = mf.replace(/^H([A-Z][a-z]{2}).*/, '$1');\n    if (getAA(firstAA) && pH < getAA(firstAA).pKaN) {\n      mf = mf.replace(/^H([^+])/, 'H+H$1');\n    }\n  }\n\n  // last amino acids (C-terminal)\n  if (mf.match(/[A-Z][a-z]{2}OH$/)) {\n    let lastAA = mf.replace(/.*([A-Z][a-z]{2})OH$/, '$1');\n    if (getAA(lastAA) && pH > getAA(lastAA).pKaC) {\n      mf = mf.replace(/OH$/, 'O-');\n    }\n  }\n\n  // basic AA\n  if (pH < getAA('Arg').sc.pKa) mf = mf.replace(/(Arg)(?!\\()/g, '$1(H+)');\n  if (pH < getAA('His').sc.pKa) mf = mf.replace(/(His)(?!\\()/g, '$1(H+)');\n  if (pH < getAA('Lys').sc.pKa) mf = mf.replace(/(Lys)(?!\\()/g, '$1(H+)');\n\n  // acid AA\n  if (pH > getAA('Asp').sc.pKa) mf = mf.replace(/(Asp)(?!\\()/g, '$1(H-1-)');\n  if (pH > getAA('Glu').sc.pKa) mf = mf.replace(/(Glu)(?!\\()/g, '$1(H-1-)');\n\n  if (pH > getAA('Cys').sc.pKa) mf = mf.replace(/(Cys)(?!\\()/g, '$1(H-1-)');\n\n  return mf;\n}\n\nmodule.exports = chargePeptide;\n","'use strict';\n\nfunction allowNeutralLoss(mf, options) {\n  if (Array.isArray(mf)) {\n    for (let i = 0; i < mf.length; i++) {\n      mf[i] = allowOneNeutralLoss(mf[i], options);\n    }\n    return mf;\n  } else {\n    return allowOneNeutralLoss(mf, options);\n  }\n}\n\nfunction allowOneNeutralLoss(mf) {\n  mf = mf.replace(/(Ser|Thr|Asp|Glu)(?!\\()/g, '$1(H-2O-1)0-1');\n  mf = mf.replace(/(Arg|Lys|Asn|Gln)(?!\\()/g, '$1(N-1H-3)0-1');\n\n  return mf;\n}\n\nmodule.exports = allowNeutralLoss;\n","'use strict';\n\nfunction splitSequence(sequence) {\n  let aas = sequence.replace(/([A-Z])/g, ' $1').split(/ /);\n  let begin = 0;\n  while (aas[begin] === '' || aas[begin] === 'H') {\n    begin++;\n  }\n  let end = aas.length - 1;\n  while (aas[end] === 'O' || aas[end] === 'H') {\n    end--;\n  }\n  aas = aas.slice(begin, end + 1);\n  return aas;\n}\n\nmodule.exports = splitSequence;\n","'use strict';\n\n/*\nIotuibs:\n* minMissed (default: 0)\n* maxMissed (default: 0)\n* minResidue: 0;\n* maxResidue: infinity\n* enzyme: chymotrypsin, trypsin, glucph4, glucph8, thermolysin, cyanogenbromide : Mandatory, no default value !\n */\n\nfunction digestSequence(sequence, options = {}) {\n  sequence = sequence.replace(/^H([^a-z])/, '$1').replace(/OH$/, '');\n\n  options.enzyme = options.enzyme || 'trypsin';\n  if (options.minMissed === undefined) options.minMissed = 0;\n  if (options.maxMissed === undefined) options.maxMissed = 0;\n  if (options.minResidue === undefined) options.minResidue = 0;\n  if (options.maxResidue === undefined) options.maxResidue = Number.MAX_VALUE;\n  let regexp = getRegexp(options.enzyme);\n  let fragments = sequence\n    .replace(regexp, '$1 ')\n    .split(/ /)\n    .filter((entry) => entry);\n\n  let from = 0;\n  for (let i = 0; i < fragments.length; i++) {\n    let nbResidue = fragments[i]\n      .replace(/([A-Z][a-z][a-z])/g, ' $1')\n      .split(/ /)\n      .filter((entry) => entry).length;\n    fragments[i] = {\n      sequence: fragments[i],\n      nbResidue: nbResidue,\n      from: from,\n      to: from + nbResidue - 1,\n    };\n    from += nbResidue;\n  }\n\n  let results = [];\n\n  for (let i = 0; i < fragments.length - options.minMissed; i++) {\n    for (\n      let j = options.minMissed;\n      j <= Math.min(options.maxMissed, fragments.length - i - 1);\n      j++\n    ) {\n      let fragment = '';\n      let nbResidue = 0;\n      for (let k = i; k <= i + j; k++) {\n        fragment += fragments[k].sequence;\n        nbResidue += fragments[k].nbResidue;\n      }\n      let from = fragments[i].from + 1;\n      let to = fragments[i + j].to + 1;\n      if (\n        fragment &&\n        nbResidue >= options.minResidue &&\n        nbResidue <= options.maxResidue\n      ) {\n        results.push(`H${fragment}OH$D${from}>${to}`);\n      }\n    }\n  }\n\n  return results;\n}\n\nfunction getRegexp(enzyme) {\n  switch (enzyme.toLowerCase().replace(/[^a-z0-9]/g, '')) {\n    case 'chymotrypsin':\n      return /(Phe|Tyr|Trp)(?!Pro)/g;\n    case 'trypsin':\n      return /(Lys|Arg)(?!Pro)/g;\n    case 'lysc':\n      return /(Lys)(?!Pro)/g;\n    case 'glucph4':\n      return /(Glu)(?!Pro|Glu)/g;\n    case 'glucph8':\n      return /(Asp|Glu)(?!Pro|Glu)/g;\n    case 'thermolysin': // N-term of  Leu, Phe, Val, Ile, Ala, Met\n      return /()(?=Ile|Leu|Val|Ala|Met|Phe)/g;\n    case 'cyanogenbromide':\n      return /(Met)/g;\n    case 'any':\n      return /()(?=[A-Z][a-z][a-z])/g;\n    default:\n      throw new Error(`Digestion enzyme: ${enzyme} is unknown`);\n  }\n}\n\nmodule.exports = digestSequence;\n","'use strict';\n\nmodule.exports = function(mf, options) {\n  if (options === undefined) {\n    options = {\n      a: false,\n      b: true,\n      c: false,\n      x: false,\n      y: true,\n      z: false,\n      i: false,\n      ya: false,\n      yb: false,\n      yc: false,\n      zc: false,\n    };\n  }\n  options.maxInternal = options.maxInternal || Number.MAX_VALUE;\n  options.minInternal = options.minInternal || 0;\n\n  let mfs = [];\n  // need to allow 0-9 to deal with neutral loss\n  let mfparts = mf\n    .replace(/([a-z)0-9])([A-Z][a-z](?=[a-z]))/g, '$1 $2')\n    .split(/ /);\n\n  let nTerm = '';\n  let cTerm = '';\n\n  if (mfparts[0].startsWith('(')) {\n    nTerm += mfparts[0];\n    mfparts = mfparts.splice(1);\n  }\n\n  if (mfparts[mfparts.length - 1].includes('(')) {\n    cTerm += mfparts[mfparts.length - 1].replace(/^[^()]*/, '');\n    mfparts[mfparts.length - 1] = mfparts[mfparts.length - 1].replace(\n      /\\(.*/,\n      '',\n    );\n  }\n\n  for (let i = 1; i < mfparts.length; i++) {\n    nTerm += mfparts[i - 1];\n    cTerm = mfparts[mfparts.length - i] + cTerm;\n    addNTerm(mfs, nTerm, i, options);\n    addCTerm(mfs, cTerm, i, options);\n    if (options.i) mfs.push(`${mfparts[i]}HC-1O-1(+1)$i:${mfparts[i]}`);\n\n    if (options.ya || options.yb || options.yc || options.zc) {\n      // we have double fragmentations\n      for (\n        let j = i + 1;\n        j < Math.min(mfparts.length, options.maxInternal + i + 1);\n        j++\n      ) {\n        let iTerm = '';\n        if (j - i >= options.minInternal) {\n          for (let k = i; k < j; k++) {\n            iTerm += mfparts[k];\n          }\n          addITerm(mfs, iTerm, mfparts.length - i, j, options);\n        }\n      }\n    }\n  }\n\n  if (mfs.length === 0) {\n    mfs = mfs.concat([mf]);\n  }\n\n  return mfs;\n};\n\nfunction addNTerm(mfs, nTerm, i, options) {\n  if (options.a) mfs.push(`${nTerm}C-1O-1(+1)$a${i}`);\n  if (options.b) mfs.push(`${nTerm}(+1)$b${i}`);\n  if (options.c) mfs.push(`${nTerm}NH3(+1)$c${i}`);\n}\n\nfunction addITerm(mfs, iTerm, i, j, options) {\n  if (options.ya) mfs.push(`H${iTerm}C-1O-1(+1)$a${j}y${i}`);\n  if (options.yb) mfs.push(`H${iTerm}(+1)$b${j}y${i}`);\n  if (options.yc) mfs.push(`H${iTerm}NH3(+1)$c${j}y${i}`);\n  if (options.zc) mfs.push(`N-1${iTerm}NH3(+1)$c${j}z${i}`);\n}\n\nfunction addCTerm(mfs, cTerm, i, options) {\n  if (options.x) mfs.push(`CO(+1)${cTerm}$x${i}`);\n  if (options.y) mfs.push(`H2(+1)${cTerm}$y${i}`);\n  if (options.z) mfs.push(`N-1H-1(+1)${cTerm}$z${i}`);\n}\n","'use strict';\n\nconst aa = require('./aminoAcids');\n\nfunction convertAASequence(mf) {\n  // this function will check if it is a sequence of aa in 1 letter or 3 letters and convert them if it is the case\n  // it could be a multiline mf !\n  // if it is a multiline we could make some \"tricks\" ...\n\n  let newMF = mf;\n  // SEQRES   1 B  256  MET PRO VAL GLU ILE THR VAL LYS GLU LEU LEU GLU ALA\n  // SEQRES   2 B  256  GLY VAL HIS PHE GLY HIS GLU ARG LYS ARG TRP ASN PRO\n  // or\n  // MET PRO VAL GLU ILE THR VAL LYS GLU LEU LEU GLU ALA\n  // GLY VAL HIS PHE GLY HIS GLU ARG LYS ARG TRP ASN PRO\n  if (mf.search(/[A-Z]{3} [A-Z]{3} [A-Z]{3}/) > -1) {\n    // this is a PDB !\n    let tmpmf = mf.replace(/[\\r\\n]+/g, ' ');\n    tmpmf = tmpmf.replace(/(SEQRES|[0-9]+| [A-Z] | [0-9A-Z]{4-50})/g, '');\n    // we need to correct the uppercase / lowercase\n    let parts = tmpmf.split(' ');\n    newMF = 'H';\n    for (let i = 0; i < parts.length; i++) {\n      newMF += parts[i].substr(0, 1) + parts[i].substr(1).toLowerCase();\n    }\n    newMF += 'OH';\n  } else if (mf.includes('(') && isOneLetterCode(mf)) {\n    // we expect one letter code with modification\n    newMF = '';\n    let nTerminal = 'H';\n    let cTerminal = 'OH';\n    let parenthesisCounter = 0;\n    for (let i = 0; i < mf.length; i++) {\n      let currentSymbol = mf[i];\n      if (\n        currentSymbol === '(' ||\n        currentSymbol === ')' ||\n        parenthesisCounter > 0\n      ) {\n        if (currentSymbol === '(') {\n          parenthesisCounter++;\n          if (i === 0) nTerminal = '';\n        }\n        if (currentSymbol === ')') {\n          parenthesisCounter--;\n          if (i === mf.length - 1) cTerminal = '';\n        }\n        newMF += currentSymbol;\n        continue;\n      }\n      newMF += convertAA1To3(currentSymbol);\n    }\n    newMF = nTerminal + newMF + cTerminal;\n  } else if (\n    mf.search(/[A-Z]{3}/) > -1 &&\n    mf.search(/[a-zA-Z][a-z0-9]/) === -1\n  ) {\n    // UNIPROT\n    //   370        380        390        400        410        420\n    //GFKPNLRKTF VSGLFRESCG AHFYRGVDVK PFYIKKPVDN LFALMLILNR LRGWGVVGGM\n    //\n    //    430        440        450        460        470        480\n    //SDPRLYKVWV RLSSQVPSMF FGGTDLAADY YVVSPPTAVS VYTKTPYGRL LADTRTSGFR\n    // We remove all the number, all the spaces, etc\n    newMF = `H${convertAA1To3(newMF.replace(/[^A-Z]/g, ''))}OH`;\n  }\n\n  return newMF;\n}\n\nfunction convertAA1To3(mf) {\n  let newmf = '';\n  for (let i = 0; i < mf.length; i++) {\n    newmf += aa1To3(mf.charAt(i));\n  }\n  return newmf;\n}\n\nfunction aa1To3(code) {\n  for (let i = 0; i < aa.length; i++) {\n    if (aa[i].aa1 === code) {\n      return aa[i].aa3;\n    }\n  }\n  throw new Error(`Invalid 1 letter code: ${code}`);\n}\n\nmodule.exports = convertAASequence;\n\n// mf can contain as well parenthesis. We need to check if it is not yet a correct molecular formula\nfunction isOneLetterCode(mf) {\n  let parenthesisLevel = 0;\n  for (let char of mf) {\n    if (parenthesisLevel === 0 && char.match(/[a-z]/)) return false;\n    if (char === '(') parenthesisLevel++;\n    if (char === ')') parenthesisLevel--;\n  }\n  return true;\n}\n","'use strict';\n\nconst aa = require('./aminoAcids');\nconst IEP = require('./isoElectricPoint');\nconst chargePeptide = require('./chargePeptide');\nconst allowNeutralLoss = require('./allowNeutralLoss');\nconst splitPeptide = require('./splitPeptide');\nconst digestPeptide = require('./digestPeptide');\nconst generatePeptideFragments = require('./generatePeptideFragments');\nconst convertAASequence = require('./convertAASequence');\n\nexports.getInfo = function() {\n  return aa;\n};\n\n// sequence should be in the \"right\" format like HAlaGlyProOH\n\nexports.splitPeptide = splitPeptide;\nexports.digestPeptide = digestPeptide;\n\nexports.calculateIEP = function(sequence) {\n  let aas = splitPeptide(sequence);\n  let result = IEP.calculateIEP(aas);\n  return result;\n};\n\nexports.calculateIEPChart = function(sequence) {\n  let aas = splitPeptide(sequence);\n  let result = IEP.calculateChart(aas);\n  return result;\n};\n\nexports.getColorForIEP = function(iep) {\n  return IEP.getColor(iep);\n};\n\nexports.calculateCharge = function(sequence, ph) {\n  let aas = splitPeptide(sequence);\n  return IEP.calculateCharge(aas, ph);\n};\n\nexports.generatePeptideFragments = generatePeptideFragments;\n\nexports.chargePeptide = chargePeptide;\nexports.allowNeutralLoss = allowNeutralLoss;\n\nexports.convertAASequence = convertAASequence;\n\nexports.sequenceToMF = convertAASequence;\n","'use strict';\n\nfunction appendInternals(data) {\n  // for each line (internal fragment) we calculate the vertical position\n  // where it should be drawn as well and the maximal number of lines\n  let maxNumberLines = 0;\n  for (let result of data.results) {\n    if (result.internal) {\n      result.slot = assignSlot(result.from, result.to, data.residues.residues);\n      if (result.slot > maxNumberLines) maxNumberLines = result.slot;\n    }\n  }\n  for (let row of data.rows) {\n    row.info.internals = maxNumberLines;\n  }\n}\n\n// we need to define the height of the line.\n// we need to find a height that is not yet used.\nfunction assignSlot(from, to, residues) {\n  let used = {};\n  if (from > 0) from--; // we ensure that we don't put on the same line to sequences that are consecutive\n  for (let i = from; i < to; i++) {\n    let residue = residues[i];\n    residue.paper.usedSlots.forEach(function (usedSlot, index) {\n      used[index] = true;\n    });\n  }\n  let counter = 0;\n  while (true) {\n    if (!used[counter]) {\n      break;\n    }\n    counter++;\n  }\n  for (let i = from; i < to; i++) {\n    residues[i].paper.usedSlots[counter] = true;\n  }\n  return counter;\n}\n\nmodule.exports = appendInternals;\n","'use strict';\n\n// SOURCE: https://en.wikipedia.org/wiki/Amino_acid\n// Link for UTF8 code for modified: https://codepoints.net/search?sc=Grek\nmodule.exports = [\n  // Standard amino acids\n  {\n    name: 'Alanine',\n    aa3: 'Ala',\n    aa1: 'A',\n    sc: {\n      type: 'hydrophobic',\n    },\n    pKaC: 2.33,\n    pKaN: 9.71,\n  },\n  {\n    name: 'Arginine',\n    aa3: 'Arg',\n    aa1: 'R',\n    sc: {\n      type: 'positive',\n      pKa: 12.1,\n    },\n    pKaC: 2.03,\n    pKaN: 9.0,\n  },\n  {\n    name: 'Asparagine',\n    aa3: 'Asn',\n    aa1: 'N',\n    sc: {\n      type: 'polar',\n    },\n    pKaC: 2.13,\n    pKaN: 9.05,\n  },\n  {\n    name: 'Aspartic acid',\n    aa3: 'Asp',\n    aa1: 'D',\n    sc: {\n      type: 'negative',\n      pKa: 3.71,\n    },\n    pKaC: 1.95,\n    pKaN: 9.66,\n  },\n  {\n    name: 'Cysteine',\n    aa3: 'Cys',\n    aa1: 'C',\n    sc: {\n      type: 'special',\n      pKa: 8.14,\n    },\n    pKaC: 1.91,\n    pKaN: 10.28,\n  },\n  {\n    name: 'Glutamic acid',\n    aa3: 'Glu',\n    aa1: 'E',\n    sc: {\n      type: 'negative',\n      pKa: 4.15,\n    },\n    pKaC: 2.16,\n    pKaN: 9.58,\n  },\n  {\n    name: 'Glutamine',\n    aa3: 'Gln',\n    aa1: 'Q',\n    sc: {\n      type: 'polar',\n    },\n    pKaC: 2.18,\n    pKaN: 9.0,\n  },\n  {\n    name: 'Glycine',\n    aa3: 'Gly',\n    aa1: 'G',\n    sc: {\n      type: 'special',\n    },\n    pKaC: 2.34,\n    pKaN: 9.58,\n  },\n  {\n    name: 'Histidine',\n    aa3: 'His',\n    aa1: 'H',\n    sc: {\n      type: 'positive',\n      pKa: 6.04,\n    },\n    pKaC: 1.7,\n    pKaN: 9.09,\n  },\n  {\n    name: 'Isoleucine',\n    aa3: 'Ile',\n    aa1: 'I',\n    sc: {\n      type: 'hydrophobic',\n    },\n    pKaC: 2.26,\n    pKaN: 9.6,\n  },\n  {\n    name: 'Leucine',\n    aa3: 'Leu',\n    aa1: 'L',\n    sc: {\n      type: 'hydrophobic',\n    },\n    pKaC: 2.32,\n    pKaN: 9.58,\n  },\n  {\n    name: 'Lysine',\n    aa3: 'Lys',\n    aa1: 'K',\n    sc: {\n      type: 'positive',\n      pKa: 10.67,\n    },\n    pKaC: 2.15,\n    pKaN: 9.16,\n  },\n  {\n    name: 'Methionine',\n    aa3: 'Met',\n    aa1: 'M',\n    sc: {\n      type: 'hydrophobic',\n    },\n    pKaC: 2.16,\n    pKaN: 9.08,\n  },\n  {\n    name: 'Phenylalanine',\n    aa3: 'Phe',\n    aa1: 'F',\n    sc: {\n      type: 'hydrophobic',\n    },\n    pKaC: 2.18,\n    pKaN: 9.09,\n  },\n  {\n    name: 'Proline',\n    aa3: 'Pro',\n    aa1: 'P',\n    sc: {\n      type: 'special',\n    },\n    pKaC: 1.95,\n    pKaN: 10.47,\n  },\n  {\n    name: 'Serine',\n    aa3: 'Ser',\n    aa1: 'S',\n    sc: {\n      type: 'polar',\n    },\n    pKaC: 2.13,\n    pKaN: 9.05,\n  },\n  {\n    name: 'Threonine',\n    aa3: 'Thr',\n    aa1: 'T',\n    sc: {\n      type: 'polar',\n    },\n    pKaC: 2.2,\n    pKaN: 8.96,\n  },\n  {\n    name: 'Tryptophan',\n    aa3: 'Trp',\n    aa1: 'W',\n    sc: {\n      type: 'hydrophobic',\n    },\n    pKaC: 2.38,\n    pKaN: 9.34,\n  },\n  {\n    name: 'Tyrosine',\n    aa3: 'Tyr',\n    aa1: 'Y',\n    sc: {\n      type: 'hydrophobic',\n    },\n    pKaC: 2.24,\n    pKaN: 9.04,\n  },\n  {\n    name: 'Valine',\n    aa3: 'Val',\n    aa1: 'V',\n    sc: {\n      type: 'hydrophobic',\n    },\n    pKaC: 2.27,\n    pKaN: 9.52,\n  },\n  // Additional\n  {\n    name: 'Selenocysteine',\n    aa3: 'Sec',\n    aa1: 'U',\n  },\n  {\n    name: 'Pyrrolysine',\n    aa3: 'Pyl',\n    aa1: 'O',\n  },\n  // Ambiguous\n  {\n    name: 'Asparagine or aspartic acid',\n    aa3: 'Asx',\n    aa1: 'B',\n  },\n  {\n    name: 'Glutamine or glutamic acid',\n    aa3: 'Glx',\n    aa1: 'Z',\n  },\n  {\n    name: 'Leucine or isoleucine',\n    aa3: 'Xle',\n    aa1: 'J',\n  },\n  {\n    name: 'Unspecified or unknown',\n    aa3: 'Xaa',\n    aa1: 'X',\n  },\n];\n","'use strict';\n\nlet aa = require('./aminoAcids');\n\n// we will convert the data to an object to be much faster\nlet aaObject = {};\nfor (let i = 0; i < aa.length; i++) {\n  aaObject[aa[i].aa3] = aa[i];\n}\n\nfunction calculateCharge(aas, pH) {\n  if (!pH) pH = 7.0;\n  let combined = combine(aas);\n  if (!combined) return;\n  let charge = calculateForPh(combined, pH);\n  return Math.round(charge * 1000) / 1000;\n}\n\n// this methods required an array of aas\n\nfunction calculateIEP(aas) {\n  let combined = combine(aas);\n  if (!combined) return;\n  let first = 0;\n  let last = 14;\n  let current = 14;\n  let previous = 0;\n  let currentCharge;\n  while (Math.abs(current - previous) > 0.0001) {\n    previous = current;\n    current = (last + first) / 2;\n    currentCharge = calculateForPh(combined, current);\n    if (currentCharge > 0) {\n      first = current;\n    } else if (currentCharge < 0) {\n      last = current;\n    } else {\n      previous = current;\n    }\n  }\n  return Math.round(current * 1000) / 1000;\n}\n\nfunction calculateChart(aas) {\n  let combined = combine(aas);\n  if (!combined) return;\n  let y = [];\n  let x = [];\n  let yAbs = [];\n  for (let i = 0; i <= 14; i = i + 0.01) {\n    let charge = calculateForPh(combined, i);\n    x.push(i);\n    y.push(charge);\n    yAbs.push(Math.abs(charge));\n  }\n  combined.x = x;\n  combined.y = y;\n  combined.yAbs = yAbs;\n\n  return combined;\n}\n\nfunction calculateForPh(combined, pH) {\n  let total = 0;\n  total += 1 / (1 + Math.pow(10, pH - combined.first));\n  total += -1 / (1 + Math.pow(10, combined.last - pH));\n  for (let key in combined.acid) {\n    total +=\n      -combined.acid[key] / (1 + Math.pow(10, aaObject[key].sc.pKa - pH));\n  }\n  for (let key in combined.basic) {\n    total +=\n      combined.basic[key] / (1 + Math.pow(10, pH - aaObject[key].sc.pKa));\n  }\n  return total;\n}\n\n// we will combine the amino acids\nfunction combine(aas) {\n  let combined = {};\n  if (aaObject[aas[0]]) {\n    combined.first = aaObject[aas[0]].pKaN;\n  } else {\n    return;\n  }\n  if (aaObject[aas[aas.length - 1]]) {\n    combined.last = aaObject[aas[aas.length - 1]].pKaC;\n  } else {\n    return;\n  }\n  combined.basic = {};\n  combined.acid = {};\n  for (let i = 0; i < aas.length; i++) {\n    let aa = aas[i];\n    if (!aaObject[aa]) return;\n    if (aaObject[aa].sc && aaObject[aa].sc.type) {\n      if (aaObject[aa].sc.type === 'positive') {\n        if (!combined.basic[aa]) {\n          combined.basic[aa] = 0;\n        }\n        combined.basic[aa]++;\n      } else if (aaObject[aa].sc.type === 'negative') {\n        if (!combined.acid[aa]) {\n          combined.acid[aa] = 0;\n        }\n        combined.acid[aa]++;\n      }\n    }\n  }\n  return combined;\n}\n\n/*\n We can generate a color based on iep\n 0 -> 7 means that at pH 7 it is charged negatively (blue)\n 7 -> 14 means that at pH7 it is charged positively (red)\n */\nfunction getColor(iep) {\n  if (iep < 7) {\n    if (iep < 3) iep = 3;\n    let white = Math.round(255 - (7 - iep) * (200 / 4));\n    return `rgb(${white},${white},255)`;\n  } else if (iep > 7) {\n    if (iep > 11) iep = 11;\n    let white = Math.round(255 - (iep - 7) * (200 / 4));\n    return `rgb(255,${white},${white})`;\n  }\n  return 'rgb(255,255,255)';\n}\n\nmodule.exports = {\n  calculateIEP: calculateIEP,\n  calculateCharge: calculateCharge,\n  calculateChart: calculateChart,\n  getColor: getColor,\n};\n","'use strict';\n\nlet aa = require('./aminoAcids');\n\nfunction getAA(code) {\n  if (code.length === 1) {\n    for (let i = 0; i < aa.length; i++) {\n      if (aa[i].aa1 === code) {\n        return aa[i];\n      }\n    }\n  }\n  if (code.length === 3) {\n    for (let i = 0; i < aa.length; i++) {\n      if (aa[i].aa3 === code) {\n        return aa[i];\n      }\n    }\n  }\n}\n\nmodule.exports = getAA;\n","'use strict';\n\nlet getAA = require('./getAA');\n\n// SOURCE: https://en.wikipedia.org/wiki/Amino_acid\n\nfunction chargePeptide(mf, options = {}) {\n  if (options.pH === undefined) options.pH = 0;\n  if (Array.isArray(mf)) {\n    for (let i = 0; i < mf.length; i++) {\n      mf[i] = chargeOnePeptide(mf[i], options);\n    }\n    return mf;\n  } else {\n    return chargeOnePeptide(mf, options);\n  }\n}\n\nfunction chargeOnePeptide(mf, options) {\n  let pH = options.pH;\n  // we will allow to charge the peptide at a specific pH\n\n  // first amino acids (N-terminal)\n  if (mf.match(/^H[A-Z][a-z]{2}/)) {\n    let firstAA = mf.replace(/^H([A-Z][a-z]{2}).*/, '$1');\n    if (getAA(firstAA) && pH < getAA(firstAA).pKaN) {\n      mf = mf.replace(/^H([^+])/, 'H+H$1');\n    }\n  }\n\n  // last amino acids (C-terminal)\n  if (mf.match(/[A-Z][a-z]{2}OH$/)) {\n    let lastAA = mf.replace(/.*([A-Z][a-z]{2})OH$/, '$1');\n    if (getAA(lastAA) && pH > getAA(lastAA).pKaC) {\n      mf = mf.replace(/OH$/, 'O-');\n    }\n  }\n\n  // basic AA\n  if (pH < getAA('Arg').sc.pKa) mf = mf.replace(/(Arg)(?!\\()/g, '$1(H+)');\n  if (pH < getAA('His').sc.pKa) mf = mf.replace(/(His)(?!\\()/g, '$1(H+)');\n  if (pH < getAA('Lys').sc.pKa) mf = mf.replace(/(Lys)(?!\\()/g, '$1(H+)');\n\n  // acid AA\n  if (pH > getAA('Asp').sc.pKa) mf = mf.replace(/(Asp)(?!\\()/g, '$1(H-1-)');\n  if (pH > getAA('Glu').sc.pKa) mf = mf.replace(/(Glu)(?!\\()/g, '$1(H-1-)');\n\n  if (pH > getAA('Cys').sc.pKa) mf = mf.replace(/(Cys)(?!\\()/g, '$1(H-1-)');\n\n  return mf;\n}\n\nmodule.exports = chargePeptide;\n","'use strict';\n\nfunction allowNeutralLoss(mf, options) {\n  if (Array.isArray(mf)) {\n    for (let i = 0; i < mf.length; i++) {\n      mf[i] = allowOneNeutralLoss(mf[i], options);\n    }\n    return mf;\n  } else {\n    return allowOneNeutralLoss(mf, options);\n  }\n}\n\nfunction allowOneNeutralLoss(mf) {\n  mf = mf.replace(/(Ser|Thr|Asp|Glu)(?!\\()/g, '$1(H-2O-1)0-1');\n  mf = mf.replace(/(Arg|Lys|Asn|Gln)(?!\\()/g, '$1(N-1H-3)0-1');\n\n  return mf;\n}\n\nmodule.exports = allowNeutralLoss;\n","'use strict';\n\nfunction splitSequence(sequence) {\n  let aas = sequence.replace(/([A-Z])/g, ' $1').split(/ /);\n  let begin = 0;\n  while (aas[begin] === '' || aas[begin] === 'H') {\n    begin++;\n  }\n  let end = aas.length - 1;\n  while (aas[end] === 'O' || aas[end] === 'H') {\n    end--;\n  }\n  aas = aas.slice(begin, end + 1);\n  return aas;\n}\n\nmodule.exports = splitSequence;\n","'use strict';\n\n/*\nIotuibs:\n* minMissed (default: 0)\n* maxMissed (default: 0)\n* minResidue: 0;\n* maxResidue: infinity\n* enzyme: chymotrypsin, trypsin, glucph4, glucph8, thermolysin, cyanogenbromide : Mandatory, no default value !\n */\n\nfunction digestSequence(sequence, options = {}) {\n  sequence = sequence.replace(/^H([^a-z])/, '$1').replace(/OH$/, '');\n\n  options.enzyme = options.enzyme || 'trypsin';\n  if (options.minMissed === undefined) options.minMissed = 0;\n  if (options.maxMissed === undefined) options.maxMissed = 0;\n  if (options.minResidue === undefined) options.minResidue = 0;\n  if (options.maxResidue === undefined) options.maxResidue = Number.MAX_VALUE;\n  let regexp = getRegexp(options.enzyme);\n  let fragments = sequence\n    .replace(regexp, '$1 ')\n    .split(/ /)\n    .filter((entry) => entry);\n\n  let from = 0;\n  for (let i = 0; i < fragments.length; i++) {\n    let nbResidue = fragments[i]\n      .replace(/([A-Z][a-z][a-z])/g, ' $1')\n      .split(/ /)\n      .filter((entry) => entry).length;\n    fragments[i] = {\n      sequence: fragments[i],\n      nbResidue: nbResidue,\n      from: from,\n      to: from + nbResidue - 1,\n    };\n    from += nbResidue;\n  }\n\n  let results = [];\n\n  for (let i = 0; i < fragments.length - options.minMissed; i++) {\n    for (\n      let j = options.minMissed;\n      j <= Math.min(options.maxMissed, fragments.length - i - 1);\n      j++\n    ) {\n      let fragment = '';\n      let nbResidue = 0;\n      for (let k = i; k <= i + j; k++) {\n        fragment += fragments[k].sequence;\n        nbResidue += fragments[k].nbResidue;\n      }\n      let from = fragments[i].from + 1;\n      let to = fragments[i + j].to + 1;\n      if (\n        fragment &&\n        nbResidue >= options.minResidue &&\n        nbResidue <= options.maxResidue\n      ) {\n        results.push(`H${fragment}OH$D${from}>${to}`);\n      }\n    }\n  }\n\n  return results;\n}\n\nfunction getRegexp(enzyme) {\n  switch (enzyme.toLowerCase().replace(/[^a-z0-9]/g, '')) {\n    case 'chymotrypsin':\n      return /(Phe|Tyr|Trp)(?!Pro)/g;\n    case 'trypsin':\n      return /(Lys|Arg)(?!Pro)/g;\n    case 'lysc':\n      return /(Lys)(?!Pro)/g;\n    case 'glucph4':\n      return /(Glu)(?!Pro|Glu)/g;\n    case 'glucph8':\n      return /(Asp|Glu)(?!Pro|Glu)/g;\n    case 'thermolysin': // N-term of  Leu, Phe, Val, Ile, Ala, Met\n      return /()(?=Ile|Leu|Val|Ala|Met|Phe)/g;\n    case 'cyanogenbromide':\n      return /(Met)/g;\n    case 'any':\n      return /()(?=[A-Z][a-z][a-z])/g;\n    default:\n      throw new Error(`Digestion enzyme: ${enzyme} is unknown`);\n  }\n}\n\nmodule.exports = digestSequence;\n","'use strict';\n\nmodule.exports = function(mf, options) {\n  if (options === undefined) {\n    options = {\n      a: false,\n      b: true,\n      c: false,\n      x: false,\n      y: true,\n      z: false,\n      i: false,\n      ya: false,\n      yb: false,\n      yc: false,\n      zc: false,\n    };\n  }\n  options.maxInternal = options.maxInternal || Number.MAX_VALUE;\n  options.minInternal = options.minInternal || 0;\n\n  let mfs = [];\n  // need to allow 0-9 to deal with neutral loss\n  let mfparts = mf\n    .replace(/([a-z)0-9])([A-Z][a-z](?=[a-z]))/g, '$1 $2')\n    .split(/ /);\n\n  let nTerm = '';\n  let cTerm = '';\n\n  if (mfparts[0].startsWith('(')) {\n    nTerm += mfparts[0];\n    mfparts = mfparts.splice(1);\n  }\n\n  if (mfparts[mfparts.length - 1].includes('(')) {\n    cTerm += mfparts[mfparts.length - 1].replace(/^[^()]*/, '');\n    mfparts[mfparts.length - 1] = mfparts[mfparts.length - 1].replace(\n      /\\(.*/,\n      '',\n    );\n  }\n\n  for (let i = 1; i < mfparts.length; i++) {\n    nTerm += mfparts[i - 1];\n    cTerm = mfparts[mfparts.length - i] + cTerm;\n    addNTerm(mfs, nTerm, i, options);\n    addCTerm(mfs, cTerm, i, options);\n    if (options.i) mfs.push(`${mfparts[i]}HC-1O-1(+1)$i:${mfparts[i]}`);\n\n    if (options.ya || options.yb || options.yc || options.zc) {\n      // we have double fragmentations\n      for (\n        let j = i + 1;\n        j < Math.min(mfparts.length, options.maxInternal + i + 1);\n        j++\n      ) {\n        let iTerm = '';\n        if (j - i >= options.minInternal) {\n          for (let k = i; k < j; k++) {\n            iTerm += mfparts[k];\n          }\n          addITerm(mfs, iTerm, mfparts.length - i, j, options);\n        }\n      }\n    }\n  }\n\n  if (mfs.length === 0) {\n    mfs = mfs.concat([mf]);\n  }\n\n  return mfs;\n};\n\nfunction addNTerm(mfs, nTerm, i, options) {\n  if (options.a) mfs.push(`${nTerm}C-1O-1(+1)$a${i}`);\n  if (options.b) mfs.push(`${nTerm}(+1)$b${i}`);\n  if (options.c) mfs.push(`${nTerm}NH3(+1)$c${i}`);\n}\n\nfunction addITerm(mfs, iTerm, i, j, options) {\n  if (options.ya) mfs.push(`H${iTerm}C-1O-1(+1)$a${j}y${i}`);\n  if (options.yb) mfs.push(`H${iTerm}(+1)$b${j}y${i}`);\n  if (options.yc) mfs.push(`H${iTerm}NH3(+1)$c${j}y${i}`);\n  if (options.zc) mfs.push(`N-1${iTerm}NH3(+1)$c${j}z${i}`);\n}\n\nfunction addCTerm(mfs, cTerm, i, options) {\n  if (options.x) mfs.push(`CO(+1)${cTerm}$x${i}`);\n  if (options.y) mfs.push(`H2(+1)${cTerm}$y${i}`);\n  if (options.z) mfs.push(`N-1H-1(+1)${cTerm}$z${i}`);\n}\n","'use strict';\n\nconst aa = require('./aminoAcids');\n\nfunction convertAASequence(mf) {\n  // this function will check if it is a sequence of aa in 1 letter or 3 letters and convert them if it is the case\n  // it could be a multiline mf !\n  // if it is a multiline we could make some \"tricks\" ...\n\n  let newMF = mf;\n  // SEQRES   1 B  256  MET PRO VAL GLU ILE THR VAL LYS GLU LEU LEU GLU ALA\n  // SEQRES   2 B  256  GLY VAL HIS PHE GLY HIS GLU ARG LYS ARG TRP ASN PRO\n  // or\n  // MET PRO VAL GLU ILE THR VAL LYS GLU LEU LEU GLU ALA\n  // GLY VAL HIS PHE GLY HIS GLU ARG LYS ARG TRP ASN PRO\n  if (mf.search(/[A-Z]{3} [A-Z]{3} [A-Z]{3}/) > -1) {\n    // this is a PDB !\n    let tmpmf = mf.replace(/[\\r\\n]+/g, ' ');\n    tmpmf = tmpmf.replace(/(SEQRES|[0-9]+| [A-Z] | [0-9A-Z]{4-50})/g, '');\n    // we need to correct the uppercase / lowercase\n    let parts = tmpmf.split(' ');\n    newMF = 'H';\n    for (let i = 0; i < parts.length; i++) {\n      newMF += parts[i].substr(0, 1) + parts[i].substr(1).toLowerCase();\n    }\n    newMF += 'OH';\n  } else if (mf.includes('(') && isOneLetterCode(mf)) {\n    // we expect one letter code with modification\n    newMF = '';\n    let nTerminal = 'H';\n    let cTerminal = 'OH';\n    let parenthesisCounter = 0;\n    for (let i = 0; i < mf.length; i++) {\n      let currentSymbol = mf[i];\n      if (\n        currentSymbol === '(' ||\n        currentSymbol === ')' ||\n        parenthesisCounter > 0\n      ) {\n        if (currentSymbol === '(') {\n          parenthesisCounter++;\n          if (i === 0) nTerminal = '';\n        }\n        if (currentSymbol === ')') {\n          parenthesisCounter--;\n          if (i === mf.length - 1) cTerminal = '';\n        }\n        newMF += currentSymbol;\n        continue;\n      }\n      newMF += convertAA1To3(currentSymbol);\n    }\n    newMF = nTerminal + newMF + cTerminal;\n  } else if (\n    mf.search(/[A-Z]{3}/) > -1 &&\n    mf.search(/[a-zA-Z][a-z0-9]/) === -1\n  ) {\n    // UNIPROT\n    //   370        380        390        400        410        420\n    //GFKPNLRKTF VSGLFRESCG AHFYRGVDVK PFYIKKPVDN LFALMLILNR LRGWGVVGGM\n    //\n    //    430        440        450        460        470        480\n    //SDPRLYKVWV RLSSQVPSMF FGGTDLAADY YVVSPPTAVS VYTKTPYGRL LADTRTSGFR\n    // We remove all the number, all the spaces, etc\n    newMF = `H${convertAA1To3(newMF.replace(/[^A-Z]/g, ''))}OH`;\n  }\n\n  return newMF;\n}\n\nfunction convertAA1To3(mf) {\n  let newmf = '';\n  for (let i = 0; i < mf.length; i++) {\n    newmf += aa1To3(mf.charAt(i));\n  }\n  return newmf;\n}\n\nfunction aa1To3(code) {\n  for (let i = 0; i < aa.length; i++) {\n    if (aa[i].aa1 === code) {\n      return aa[i].aa3;\n    }\n  }\n  throw new Error(`Invalid 1 letter code: ${code}`);\n}\n\nmodule.exports = convertAASequence;\n\n// mf can contain as well parenthesis. We need to check if it is not yet a correct molecular formula\nfunction isOneLetterCode(mf) {\n  let parenthesisLevel = 0;\n  for (let char of mf) {\n    if (parenthesisLevel === 0 && char.match(/[a-z]/)) return false;\n    if (char === '(') parenthesisLevel++;\n    if (char === ')') parenthesisLevel--;\n  }\n  return true;\n}\n","'use strict';\n\nconst aa = require('./aminoAcids');\nconst IEP = require('./isoElectricPoint');\nconst chargePeptide = require('./chargePeptide');\nconst allowNeutralLoss = require('./allowNeutralLoss');\nconst splitPeptide = require('./splitPeptide');\nconst digestPeptide = require('./digestPeptide');\nconst generatePeptideFragments = require('./generatePeptideFragments');\nconst convertAASequence = require('./convertAASequence');\n\nexports.getInfo = function() {\n  return aa;\n};\n\n// sequence should be in the \"right\" format like HAlaGlyProOH\n\nexports.splitPeptide = splitPeptide;\nexports.digestPeptide = digestPeptide;\n\nexports.calculateIEP = function(sequence) {\n  let aas = splitPeptide(sequence);\n  let result = IEP.calculateIEP(aas);\n  return result;\n};\n\nexports.calculateIEPChart = function(sequence) {\n  let aas = splitPeptide(sequence);\n  let result = IEP.calculateChart(aas);\n  return result;\n};\n\nexports.getColorForIEP = function(iep) {\n  return IEP.getColor(iep);\n};\n\nexports.calculateCharge = function(sequence, ph) {\n  let aas = splitPeptide(sequence);\n  return IEP.calculateCharge(aas, ph);\n};\n\nexports.generatePeptideFragments = generatePeptideFragments;\n\nexports.chargePeptide = chargePeptide;\nexports.allowNeutralLoss = allowNeutralLoss;\n\nexports.convertAASequence = convertAASequence;\n\nexports.sequenceToMF = convertAASequence;\n","'use strict';\n\nconst Nucleotide = require('nucleotide');\nconst Peptide = require('peptide');\nconst groups = require('chemical-groups').getGroupsObject();\n\nconst ALTERNATIVES = ['', '¹', '²', '³', '⁴', '⁵', '⁶', '⁷', '⁸', '⁹'];\nconst SYMBOLS = ['Θ', 'Δ', 'Λ', 'Φ', 'Ω', 'Γ', 'Χ'];\n\nlet currentSymbol = 0;\n\n/**\n * Code that allows to split a sequence of amino acids or nucleotides natural or non natural\n * @param {string} [sequence]\n * @param {object} [options={}]\n * @param {string} [options.kind] - peptide, rna, ds-dna or dna. Default if contains U: rna, otherwise ds-dna\n * @param {string} [options.fivePrime=monophosphate] - alcohol, monophosphate, diphosphate, triphosphate\n * @param {string} [options.circular=false]\n */\n\nmodule.exports = function appendResidues(data, sequence, options = {}) {\n  const { kind = 'peptide' } = options;\n\n  currentSymbol = 0;\n  // we normalize the sequence to 3 letter codes\n\n  if (kind === 'peptide') {\n    sequence = Peptide.sequenceToMF(sequence);\n  } else {\n    sequence = Nucleotide.sequenceToMF(sequence, options);\n  }\n\n  const result = {\n    begin: '',\n    end: '',\n    residues: [],\n  };\n\n  const STATE_BEGIN = 0;\n  const STATE_MIDDLE = 1;\n  const STATE_END = 2;\n\n  let parenthesisLevel = 0;\n  let state = STATE_BEGIN; // as long as we don't have an uppercase followed by 2 lowercases\n  for (let i = 0; i < sequence.length; i++) {\n    let currentChar = sequence.charAt(i);\n    let nextChar = i < sequence.length - 1 ? sequence.charAt(i + 1) : '';\n    let nextNextChar = i < sequence.length - 2 ? sequence.charAt(i + 2) : '';\n\n    if (\n      state === STATE_BEGIN &&\n      currentChar.match(/[A-Z]/) &&\n      nextChar.match(/[a-z]/) &&\n      nextNextChar.match(/[a-z]/) &&\n      parenthesisLevel === 0\n    ) {\n      state = STATE_MIDDLE;\n    }\n\n    if (\n      state === STATE_MIDDLE &&\n      !sequence.substring(i).match(/[A-Z][a-z][a-z]/) &&\n      !currentChar.match(/[a-z]/) &&\n      parenthesisLevel === 0\n    ) {\n      state = STATE_END;\n    } else {\n      if (\n        currentChar.match(/[A-Z]/) &&\n        nextChar.match(/[a-z]/) &&\n        nextNextChar.match(/[a-z]/) &&\n        parenthesisLevel === 0\n      ) {\n        result.residues.push('');\n      }\n    }\n\n    switch (state) {\n      case STATE_BEGIN:\n        result.begin = result.begin + currentChar;\n        break;\n      case STATE_MIDDLE:\n        result.residues[result.residues.length - 1] =\n          result.residues[result.residues.length - 1] + currentChar;\n        break;\n      case STATE_END:\n        result.end = result.end + currentChar;\n        break;\n      default:\n    }\n\n    if (currentChar === '(') {\n      parenthesisLevel++;\n    } else if (currentChar === ')') {\n      parenthesisLevel--;\n    }\n  }\n\n  // we process all the residues\n  let alternatives = {};\n  let replacements = {};\n  for (let i = 0; i < result.residues.length; i++) {\n    let label = result.residues[i];\n    let residue = {\n      value: label,\n      results: {\n        begin: [],\n        end: [],\n      },\n    };\n    residue.fromBegin = i + 1;\n    residue.fromEnd = result.residues.length - i;\n    residue.kind = 'residue';\n    if (label.includes('(')) {\n      getModifiedReplacement(label, residue, alternatives, replacements);\n    } else {\n      if (groups[label] && groups[label].oneLetter) {\n        residue.label = groups[label].oneLetter;\n      } else {\n        getUnknownReplacement(label, residue, replacements);\n      }\n    }\n    result.residues[i] = residue;\n  }\n  result.begin = removeStartEndParenthesis(result.begin);\n  result.end = removeStartEndParenthesis(result.end);\n  if (result.begin.length > 2) {\n    let label = options.kind === 'peptide' ? 'Nter' : \"5'\";\n    replacements[result.begin] = {\n      label,\n    };\n    result.begin = label;\n  }\n  if (result.end.length > 2) {\n    let label = options.kind === 'peptide' ? 'Cter' : \"3'\";\n    replacements[result.begin] = {\n      label,\n    };\n    result.end = label;\n  }\n\n  result.begin = { label: result.begin, kind: 'begin' };\n  result.end = { label: result.end, kind: 'end' };\n  result.alternatives = alternatives;\n  result.replacements = replacements;\n\n  result.all = [result.begin].concat(result.residues, [result.end]);\n\n  result.all.forEach((entry) => {\n    entry.info = {\n      nbOver: 0,\n      nbUnder: 0,\n    };\n  });\n\n  data.residues = result;\n};\n\nfunction getUnknownReplacement(unknownResidue, residue, replacements) {\n  if (!replacements[unknownResidue]) {\n    replacements[unknownResidue] = {\n      label: SYMBOLS[currentSymbol] || '?',\n      id: unknownResidue,\n    };\n  }\n  currentSymbol++;\n  residue.replaced = true;\n  residue.label = replacements[unknownResidue].label;\n}\n\nfunction getModifiedReplacement(\n  modifiedResidue,\n  residue,\n  alternatives,\n  replacements,\n) {\n  if (!replacements[modifiedResidue]) {\n    let position = modifiedResidue.indexOf('(');\n    let residueCode = modifiedResidue.substring(0, position);\n    let modification = removeStartEndParenthesis(\n      modifiedResidue.substring(position),\n    );\n\n    if (groups[residueCode] && groups[residueCode].alternativeOneLetter) {\n      let alternativeOneLetter = groups[residueCode].alternativeOneLetter;\n\n      if (!alternatives[alternativeOneLetter]) {\n        alternatives[alternativeOneLetter] = { count: 1 };\n      } else {\n        alternatives[alternativeOneLetter].count++;\n      }\n      replacements[modifiedResidue] = {\n        label:\n          ALTERNATIVES[alternatives[alternativeOneLetter].count - 1] +\n          alternativeOneLetter,\n        residue: residueCode,\n        modification,\n      };\n    } else {\n      getUnknownReplacement(modifiedResidue, residue, replacements);\n    }\n  }\n  residue.replaced = true;\n  residue.label = replacements[modifiedResidue].label;\n}\n\nfunction removeStartEndParenthesis(mf) {\n  if (mf[0] === '(' && mf[mf.length - 1] === ')') {\n    return mf.substring(1, mf.length - 1);\n  }\n  return mf;\n}\n","/*!\n* @svgdotjs/svg.js - A lightweight library for manipulating and animating SVG.\n* @version 3.0.16\n* https://svgdotjs.github.io/\n*\n* @copyright Wout Fierens <wout@mick-wout.com>\n* @license MIT\n*\n* BUILT: Tue Nov 12 2019 21:57:16 GMT+0100 (GMT+01:00)\n*/;\nvar commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\nfunction createCommonjsModule(fn, module) {\n\treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n}\n\nvar check = function (it) {\n  return it && it.Math == Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global_1 =\n  // eslint-disable-next-line no-undef\n  check(typeof globalThis == 'object' && globalThis) ||\n  check(typeof window == 'object' && window) ||\n  check(typeof self == 'object' && self) ||\n  check(typeof commonjsGlobal == 'object' && commonjsGlobal) ||\n  // eslint-disable-next-line no-new-func\n  Function('return this')();\n\nvar fails = function (exec) {\n  try {\n    return !!exec();\n  } catch (error) {\n    return true;\n  }\n};\n\n// Thank's IE8 for his funny defineProperty\nvar descriptors = !fails(function () {\n  return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n\nvar nativePropertyIsEnumerable = {}.propertyIsEnumerable;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !nativePropertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.github.io/ecma262/#sec-object.prototype.propertyisenumerable\nvar f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n  var descriptor = getOwnPropertyDescriptor(this, V);\n  return !!descriptor && descriptor.enumerable;\n} : nativePropertyIsEnumerable;\n\nvar objectPropertyIsEnumerable = {\n\tf: f\n};\n\nvar createPropertyDescriptor = function (bitmap, value) {\n  return {\n    enumerable: !(bitmap & 1),\n    configurable: !(bitmap & 2),\n    writable: !(bitmap & 4),\n    value: value\n  };\n};\n\nvar toString = {}.toString;\n\nvar classofRaw = function (it) {\n  return toString.call(it).slice(8, -1);\n};\n\nvar split = ''.split;\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar indexedObject = fails(function () {\n  // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n  // eslint-disable-next-line no-prototype-builtins\n  return !Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n  return classofRaw(it) == 'String' ? split.call(it, '') : Object(it);\n} : Object;\n\n// `RequireObjectCoercible` abstract operation\n// https://tc39.github.io/ecma262/#sec-requireobjectcoercible\nvar requireObjectCoercible = function (it) {\n  if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n  return it;\n};\n\n// toObject with fallback for non-array-like ES3 strings\n\n\n\nvar toIndexedObject = function (it) {\n  return indexedObject(requireObjectCoercible(it));\n};\n\nvar isObject = function (it) {\n  return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n\n// `ToPrimitive` abstract operation\n// https://tc39.github.io/ecma262/#sec-toprimitive\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nvar toPrimitive = function (input, PREFERRED_STRING) {\n  if (!isObject(input)) return input;\n  var fn, val;\n  if (PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n  if (typeof (fn = input.valueOf) == 'function' && !isObject(val = fn.call(input))) return val;\n  if (!PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n  throw TypeError(\"Can't convert object to primitive value\");\n};\n\nvar hasOwnProperty = {}.hasOwnProperty;\n\nvar has = function (it, key) {\n  return hasOwnProperty.call(it, key);\n};\n\nvar document$1 = global_1.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document$1) && isObject(document$1.createElement);\n\nvar documentCreateElement = function (it) {\n  return EXISTS ? document$1.createElement(it) : {};\n};\n\n// Thank's IE8 for his funny defineProperty\nvar ie8DomDefine = !descriptors && !fails(function () {\n  return Object.defineProperty(documentCreateElement('div'), 'a', {\n    get: function () { return 7; }\n  }).a != 7;\n});\n\nvar nativeGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptor\nvar f$1 = descriptors ? nativeGetOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n  O = toIndexedObject(O);\n  P = toPrimitive(P, true);\n  if (ie8DomDefine) try {\n    return nativeGetOwnPropertyDescriptor(O, P);\n  } catch (error) { /* empty */ }\n  if (has(O, P)) return createPropertyDescriptor(!objectPropertyIsEnumerable.f.call(O, P), O[P]);\n};\n\nvar objectGetOwnPropertyDescriptor = {\n\tf: f$1\n};\n\nvar anObject = function (it) {\n  if (!isObject(it)) {\n    throw TypeError(String(it) + ' is not an object');\n  } return it;\n};\n\nvar nativeDefineProperty = Object.defineProperty;\n\n// `Object.defineProperty` method\n// https://tc39.github.io/ecma262/#sec-object.defineproperty\nvar f$2 = descriptors ? nativeDefineProperty : function defineProperty(O, P, Attributes) {\n  anObject(O);\n  P = toPrimitive(P, true);\n  anObject(Attributes);\n  if (ie8DomDefine) try {\n    return nativeDefineProperty(O, P, Attributes);\n  } catch (error) { /* empty */ }\n  if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported');\n  if ('value' in Attributes) O[P] = Attributes.value;\n  return O;\n};\n\nvar objectDefineProperty = {\n\tf: f$2\n};\n\nvar createNonEnumerableProperty = descriptors ? function (object, key, value) {\n  return objectDefineProperty.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n  object[key] = value;\n  return object;\n};\n\nvar setGlobal = function (key, value) {\n  try {\n    createNonEnumerableProperty(global_1, key, value);\n  } catch (error) {\n    global_1[key] = value;\n  } return value;\n};\n\nvar SHARED = '__core-js_shared__';\nvar store = global_1[SHARED] || setGlobal(SHARED, {});\n\nvar sharedStore = store;\n\nvar shared = createCommonjsModule(function (module) {\n(module.exports = function (key, value) {\n  return sharedStore[key] || (sharedStore[key] = value !== undefined ? value : {});\n})('versions', []).push({\n  version: '3.3.6',\n  mode:  'global',\n  copyright: '© 2019 Denis Pushkarev (zloirock.ru)'\n});\n});\n\nvar functionToString = shared('native-function-to-string', Function.toString);\n\nvar WeakMap = global_1.WeakMap;\n\nvar nativeWeakMap = typeof WeakMap === 'function' && /native code/.test(functionToString.call(WeakMap));\n\nvar id = 0;\nvar postfix = Math.random();\n\nvar uid = function (key) {\n  return 'Symbol(' + String(key === undefined ? '' : key) + ')_' + (++id + postfix).toString(36);\n};\n\nvar keys = shared('keys');\n\nvar sharedKey = function (key) {\n  return keys[key] || (keys[key] = uid(key));\n};\n\nvar hiddenKeys = {};\n\nvar WeakMap$1 = global_1.WeakMap;\nvar set, get, has$1;\n\nvar enforce = function (it) {\n  return has$1(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n  return function (it) {\n    var state;\n    if (!isObject(it) || (state = get(it)).type !== TYPE) {\n      throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n    } return state;\n  };\n};\n\nif (nativeWeakMap) {\n  var store$1 = new WeakMap$1();\n  var wmget = store$1.get;\n  var wmhas = store$1.has;\n  var wmset = store$1.set;\n  set = function (it, metadata) {\n    wmset.call(store$1, it, metadata);\n    return metadata;\n  };\n  get = function (it) {\n    return wmget.call(store$1, it) || {};\n  };\n  has$1 = function (it) {\n    return wmhas.call(store$1, it);\n  };\n} else {\n  var STATE = sharedKey('state');\n  hiddenKeys[STATE] = true;\n  set = function (it, metadata) {\n    createNonEnumerableProperty(it, STATE, metadata);\n    return metadata;\n  };\n  get = function (it) {\n    return has(it, STATE) ? it[STATE] : {};\n  };\n  has$1 = function (it) {\n    return has(it, STATE);\n  };\n}\n\nvar internalState = {\n  set: set,\n  get: get,\n  has: has$1,\n  enforce: enforce,\n  getterFor: getterFor\n};\n\nvar redefine = createCommonjsModule(function (module) {\nvar getInternalState = internalState.get;\nvar enforceInternalState = internalState.enforce;\nvar TEMPLATE = String(functionToString).split('toString');\n\nshared('inspectSource', function (it) {\n  return functionToString.call(it);\n});\n\n(module.exports = function (O, key, value, options) {\n  var unsafe = options ? !!options.unsafe : false;\n  var simple = options ? !!options.enumerable : false;\n  var noTargetGet = options ? !!options.noTargetGet : false;\n  if (typeof value == 'function') {\n    if (typeof key == 'string' && !has(value, 'name')) createNonEnumerableProperty(value, 'name', key);\n    enforceInternalState(value).source = TEMPLATE.join(typeof key == 'string' ? key : '');\n  }\n  if (O === global_1) {\n    if (simple) O[key] = value;\n    else setGlobal(key, value);\n    return;\n  } else if (!unsafe) {\n    delete O[key];\n  } else if (!noTargetGet && O[key]) {\n    simple = true;\n  }\n  if (simple) O[key] = value;\n  else createNonEnumerableProperty(O, key, value);\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, 'toString', function toString() {\n  return typeof this == 'function' && getInternalState(this).source || functionToString.call(this);\n});\n});\n\nvar path = global_1;\n\nvar aFunction = function (variable) {\n  return typeof variable == 'function' ? variable : undefined;\n};\n\nvar getBuiltIn = function (namespace, method) {\n  return arguments.length < 2 ? aFunction(path[namespace]) || aFunction(global_1[namespace])\n    : path[namespace] && path[namespace][method] || global_1[namespace] && global_1[namespace][method];\n};\n\nvar ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `ToInteger` abstract operation\n// https://tc39.github.io/ecma262/#sec-tointeger\nvar toInteger = function (argument) {\n  return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor : ceil)(argument);\n};\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.github.io/ecma262/#sec-tolength\nvar toLength = function (argument) {\n  return argument > 0 ? min(toInteger(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n\nvar max = Math.max;\nvar min$1 = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(length, length).\nvar toAbsoluteIndex = function (index, length) {\n  var integer = toInteger(index);\n  return integer < 0 ? max(integer + length, 0) : min$1(integer, length);\n};\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n  return function ($this, el, fromIndex) {\n    var O = toIndexedObject($this);\n    var length = toLength(O.length);\n    var index = toAbsoluteIndex(fromIndex, length);\n    var value;\n    // Array#includes uses SameValueZero equality algorithm\n    // eslint-disable-next-line no-self-compare\n    if (IS_INCLUDES && el != el) while (length > index) {\n      value = O[index++];\n      // eslint-disable-next-line no-self-compare\n      if (value != value) return true;\n    // Array#indexOf ignores holes, Array#includes - not\n    } else for (;length > index; index++) {\n      if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n    } return !IS_INCLUDES && -1;\n  };\n};\n\nvar arrayIncludes = {\n  // `Array.prototype.includes` method\n  // https://tc39.github.io/ecma262/#sec-array.prototype.includes\n  includes: createMethod(true),\n  // `Array.prototype.indexOf` method\n  // https://tc39.github.io/ecma262/#sec-array.prototype.indexof\n  indexOf: createMethod(false)\n};\n\nvar indexOf = arrayIncludes.indexOf;\n\n\nvar objectKeysInternal = function (object, names) {\n  var O = toIndexedObject(object);\n  var i = 0;\n  var result = [];\n  var key;\n  for (key in O) !has(hiddenKeys, key) && has(O, key) && result.push(key);\n  // Don't enum bug & hidden keys\n  while (names.length > i) if (has(O, key = names[i++])) {\n    ~indexOf(result, key) || result.push(key);\n  }\n  return result;\n};\n\n// IE8- don't enum bug keys\nvar enumBugKeys = [\n  'constructor',\n  'hasOwnProperty',\n  'isPrototypeOf',\n  'propertyIsEnumerable',\n  'toLocaleString',\n  'toString',\n  'valueOf'\n];\n\nvar hiddenKeys$1 = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.github.io/ecma262/#sec-object.getownpropertynames\nvar f$3 = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n  return objectKeysInternal(O, hiddenKeys$1);\n};\n\nvar objectGetOwnPropertyNames = {\n\tf: f$3\n};\n\nvar f$4 = Object.getOwnPropertySymbols;\n\nvar objectGetOwnPropertySymbols = {\n\tf: f$4\n};\n\n// all object keys, includes non-enumerable and symbols\nvar ownKeys = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n  var keys = objectGetOwnPropertyNames.f(anObject(it));\n  var getOwnPropertySymbols = objectGetOwnPropertySymbols.f;\n  return getOwnPropertySymbols ? keys.concat(getOwnPropertySymbols(it)) : keys;\n};\n\nvar copyConstructorProperties = function (target, source) {\n  var keys = ownKeys(source);\n  var defineProperty = objectDefineProperty.f;\n  var getOwnPropertyDescriptor = objectGetOwnPropertyDescriptor.f;\n  for (var i = 0; i < keys.length; i++) {\n    var key = keys[i];\n    if (!has(target, key)) defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n  }\n};\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n  var value = data[normalize(feature)];\n  return value == POLYFILL ? true\n    : value == NATIVE ? false\n    : typeof detection == 'function' ? fails(detection)\n    : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n  return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nvar isForced_1 = isForced;\n\nvar getOwnPropertyDescriptor$1 = objectGetOwnPropertyDescriptor.f;\n\n\n\n\n\n\n/*\n  options.target      - name of the target object\n  options.global      - target is the global object\n  options.stat        - export as static methods of target\n  options.proto       - export as prototype methods of target\n  options.real        - real prototype method for the `pure` version\n  options.forced      - export even if the native feature is available\n  options.bind        - bind methods to the target, required for the `pure` version\n  options.wrap        - wrap constructors to preventing global pollution, required for the `pure` version\n  options.unsafe      - use the simple assignment of property instead of delete + defineProperty\n  options.sham        - add a flag to not completely full polyfills\n  options.enumerable  - export as enumerable property\n  options.noTargetGet - prevent calling a getter on target\n*/\nvar _export = function (options, source) {\n  var TARGET = options.target;\n  var GLOBAL = options.global;\n  var STATIC = options.stat;\n  var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n  if (GLOBAL) {\n    target = global_1;\n  } else if (STATIC) {\n    target = global_1[TARGET] || setGlobal(TARGET, {});\n  } else {\n    target = (global_1[TARGET] || {}).prototype;\n  }\n  if (target) for (key in source) {\n    sourceProperty = source[key];\n    if (options.noTargetGet) {\n      descriptor = getOwnPropertyDescriptor$1(target, key);\n      targetProperty = descriptor && descriptor.value;\n    } else targetProperty = target[key];\n    FORCED = isForced_1(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n    // contained in target\n    if (!FORCED && targetProperty !== undefined) {\n      if (typeof sourceProperty === typeof targetProperty) continue;\n      copyConstructorProperties(sourceProperty, targetProperty);\n    }\n    // add a flag to not completely full polyfills\n    if (options.sham || (targetProperty && targetProperty.sham)) {\n      createNonEnumerableProperty(sourceProperty, 'sham', true);\n    }\n    // extend global\n    redefine(target, key, sourceProperty, options);\n  }\n};\n\n// `IsArray` abstract operation\n// https://tc39.github.io/ecma262/#sec-isarray\nvar isArray = Array.isArray || function isArray(arg) {\n  return classofRaw(arg) == 'Array';\n};\n\nvar createProperty = function (object, key, value) {\n  var propertyKey = toPrimitive(key);\n  if (propertyKey in object) objectDefineProperty.f(object, propertyKey, createPropertyDescriptor(0, value));\n  else object[propertyKey] = value;\n};\n\nvar nativeSymbol = !!Object.getOwnPropertySymbols && !fails(function () {\n  // Chrome 38 Symbol has incorrect toString conversion\n  // eslint-disable-next-line no-undef\n  return !String(Symbol());\n});\n\nvar Symbol$1 = global_1.Symbol;\nvar store$2 = shared('wks');\n\nvar wellKnownSymbol = function (name) {\n  return store$2[name] || (store$2[name] = nativeSymbol && Symbol$1[name]\n    || (nativeSymbol ? Symbol$1 : uid)('Symbol.' + name));\n};\n\nvar userAgent = getBuiltIn('navigator', 'userAgent') || '';\n\nvar process = global_1.process;\nvar versions = process && process.versions;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n  match = v8.split('.');\n  version = match[0] + match[1];\n} else if (userAgent) {\n  match = userAgent.match(/Edge\\/(\\d+)/);\n  if (!match || match[1] >= 74) {\n    match = userAgent.match(/Chrome\\/(\\d+)/);\n    if (match) version = match[1];\n  }\n}\n\nvar v8Version = version && +version;\n\nvar SPECIES = wellKnownSymbol('species');\n\nvar arrayMethodHasSpeciesSupport = function (METHOD_NAME) {\n  // We can't use this feature detection in V8 since it causes\n  // deoptimization and serious performance degradation\n  // https://github.com/zloirock/core-js/issues/677\n  return v8Version >= 51 || !fails(function () {\n    var array = [];\n    var constructor = array.constructor = {};\n    constructor[SPECIES] = function () {\n      return { foo: 1 };\n    };\n    return array[METHOD_NAME](Boolean).foo !== 1;\n  });\n};\n\nvar SPECIES$1 = wellKnownSymbol('species');\nvar nativeSlice = [].slice;\nvar max$1 = Math.max;\n\n// `Array.prototype.slice` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.slice\n// fallback for not array-like ES3 strings and DOM objects\n_export({ target: 'Array', proto: true, forced: !arrayMethodHasSpeciesSupport('slice') }, {\n  slice: function slice(start, end) {\n    var O = toIndexedObject(this);\n    var length = toLength(O.length);\n    var k = toAbsoluteIndex(start, length);\n    var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n    // inline `ArraySpeciesCreate` for usage native `Array#slice` where it's possible\n    var Constructor, result, n;\n    if (isArray(O)) {\n      Constructor = O.constructor;\n      // cross-realm fallback\n      if (typeof Constructor == 'function' && (Constructor === Array || isArray(Constructor.prototype))) {\n        Constructor = undefined;\n      } else if (isObject(Constructor)) {\n        Constructor = Constructor[SPECIES$1];\n        if (Constructor === null) Constructor = undefined;\n      }\n      if (Constructor === Array || Constructor === undefined) {\n        return nativeSlice.call(O, k, fin);\n      }\n    }\n    result = new (Constructor === undefined ? Array : Constructor)(max$1(fin - k, 0));\n    for (n = 0; k < fin; k++, n++) if (k in O) createProperty(result, n, O[k]);\n    result.length = n;\n    return result;\n  }\n});\n\nvar defineProperty = objectDefineProperty.f;\n\nvar FunctionPrototype = Function.prototype;\nvar FunctionPrototypeToString = FunctionPrototype.toString;\nvar nameRE = /^\\s*function ([^ (]*)/;\nvar NAME = 'name';\n\n// Function instances `.name` property\n// https://tc39.github.io/ecma262/#sec-function-instances-name\nif (descriptors && !(NAME in FunctionPrototype)) {\n  defineProperty(FunctionPrototype, NAME, {\n    configurable: true,\n    get: function () {\n      try {\n        return FunctionPrototypeToString.call(this).match(nameRE)[1];\n      } catch (error) {\n        return '';\n      }\n    }\n  });\n}\n\nvar nativeGetOwnPropertyNames = objectGetOwnPropertyNames.f;\n\nvar toString$1 = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n  ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n  try {\n    return nativeGetOwnPropertyNames(it);\n  } catch (error) {\n    return windowNames.slice();\n  }\n};\n\n// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nvar f$5 = function getOwnPropertyNames(it) {\n  return windowNames && toString$1.call(it) == '[object Window]'\n    ? getWindowNames(it)\n    : nativeGetOwnPropertyNames(toIndexedObject(it));\n};\n\nvar objectGetOwnPropertyNamesExternal = {\n\tf: f$5\n};\n\nvar nativeGetOwnPropertyNames$1 = objectGetOwnPropertyNamesExternal.f;\n\nvar FAILS_ON_PRIMITIVES = fails(function () { return !Object.getOwnPropertyNames(1); });\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.github.io/ecma262/#sec-object.getownpropertynames\n_export({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, {\n  getOwnPropertyNames: nativeGetOwnPropertyNames$1\n});\n\nfunction _typeof2(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof2 = function _typeof2(obj) { return typeof obj; }; } else { _typeof2 = function _typeof2(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof2(obj); }\n\nfunction _typeof(obj) {\n  if (typeof Symbol === \"function\" && _typeof2(Symbol.iterator) === \"symbol\") {\n    _typeof = function _typeof(obj) {\n      return _typeof2(obj);\n    };\n  } else {\n    _typeof = function _typeof(obj) {\n      return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : _typeof2(obj);\n    };\n  }\n\n  return _typeof(obj);\n}\n\n// `ToObject` abstract operation\n// https://tc39.github.io/ecma262/#sec-toobject\nvar toObject = function (argument) {\n  return Object(requireObjectCoercible(argument));\n};\n\n// `Object.keys` method\n// https://tc39.github.io/ecma262/#sec-object.keys\nvar objectKeys = Object.keys || function keys(O) {\n  return objectKeysInternal(O, enumBugKeys);\n};\n\n// `Object.defineProperties` method\n// https://tc39.github.io/ecma262/#sec-object.defineproperties\nvar objectDefineProperties = descriptors ? Object.defineProperties : function defineProperties(O, Properties) {\n  anObject(O);\n  var keys = objectKeys(Properties);\n  var length = keys.length;\n  var index = 0;\n  var key;\n  while (length > index) objectDefineProperty.f(O, key = keys[index++], Properties[key]);\n  return O;\n};\n\nvar html = getBuiltIn('document', 'documentElement');\n\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar PROTOTYPE = 'prototype';\nvar Empty = function () { /* empty */ };\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n  // Thrash, waste and sodomy: IE GC bug\n  var iframe = documentCreateElement('iframe');\n  var length = enumBugKeys.length;\n  var lt = '<';\n  var script = 'script';\n  var gt = '>';\n  var js = 'java' + script + ':';\n  var iframeDocument;\n  iframe.style.display = 'none';\n  html.appendChild(iframe);\n  iframe.src = String(js);\n  iframeDocument = iframe.contentWindow.document;\n  iframeDocument.open();\n  iframeDocument.write(lt + script + gt + 'document.F=Object' + lt + '/' + script + gt);\n  iframeDocument.close();\n  createDict = iframeDocument.F;\n  while (length--) delete createDict[PROTOTYPE][enumBugKeys[length]];\n  return createDict();\n};\n\n// `Object.create` method\n// https://tc39.github.io/ecma262/#sec-object.create\nvar objectCreate = Object.create || function create(O, Properties) {\n  var result;\n  if (O !== null) {\n    Empty[PROTOTYPE] = anObject(O);\n    result = new Empty();\n    Empty[PROTOTYPE] = null;\n    // add \"__proto__\" for Object.getPrototypeOf polyfill\n    result[IE_PROTO] = O;\n  } else result = createDict();\n  return Properties === undefined ? result : objectDefineProperties(result, Properties);\n};\n\nhiddenKeys[IE_PROTO] = true;\n\nvar f$6 = wellKnownSymbol;\n\nvar wrappedWellKnownSymbol = {\n\tf: f$6\n};\n\nvar defineProperty$1 = objectDefineProperty.f;\n\nvar defineWellKnownSymbol = function (NAME) {\n  var Symbol = path.Symbol || (path.Symbol = {});\n  if (!has(Symbol, NAME)) defineProperty$1(Symbol, NAME, {\n    value: wrappedWellKnownSymbol.f(NAME)\n  });\n};\n\nvar defineProperty$2 = objectDefineProperty.f;\n\n\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nvar setToStringTag = function (it, TAG, STATIC) {\n  if (it && !has(it = STATIC ? it : it.prototype, TO_STRING_TAG)) {\n    defineProperty$2(it, TO_STRING_TAG, { configurable: true, value: TAG });\n  }\n};\n\nvar aFunction$1 = function (it) {\n  if (typeof it != 'function') {\n    throw TypeError(String(it) + ' is not a function');\n  } return it;\n};\n\n// optional / simple context binding\nvar bindContext = function (fn, that, length) {\n  aFunction$1(fn);\n  if (that === undefined) return fn;\n  switch (length) {\n    case 0: return function () {\n      return fn.call(that);\n    };\n    case 1: return function (a) {\n      return fn.call(that, a);\n    };\n    case 2: return function (a, b) {\n      return fn.call(that, a, b);\n    };\n    case 3: return function (a, b, c) {\n      return fn.call(that, a, b, c);\n    };\n  }\n  return function (/* ...args */) {\n    return fn.apply(that, arguments);\n  };\n};\n\nvar SPECIES$2 = wellKnownSymbol('species');\n\n// `ArraySpeciesCreate` abstract operation\n// https://tc39.github.io/ecma262/#sec-arrayspeciescreate\nvar arraySpeciesCreate = function (originalArray, length) {\n  var C;\n  if (isArray(originalArray)) {\n    C = originalArray.constructor;\n    // cross-realm fallback\n    if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;\n    else if (isObject(C)) {\n      C = C[SPECIES$2];\n      if (C === null) C = undefined;\n    }\n  } return new (C === undefined ? Array : C)(length === 0 ? 0 : length);\n};\n\nvar push = [].push;\n\n// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex }` methods implementation\nvar createMethod$1 = function (TYPE) {\n  var IS_MAP = TYPE == 1;\n  var IS_FILTER = TYPE == 2;\n  var IS_SOME = TYPE == 3;\n  var IS_EVERY = TYPE == 4;\n  var IS_FIND_INDEX = TYPE == 6;\n  var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n  return function ($this, callbackfn, that, specificCreate) {\n    var O = toObject($this);\n    var self = indexedObject(O);\n    var boundFunction = bindContext(callbackfn, that, 3);\n    var length = toLength(self.length);\n    var index = 0;\n    var create = specificCreate || arraySpeciesCreate;\n    var target = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;\n    var value, result;\n    for (;length > index; index++) if (NO_HOLES || index in self) {\n      value = self[index];\n      result = boundFunction(value, index, O);\n      if (TYPE) {\n        if (IS_MAP) target[index] = result; // map\n        else if (result) switch (TYPE) {\n          case 3: return true;              // some\n          case 5: return value;             // find\n          case 6: return index;             // findIndex\n          case 2: push.call(target, value); // filter\n        } else if (IS_EVERY) return false;  // every\n      }\n    }\n    return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;\n  };\n};\n\nvar arrayIteration = {\n  // `Array.prototype.forEach` method\n  // https://tc39.github.io/ecma262/#sec-array.prototype.foreach\n  forEach: createMethod$1(0),\n  // `Array.prototype.map` method\n  // https://tc39.github.io/ecma262/#sec-array.prototype.map\n  map: createMethod$1(1),\n  // `Array.prototype.filter` method\n  // https://tc39.github.io/ecma262/#sec-array.prototype.filter\n  filter: createMethod$1(2),\n  // `Array.prototype.some` method\n  // https://tc39.github.io/ecma262/#sec-array.prototype.some\n  some: createMethod$1(3),\n  // `Array.prototype.every` method\n  // https://tc39.github.io/ecma262/#sec-array.prototype.every\n  every: createMethod$1(4),\n  // `Array.prototype.find` method\n  // https://tc39.github.io/ecma262/#sec-array.prototype.find\n  find: createMethod$1(5),\n  // `Array.prototype.findIndex` method\n  // https://tc39.github.io/ecma262/#sec-array.prototype.findIndex\n  findIndex: createMethod$1(6)\n};\n\nvar $forEach = arrayIteration.forEach;\n\nvar HIDDEN = sharedKey('hidden');\nvar SYMBOL = 'Symbol';\nvar PROTOTYPE$1 = 'prototype';\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\nvar setInternalState = internalState.set;\nvar getInternalState = internalState.getterFor(SYMBOL);\nvar ObjectPrototype = Object[PROTOTYPE$1];\nvar $Symbol = global_1.Symbol;\nvar JSON$1 = global_1.JSON;\nvar nativeJSONStringify = JSON$1 && JSON$1.stringify;\nvar nativeGetOwnPropertyDescriptor$1 = objectGetOwnPropertyDescriptor.f;\nvar nativeDefineProperty$1 = objectDefineProperty.f;\nvar nativeGetOwnPropertyNames$2 = objectGetOwnPropertyNamesExternal.f;\nvar nativePropertyIsEnumerable$1 = objectPropertyIsEnumerable.f;\nvar AllSymbols = shared('symbols');\nvar ObjectPrototypeSymbols = shared('op-symbols');\nvar StringToSymbolRegistry = shared('string-to-symbol-registry');\nvar SymbolToStringRegistry = shared('symbol-to-string-registry');\nvar WellKnownSymbolsStore = shared('wks');\nvar QObject = global_1.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar USE_SETTER = !QObject || !QObject[PROTOTYPE$1] || !QObject[PROTOTYPE$1].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDescriptor = descriptors && fails(function () {\n  return objectCreate(nativeDefineProperty$1({}, 'a', {\n    get: function () { return nativeDefineProperty$1(this, 'a', { value: 7 }).a; }\n  })).a != 7;\n}) ? function (O, P, Attributes) {\n  var ObjectPrototypeDescriptor = nativeGetOwnPropertyDescriptor$1(ObjectPrototype, P);\n  if (ObjectPrototypeDescriptor) delete ObjectPrototype[P];\n  nativeDefineProperty$1(O, P, Attributes);\n  if (ObjectPrototypeDescriptor && O !== ObjectPrototype) {\n    nativeDefineProperty$1(ObjectPrototype, P, ObjectPrototypeDescriptor);\n  }\n} : nativeDefineProperty$1;\n\nvar wrap = function (tag, description) {\n  var symbol = AllSymbols[tag] = objectCreate($Symbol[PROTOTYPE$1]);\n  setInternalState(symbol, {\n    type: SYMBOL,\n    tag: tag,\n    description: description\n  });\n  if (!descriptors) symbol.description = description;\n  return symbol;\n};\n\nvar isSymbol = nativeSymbol && typeof $Symbol.iterator == 'symbol' ? function (it) {\n  return typeof it == 'symbol';\n} : function (it) {\n  return Object(it) instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(O, P, Attributes) {\n  if (O === ObjectPrototype) $defineProperty(ObjectPrototypeSymbols, P, Attributes);\n  anObject(O);\n  var key = toPrimitive(P, true);\n  anObject(Attributes);\n  if (has(AllSymbols, key)) {\n    if (!Attributes.enumerable) {\n      if (!has(O, HIDDEN)) nativeDefineProperty$1(O, HIDDEN, createPropertyDescriptor(1, {}));\n      O[HIDDEN][key] = true;\n    } else {\n      if (has(O, HIDDEN) && O[HIDDEN][key]) O[HIDDEN][key] = false;\n      Attributes = objectCreate(Attributes, { enumerable: createPropertyDescriptor(0, false) });\n    } return setSymbolDescriptor(O, key, Attributes);\n  } return nativeDefineProperty$1(O, key, Attributes);\n};\n\nvar $defineProperties = function defineProperties(O, Properties) {\n  anObject(O);\n  var properties = toIndexedObject(Properties);\n  var keys = objectKeys(properties).concat($getOwnPropertySymbols(properties));\n  $forEach(keys, function (key) {\n    if (!descriptors || $propertyIsEnumerable.call(properties, key)) $defineProperty(O, key, properties[key]);\n  });\n  return O;\n};\n\nvar $create = function create(O, Properties) {\n  return Properties === undefined ? objectCreate(O) : $defineProperties(objectCreate(O), Properties);\n};\n\nvar $propertyIsEnumerable = function propertyIsEnumerable(V) {\n  var P = toPrimitive(V, true);\n  var enumerable = nativePropertyIsEnumerable$1.call(this, P);\n  if (this === ObjectPrototype && has(AllSymbols, P) && !has(ObjectPrototypeSymbols, P)) return false;\n  return enumerable || !has(this, P) || !has(AllSymbols, P) || has(this, HIDDEN) && this[HIDDEN][P] ? enumerable : true;\n};\n\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(O, P) {\n  var it = toIndexedObject(O);\n  var key = toPrimitive(P, true);\n  if (it === ObjectPrototype && has(AllSymbols, key) && !has(ObjectPrototypeSymbols, key)) return;\n  var descriptor = nativeGetOwnPropertyDescriptor$1(it, key);\n  if (descriptor && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) {\n    descriptor.enumerable = true;\n  }\n  return descriptor;\n};\n\nvar $getOwnPropertyNames = function getOwnPropertyNames(O) {\n  var names = nativeGetOwnPropertyNames$2(toIndexedObject(O));\n  var result = [];\n  $forEach(names, function (key) {\n    if (!has(AllSymbols, key) && !has(hiddenKeys, key)) result.push(key);\n  });\n  return result;\n};\n\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(O) {\n  var IS_OBJECT_PROTOTYPE = O === ObjectPrototype;\n  var names = nativeGetOwnPropertyNames$2(IS_OBJECT_PROTOTYPE ? ObjectPrototypeSymbols : toIndexedObject(O));\n  var result = [];\n  $forEach(names, function (key) {\n    if (has(AllSymbols, key) && (!IS_OBJECT_PROTOTYPE || has(ObjectPrototype, key))) {\n      result.push(AllSymbols[key]);\n    }\n  });\n  return result;\n};\n\n// `Symbol` constructor\n// https://tc39.github.io/ecma262/#sec-symbol-constructor\nif (!nativeSymbol) {\n  $Symbol = function Symbol() {\n    if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor');\n    var description = !arguments.length || arguments[0] === undefined ? undefined : String(arguments[0]);\n    var tag = uid(description);\n    var setter = function (value) {\n      if (this === ObjectPrototype) setter.call(ObjectPrototypeSymbols, value);\n      if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n      setSymbolDescriptor(this, tag, createPropertyDescriptor(1, value));\n    };\n    if (descriptors && USE_SETTER) setSymbolDescriptor(ObjectPrototype, tag, { configurable: true, set: setter });\n    return wrap(tag, description);\n  };\n\n  redefine($Symbol[PROTOTYPE$1], 'toString', function toString() {\n    return getInternalState(this).tag;\n  });\n\n  objectPropertyIsEnumerable.f = $propertyIsEnumerable;\n  objectDefineProperty.f = $defineProperty;\n  objectGetOwnPropertyDescriptor.f = $getOwnPropertyDescriptor;\n  objectGetOwnPropertyNames.f = objectGetOwnPropertyNamesExternal.f = $getOwnPropertyNames;\n  objectGetOwnPropertySymbols.f = $getOwnPropertySymbols;\n\n  if (descriptors) {\n    // https://github.com/tc39/proposal-Symbol-description\n    nativeDefineProperty$1($Symbol[PROTOTYPE$1], 'description', {\n      configurable: true,\n      get: function description() {\n        return getInternalState(this).description;\n      }\n    });\n    {\n      redefine(ObjectPrototype, 'propertyIsEnumerable', $propertyIsEnumerable, { unsafe: true });\n    }\n  }\n\n  wrappedWellKnownSymbol.f = function (name) {\n    return wrap(wellKnownSymbol(name), name);\n  };\n}\n\n_export({ global: true, wrap: true, forced: !nativeSymbol, sham: !nativeSymbol }, {\n  Symbol: $Symbol\n});\n\n$forEach(objectKeys(WellKnownSymbolsStore), function (name) {\n  defineWellKnownSymbol(name);\n});\n\n_export({ target: SYMBOL, stat: true, forced: !nativeSymbol }, {\n  // `Symbol.for` method\n  // https://tc39.github.io/ecma262/#sec-symbol.for\n  'for': function (key) {\n    var string = String(key);\n    if (has(StringToSymbolRegistry, string)) return StringToSymbolRegistry[string];\n    var symbol = $Symbol(string);\n    StringToSymbolRegistry[string] = symbol;\n    SymbolToStringRegistry[symbol] = string;\n    return symbol;\n  },\n  // `Symbol.keyFor` method\n  // https://tc39.github.io/ecma262/#sec-symbol.keyfor\n  keyFor: function keyFor(sym) {\n    if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol');\n    if (has(SymbolToStringRegistry, sym)) return SymbolToStringRegistry[sym];\n  },\n  useSetter: function () { USE_SETTER = true; },\n  useSimple: function () { USE_SETTER = false; }\n});\n\n_export({ target: 'Object', stat: true, forced: !nativeSymbol, sham: !descriptors }, {\n  // `Object.create` method\n  // https://tc39.github.io/ecma262/#sec-object.create\n  create: $create,\n  // `Object.defineProperty` method\n  // https://tc39.github.io/ecma262/#sec-object.defineproperty\n  defineProperty: $defineProperty,\n  // `Object.defineProperties` method\n  // https://tc39.github.io/ecma262/#sec-object.defineproperties\n  defineProperties: $defineProperties,\n  // `Object.getOwnPropertyDescriptor` method\n  // https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptors\n  getOwnPropertyDescriptor: $getOwnPropertyDescriptor\n});\n\n_export({ target: 'Object', stat: true, forced: !nativeSymbol }, {\n  // `Object.getOwnPropertyNames` method\n  // https://tc39.github.io/ecma262/#sec-object.getownpropertynames\n  getOwnPropertyNames: $getOwnPropertyNames,\n  // `Object.getOwnPropertySymbols` method\n  // https://tc39.github.io/ecma262/#sec-object.getownpropertysymbols\n  getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives\n// https://bugs.chromium.org/p/v8/issues/detail?id=3443\n_export({ target: 'Object', stat: true, forced: fails(function () { objectGetOwnPropertySymbols.f(1); }) }, {\n  getOwnPropertySymbols: function getOwnPropertySymbols(it) {\n    return objectGetOwnPropertySymbols.f(toObject(it));\n  }\n});\n\n// `JSON.stringify` method behavior with symbols\n// https://tc39.github.io/ecma262/#sec-json.stringify\nJSON$1 && _export({ target: 'JSON', stat: true, forced: !nativeSymbol || fails(function () {\n  var symbol = $Symbol();\n  // MS Edge converts symbol values to JSON as {}\n  return nativeJSONStringify([symbol]) != '[null]'\n    // WebKit converts symbol values to JSON as null\n    || nativeJSONStringify({ a: symbol }) != '{}'\n    // V8 throws on boxed symbols\n    || nativeJSONStringify(Object(symbol)) != '{}';\n}) }, {\n  stringify: function stringify(it) {\n    var args = [it];\n    var index = 1;\n    var replacer, $replacer;\n    while (arguments.length > index) args.push(arguments[index++]);\n    $replacer = replacer = args[1];\n    if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n    if (!isArray(replacer)) replacer = function (key, value) {\n      if (typeof $replacer == 'function') value = $replacer.call(this, key, value);\n      if (!isSymbol(value)) return value;\n    };\n    args[1] = replacer;\n    return nativeJSONStringify.apply(JSON$1, args);\n  }\n});\n\n// `Symbol.prototype[@@toPrimitive]` method\n// https://tc39.github.io/ecma262/#sec-symbol.prototype-@@toprimitive\nif (!$Symbol[PROTOTYPE$1][TO_PRIMITIVE]) {\n  createNonEnumerableProperty($Symbol[PROTOTYPE$1], TO_PRIMITIVE, $Symbol[PROTOTYPE$1].valueOf);\n}\n// `Symbol.prototype[@@toStringTag]` property\n// https://tc39.github.io/ecma262/#sec-symbol.prototype-@@tostringtag\nsetToStringTag($Symbol, SYMBOL);\n\nhiddenKeys[HIDDEN] = true;\n\nvar defineProperty$3 = objectDefineProperty.f;\n\n\nvar NativeSymbol = global_1.Symbol;\n\nif (descriptors && typeof NativeSymbol == 'function' && (!('description' in NativeSymbol.prototype) ||\n  // Safari 12 bug\n  NativeSymbol().description !== undefined\n)) {\n  var EmptyStringDescriptionStore = {};\n  // wrap Symbol constructor for correct work with undefined description\n  var SymbolWrapper = function Symbol() {\n    var description = arguments.length < 1 || arguments[0] === undefined ? undefined : String(arguments[0]);\n    var result = this instanceof SymbolWrapper\n      ? new NativeSymbol(description)\n      // in Edge 13, String(Symbol(undefined)) === 'Symbol(undefined)'\n      : description === undefined ? NativeSymbol() : NativeSymbol(description);\n    if (description === '') EmptyStringDescriptionStore[result] = true;\n    return result;\n  };\n  copyConstructorProperties(SymbolWrapper, NativeSymbol);\n  var symbolPrototype = SymbolWrapper.prototype = NativeSymbol.prototype;\n  symbolPrototype.constructor = SymbolWrapper;\n\n  var symbolToString = symbolPrototype.toString;\n  var native = String(NativeSymbol('test')) == 'Symbol(test)';\n  var regexp = /^Symbol\\((.*)\\)[^)]+$/;\n  defineProperty$3(symbolPrototype, 'description', {\n    configurable: true,\n    get: function description() {\n      var symbol = isObject(this) ? this.valueOf() : this;\n      var string = symbolToString.call(symbol);\n      if (has(EmptyStringDescriptionStore, symbol)) return '';\n      var desc = native ? string.slice(7, -1) : string.replace(regexp, '$1');\n      return desc === '' ? undefined : desc;\n    }\n  });\n\n  _export({ global: true, forced: true }, {\n    Symbol: SymbolWrapper\n  });\n}\n\n// `Symbol.iterator` well-known symbol\n// https://tc39.github.io/ecma262/#sec-symbol.iterator\ndefineWellKnownSymbol('iterator');\n\nvar UNSCOPABLES = wellKnownSymbol('unscopables');\nvar ArrayPrototype = Array.prototype;\n\n// Array.prototype[@@unscopables]\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\nif (ArrayPrototype[UNSCOPABLES] == undefined) {\n  createNonEnumerableProperty(ArrayPrototype, UNSCOPABLES, objectCreate(null));\n}\n\n// add a key to Array.prototype[@@unscopables]\nvar addToUnscopables = function (key) {\n  ArrayPrototype[UNSCOPABLES][key] = true;\n};\n\nvar iterators = {};\n\nvar correctPrototypeGetter = !fails(function () {\n  function F() { /* empty */ }\n  F.prototype.constructor = null;\n  return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n\nvar IE_PROTO$1 = sharedKey('IE_PROTO');\nvar ObjectPrototype$1 = Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.github.io/ecma262/#sec-object.getprototypeof\nvar objectGetPrototypeOf = correctPrototypeGetter ? Object.getPrototypeOf : function (O) {\n  O = toObject(O);\n  if (has(O, IE_PROTO$1)) return O[IE_PROTO$1];\n  if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n    return O.constructor.prototype;\n  } return O instanceof Object ? ObjectPrototype$1 : null;\n};\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar BUGGY_SAFARI_ITERATORS = false;\n\nvar returnThis = function () { return this; };\n\n// `%IteratorPrototype%` object\n// https://tc39.github.io/ecma262/#sec-%iteratorprototype%-object\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\n\nif ([].keys) {\n  arrayIterator = [].keys();\n  // Safari 8 has buggy iterators w/o `next`\n  if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;\n  else {\n    PrototypeOfArrayIteratorPrototype = objectGetPrototypeOf(objectGetPrototypeOf(arrayIterator));\n    if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;\n  }\n}\n\nif (IteratorPrototype == undefined) IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nif ( !has(IteratorPrototype, ITERATOR)) {\n  createNonEnumerableProperty(IteratorPrototype, ITERATOR, returnThis);\n}\n\nvar iteratorsCore = {\n  IteratorPrototype: IteratorPrototype,\n  BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n};\n\nvar IteratorPrototype$1 = iteratorsCore.IteratorPrototype;\n\n\n\n\n\nvar returnThis$1 = function () { return this; };\n\nvar createIteratorConstructor = function (IteratorConstructor, NAME, next) {\n  var TO_STRING_TAG = NAME + ' Iterator';\n  IteratorConstructor.prototype = objectCreate(IteratorPrototype$1, { next: createPropertyDescriptor(1, next) });\n  setToStringTag(IteratorConstructor, TO_STRING_TAG, false);\n  iterators[TO_STRING_TAG] = returnThis$1;\n  return IteratorConstructor;\n};\n\nvar aPossiblePrototype = function (it) {\n  if (!isObject(it) && it !== null) {\n    throw TypeError(\"Can't set \" + String(it) + ' as a prototype');\n  } return it;\n};\n\n// `Object.setPrototypeOf` method\n// https://tc39.github.io/ecma262/#sec-object.setprototypeof\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nvar objectSetPrototypeOf = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n  var CORRECT_SETTER = false;\n  var test = {};\n  var setter;\n  try {\n    setter = Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set;\n    setter.call(test, []);\n    CORRECT_SETTER = test instanceof Array;\n  } catch (error) { /* empty */ }\n  return function setPrototypeOf(O, proto) {\n    anObject(O);\n    aPossiblePrototype(proto);\n    if (CORRECT_SETTER) setter.call(O, proto);\n    else O.__proto__ = proto;\n    return O;\n  };\n}() : undefined);\n\nvar IteratorPrototype$2 = iteratorsCore.IteratorPrototype;\nvar BUGGY_SAFARI_ITERATORS$1 = iteratorsCore.BUGGY_SAFARI_ITERATORS;\nvar ITERATOR$1 = wellKnownSymbol('iterator');\nvar KEYS = 'keys';\nvar VALUES = 'values';\nvar ENTRIES = 'entries';\n\nvar returnThis$2 = function () { return this; };\n\nvar defineIterator = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {\n  createIteratorConstructor(IteratorConstructor, NAME, next);\n\n  var getIterationMethod = function (KIND) {\n    if (KIND === DEFAULT && defaultIterator) return defaultIterator;\n    if (!BUGGY_SAFARI_ITERATORS$1 && KIND in IterablePrototype) return IterablePrototype[KIND];\n    switch (KIND) {\n      case KEYS: return function keys() { return new IteratorConstructor(this, KIND); };\n      case VALUES: return function values() { return new IteratorConstructor(this, KIND); };\n      case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); };\n    } return function () { return new IteratorConstructor(this); };\n  };\n\n  var TO_STRING_TAG = NAME + ' Iterator';\n  var INCORRECT_VALUES_NAME = false;\n  var IterablePrototype = Iterable.prototype;\n  var nativeIterator = IterablePrototype[ITERATOR$1]\n    || IterablePrototype['@@iterator']\n    || DEFAULT && IterablePrototype[DEFAULT];\n  var defaultIterator = !BUGGY_SAFARI_ITERATORS$1 && nativeIterator || getIterationMethod(DEFAULT);\n  var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;\n  var CurrentIteratorPrototype, methods, KEY;\n\n  // fix native\n  if (anyNativeIterator) {\n    CurrentIteratorPrototype = objectGetPrototypeOf(anyNativeIterator.call(new Iterable()));\n    if (IteratorPrototype$2 !== Object.prototype && CurrentIteratorPrototype.next) {\n      if ( objectGetPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype$2) {\n        if (objectSetPrototypeOf) {\n          objectSetPrototypeOf(CurrentIteratorPrototype, IteratorPrototype$2);\n        } else if (typeof CurrentIteratorPrototype[ITERATOR$1] != 'function') {\n          createNonEnumerableProperty(CurrentIteratorPrototype, ITERATOR$1, returnThis$2);\n        }\n      }\n      // Set @@toStringTag to native iterators\n      setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true);\n    }\n  }\n\n  // fix Array#{values, @@iterator}.name in V8 / FF\n  if (DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) {\n    INCORRECT_VALUES_NAME = true;\n    defaultIterator = function values() { return nativeIterator.call(this); };\n  }\n\n  // define iterator\n  if ( IterablePrototype[ITERATOR$1] !== defaultIterator) {\n    createNonEnumerableProperty(IterablePrototype, ITERATOR$1, defaultIterator);\n  }\n  iterators[NAME] = defaultIterator;\n\n  // export additional methods\n  if (DEFAULT) {\n    methods = {\n      values: getIterationMethod(VALUES),\n      keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),\n      entries: getIterationMethod(ENTRIES)\n    };\n    if (FORCED) for (KEY in methods) {\n      if (BUGGY_SAFARI_ITERATORS$1 || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {\n        redefine(IterablePrototype, KEY, methods[KEY]);\n      }\n    } else _export({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS$1 || INCORRECT_VALUES_NAME }, methods);\n  }\n\n  return methods;\n};\n\nvar ARRAY_ITERATOR = 'Array Iterator';\nvar setInternalState$1 = internalState.set;\nvar getInternalState$1 = internalState.getterFor(ARRAY_ITERATOR);\n\n// `Array.prototype.entries` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.entries\n// `Array.prototype.keys` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.keys\n// `Array.prototype.values` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.values\n// `Array.prototype[@@iterator]` method\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@iterator\n// `CreateArrayIterator` internal method\n// https://tc39.github.io/ecma262/#sec-createarrayiterator\nvar es_array_iterator = defineIterator(Array, 'Array', function (iterated, kind) {\n  setInternalState$1(this, {\n    type: ARRAY_ITERATOR,\n    target: toIndexedObject(iterated), // target\n    index: 0,                          // next index\n    kind: kind                         // kind\n  });\n// `%ArrayIteratorPrototype%.next` method\n// https://tc39.github.io/ecma262/#sec-%arrayiteratorprototype%.next\n}, function () {\n  var state = getInternalState$1(this);\n  var target = state.target;\n  var kind = state.kind;\n  var index = state.index++;\n  if (!target || index >= target.length) {\n    state.target = undefined;\n    return { value: undefined, done: true };\n  }\n  if (kind == 'keys') return { value: index, done: false };\n  if (kind == 'values') return { value: target[index], done: false };\n  return { value: [index, target[index]], done: false };\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values%\n// https://tc39.github.io/ecma262/#sec-createunmappedargumentsobject\n// https://tc39.github.io/ecma262/#sec-createmappedargumentsobject\niterators.Arguments = iterators.Array;\n\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n\nvar nativeAssign = Object.assign;\n\n// `Object.assign` method\n// https://tc39.github.io/ecma262/#sec-object.assign\n// should work with symbols and should have deterministic property order (V8 bug)\nvar objectAssign = !nativeAssign || fails(function () {\n  var A = {};\n  var B = {};\n  // eslint-disable-next-line no-undef\n  var symbol = Symbol();\n  var alphabet = 'abcdefghijklmnopqrst';\n  A[symbol] = 7;\n  alphabet.split('').forEach(function (chr) { B[chr] = chr; });\n  return nativeAssign({}, A)[symbol] != 7 || objectKeys(nativeAssign({}, B)).join('') != alphabet;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n  var T = toObject(target);\n  var argumentsLength = arguments.length;\n  var index = 1;\n  var getOwnPropertySymbols = objectGetOwnPropertySymbols.f;\n  var propertyIsEnumerable = objectPropertyIsEnumerable.f;\n  while (argumentsLength > index) {\n    var S = indexedObject(arguments[index++]);\n    var keys = getOwnPropertySymbols ? objectKeys(S).concat(getOwnPropertySymbols(S)) : objectKeys(S);\n    var length = keys.length;\n    var j = 0;\n    var key;\n    while (length > j) {\n      key = keys[j++];\n      if (!descriptors || propertyIsEnumerable.call(S, key)) T[key] = S[key];\n    }\n  } return T;\n} : nativeAssign;\n\n// `Object.assign` method\n// https://tc39.github.io/ecma262/#sec-object.assign\n_export({ target: 'Object', stat: true, forced: Object.assign !== objectAssign }, {\n  assign: objectAssign\n});\n\nvar TO_STRING_TAG$1 = wellKnownSymbol('toStringTag');\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n  try {\n    return it[key];\n  } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nvar classof = function (it) {\n  var O, tag, result;\n  return it === undefined ? 'Undefined' : it === null ? 'Null'\n    // @@toStringTag case\n    : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG$1)) == 'string' ? tag\n    // builtinTag case\n    : CORRECT_ARGUMENTS ? classofRaw(O)\n    // ES3 arguments fallback\n    : (result = classofRaw(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : result;\n};\n\nvar TO_STRING_TAG$2 = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG$2] = 'z';\n\n// `Object.prototype.toString` method implementation\n// https://tc39.github.io/ecma262/#sec-object.prototype.tostring\nvar objectToString = String(test) !== '[object z]' ? function toString() {\n  return '[object ' + classof(this) + ']';\n} : test.toString;\n\nvar ObjectPrototype$2 = Object.prototype;\n\n// `Object.prototype.toString` method\n// https://tc39.github.io/ecma262/#sec-object.prototype.tostring\nif (objectToString !== ObjectPrototype$2.toString) {\n  redefine(ObjectPrototype$2, 'toString', objectToString, { unsafe: true });\n}\n\nvar freezing = !fails(function () {\n  return Object.isExtensible(Object.preventExtensions({}));\n});\n\nvar internalMetadata = createCommonjsModule(function (module) {\nvar defineProperty = objectDefineProperty.f;\n\n\n\nvar METADATA = uid('meta');\nvar id = 0;\n\nvar isExtensible = Object.isExtensible || function () {\n  return true;\n};\n\nvar setMetadata = function (it) {\n  defineProperty(it, METADATA, { value: {\n    objectID: 'O' + ++id, // object ID\n    weakData: {}          // weak collections IDs\n  } });\n};\n\nvar fastKey = function (it, create) {\n  // return a primitive with prefix\n  if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n  if (!has(it, METADATA)) {\n    // can't set metadata to uncaught frozen object\n    if (!isExtensible(it)) return 'F';\n    // not necessary to add metadata\n    if (!create) return 'E';\n    // add missing metadata\n    setMetadata(it);\n  // return object ID\n  } return it[METADATA].objectID;\n};\n\nvar getWeakData = function (it, create) {\n  if (!has(it, METADATA)) {\n    // can't set metadata to uncaught frozen object\n    if (!isExtensible(it)) return true;\n    // not necessary to add metadata\n    if (!create) return false;\n    // add missing metadata\n    setMetadata(it);\n  // return the store of weak collections IDs\n  } return it[METADATA].weakData;\n};\n\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n  if (freezing && meta.REQUIRED && isExtensible(it) && !has(it, METADATA)) setMetadata(it);\n  return it;\n};\n\nvar meta = module.exports = {\n  REQUIRED: false,\n  fastKey: fastKey,\n  getWeakData: getWeakData,\n  onFreeze: onFreeze\n};\n\nhiddenKeys[METADATA] = true;\n});\n\nvar ITERATOR$2 = wellKnownSymbol('iterator');\nvar ArrayPrototype$1 = Array.prototype;\n\n// check on default Array iterator\nvar isArrayIteratorMethod = function (it) {\n  return it !== undefined && (iterators.Array === it || ArrayPrototype$1[ITERATOR$2] === it);\n};\n\nvar ITERATOR$3 = wellKnownSymbol('iterator');\n\nvar getIteratorMethod = function (it) {\n  if (it != undefined) return it[ITERATOR$3]\n    || it['@@iterator']\n    || iterators[classof(it)];\n};\n\n// call something on iterator step with safe closing on error\nvar callWithSafeIterationClosing = function (iterator, fn, value, ENTRIES) {\n  try {\n    return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value);\n  // 7.4.6 IteratorClose(iterator, completion)\n  } catch (error) {\n    var returnMethod = iterator['return'];\n    if (returnMethod !== undefined) anObject(returnMethod.call(iterator));\n    throw error;\n  }\n};\n\nvar iterate_1 = createCommonjsModule(function (module) {\nvar Result = function (stopped, result) {\n  this.stopped = stopped;\n  this.result = result;\n};\n\nvar iterate = module.exports = function (iterable, fn, that, AS_ENTRIES, IS_ITERATOR) {\n  var boundFunction = bindContext(fn, that, AS_ENTRIES ? 2 : 1);\n  var iterator, iterFn, index, length, result, next, step;\n\n  if (IS_ITERATOR) {\n    iterator = iterable;\n  } else {\n    iterFn = getIteratorMethod(iterable);\n    if (typeof iterFn != 'function') throw TypeError('Target is not iterable');\n    // optimisation for array iterators\n    if (isArrayIteratorMethod(iterFn)) {\n      for (index = 0, length = toLength(iterable.length); length > index; index++) {\n        result = AS_ENTRIES\n          ? boundFunction(anObject(step = iterable[index])[0], step[1])\n          : boundFunction(iterable[index]);\n        if (result && result instanceof Result) return result;\n      } return new Result(false);\n    }\n    iterator = iterFn.call(iterable);\n  }\n\n  next = iterator.next;\n  while (!(step = next.call(iterator)).done) {\n    result = callWithSafeIterationClosing(iterator, boundFunction, step.value, AS_ENTRIES);\n    if (typeof result == 'object' && result && result instanceof Result) return result;\n  } return new Result(false);\n};\n\niterate.stop = function (result) {\n  return new Result(true, result);\n};\n});\n\nvar anInstance = function (it, Constructor, name) {\n  if (!(it instanceof Constructor)) {\n    throw TypeError('Incorrect ' + (name ? name + ' ' : '') + 'invocation');\n  } return it;\n};\n\nvar ITERATOR$4 = wellKnownSymbol('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n  var called = 0;\n  var iteratorWithReturn = {\n    next: function () {\n      return { done: !!called++ };\n    },\n    'return': function () {\n      SAFE_CLOSING = true;\n    }\n  };\n  iteratorWithReturn[ITERATOR$4] = function () {\n    return this;\n  };\n  // eslint-disable-next-line no-throw-literal\n  Array.from(iteratorWithReturn, function () { throw 2; });\n} catch (error) { /* empty */ }\n\nvar checkCorrectnessOfIteration = function (exec, SKIP_CLOSING) {\n  if (!SKIP_CLOSING && !SAFE_CLOSING) return false;\n  var ITERATION_SUPPORT = false;\n  try {\n    var object = {};\n    object[ITERATOR$4] = function () {\n      return {\n        next: function () {\n          return { done: ITERATION_SUPPORT = true };\n        }\n      };\n    };\n    exec(object);\n  } catch (error) { /* empty */ }\n  return ITERATION_SUPPORT;\n};\n\n// makes subclassing work correct for wrapped built-ins\nvar inheritIfRequired = function ($this, dummy, Wrapper) {\n  var NewTarget, NewTargetPrototype;\n  if (\n    // it can work only with native `setPrototypeOf`\n    objectSetPrototypeOf &&\n    // we haven't completely correct pre-ES6 way for getting `new.target`, so use this\n    typeof (NewTarget = dummy.constructor) == 'function' &&\n    NewTarget !== Wrapper &&\n    isObject(NewTargetPrototype = NewTarget.prototype) &&\n    NewTargetPrototype !== Wrapper.prototype\n  ) objectSetPrototypeOf($this, NewTargetPrototype);\n  return $this;\n};\n\nvar collection = function (CONSTRUCTOR_NAME, wrapper, common, IS_MAP, IS_WEAK) {\n  var NativeConstructor = global_1[CONSTRUCTOR_NAME];\n  var NativePrototype = NativeConstructor && NativeConstructor.prototype;\n  var Constructor = NativeConstructor;\n  var ADDER = IS_MAP ? 'set' : 'add';\n  var exported = {};\n\n  var fixMethod = function (KEY) {\n    var nativeMethod = NativePrototype[KEY];\n    redefine(NativePrototype, KEY,\n      KEY == 'add' ? function add(value) {\n        nativeMethod.call(this, value === 0 ? 0 : value);\n        return this;\n      } : KEY == 'delete' ? function (key) {\n        return IS_WEAK && !isObject(key) ? false : nativeMethod.call(this, key === 0 ? 0 : key);\n      } : KEY == 'get' ? function get(key) {\n        return IS_WEAK && !isObject(key) ? undefined : nativeMethod.call(this, key === 0 ? 0 : key);\n      } : KEY == 'has' ? function has(key) {\n        return IS_WEAK && !isObject(key) ? false : nativeMethod.call(this, key === 0 ? 0 : key);\n      } : function set(key, value) {\n        nativeMethod.call(this, key === 0 ? 0 : key, value);\n        return this;\n      }\n    );\n  };\n\n  // eslint-disable-next-line max-len\n  if (isForced_1(CONSTRUCTOR_NAME, typeof NativeConstructor != 'function' || !(IS_WEAK || NativePrototype.forEach && !fails(function () {\n    new NativeConstructor().entries().next();\n  })))) {\n    // create collection constructor\n    Constructor = common.getConstructor(wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER);\n    internalMetadata.REQUIRED = true;\n  } else if (isForced_1(CONSTRUCTOR_NAME, true)) {\n    var instance = new Constructor();\n    // early implementations not supports chaining\n    var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance;\n    // V8 ~ Chromium 40- weak-collections throws on primitives, but should return false\n    var THROWS_ON_PRIMITIVES = fails(function () { instance.has(1); });\n    // most early implementations doesn't supports iterables, most modern - not close it correctly\n    // eslint-disable-next-line no-new\n    var ACCEPT_ITERABLES = checkCorrectnessOfIteration(function (iterable) { new NativeConstructor(iterable); });\n    // for early implementations -0 and +0 not the same\n    var BUGGY_ZERO = !IS_WEAK && fails(function () {\n      // V8 ~ Chromium 42- fails only with 5+ elements\n      var $instance = new NativeConstructor();\n      var index = 5;\n      while (index--) $instance[ADDER](index, index);\n      return !$instance.has(-0);\n    });\n\n    if (!ACCEPT_ITERABLES) {\n      Constructor = wrapper(function (dummy, iterable) {\n        anInstance(dummy, Constructor, CONSTRUCTOR_NAME);\n        var that = inheritIfRequired(new NativeConstructor(), dummy, Constructor);\n        if (iterable != undefined) iterate_1(iterable, that[ADDER], that, IS_MAP);\n        return that;\n      });\n      Constructor.prototype = NativePrototype;\n      NativePrototype.constructor = Constructor;\n    }\n\n    if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) {\n      fixMethod('delete');\n      fixMethod('has');\n      IS_MAP && fixMethod('get');\n    }\n\n    if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER);\n\n    // weak collections should not contains .clear method\n    if (IS_WEAK && NativePrototype.clear) delete NativePrototype.clear;\n  }\n\n  exported[CONSTRUCTOR_NAME] = Constructor;\n  _export({ global: true, forced: Constructor != NativeConstructor }, exported);\n\n  setToStringTag(Constructor, CONSTRUCTOR_NAME);\n\n  if (!IS_WEAK) common.setStrong(Constructor, CONSTRUCTOR_NAME, IS_MAP);\n\n  return Constructor;\n};\n\nvar redefineAll = function (target, src, options) {\n  for (var key in src) redefine(target, key, src[key], options);\n  return target;\n};\n\nvar SPECIES$3 = wellKnownSymbol('species');\n\nvar setSpecies = function (CONSTRUCTOR_NAME) {\n  var Constructor = getBuiltIn(CONSTRUCTOR_NAME);\n  var defineProperty = objectDefineProperty.f;\n\n  if (descriptors && Constructor && !Constructor[SPECIES$3]) {\n    defineProperty(Constructor, SPECIES$3, {\n      configurable: true,\n      get: function () { return this; }\n    });\n  }\n};\n\nvar defineProperty$4 = objectDefineProperty.f;\n\n\n\n\n\n\n\n\nvar fastKey = internalMetadata.fastKey;\n\n\nvar setInternalState$2 = internalState.set;\nvar internalStateGetterFor = internalState.getterFor;\n\nvar collectionStrong = {\n  getConstructor: function (wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER) {\n    var C = wrapper(function (that, iterable) {\n      anInstance(that, C, CONSTRUCTOR_NAME);\n      setInternalState$2(that, {\n        type: CONSTRUCTOR_NAME,\n        index: objectCreate(null),\n        first: undefined,\n        last: undefined,\n        size: 0\n      });\n      if (!descriptors) that.size = 0;\n      if (iterable != undefined) iterate_1(iterable, that[ADDER], that, IS_MAP);\n    });\n\n    var getInternalState = internalStateGetterFor(CONSTRUCTOR_NAME);\n\n    var define = function (that, key, value) {\n      var state = getInternalState(that);\n      var entry = getEntry(that, key);\n      var previous, index;\n      // change existing entry\n      if (entry) {\n        entry.value = value;\n      // create new entry\n      } else {\n        state.last = entry = {\n          index: index = fastKey(key, true),\n          key: key,\n          value: value,\n          previous: previous = state.last,\n          next: undefined,\n          removed: false\n        };\n        if (!state.first) state.first = entry;\n        if (previous) previous.next = entry;\n        if (descriptors) state.size++;\n        else that.size++;\n        // add to index\n        if (index !== 'F') state.index[index] = entry;\n      } return that;\n    };\n\n    var getEntry = function (that, key) {\n      var state = getInternalState(that);\n      // fast case\n      var index = fastKey(key);\n      var entry;\n      if (index !== 'F') return state.index[index];\n      // frozen object case\n      for (entry = state.first; entry; entry = entry.next) {\n        if (entry.key == key) return entry;\n      }\n    };\n\n    redefineAll(C.prototype, {\n      // 23.1.3.1 Map.prototype.clear()\n      // 23.2.3.2 Set.prototype.clear()\n      clear: function clear() {\n        var that = this;\n        var state = getInternalState(that);\n        var data = state.index;\n        var entry = state.first;\n        while (entry) {\n          entry.removed = true;\n          if (entry.previous) entry.previous = entry.previous.next = undefined;\n          delete data[entry.index];\n          entry = entry.next;\n        }\n        state.first = state.last = undefined;\n        if (descriptors) state.size = 0;\n        else that.size = 0;\n      },\n      // 23.1.3.3 Map.prototype.delete(key)\n      // 23.2.3.4 Set.prototype.delete(value)\n      'delete': function (key) {\n        var that = this;\n        var state = getInternalState(that);\n        var entry = getEntry(that, key);\n        if (entry) {\n          var next = entry.next;\n          var prev = entry.previous;\n          delete state.index[entry.index];\n          entry.removed = true;\n          if (prev) prev.next = next;\n          if (next) next.previous = prev;\n          if (state.first == entry) state.first = next;\n          if (state.last == entry) state.last = prev;\n          if (descriptors) state.size--;\n          else that.size--;\n        } return !!entry;\n      },\n      // 23.2.3.6 Set.prototype.forEach(callbackfn, thisArg = undefined)\n      // 23.1.3.5 Map.prototype.forEach(callbackfn, thisArg = undefined)\n      forEach: function forEach(callbackfn /* , that = undefined */) {\n        var state = getInternalState(this);\n        var boundFunction = bindContext(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);\n        var entry;\n        while (entry = entry ? entry.next : state.first) {\n          boundFunction(entry.value, entry.key, this);\n          // revert to the last existing entry\n          while (entry && entry.removed) entry = entry.previous;\n        }\n      },\n      // 23.1.3.7 Map.prototype.has(key)\n      // 23.2.3.7 Set.prototype.has(value)\n      has: function has(key) {\n        return !!getEntry(this, key);\n      }\n    });\n\n    redefineAll(C.prototype, IS_MAP ? {\n      // 23.1.3.6 Map.prototype.get(key)\n      get: function get(key) {\n        var entry = getEntry(this, key);\n        return entry && entry.value;\n      },\n      // 23.1.3.9 Map.prototype.set(key, value)\n      set: function set(key, value) {\n        return define(this, key === 0 ? 0 : key, value);\n      }\n    } : {\n      // 23.2.3.1 Set.prototype.add(value)\n      add: function add(value) {\n        return define(this, value = value === 0 ? 0 : value, value);\n      }\n    });\n    if (descriptors) defineProperty$4(C.prototype, 'size', {\n      get: function () {\n        return getInternalState(this).size;\n      }\n    });\n    return C;\n  },\n  setStrong: function (C, CONSTRUCTOR_NAME, IS_MAP) {\n    var ITERATOR_NAME = CONSTRUCTOR_NAME + ' Iterator';\n    var getInternalCollectionState = internalStateGetterFor(CONSTRUCTOR_NAME);\n    var getInternalIteratorState = internalStateGetterFor(ITERATOR_NAME);\n    // add .keys, .values, .entries, [@@iterator]\n    // 23.1.3.4, 23.1.3.8, 23.1.3.11, 23.1.3.12, 23.2.3.5, 23.2.3.8, 23.2.3.10, 23.2.3.11\n    defineIterator(C, CONSTRUCTOR_NAME, function (iterated, kind) {\n      setInternalState$2(this, {\n        type: ITERATOR_NAME,\n        target: iterated,\n        state: getInternalCollectionState(iterated),\n        kind: kind,\n        last: undefined\n      });\n    }, function () {\n      var state = getInternalIteratorState(this);\n      var kind = state.kind;\n      var entry = state.last;\n      // revert to the last existing entry\n      while (entry && entry.removed) entry = entry.previous;\n      // get next entry\n      if (!state.target || !(state.last = entry = entry ? entry.next : state.state.first)) {\n        // or finish the iteration\n        state.target = undefined;\n        return { value: undefined, done: true };\n      }\n      // return step by kind\n      if (kind == 'keys') return { value: entry.key, done: false };\n      if (kind == 'values') return { value: entry.value, done: false };\n      return { value: [entry.key, entry.value], done: false };\n    }, IS_MAP ? 'entries' : 'values', !IS_MAP, true);\n\n    // add [@@species], 23.1.2.2, 23.2.2.2\n    setSpecies(CONSTRUCTOR_NAME);\n  }\n};\n\n// `Set` constructor\n// https://tc39.github.io/ecma262/#sec-set-objects\nvar es_set = collection('Set', function (get) {\n  return function Set() { return get(this, arguments.length ? arguments[0] : undefined); };\n}, collectionStrong);\n\n// `String.prototype.{ codePointAt, at }` methods implementation\nvar createMethod$2 = function (CONVERT_TO_STRING) {\n  return function ($this, pos) {\n    var S = String(requireObjectCoercible($this));\n    var position = toInteger(pos);\n    var size = S.length;\n    var first, second;\n    if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;\n    first = S.charCodeAt(position);\n    return first < 0xD800 || first > 0xDBFF || position + 1 === size\n      || (second = S.charCodeAt(position + 1)) < 0xDC00 || second > 0xDFFF\n        ? CONVERT_TO_STRING ? S.charAt(position) : first\n        : CONVERT_TO_STRING ? S.slice(position, position + 2) : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;\n  };\n};\n\nvar stringMultibyte = {\n  // `String.prototype.codePointAt` method\n  // https://tc39.github.io/ecma262/#sec-string.prototype.codepointat\n  codeAt: createMethod$2(false),\n  // `String.prototype.at` method\n  // https://github.com/mathiasbynens/String.prototype.at\n  charAt: createMethod$2(true)\n};\n\nvar charAt = stringMultibyte.charAt;\n\n\n\nvar STRING_ITERATOR = 'String Iterator';\nvar setInternalState$3 = internalState.set;\nvar getInternalState$2 = internalState.getterFor(STRING_ITERATOR);\n\n// `String.prototype[@@iterator]` method\n// https://tc39.github.io/ecma262/#sec-string.prototype-@@iterator\ndefineIterator(String, 'String', function (iterated) {\n  setInternalState$3(this, {\n    type: STRING_ITERATOR,\n    string: String(iterated),\n    index: 0\n  });\n// `%StringIteratorPrototype%.next` method\n// https://tc39.github.io/ecma262/#sec-%stringiteratorprototype%.next\n}, function next() {\n  var state = getInternalState$2(this);\n  var string = state.string;\n  var index = state.index;\n  var point;\n  if (index >= string.length) return { value: undefined, done: true };\n  point = charAt(string, index);\n  state.index += point.length;\n  return { value: point, done: false };\n});\n\n// iterable DOM collections\n// flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods\nvar domIterables = {\n  CSSRuleList: 0,\n  CSSStyleDeclaration: 0,\n  CSSValueList: 0,\n  ClientRectList: 0,\n  DOMRectList: 0,\n  DOMStringList: 0,\n  DOMTokenList: 1,\n  DataTransferItemList: 0,\n  FileList: 0,\n  HTMLAllCollection: 0,\n  HTMLCollection: 0,\n  HTMLFormElement: 0,\n  HTMLSelectElement: 0,\n  MediaList: 0,\n  MimeTypeArray: 0,\n  NamedNodeMap: 0,\n  NodeList: 1,\n  PaintRequestList: 0,\n  Plugin: 0,\n  PluginArray: 0,\n  SVGLengthList: 0,\n  SVGNumberList: 0,\n  SVGPathSegList: 0,\n  SVGPointList: 0,\n  SVGStringList: 0,\n  SVGTransformList: 0,\n  SourceBufferList: 0,\n  StyleSheetList: 0,\n  TextTrackCueList: 0,\n  TextTrackList: 0,\n  TouchList: 0\n};\n\nvar ITERATOR$5 = wellKnownSymbol('iterator');\nvar TO_STRING_TAG$3 = wellKnownSymbol('toStringTag');\nvar ArrayValues = es_array_iterator.values;\n\nfor (var COLLECTION_NAME in domIterables) {\n  var Collection = global_1[COLLECTION_NAME];\n  var CollectionPrototype = Collection && Collection.prototype;\n  if (CollectionPrototype) {\n    // some Chrome versions have non-configurable methods on DOMTokenList\n    if (CollectionPrototype[ITERATOR$5] !== ArrayValues) try {\n      createNonEnumerableProperty(CollectionPrototype, ITERATOR$5, ArrayValues);\n    } catch (error) {\n      CollectionPrototype[ITERATOR$5] = ArrayValues;\n    }\n    if (!CollectionPrototype[TO_STRING_TAG$3]) {\n      createNonEnumerableProperty(CollectionPrototype, TO_STRING_TAG$3, COLLECTION_NAME);\n    }\n    if (domIterables[COLLECTION_NAME]) for (var METHOD_NAME in es_array_iterator) {\n      // some Chrome versions have non-configurable methods on DOMTokenList\n      if (CollectionPrototype[METHOD_NAME] !== es_array_iterator[METHOD_NAME]) try {\n        createNonEnumerableProperty(CollectionPrototype, METHOD_NAME, es_array_iterator[METHOD_NAME]);\n      } catch (error) {\n        CollectionPrototype[METHOD_NAME] = es_array_iterator[METHOD_NAME];\n      }\n    }\n  }\n}\n\nfunction _arrayWithoutHoles(arr) {\n  if (Array.isArray(arr)) {\n    for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) {\n      arr2[i] = arr[i];\n    }\n\n    return arr2;\n  }\n}\n\nfunction _iterableToArray(iter) {\n  if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}\n\nfunction _nonIterableSpread() {\n  throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}\n\nfunction _toConsumableArray(arr) {\n  return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();\n}\n\nvar methods = {};\nvar names = [];\nfunction registerMethods(name, m) {\n  if (Array.isArray(name)) {\n    var _iteratorNormalCompletion = true;\n    var _didIteratorError = false;\n    var _iteratorError = undefined;\n\n    try {\n      for (var _iterator = name[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n        var _name = _step.value;\n        registerMethods(_name, m);\n      }\n    } catch (err) {\n      _didIteratorError = true;\n      _iteratorError = err;\n    } finally {\n      try {\n        if (!_iteratorNormalCompletion && _iterator.return != null) {\n          _iterator.return();\n        }\n      } finally {\n        if (_didIteratorError) {\n          throw _iteratorError;\n        }\n      }\n    }\n\n    return;\n  }\n\n  if (_typeof(name) === 'object') {\n    for (var _name2 in name) {\n      registerMethods(_name2, name[_name2]);\n    }\n\n    return;\n  }\n\n  addMethodNames(Object.getOwnPropertyNames(m));\n  methods[name] = Object.assign(methods[name] || {}, m);\n}\nfunction getMethodsFor(name) {\n  return methods[name] || {};\n}\nfunction getMethodNames() {\n  return _toConsumableArray(new Set(names));\n}\nfunction addMethodNames(_names) {\n  names.push.apply(names, _toConsumableArray(_names));\n}\n\nvar $includes = arrayIncludes.includes;\n\n\n// `Array.prototype.includes` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.includes\n_export({ target: 'Array', proto: true }, {\n  includes: function includes(el /* , fromIndex = 0 */) {\n    return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('includes');\n\n// `RegExp.prototype.flags` getter implementation\n// https://tc39.github.io/ecma262/#sec-get-regexp.prototype.flags\nvar regexpFlags = function () {\n  var that = anObject(this);\n  var result = '';\n  if (that.global) result += 'g';\n  if (that.ignoreCase) result += 'i';\n  if (that.multiline) result += 'm';\n  if (that.dotAll) result += 's';\n  if (that.unicode) result += 'u';\n  if (that.sticky) result += 'y';\n  return result;\n};\n\nvar nativeExec = RegExp.prototype.exec;\n// This always refers to the native implementation, because the\n// String#replace polyfill uses ./fix-regexp-well-known-symbol-logic.js,\n// which loads this file before patching the method.\nvar nativeReplace = String.prototype.replace;\n\nvar patchedExec = nativeExec;\n\nvar UPDATES_LAST_INDEX_WRONG = (function () {\n  var re1 = /a/;\n  var re2 = /b*/g;\n  nativeExec.call(re1, 'a');\n  nativeExec.call(re2, 'a');\n  return re1.lastIndex !== 0 || re2.lastIndex !== 0;\n})();\n\n// nonparticipating capturing group, copied from es5-shim's String#split patch.\nvar NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;\n\nvar PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED;\n\nif (PATCH) {\n  patchedExec = function exec(str) {\n    var re = this;\n    var lastIndex, reCopy, match, i;\n\n    if (NPCG_INCLUDED) {\n      reCopy = new RegExp('^' + re.source + '$(?!\\\\s)', regexpFlags.call(re));\n    }\n    if (UPDATES_LAST_INDEX_WRONG) lastIndex = re.lastIndex;\n\n    match = nativeExec.call(re, str);\n\n    if (UPDATES_LAST_INDEX_WRONG && match) {\n      re.lastIndex = re.global ? match.index + match[0].length : lastIndex;\n    }\n    if (NPCG_INCLUDED && match && match.length > 1) {\n      // Fix browsers whose `exec` methods don't consistently return `undefined`\n      // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/\n      nativeReplace.call(match[0], reCopy, function () {\n        for (i = 1; i < arguments.length - 2; i++) {\n          if (arguments[i] === undefined) match[i] = undefined;\n        }\n      });\n    }\n\n    return match;\n  };\n}\n\nvar regexpExec = patchedExec;\n\n_export({ target: 'RegExp', proto: true, forced: /./.exec !== regexpExec }, {\n  exec: regexpExec\n});\n\nvar MATCH = wellKnownSymbol('match');\n\n// `IsRegExp` abstract operation\n// https://tc39.github.io/ecma262/#sec-isregexp\nvar isRegexp = function (it) {\n  var isRegExp;\n  return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : classofRaw(it) == 'RegExp');\n};\n\nvar notARegexp = function (it) {\n  if (isRegexp(it)) {\n    throw TypeError(\"The method doesn't accept regular expressions\");\n  } return it;\n};\n\nvar MATCH$1 = wellKnownSymbol('match');\n\nvar correctIsRegexpLogic = function (METHOD_NAME) {\n  var regexp = /./;\n  try {\n    '/./'[METHOD_NAME](regexp);\n  } catch (e) {\n    try {\n      regexp[MATCH$1] = false;\n      return '/./'[METHOD_NAME](regexp);\n    } catch (f) { /* empty */ }\n  } return false;\n};\n\n// `String.prototype.includes` method\n// https://tc39.github.io/ecma262/#sec-string.prototype.includes\n_export({ target: 'String', proto: true, forced: !correctIsRegexpLogic('includes') }, {\n  includes: function includes(searchString /* , position = 0 */) {\n    return !!~String(requireObjectCoercible(this))\n      .indexOf(notARegexp(searchString), arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n\nvar SPECIES$4 = wellKnownSymbol('species');\n\nvar REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {\n  // #replace needs built-in support for named groups.\n  // #match works fine because it just return the exec results, even if it has\n  // a \"grops\" property.\n  var re = /./;\n  re.exec = function () {\n    var result = [];\n    result.groups = { a: '7' };\n    return result;\n  };\n  return ''.replace(re, '$<a>') !== '7';\n});\n\n// Chrome 51 has a buggy \"split\" implementation when RegExp#exec !== nativeExec\n// Weex JS has frozen built-in prototypes, so use try / catch wrapper\nvar SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = !fails(function () {\n  var re = /(?:)/;\n  var originalExec = re.exec;\n  re.exec = function () { return originalExec.apply(this, arguments); };\n  var result = 'ab'.split(re);\n  return result.length !== 2 || result[0] !== 'a' || result[1] !== 'b';\n});\n\nvar fixRegexpWellKnownSymbolLogic = function (KEY, length, exec, sham) {\n  var SYMBOL = wellKnownSymbol(KEY);\n\n  var DELEGATES_TO_SYMBOL = !fails(function () {\n    // String methods call symbol-named RegEp methods\n    var O = {};\n    O[SYMBOL] = function () { return 7; };\n    return ''[KEY](O) != 7;\n  });\n\n  var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails(function () {\n    // Symbol-named RegExp methods call .exec\n    var execCalled = false;\n    var re = /a/;\n\n    if (KEY === 'split') {\n      // We can't use real regex here since it causes deoptimization\n      // and serious performance degradation in V8\n      // https://github.com/zloirock/core-js/issues/306\n      re = {};\n      // RegExp[@@split] doesn't call the regex's exec method, but first creates\n      // a new one. We need to return the patched regex when creating the new one.\n      re.constructor = {};\n      re.constructor[SPECIES$4] = function () { return re; };\n      re.flags = '';\n      re[SYMBOL] = /./[SYMBOL];\n    }\n\n    re.exec = function () { execCalled = true; return null; };\n\n    re[SYMBOL]('');\n    return !execCalled;\n  });\n\n  if (\n    !DELEGATES_TO_SYMBOL ||\n    !DELEGATES_TO_EXEC ||\n    (KEY === 'replace' && !REPLACE_SUPPORTS_NAMED_GROUPS) ||\n    (KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC)\n  ) {\n    var nativeRegExpMethod = /./[SYMBOL];\n    var methods = exec(SYMBOL, ''[KEY], function (nativeMethod, regexp, str, arg2, forceStringMethod) {\n      if (regexp.exec === regexpExec) {\n        if (DELEGATES_TO_SYMBOL && !forceStringMethod) {\n          // The native String method already delegates to @@method (this\n          // polyfilled function), leasing to infinite recursion.\n          // We avoid it by directly calling the native @@method method.\n          return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) };\n        }\n        return { done: true, value: nativeMethod.call(str, regexp, arg2) };\n      }\n      return { done: false };\n    });\n    var stringMethod = methods[0];\n    var regexMethod = methods[1];\n\n    redefine(String.prototype, KEY, stringMethod);\n    redefine(RegExp.prototype, SYMBOL, length == 2\n      // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)\n      // 21.2.5.11 RegExp.prototype[@@split](string, limit)\n      ? function (string, arg) { return regexMethod.call(string, this, arg); }\n      // 21.2.5.6 RegExp.prototype[@@match](string)\n      // 21.2.5.9 RegExp.prototype[@@search](string)\n      : function (string) { return regexMethod.call(string, this); }\n    );\n    if (sham) createNonEnumerableProperty(RegExp.prototype[SYMBOL], 'sham', true);\n  }\n};\n\nvar charAt$1 = stringMultibyte.charAt;\n\n// `AdvanceStringIndex` abstract operation\n// https://tc39.github.io/ecma262/#sec-advancestringindex\nvar advanceStringIndex = function (S, index, unicode) {\n  return index + (unicode ? charAt$1(S, index).length : 1);\n};\n\n// `RegExpExec` abstract operation\n// https://tc39.github.io/ecma262/#sec-regexpexec\nvar regexpExecAbstract = function (R, S) {\n  var exec = R.exec;\n  if (typeof exec === 'function') {\n    var result = exec.call(R, S);\n    if (typeof result !== 'object') {\n      throw TypeError('RegExp exec method returned something other than an Object or null');\n    }\n    return result;\n  }\n\n  if (classofRaw(R) !== 'RegExp') {\n    throw TypeError('RegExp#exec called on incompatible receiver');\n  }\n\n  return regexpExec.call(R, S);\n};\n\nvar max$2 = Math.max;\nvar min$2 = Math.min;\nvar floor$1 = Math.floor;\nvar SUBSTITUTION_SYMBOLS = /\\$([$&'`]|\\d\\d?|<[^>]*>)/g;\nvar SUBSTITUTION_SYMBOLS_NO_NAMED = /\\$([$&'`]|\\d\\d?)/g;\n\nvar maybeToString = function (it) {\n  return it === undefined ? it : String(it);\n};\n\n// @@replace logic\nfixRegexpWellKnownSymbolLogic('replace', 2, function (REPLACE, nativeReplace, maybeCallNative) {\n  return [\n    // `String.prototype.replace` method\n    // https://tc39.github.io/ecma262/#sec-string.prototype.replace\n    function replace(searchValue, replaceValue) {\n      var O = requireObjectCoercible(this);\n      var replacer = searchValue == undefined ? undefined : searchValue[REPLACE];\n      return replacer !== undefined\n        ? replacer.call(searchValue, O, replaceValue)\n        : nativeReplace.call(String(O), searchValue, replaceValue);\n    },\n    // `RegExp.prototype[@@replace]` method\n    // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@replace\n    function (regexp, replaceValue) {\n      var res = maybeCallNative(nativeReplace, regexp, this, replaceValue);\n      if (res.done) return res.value;\n\n      var rx = anObject(regexp);\n      var S = String(this);\n\n      var functionalReplace = typeof replaceValue === 'function';\n      if (!functionalReplace) replaceValue = String(replaceValue);\n\n      var global = rx.global;\n      if (global) {\n        var fullUnicode = rx.unicode;\n        rx.lastIndex = 0;\n      }\n      var results = [];\n      while (true) {\n        var result = regexpExecAbstract(rx, S);\n        if (result === null) break;\n\n        results.push(result);\n        if (!global) break;\n\n        var matchStr = String(result[0]);\n        if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n      }\n\n      var accumulatedResult = '';\n      var nextSourcePosition = 0;\n      for (var i = 0; i < results.length; i++) {\n        result = results[i];\n\n        var matched = String(result[0]);\n        var position = max$2(min$2(toInteger(result.index), S.length), 0);\n        var captures = [];\n        // NOTE: This is equivalent to\n        //   captures = result.slice(1).map(maybeToString)\n        // but for some reason `nativeSlice.call(result, 1, result.length)` (called in\n        // the slice polyfill when slicing native arrays) \"doesn't work\" in safari 9 and\n        // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.\n        for (var j = 1; j < result.length; j++) captures.push(maybeToString(result[j]));\n        var namedCaptures = result.groups;\n        if (functionalReplace) {\n          var replacerArgs = [matched].concat(captures, position, S);\n          if (namedCaptures !== undefined) replacerArgs.push(namedCaptures);\n          var replacement = String(replaceValue.apply(undefined, replacerArgs));\n        } else {\n          replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);\n        }\n        if (position >= nextSourcePosition) {\n          accumulatedResult += S.slice(nextSourcePosition, position) + replacement;\n          nextSourcePosition = position + matched.length;\n        }\n      }\n      return accumulatedResult + S.slice(nextSourcePosition);\n    }\n  ];\n\n  // https://tc39.github.io/ecma262/#sec-getsubstitution\n  function getSubstitution(matched, str, position, captures, namedCaptures, replacement) {\n    var tailPos = position + matched.length;\n    var m = captures.length;\n    var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;\n    if (namedCaptures !== undefined) {\n      namedCaptures = toObject(namedCaptures);\n      symbols = SUBSTITUTION_SYMBOLS;\n    }\n    return nativeReplace.call(replacement, symbols, function (match, ch) {\n      var capture;\n      switch (ch.charAt(0)) {\n        case '$': return '$';\n        case '&': return matched;\n        case '`': return str.slice(0, position);\n        case \"'\": return str.slice(tailPos);\n        case '<':\n          capture = namedCaptures[ch.slice(1, -1)];\n          break;\n        default: // \\d\\d?\n          var n = +ch;\n          if (n === 0) return match;\n          if (n > m) {\n            var f = floor$1(n / 10);\n            if (f === 0) return match;\n            if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1);\n            return match;\n          }\n          capture = captures[n - 1];\n      }\n      return capture === undefined ? '' : capture;\n    });\n  }\n});\n\n// a string of all valid unicode whitespaces\n// eslint-disable-next-line max-len\nvar whitespaces = '\\u0009\\u000A\\u000B\\u000C\\u000D\\u0020\\u00A0\\u1680\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n\nvar whitespace = '[' + whitespaces + ']';\nvar ltrim = RegExp('^' + whitespace + whitespace + '*');\nvar rtrim = RegExp(whitespace + whitespace + '*$');\n\n// `String.prototype.{ trim, trimStart, trimEnd, trimLeft, trimRight }` methods implementation\nvar createMethod$3 = function (TYPE) {\n  return function ($this) {\n    var string = String(requireObjectCoercible($this));\n    if (TYPE & 1) string = string.replace(ltrim, '');\n    if (TYPE & 2) string = string.replace(rtrim, '');\n    return string;\n  };\n};\n\nvar stringTrim = {\n  // `String.prototype.{ trimLeft, trimStart }` methods\n  // https://tc39.github.io/ecma262/#sec-string.prototype.trimstart\n  start: createMethod$3(1),\n  // `String.prototype.{ trimRight, trimEnd }` methods\n  // https://tc39.github.io/ecma262/#sec-string.prototype.trimend\n  end: createMethod$3(2),\n  // `String.prototype.trim` method\n  // https://tc39.github.io/ecma262/#sec-string.prototype.trim\n  trim: createMethod$3(3)\n};\n\nvar non = '\\u200B\\u0085\\u180E';\n\n// check that a method works with the correct list\n// of whitespaces and has a correct name\nvar forcedStringTrimMethod = function (METHOD_NAME) {\n  return fails(function () {\n    return !!whitespaces[METHOD_NAME]() || non[METHOD_NAME]() != non || whitespaces[METHOD_NAME].name !== METHOD_NAME;\n  });\n};\n\nvar $trim = stringTrim.trim;\n\n\n// `String.prototype.trim` method\n// https://tc39.github.io/ecma262/#sec-string.prototype.trim\n_export({ target: 'String', proto: true, forced: forcedStringTrimMethod('trim') }, {\n  trim: function trim() {\n    return $trim(this);\n  }\n});\n\n// Map function\nfunction map(array, block) {\n  var i;\n  var il = array.length;\n  var result = [];\n\n  for (i = 0; i < il; i++) {\n    result.push(block(array[i]));\n  }\n\n  return result;\n} // Filter function\n\nfunction filter(array, block) {\n  var i;\n  var il = array.length;\n  var result = [];\n\n  for (i = 0; i < il; i++) {\n    if (block(array[i])) {\n      result.push(array[i]);\n    }\n  }\n\n  return result;\n} // Degrees to radians\n\nfunction radians(d) {\n  return d % 360 * Math.PI / 180;\n} // Radians to degrees\n\nfunction degrees(r) {\n  return r * 180 / Math.PI % 360;\n} // Convert dash-separated-string to camelCase\n\nfunction camelCase(s) {\n  return s.toLowerCase().replace(/-(.)/g, function (m, g) {\n    return g.toUpperCase();\n  });\n} // Convert camel cased string to string seperated\n\nfunction unCamelCase(s) {\n  return s.replace(/([A-Z])/g, function (m, g) {\n    return '-' + g.toLowerCase();\n  });\n} // Capitalize first letter of a string\n\nfunction capitalize(s) {\n  return s.charAt(0).toUpperCase() + s.slice(1);\n} // Calculate proportional width and height values when necessary\n\nfunction proportionalSize(element, width, height, box) {\n  if (width == null || height == null) {\n    box = box || element.bbox();\n\n    if (width == null) {\n      width = box.width / box.height * height;\n    } else if (height == null) {\n      height = box.height / box.width * width;\n    }\n  }\n\n  return {\n    width: width,\n    height: height\n  };\n}\nfunction getOrigin(o, element) {\n  // Allow origin or around as the names\n  var origin = o.origin; // o.around == null ? o.origin : o.around\n\n  var ox, oy; // Allow the user to pass a string to rotate around a given point\n\n  if (typeof origin === 'string' || origin == null) {\n    // Get the bounding box of the element with no transformations applied\n    var string = (origin || 'center').toLowerCase().trim();\n\n    var _element$bbox = element.bbox(),\n        height = _element$bbox.height,\n        width = _element$bbox.width,\n        x = _element$bbox.x,\n        y = _element$bbox.y; // Calculate the transformed x and y coordinates\n\n\n    var bx = string.includes('left') ? x : string.includes('right') ? x + width : x + width / 2;\n    var by = string.includes('top') ? y : string.includes('bottom') ? y + height : y + height / 2; // Set the bounds eg : \"bottom-left\", \"Top right\", \"middle\" etc...\n\n    ox = o.ox != null ? o.ox : bx;\n    oy = o.oy != null ? o.oy : by;\n  } else {\n    ox = origin[0];\n    oy = origin[1];\n  } // Return the origin as it is if it wasn't a string\n\n\n  return [ox, oy];\n}\n\nvar utils = ({\n\t__proto__: null,\n\tmap: map,\n\tfilter: filter,\n\tradians: radians,\n\tdegrees: degrees,\n\tcamelCase: camelCase,\n\tunCamelCase: unCamelCase,\n\tcapitalize: capitalize,\n\tproportionalSize: proportionalSize,\n\tgetOrigin: getOrigin\n});\n\n// Default namespaces\nvar ns = 'http://www.w3.org/2000/svg';\nvar xmlns = 'http://www.w3.org/2000/xmlns/';\nvar xlink = 'http://www.w3.org/1999/xlink';\nvar svgjs = 'http://svgjs.com/svgjs';\n\nvar namespaces = ({\n\t__proto__: null,\n\tns: ns,\n\txmlns: xmlns,\n\txlink: xlink,\n\tsvgjs: svgjs\n});\n\nvar globals = {\n  window: typeof window === 'undefined' ? null : window,\n  document: typeof document === 'undefined' ? null : document\n};\nfunction registerWindow() {\n  var win = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n  var doc = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n  globals.window = win;\n  globals.document = doc;\n}\n\nfunction _classCallCheck(instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n}\n\nvar Base = function Base() {\n  _classCallCheck(this, Base);\n};\n\nvar elements = {};\nvar root = '___SYMBOL___ROOT___'; // Method for element creation\n\nfunction create(name) {\n  // create element\n  return globals.document.createElementNS(ns, name);\n}\nfunction makeInstance(element) {\n  if (element instanceof Base) return element;\n\n  if (_typeof(element) === 'object') {\n    return adopter(element);\n  }\n\n  if (element == null) {\n    return new elements[root]();\n  }\n\n  if (typeof element === 'string' && element.charAt(0) !== '<') {\n    return adopter(globals.document.querySelector(element));\n  }\n\n  var node = create('svg');\n  node.innerHTML = element; // We can use firstChild here because we know,\n  // that the first char is < and thus an element\n\n  element = adopter(node.firstChild);\n  return element;\n}\nfunction nodeOrNew(name, node) {\n  return node instanceof globals.window.Node ? node : create(name);\n} // Adopt existing svg elements\n\nfunction adopt(node) {\n  // check for presence of node\n  if (!node) return null; // make sure a node isn't already adopted\n\n  if (node.instance instanceof Base) return node.instance; // initialize variables\n\n  var className = capitalize(node.nodeName || 'Dom'); // Make sure that gradients are adopted correctly\n\n  if (className === 'LinearGradient' || className === 'RadialGradient') {\n    className = 'Gradient'; // Fallback to Dom if element is not known\n  } else if (!elements[className]) {\n    className = 'Dom';\n  }\n\n  return new elements[className](node);\n}\nvar adopter = adopt;\nfunction mockAdopt() {\n  var mock = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : adopt;\n  adopter = mock;\n}\nfunction register(element) {\n  var name = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : element.name;\n  var asRoot = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n  elements[name] = element;\n  if (asRoot) elements[root] = element;\n  addMethodNames(Object.getOwnPropertyNames(element.prototype));\n  return element;\n}\nfunction getClass(name) {\n  return elements[name];\n} // Element id sequence\n\nvar did = 1000; // Get next named element id\n\nfunction eid(name) {\n  return 'Svgjs' + capitalize(name) + did++;\n} // Deep new id assignment\n\nfunction assignNewId(node) {\n  // do the same for SVG child nodes as well\n  for (var i = node.children.length - 1; i >= 0; i--) {\n    assignNewId(node.children[i]);\n  }\n\n  if (node.id) {\n    return adopt(node).id(eid(node.nodeName));\n  }\n\n  return adopt(node);\n} // Method for extending objects\n\nfunction extend(modules, methods, attrCheck) {\n  var key, i;\n  modules = Array.isArray(modules) ? modules : [modules];\n\n  for (i = modules.length - 1; i >= 0; i--) {\n    for (key in methods) {\n      var method = methods[key];\n\n      if (attrCheck) {\n        method = wrapWithAttrCheck(methods[key]);\n      }\n\n      modules[i].prototype[key] = method;\n    }\n  }\n} // export function extendWithAttrCheck (...args) {\n//   extend(...args, true)\n// }\n\nfunction wrapWithAttrCheck(fn) {\n  return function () {\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    var o = args[args.length - 1];\n\n    if (o && o.constructor === Object && !(o instanceof Array)) {\n      return fn.apply(this, args.slice(0, -1)).attr(o);\n    } else {\n      return fn.apply(this, args);\n    }\n  };\n}\nfunction invent(config) {\n  // Create element initializer\n  var initializer = typeof config.create === 'function' ? config.create : function (node) {\n    this.constructor(node || create(config.create));\n  }; // Inherit prototype\n\n  if (config.inherit) {\n    /* eslint new-cap: off */\n    initializer.prototype = new config.inherit();\n    initializer.prototype.constructor = initializer;\n  } // Extend with methods\n\n\n  if (config.extend) {\n    extend(initializer, config.extend);\n  } // Attach construct method to parent\n\n\n  if (config.construct) {\n    extend(config.parent || elements.Container, config.construct);\n  }\n\n  return initializer;\n}\n\nfunction siblings() {\n  return this.parent().children();\n} // Get the curent position siblings\n\nfunction position() {\n  return this.parent().index(this);\n} // Get the next element (will return null if there is none)\n\nfunction next() {\n  return this.siblings()[this.position() + 1];\n} // Get the next element (will return null if there is none)\n\nfunction prev() {\n  return this.siblings()[this.position() - 1];\n} // Send given element one step forward\n\nfunction forward() {\n  var i = this.position() + 1;\n  var p = this.parent(); // move node one step forward\n\n  p.removeElement(this).add(this, i); // make sure defs node is always at the top\n\n  if (typeof p.isRoot === 'function' && p.isRoot()) {\n    p.node.appendChild(p.defs().node);\n  }\n\n  return this;\n} // Send given element one step backward\n\nfunction backward() {\n  var i = this.position();\n\n  if (i > 0) {\n    this.parent().removeElement(this).add(this, i - 1);\n  }\n\n  return this;\n} // Send given element all the way to the front\n\nfunction front() {\n  var p = this.parent(); // Move node forward\n\n  p.node.appendChild(this.node); // Make sure defs node is always at the top\n\n  if (typeof p.isRoot === 'function' && p.isRoot()) {\n    p.node.appendChild(p.defs().node);\n  }\n\n  return this;\n} // Send given element all the way to the back\n\nfunction back() {\n  if (this.position() > 0) {\n    this.parent().removeElement(this).add(this, 0);\n  }\n\n  return this;\n} // Inserts a given element before the targeted element\n\nfunction before(element) {\n  element = makeInstance(element);\n  element.remove();\n  var i = this.position();\n  this.parent().add(element, i);\n  return this;\n} // Inserts a given element after the targeted element\n\nfunction after(element) {\n  element = makeInstance(element);\n  element.remove();\n  var i = this.position();\n  this.parent().add(element, i + 1);\n  return this;\n}\nfunction insertBefore(element) {\n  element = makeInstance(element);\n  element.before(this);\n  return this;\n}\nfunction insertAfter(element) {\n  element = makeInstance(element);\n  element.after(this);\n  return this;\n}\nregisterMethods('Dom', {\n  siblings: siblings,\n  position: position,\n  next: next,\n  prev: prev,\n  forward: forward,\n  backward: backward,\n  front: front,\n  back: back,\n  before: before,\n  after: after,\n  insertBefore: insertBefore,\n  insertAfter: insertAfter\n});\n\nvar $filter = arrayIteration.filter;\n\n\n// `Array.prototype.filter` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.filter\n// with adding support of @@species\n_export({ target: 'Array', proto: true, forced: !arrayMethodHasSpeciesSupport('filter') }, {\n  filter: function filter(callbackfn /* , thisArg */) {\n    return $filter(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n\nvar sloppyArrayMethod = function (METHOD_NAME, argument) {\n  var method = [][METHOD_NAME];\n  return !method || !fails(function () {\n    // eslint-disable-next-line no-useless-call,no-throw-literal\n    method.call(null, argument || function () { throw 1; }, 1);\n  });\n};\n\nvar $indexOf = arrayIncludes.indexOf;\n\n\nvar nativeIndexOf = [].indexOf;\n\nvar NEGATIVE_ZERO = !!nativeIndexOf && 1 / [1].indexOf(1, -0) < 0;\nvar SLOPPY_METHOD = sloppyArrayMethod('indexOf');\n\n// `Array.prototype.indexOf` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.indexof\n_export({ target: 'Array', proto: true, forced: NEGATIVE_ZERO || SLOPPY_METHOD }, {\n  indexOf: function indexOf(searchElement /* , fromIndex = 0 */) {\n    return NEGATIVE_ZERO\n      // convert -0 to +0\n      ? nativeIndexOf.apply(this, arguments) || 0\n      : $indexOf(this, searchElement, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n\nvar nativeJoin = [].join;\n\nvar ES3_STRINGS = indexedObject != Object;\nvar SLOPPY_METHOD$1 = sloppyArrayMethod('join', ',');\n\n// `Array.prototype.join` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.join\n_export({ target: 'Array', proto: true, forced: ES3_STRINGS || SLOPPY_METHOD$1 }, {\n  join: function join(separator) {\n    return nativeJoin.call(toIndexedObject(this), separator === undefined ? ',' : separator);\n  }\n});\n\nvar SPECIES$5 = wellKnownSymbol('species');\n\n// `SpeciesConstructor` abstract operation\n// https://tc39.github.io/ecma262/#sec-speciesconstructor\nvar speciesConstructor = function (O, defaultConstructor) {\n  var C = anObject(O).constructor;\n  var S;\n  return C === undefined || (S = anObject(C)[SPECIES$5]) == undefined ? defaultConstructor : aFunction$1(S);\n};\n\nvar arrayPush = [].push;\nvar min$3 = Math.min;\nvar MAX_UINT32 = 0xFFFFFFFF;\n\n// babel-minify transpiles RegExp('x', 'y') -> /x/y and it causes SyntaxError\nvar SUPPORTS_Y = !fails(function () { return !RegExp(MAX_UINT32, 'y'); });\n\n// @@split logic\nfixRegexpWellKnownSymbolLogic('split', 2, function (SPLIT, nativeSplit, maybeCallNative) {\n  var internalSplit;\n  if (\n    'abbc'.split(/(b)*/)[1] == 'c' ||\n    'test'.split(/(?:)/, -1).length != 4 ||\n    'ab'.split(/(?:ab)*/).length != 2 ||\n    '.'.split(/(.?)(.?)/).length != 4 ||\n    '.'.split(/()()/).length > 1 ||\n    ''.split(/.?/).length\n  ) {\n    // based on es5-shim implementation, need to rework it\n    internalSplit = function (separator, limit) {\n      var string = String(requireObjectCoercible(this));\n      var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n      if (lim === 0) return [];\n      if (separator === undefined) return [string];\n      // If `separator` is not a regex, use native split\n      if (!isRegexp(separator)) {\n        return nativeSplit.call(string, separator, lim);\n      }\n      var output = [];\n      var flags = (separator.ignoreCase ? 'i' : '') +\n                  (separator.multiline ? 'm' : '') +\n                  (separator.unicode ? 'u' : '') +\n                  (separator.sticky ? 'y' : '');\n      var lastLastIndex = 0;\n      // Make `global` and avoid `lastIndex` issues by working with a copy\n      var separatorCopy = new RegExp(separator.source, flags + 'g');\n      var match, lastIndex, lastLength;\n      while (match = regexpExec.call(separatorCopy, string)) {\n        lastIndex = separatorCopy.lastIndex;\n        if (lastIndex > lastLastIndex) {\n          output.push(string.slice(lastLastIndex, match.index));\n          if (match.length > 1 && match.index < string.length) arrayPush.apply(output, match.slice(1));\n          lastLength = match[0].length;\n          lastLastIndex = lastIndex;\n          if (output.length >= lim) break;\n        }\n        if (separatorCopy.lastIndex === match.index) separatorCopy.lastIndex++; // Avoid an infinite loop\n      }\n      if (lastLastIndex === string.length) {\n        if (lastLength || !separatorCopy.test('')) output.push('');\n      } else output.push(string.slice(lastLastIndex));\n      return output.length > lim ? output.slice(0, lim) : output;\n    };\n  // Chakra, V8\n  } else if ('0'.split(undefined, 0).length) {\n    internalSplit = function (separator, limit) {\n      return separator === undefined && limit === 0 ? [] : nativeSplit.call(this, separator, limit);\n    };\n  } else internalSplit = nativeSplit;\n\n  return [\n    // `String.prototype.split` method\n    // https://tc39.github.io/ecma262/#sec-string.prototype.split\n    function split(separator, limit) {\n      var O = requireObjectCoercible(this);\n      var splitter = separator == undefined ? undefined : separator[SPLIT];\n      return splitter !== undefined\n        ? splitter.call(separator, O, limit)\n        : internalSplit.call(String(O), separator, limit);\n    },\n    // `RegExp.prototype[@@split]` method\n    // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@split\n    //\n    // NOTE: This cannot be properly polyfilled in engines that don't support\n    // the 'y' flag.\n    function (regexp, limit) {\n      var res = maybeCallNative(internalSplit, regexp, this, limit, internalSplit !== nativeSplit);\n      if (res.done) return res.value;\n\n      var rx = anObject(regexp);\n      var S = String(this);\n      var C = speciesConstructor(rx, RegExp);\n\n      var unicodeMatching = rx.unicode;\n      var flags = (rx.ignoreCase ? 'i' : '') +\n                  (rx.multiline ? 'm' : '') +\n                  (rx.unicode ? 'u' : '') +\n                  (SUPPORTS_Y ? 'y' : 'g');\n\n      // ^(? + rx + ) is needed, in combination with some S slicing, to\n      // simulate the 'y' flag.\n      var splitter = new C(SUPPORTS_Y ? rx : '^(?:' + rx.source + ')', flags);\n      var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n      if (lim === 0) return [];\n      if (S.length === 0) return regexpExecAbstract(splitter, S) === null ? [S] : [];\n      var p = 0;\n      var q = 0;\n      var A = [];\n      while (q < S.length) {\n        splitter.lastIndex = SUPPORTS_Y ? q : 0;\n        var z = regexpExecAbstract(splitter, SUPPORTS_Y ? S : S.slice(q));\n        var e;\n        if (\n          z === null ||\n          (e = min$3(toLength(splitter.lastIndex + (SUPPORTS_Y ? 0 : q)), S.length)) === p\n        ) {\n          q = advanceStringIndex(S, q, unicodeMatching);\n        } else {\n          A.push(S.slice(p, q));\n          if (A.length === lim) return A;\n          for (var i = 1; i <= z.length - 1; i++) {\n            A.push(z[i]);\n            if (A.length === lim) return A;\n          }\n          q = p = e;\n        }\n      }\n      A.push(S.slice(p));\n      return A;\n    }\n  ];\n}, !SUPPORTS_Y);\n\n// Parse unit value\nvar numberAndUnit = /^([+-]?(\\d+(\\.\\d*)?|\\.\\d+)(e[+-]?\\d+)?)([a-z%]*)$/i; // Parse hex value\n\nvar hex = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i; // Parse rgb value\n\nvar rgb = /rgb\\((\\d+),(\\d+),(\\d+)\\)/; // Parse reference id\n\nvar reference = /(#[a-z0-9\\-_]+)/i; // splits a transformation chain\n\nvar transforms = /\\)\\s*,?\\s*/; // Whitespace\n\nvar whitespace$1 = /\\s/g; // Test hex value\n\nvar isHex = /^#[a-f0-9]{3,6}$/i; // Test rgb value\n\nvar isRgb = /^rgb\\(/; // Test css declaration\n\nvar isCss = /[^:]+:[^;]+;?/; // Test for blank string\n\nvar isBlank = /^(\\s+)?$/; // Test for numeric string\n\nvar isNumber = /^[+-]?(\\d+(\\.\\d*)?|\\.\\d+)(e[+-]?\\d+)?$/i; // Test for percent value\n\nvar isPercent = /^-?[\\d.]+%$/; // Test for image url\n\nvar isImage = /\\.(jpg|jpeg|png|gif|svg)(\\?[^=]+.*)?/i; // split at whitespace and comma\n\nvar delimiter = /[\\s,]+/; // The following regex are used to parse the d attribute of a path\n// Matches all hyphens which are not after an exponent\n\nvar hyphen = /([^e])-/gi; // Replaces and tests for all path letters\n\nvar pathLetters = /[MLHVCSQTAZ]/gi; // yes we need this one, too\n\nvar isPathLetter = /[MLHVCSQTAZ]/i; // matches 0.154.23.45\n\nvar numbersWithDots = /((\\d?\\.\\d+(?:e[+-]?\\d+)?)((?:\\.\\d+(?:e[+-]?\\d+)?)+))+/gi; // matches .\n\nvar dots = /\\./g;\n\nvar regex = ({\n\t__proto__: null,\n\tnumberAndUnit: numberAndUnit,\n\thex: hex,\n\trgb: rgb,\n\treference: reference,\n\ttransforms: transforms,\n\twhitespace: whitespace$1,\n\tisHex: isHex,\n\tisRgb: isRgb,\n\tisCss: isCss,\n\tisBlank: isBlank,\n\tisNumber: isNumber,\n\tisPercent: isPercent,\n\tisImage: isImage,\n\tdelimiter: delimiter,\n\thyphen: hyphen,\n\tpathLetters: pathLetters,\n\tisPathLetter: isPathLetter,\n\tnumbersWithDots: numbersWithDots,\n\tdots: dots\n});\n\nfunction classes() {\n  var attr = this.attr('class');\n  return attr == null ? [] : attr.trim().split(delimiter);\n} // Return true if class exists on the node, false otherwise\n\nfunction hasClass(name) {\n  return this.classes().indexOf(name) !== -1;\n} // Add class to the node\n\nfunction addClass(name) {\n  if (!this.hasClass(name)) {\n    var array = this.classes();\n    array.push(name);\n    this.attr('class', array.join(' '));\n  }\n\n  return this;\n} // Remove class from the node\n\nfunction removeClass(name) {\n  if (this.hasClass(name)) {\n    this.attr('class', this.classes().filter(function (c) {\n      return c !== name;\n    }).join(' '));\n  }\n\n  return this;\n} // Toggle the presence of a class on the node\n\nfunction toggleClass(name) {\n  return this.hasClass(name) ? this.removeClass(name) : this.addClass(name);\n}\nregisterMethods('Dom', {\n  classes: classes,\n  hasClass: hasClass,\n  addClass: addClass,\n  removeClass: removeClass,\n  toggleClass: toggleClass\n});\n\nvar $forEach$1 = arrayIteration.forEach;\n\n\n// `Array.prototype.forEach` method implementation\n// https://tc39.github.io/ecma262/#sec-array.prototype.foreach\nvar arrayForEach = sloppyArrayMethod('forEach') ? function forEach(callbackfn /* , thisArg */) {\n  return $forEach$1(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n} : [].forEach;\n\n// `Array.prototype.forEach` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.foreach\n_export({ target: 'Array', proto: true, forced: [].forEach != arrayForEach }, {\n  forEach: arrayForEach\n});\n\nfor (var COLLECTION_NAME$1 in domIterables) {\n  var Collection$1 = global_1[COLLECTION_NAME$1];\n  var CollectionPrototype$1 = Collection$1 && Collection$1.prototype;\n  // some Chrome versions have non-configurable methods on DOMTokenList\n  if (CollectionPrototype$1 && CollectionPrototype$1.forEach !== arrayForEach) try {\n    createNonEnumerableProperty(CollectionPrototype$1, 'forEach', arrayForEach);\n  } catch (error) {\n    CollectionPrototype$1.forEach = arrayForEach;\n  }\n}\n\nfunction css(style, val) {\n  var ret = {};\n\n  if (arguments.length === 0) {\n    // get full style as object\n    this.node.style.cssText.split(/\\s*;\\s*/).filter(function (el) {\n      return !!el.length;\n    }).forEach(function (el) {\n      var t = el.split(/\\s*:\\s*/);\n      ret[t[0]] = t[1];\n    });\n    return ret;\n  }\n\n  if (arguments.length < 2) {\n    // get style properties in the array\n    if (Array.isArray(style)) {\n      var _iteratorNormalCompletion = true;\n      var _didIteratorError = false;\n      var _iteratorError = undefined;\n\n      try {\n        for (var _iterator = style[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n          var name = _step.value;\n          var cased = camelCase(name);\n          ret[cased] = this.node.style[cased];\n        }\n      } catch (err) {\n        _didIteratorError = true;\n        _iteratorError = err;\n      } finally {\n        try {\n          if (!_iteratorNormalCompletion && _iterator.return != null) {\n            _iterator.return();\n          }\n        } finally {\n          if (_didIteratorError) {\n            throw _iteratorError;\n          }\n        }\n      }\n\n      return ret;\n    } // get style for property\n\n\n    if (typeof style === 'string') {\n      return this.node.style[camelCase(style)];\n    } // set styles in object\n\n\n    if (_typeof(style) === 'object') {\n      for (var _name in style) {\n        // set empty string if null/undefined/'' was given\n        this.node.style[camelCase(_name)] = style[_name] == null || isBlank.test(style[_name]) ? '' : style[_name];\n      }\n    }\n  } // set style for property\n\n\n  if (arguments.length === 2) {\n    this.node.style[camelCase(style)] = val == null || isBlank.test(val) ? '' : val;\n  }\n\n  return this;\n} // Show element\n\nfunction show() {\n  return this.css('display', '');\n} // Hide element\n\nfunction hide() {\n  return this.css('display', 'none');\n} // Is element visible?\n\nfunction visible() {\n  return this.css('display') !== 'none';\n}\nregisterMethods('Dom', {\n  css: css,\n  show: show,\n  hide: hide,\n  visible: visible\n});\n\nfunction data$1(a, v, r) {\n  if (_typeof(a) === 'object') {\n    for (v in a) {\n      this.data(v, a[v]);\n    }\n  } else if (arguments.length < 2) {\n    try {\n      return JSON.parse(this.attr('data-' + a));\n    } catch (e) {\n      return this.attr('data-' + a);\n    }\n  } else {\n    this.attr('data-' + a, v === null ? null : r === true || typeof v === 'string' || typeof v === 'number' ? v : JSON.stringify(v));\n  }\n\n  return this;\n}\nregisterMethods('Dom', {\n  data: data$1\n});\n\nfunction remember(k, v) {\n  // remember every item in an object individually\n  if (_typeof(arguments[0]) === 'object') {\n    for (var key in k) {\n      this.remember(key, k[key]);\n    }\n  } else if (arguments.length === 1) {\n    // retrieve memory\n    return this.memory()[k];\n  } else {\n    // store memory\n    this.memory()[k] = v;\n  }\n\n  return this;\n} // Erase a given memory\n\nfunction forget() {\n  if (arguments.length === 0) {\n    this._memory = {};\n  } else {\n    for (var i = arguments.length - 1; i >= 0; i--) {\n      delete this.memory()[arguments[i]];\n    }\n  }\n\n  return this;\n} // This triggers creation of a new hidden class which is not performant\n// However, this function is not rarely used so it will not happen frequently\n// Return local memory object\n\nfunction memory() {\n  return this._memory = this._memory || {};\n}\nregisterMethods('Dom', {\n  remember: remember,\n  forget: forget,\n  memory: memory\n});\n\n// `Array.prototype.{ reduce, reduceRight }` methods implementation\nvar createMethod$4 = function (IS_RIGHT) {\n  return function (that, callbackfn, argumentsLength, memo) {\n    aFunction$1(callbackfn);\n    var O = toObject(that);\n    var self = indexedObject(O);\n    var length = toLength(O.length);\n    var index = IS_RIGHT ? length - 1 : 0;\n    var i = IS_RIGHT ? -1 : 1;\n    if (argumentsLength < 2) while (true) {\n      if (index in self) {\n        memo = self[index];\n        index += i;\n        break;\n      }\n      index += i;\n      if (IS_RIGHT ? index < 0 : length <= index) {\n        throw TypeError('Reduce of empty array with no initial value');\n      }\n    }\n    for (;IS_RIGHT ? index >= 0 : length > index; index += i) if (index in self) {\n      memo = callbackfn(memo, self[index], index, O);\n    }\n    return memo;\n  };\n};\n\nvar arrayReduce = {\n  // `Array.prototype.reduce` method\n  // https://tc39.github.io/ecma262/#sec-array.prototype.reduce\n  left: createMethod$4(false),\n  // `Array.prototype.reduceRight` method\n  // https://tc39.github.io/ecma262/#sec-array.prototype.reduceright\n  right: createMethod$4(true)\n};\n\nvar $reduce = arrayReduce.left;\n\n\n// `Array.prototype.reduce` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.reduce\n_export({ target: 'Array', proto: true, forced: sloppyArrayMethod('reduce') }, {\n  reduce: function reduce(callbackfn /* , initialValue */) {\n    return $reduce(this, callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n\nvar listenerId = 0;\nvar windowEvents = {};\n\nfunction getEvents(instance) {\n  var n = instance.getEventHolder(); // We dont want to save events in global space\n\n  if (n === globals.window) n = windowEvents;\n  if (!n.events) n.events = {};\n  return n.events;\n}\n\nfunction getEventTarget(instance) {\n  return instance.getEventTarget();\n}\n\nfunction clearEvents(instance) {\n  var n = instance.getEventHolder();\n  if (n.events) n.events = {};\n} // Add event binder in the SVG namespace\n\n\nfunction on(node, events, listener, binding, options) {\n  var l = listener.bind(binding || node);\n  var instance = makeInstance(node);\n  var bag = getEvents(instance);\n  var n = getEventTarget(instance); // events can be an array of events or a string of events\n\n  events = Array.isArray(events) ? events : events.split(delimiter); // add id to listener\n\n  if (!listener._svgjsListenerId) {\n    listener._svgjsListenerId = ++listenerId;\n  }\n\n  events.forEach(function (event) {\n    var ev = event.split('.')[0];\n    var ns = event.split('.')[1] || '*'; // ensure valid object\n\n    bag[ev] = bag[ev] || {};\n    bag[ev][ns] = bag[ev][ns] || {}; // reference listener\n\n    bag[ev][ns][listener._svgjsListenerId] = l; // add listener\n\n    n.addEventListener(ev, l, options || false);\n  });\n} // Add event unbinder in the SVG namespace\n\nfunction off(node, events, listener, options) {\n  var instance = makeInstance(node);\n  var bag = getEvents(instance);\n  var n = getEventTarget(instance); // listener can be a function or a number\n\n  if (typeof listener === 'function') {\n    listener = listener._svgjsListenerId;\n    if (!listener) return;\n  } // events can be an array of events or a string or undefined\n\n\n  events = Array.isArray(events) ? events : (events || '').split(delimiter);\n  events.forEach(function (event) {\n    var ev = event && event.split('.')[0];\n    var ns = event && event.split('.')[1];\n    var namespace, l;\n\n    if (listener) {\n      // remove listener reference\n      if (bag[ev] && bag[ev][ns || '*']) {\n        // removeListener\n        n.removeEventListener(ev, bag[ev][ns || '*'][listener], options || false);\n        delete bag[ev][ns || '*'][listener];\n      }\n    } else if (ev && ns) {\n      // remove all listeners for a namespaced event\n      if (bag[ev] && bag[ev][ns]) {\n        for (l in bag[ev][ns]) {\n          off(n, [ev, ns].join('.'), l);\n        }\n\n        delete bag[ev][ns];\n      }\n    } else if (ns) {\n      // remove all listeners for a specific namespace\n      for (event in bag) {\n        for (namespace in bag[event]) {\n          if (ns === namespace) {\n            off(n, [event, ns].join('.'));\n          }\n        }\n      }\n    } else if (ev) {\n      // remove all listeners for the event\n      if (bag[ev]) {\n        for (namespace in bag[ev]) {\n          off(n, [ev, namespace].join('.'));\n        }\n\n        delete bag[ev];\n      }\n    } else {\n      // remove all listeners on a given node\n      for (event in bag) {\n        off(n, event);\n      }\n\n      clearEvents(instance);\n    }\n  });\n}\nfunction dispatch(node, event, data) {\n  var n = getEventTarget(node); // Dispatch event\n\n  if (event instanceof globals.window.Event) {\n    n.dispatchEvent(event);\n  } else {\n    event = new globals.window.CustomEvent(event, {\n      detail: data,\n      cancelable: true\n    });\n    n.dispatchEvent(event);\n  }\n\n  return event;\n}\n\nvar IS_CONCAT_SPREADABLE = wellKnownSymbol('isConcatSpreadable');\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;\nvar MAXIMUM_ALLOWED_INDEX_EXCEEDED = 'Maximum allowed index exceeded';\n\n// We can't use this feature detection in V8 since it causes\n// deoptimization and serious performance degradation\n// https://github.com/zloirock/core-js/issues/679\nvar IS_CONCAT_SPREADABLE_SUPPORT = v8Version >= 51 || !fails(function () {\n  var array = [];\n  array[IS_CONCAT_SPREADABLE] = false;\n  return array.concat()[0] !== array;\n});\n\nvar SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('concat');\n\nvar isConcatSpreadable = function (O) {\n  if (!isObject(O)) return false;\n  var spreadable = O[IS_CONCAT_SPREADABLE];\n  return spreadable !== undefined ? !!spreadable : isArray(O);\n};\n\nvar FORCED = !IS_CONCAT_SPREADABLE_SUPPORT || !SPECIES_SUPPORT;\n\n// `Array.prototype.concat` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.concat\n// with adding support of @@isConcatSpreadable and @@species\n_export({ target: 'Array', proto: true, forced: FORCED }, {\n  concat: function concat(arg) { // eslint-disable-line no-unused-vars\n    var O = toObject(this);\n    var A = arraySpeciesCreate(O, 0);\n    var n = 0;\n    var i, k, length, len, E;\n    for (i = -1, length = arguments.length; i < length; i++) {\n      E = i === -1 ? O : arguments[i];\n      if (isConcatSpreadable(E)) {\n        len = toLength(E.length);\n        if (n + len > MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n        for (k = 0; k < len; k++, n++) if (k in E) createProperty(A, n, E[k]);\n      } else {\n        if (n >= MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n        createProperty(A, n++, E);\n      }\n    }\n    A.length = n;\n    return A;\n  }\n});\n\nvar $map = arrayIteration.map;\n\n\n// `Array.prototype.map` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.map\n// with adding support of @@species\n_export({ target: 'Array', proto: true, forced: !arrayMethodHasSpeciesSupport('map') }, {\n  map: function map(callbackfn /* , thisArg */) {\n    return $map(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n\nvar DatePrototype = Date.prototype;\nvar INVALID_DATE = 'Invalid Date';\nvar TO_STRING = 'toString';\nvar nativeDateToString = DatePrototype[TO_STRING];\nvar getTime = DatePrototype.getTime;\n\n// `Date.prototype.toString` method\n// https://tc39.github.io/ecma262/#sec-date.prototype.tostring\nif (new Date(NaN) + '' != INVALID_DATE) {\n  redefine(DatePrototype, TO_STRING, function toString() {\n    var value = getTime.call(this);\n    // eslint-disable-next-line no-self-compare\n    return value === value ? nativeDateToString.call(this) : INVALID_DATE;\n  });\n}\n\nvar trim = stringTrim.trim;\n\n\nvar nativeParseInt = global_1.parseInt;\nvar hex$1 = /^[+-]?0[Xx]/;\nvar FORCED$1 = nativeParseInt(whitespaces + '08') !== 8 || nativeParseInt(whitespaces + '0x16') !== 22;\n\n// `parseInt` method\n// https://tc39.github.io/ecma262/#sec-parseint-string-radix\nvar _parseInt = FORCED$1 ? function parseInt(string, radix) {\n  var S = trim(String(string));\n  return nativeParseInt(S, (radix >>> 0) || (hex$1.test(S) ? 16 : 10));\n} : nativeParseInt;\n\n// `parseInt` method\n// https://tc39.github.io/ecma262/#sec-parseint-string-radix\n_export({ global: true, forced: parseInt != _parseInt }, {\n  parseInt: _parseInt\n});\n\nvar TO_STRING$1 = 'toString';\nvar RegExpPrototype = RegExp.prototype;\nvar nativeToString = RegExpPrototype[TO_STRING$1];\n\nvar NOT_GENERIC = fails(function () { return nativeToString.call({ source: 'a', flags: 'b' }) != '/a/b'; });\n// FF44- RegExp#toString has a wrong name\nvar INCORRECT_NAME = nativeToString.name != TO_STRING$1;\n\n// `RegExp.prototype.toString` method\n// https://tc39.github.io/ecma262/#sec-regexp.prototype.tostring\nif (NOT_GENERIC || INCORRECT_NAME) {\n  redefine(RegExp.prototype, TO_STRING$1, function toString() {\n    var R = anObject(this);\n    var p = String(R.source);\n    var rf = R.flags;\n    var f = String(rf === undefined && R instanceof RegExp && !('flags' in RegExpPrototype) ? regexpFlags.call(R) : rf);\n    return '/' + p + '/' + f;\n  }, { unsafe: true });\n}\n\nfunction _arrayWithHoles(arr) {\n  if (Array.isArray(arr)) return arr;\n}\n\nfunction _iterableToArrayLimit(arr, i) {\n  if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === \"[object Arguments]\")) {\n    return;\n  }\n\n  var _arr = [];\n  var _n = true;\n  var _d = false;\n  var _e = undefined;\n\n  try {\n    for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n      _arr.push(_s.value);\n\n      if (i && _arr.length === i) break;\n    }\n  } catch (err) {\n    _d = true;\n    _e = err;\n  } finally {\n    try {\n      if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n    } finally {\n      if (_d) throw _e;\n    }\n  }\n\n  return _arr;\n}\n\nfunction _nonIterableRest() {\n  throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n}\n\nfunction _slicedToArray(arr, i) {\n  return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest();\n}\n\nfunction _defineProperties(target, props) {\n  for (var i = 0; i < props.length; i++) {\n    var descriptor = props[i];\n    descriptor.enumerable = descriptor.enumerable || false;\n    descriptor.configurable = true;\n    if (\"value\" in descriptor) descriptor.writable = true;\n    Object.defineProperty(target, descriptor.key, descriptor);\n  }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n  if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n  if (staticProps) _defineProperties(Constructor, staticProps);\n  return Constructor;\n}\n\nfunction sixDigitHex(hex) {\n  return hex.length === 4 ? ['#', hex.substring(1, 2), hex.substring(1, 2), hex.substring(2, 3), hex.substring(2, 3), hex.substring(3, 4), hex.substring(3, 4)].join('') : hex;\n}\n\nfunction componentHex(component) {\n  var integer = Math.round(component);\n  var bounded = Math.max(0, Math.min(255, integer));\n  var hex = bounded.toString(16);\n  return hex.length === 1 ? '0' + hex : hex;\n}\n\nfunction is(object, space) {\n  for (var i = space.length; i--;) {\n    if (object[space[i]] == null) {\n      return false;\n    }\n  }\n\n  return true;\n}\n\nfunction getParameters(a, b) {\n  var params = is(a, 'rgb') ? {\n    _a: a.r,\n    _b: a.g,\n    _c: a.b,\n    space: 'rgb'\n  } : is(a, 'xyz') ? {\n    _a: a.x,\n    _b: a.y,\n    _c: a.z,\n    _d: 0,\n    space: 'xyz'\n  } : is(a, 'hsl') ? {\n    _a: a.h,\n    _b: a.s,\n    _c: a.l,\n    _d: 0,\n    space: 'hsl'\n  } : is(a, 'lab') ? {\n    _a: a.l,\n    _b: a.a,\n    _c: a.b,\n    _d: 0,\n    space: 'lab'\n  } : is(a, 'lch') ? {\n    _a: a.l,\n    _b: a.c,\n    _c: a.h,\n    _d: 0,\n    space: 'lch'\n  } : is(a, 'cmyk') ? {\n    _a: a.c,\n    _b: a.m,\n    _c: a.y,\n    _d: a.k,\n    space: 'cmyk'\n  } : {\n    _a: 0,\n    _b: 0,\n    _c: 0,\n    space: 'rgb'\n  };\n  params.space = b || params.space;\n  return params;\n}\n\nfunction cieSpace(space) {\n  if (space === 'lab' || space === 'xyz' || space === 'lch') {\n    return true;\n  } else {\n    return false;\n  }\n}\n\nfunction hueToRgb(p, q, t) {\n  if (t < 0) t += 1;\n  if (t > 1) t -= 1;\n  if (t < 1 / 6) return p + (q - p) * 6 * t;\n  if (t < 1 / 2) return q;\n  if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;\n  return p;\n}\n\nvar Color =\n/*#__PURE__*/\nfunction () {\n  function Color() {\n    _classCallCheck(this, Color);\n\n    this.init.apply(this, arguments);\n  }\n\n  _createClass(Color, [{\n    key: \"init\",\n    value: function init() {\n      var a = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n      var b = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n      var c = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n      var d = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;\n      var space = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 'rgb';\n      // This catches the case when a falsy value is passed like ''\n      a = !a ? 0 : a; // Reset all values in case the init function is rerun with new color space\n\n      if (this.space) {\n        for (var component in this.space) {\n          delete this[this.space[component]];\n        }\n      }\n\n      if (typeof a === 'number') {\n        // Allow for the case that we don't need d...\n        space = typeof d === 'string' ? d : space;\n        d = typeof d === 'string' ? 0 : d; // Assign the values straight to the color\n\n        Object.assign(this, {\n          _a: a,\n          _b: b,\n          _c: c,\n          _d: d,\n          space: space\n        }); // If the user gave us an array, make the color from it\n      } else if (a instanceof Array) {\n        this.space = b || (typeof a[3] === 'string' ? a[3] : a[4]) || 'rgb';\n        Object.assign(this, {\n          _a: a[0],\n          _b: a[1],\n          _c: a[2],\n          _d: a[3] || 0\n        });\n      } else if (a instanceof Object) {\n        // Set the object up and assign its values directly\n        var values = getParameters(a, b);\n        Object.assign(this, values);\n      } else if (typeof a === 'string') {\n        if (isRgb.test(a)) {\n          var noWhitespace = a.replace(whitespace$1, '');\n\n          var _rgb$exec$slice$map = rgb.exec(noWhitespace).slice(1, 4).map(function (v) {\n            return parseInt(v);\n          }),\n              _rgb$exec$slice$map2 = _slicedToArray(_rgb$exec$slice$map, 3),\n              _a2 = _rgb$exec$slice$map2[0],\n              _b2 = _rgb$exec$slice$map2[1],\n              _c2 = _rgb$exec$slice$map2[2];\n\n          Object.assign(this, {\n            _a: _a2,\n            _b: _b2,\n            _c: _c2,\n            _d: 0,\n            space: 'rgb'\n          });\n        } else if (isHex.test(a)) {\n          var hexParse = function hexParse(v) {\n            return parseInt(v, 16);\n          };\n\n          var _hex$exec$map = hex.exec(sixDigitHex(a)).map(hexParse),\n              _hex$exec$map2 = _slicedToArray(_hex$exec$map, 4),\n              _a3 = _hex$exec$map2[1],\n              _b3 = _hex$exec$map2[2],\n              _c3 = _hex$exec$map2[3];\n\n          Object.assign(this, {\n            _a: _a3,\n            _b: _b3,\n            _c: _c3,\n            _d: 0,\n            space: 'rgb'\n          });\n        } else throw Error('Unsupported string format, can\\'t construct Color');\n      } // Now add the components as a convenience\n\n\n      var _a = this._a,\n          _b = this._b,\n          _c = this._c,\n          _d = this._d;\n      var components = this.space === 'rgb' ? {\n        r: _a,\n        g: _b,\n        b: _c\n      } : this.space === 'xyz' ? {\n        x: _a,\n        y: _b,\n        z: _c\n      } : this.space === 'hsl' ? {\n        h: _a,\n        s: _b,\n        l: _c\n      } : this.space === 'lab' ? {\n        l: _a,\n        a: _b,\n        b: _c\n      } : this.space === 'lch' ? {\n        l: _a,\n        c: _b,\n        h: _c\n      } : this.space === 'cmyk' ? {\n        c: _a,\n        m: _b,\n        y: _c,\n        k: _d\n      } : {};\n      Object.assign(this, components);\n    }\n    /*\r\n    Conversion Methods\r\n    */\n\n  }, {\n    key: \"rgb\",\n    value: function rgb() {\n      if (this.space === 'rgb') {\n        return this;\n      } else if (cieSpace(this.space)) {\n        // Convert to the xyz color space\n        var x = this.x,\n            y = this.y,\n            z = this.z;\n\n        if (this.space === 'lab' || this.space === 'lch') {\n          // Get the values in the lab space\n          var l = this.l,\n              a = this.a,\n              _b4 = this.b;\n\n          if (this.space === 'lch') {\n            var c = this.c,\n                h = this.h;\n            var dToR = Math.PI / 180;\n            a = c * Math.cos(dToR * h);\n            _b4 = c * Math.sin(dToR * h);\n          } // Undo the nonlinear function\n\n\n          var yL = (l + 16) / 116;\n          var xL = a / 500 + yL;\n          var zL = yL - _b4 / 200; // Get the xyz values\n\n          var ct = 16 / 116;\n          var mx = 0.008856;\n          var nm = 7.787;\n          x = 0.95047 * (Math.pow(xL, 3) > mx ? Math.pow(xL, 3) : (xL - ct) / nm);\n          y = 1.00000 * (Math.pow(yL, 3) > mx ? Math.pow(yL, 3) : (yL - ct) / nm);\n          z = 1.08883 * (Math.pow(zL, 3) > mx ? Math.pow(zL, 3) : (zL - ct) / nm);\n        } // Convert xyz to unbounded rgb values\n\n\n        var rU = x * 3.2406 + y * -1.5372 + z * -0.4986;\n        var gU = x * -0.9689 + y * 1.8758 + z * 0.0415;\n        var bU = x * 0.0557 + y * -0.2040 + z * 1.0570; // Convert the values to true rgb values\n\n        var pow = Math.pow;\n        var bd = 0.0031308;\n        var r = rU > bd ? 1.055 * pow(rU, 1 / 2.4) - 0.055 : 12.92 * rU;\n        var g = gU > bd ? 1.055 * pow(gU, 1 / 2.4) - 0.055 : 12.92 * gU;\n        var b = bU > bd ? 1.055 * pow(bU, 1 / 2.4) - 0.055 : 12.92 * bU; // Make and return the color\n\n        var color = new Color(255 * r, 255 * g, 255 * b);\n        return color;\n      } else if (this.space === 'hsl') {\n        // https://bgrins.github.io/TinyColor/docs/tinycolor.html\n        // Get the current hsl values\n        var _h = this.h,\n            s = this.s,\n            _l = this.l;\n        _h /= 360;\n        s /= 100;\n        _l /= 100; // If we are grey, then just make the color directly\n\n        if (s === 0) {\n          _l *= 255;\n\n          var _color2 = new Color(_l, _l, _l);\n\n          return _color2;\n        } // TODO I have no idea what this does :D If you figure it out, tell me!\n\n\n        var q = _l < 0.5 ? _l * (1 + s) : _l + s - _l * s;\n        var p = 2 * _l - q; // Get the rgb values\n\n        var _r = 255 * hueToRgb(p, q, _h + 1 / 3);\n\n        var _g = 255 * hueToRgb(p, q, _h);\n\n        var _b5 = 255 * hueToRgb(p, q, _h - 1 / 3); // Make a new color\n\n\n        var _color = new Color(_r, _g, _b5);\n\n        return _color;\n      } else if (this.space === 'cmyk') {\n        // https://gist.github.com/felipesabino/5066336\n        // Get the normalised cmyk values\n        var _c4 = this.c,\n            m = this.m,\n            _y = this.y,\n            k = this.k; // Get the rgb values\n\n        var _r2 = 255 * (1 - Math.min(1, _c4 * (1 - k) + k));\n\n        var _g2 = 255 * (1 - Math.min(1, m * (1 - k) + k));\n\n        var _b6 = 255 * (1 - Math.min(1, _y * (1 - k) + k)); // Form the color and return it\n\n\n        var _color3 = new Color(_r2, _g2, _b6);\n\n        return _color3;\n      } else {\n        return this;\n      }\n    }\n  }, {\n    key: \"lab\",\n    value: function lab() {\n      // Get the xyz color\n      var _this$xyz = this.xyz(),\n          x = _this$xyz.x,\n          y = _this$xyz.y,\n          z = _this$xyz.z; // Get the lab components\n\n\n      var l = 116 * y - 16;\n      var a = 500 * (x - y);\n      var b = 200 * (y - z); // Construct and return a new color\n\n      var color = new Color(l, a, b, 'lab');\n      return color;\n    }\n  }, {\n    key: \"xyz\",\n    value: function xyz() {\n      // Normalise the red, green and blue values\n      var _this$rgb = this.rgb(),\n          r255 = _this$rgb._a,\n          g255 = _this$rgb._b,\n          b255 = _this$rgb._c;\n\n      var _map = [r255, g255, b255].map(function (v) {\n        return v / 255;\n      }),\n          _map2 = _slicedToArray(_map, 3),\n          r = _map2[0],\n          g = _map2[1],\n          b = _map2[2]; // Convert to the lab rgb space\n\n\n      var rL = r > 0.04045 ? Math.pow((r + 0.055) / 1.055, 2.4) : r / 12.92;\n      var gL = g > 0.04045 ? Math.pow((g + 0.055) / 1.055, 2.4) : g / 12.92;\n      var bL = b > 0.04045 ? Math.pow((b + 0.055) / 1.055, 2.4) : b / 12.92; // Convert to the xyz color space without bounding the values\n\n      var xU = (rL * 0.4124 + gL * 0.3576 + bL * 0.1805) / 0.95047;\n      var yU = (rL * 0.2126 + gL * 0.7152 + bL * 0.0722) / 1.00000;\n      var zU = (rL * 0.0193 + gL * 0.1192 + bL * 0.9505) / 1.08883; // Get the proper xyz values by applying the bounding\n\n      var x = xU > 0.008856 ? Math.pow(xU, 1 / 3) : 7.787 * xU + 16 / 116;\n      var y = yU > 0.008856 ? Math.pow(yU, 1 / 3) : 7.787 * yU + 16 / 116;\n      var z = zU > 0.008856 ? Math.pow(zU, 1 / 3) : 7.787 * zU + 16 / 116; // Make and return the color\n\n      var color = new Color(x, y, z, 'xyz');\n      return color;\n    }\n  }, {\n    key: \"lch\",\n    value: function lch() {\n      // Get the lab color directly\n      var _this$lab = this.lab(),\n          l = _this$lab.l,\n          a = _this$lab.a,\n          b = _this$lab.b; // Get the chromaticity and the hue using polar coordinates\n\n\n      var c = Math.sqrt(Math.pow(a, 2) + Math.pow(b, 2));\n      var h = 180 * Math.atan2(b, a) / Math.PI;\n\n      if (h < 0) {\n        h *= -1;\n        h = 360 - h;\n      } // Make a new color and return it\n\n\n      var color = new Color(l, c, h, 'lch');\n      return color;\n    }\n  }, {\n    key: \"hsl\",\n    value: function hsl() {\n      // Get the rgb values\n      var _this$rgb2 = this.rgb(),\n          _a = _this$rgb2._a,\n          _b = _this$rgb2._b,\n          _c = _this$rgb2._c;\n\n      var _map3 = [_a, _b, _c].map(function (v) {\n        return v / 255;\n      }),\n          _map4 = _slicedToArray(_map3, 3),\n          r = _map4[0],\n          g = _map4[1],\n          b = _map4[2]; // Find the maximum and minimum values to get the lightness\n\n\n      var max = Math.max(r, g, b);\n      var min = Math.min(r, g, b);\n      var l = (max + min) / 2; // If the r, g, v values are identical then we are grey\n\n      var isGrey = max === min; // Calculate the hue and saturation\n\n      var delta = max - min;\n      var s = isGrey ? 0 : l > 0.5 ? delta / (2 - max - min) : delta / (max + min);\n      var h = isGrey ? 0 : max === r ? ((g - b) / delta + (g < b ? 6 : 0)) / 6 : max === g ? ((b - r) / delta + 2) / 6 : max === b ? ((r - g) / delta + 4) / 6 : 0; // Construct and return the new color\n\n      var color = new Color(360 * h, 100 * s, 100 * l, 'hsl');\n      return color;\n    }\n  }, {\n    key: \"cmyk\",\n    value: function cmyk() {\n      // Get the rgb values for the current color\n      var _this$rgb3 = this.rgb(),\n          _a = _this$rgb3._a,\n          _b = _this$rgb3._b,\n          _c = _this$rgb3._c;\n\n      var _map5 = [_a, _b, _c].map(function (v) {\n        return v / 255;\n      }),\n          _map6 = _slicedToArray(_map5, 3),\n          r = _map6[0],\n          g = _map6[1],\n          b = _map6[2]; // Get the cmyk values in an unbounded format\n\n\n      var k = Math.min(1 - r, 1 - g, 1 - b);\n\n      if (k === 1) {\n        // Catch the black case\n        return new Color(0, 0, 0, 1, 'cmyk');\n      }\n\n      var c = (1 - r - k) / (1 - k);\n      var m = (1 - g - k) / (1 - k);\n      var y = (1 - b - k) / (1 - k); // Construct the new color\n\n      var color = new Color(c, m, y, k, 'cmyk');\n      return color;\n    }\n    /*\r\n    Input and Output methods\r\n    */\n\n  }, {\n    key: \"_clamped\",\n    value: function _clamped() {\n      var _this$rgb4 = this.rgb(),\n          _a = _this$rgb4._a,\n          _b = _this$rgb4._b,\n          _c = _this$rgb4._c;\n\n      var max = Math.max,\n          min = Math.min,\n          round = Math.round;\n\n      var format = function format(v) {\n        return max(0, min(round(v), 255));\n      };\n\n      return [_a, _b, _c].map(format);\n    }\n  }, {\n    key: \"toHex\",\n    value: function toHex() {\n      var _this$_clamped$map = this._clamped().map(componentHex),\n          _this$_clamped$map2 = _slicedToArray(_this$_clamped$map, 3),\n          r = _this$_clamped$map2[0],\n          g = _this$_clamped$map2[1],\n          b = _this$_clamped$map2[2];\n\n      return \"#\".concat(r).concat(g).concat(b);\n    }\n  }, {\n    key: \"toString\",\n    value: function toString() {\n      return this.toHex();\n    }\n  }, {\n    key: \"toRgb\",\n    value: function toRgb() {\n      var _this$_clamped = this._clamped(),\n          _this$_clamped2 = _slicedToArray(_this$_clamped, 3),\n          rV = _this$_clamped2[0],\n          gV = _this$_clamped2[1],\n          bV = _this$_clamped2[2];\n\n      var string = \"rgb(\".concat(rV, \",\").concat(gV, \",\").concat(bV, \")\");\n      return string;\n    }\n  }, {\n    key: \"toArray\",\n    value: function toArray() {\n      var _a = this._a,\n          _b = this._b,\n          _c = this._c,\n          _d = this._d,\n          space = this.space;\n      return [_a, _b, _c, _d, space];\n    }\n    /*\r\n    Generating random colors\r\n    */\n\n  }], [{\n    key: \"random\",\n    value: function random() {\n      var mode = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'vibrant';\n      var t = arguments.length > 1 ? arguments[1] : undefined;\n      // Get the math modules\n      var random = Math.random,\n          round = Math.round,\n          sin = Math.sin,\n          pi = Math.PI; // Run the correct generator\n\n      if (mode === 'vibrant') {\n        var l = (81 - 57) * random() + 57;\n        var c = (83 - 45) * random() + 45;\n        var h = 360 * random();\n        var color = new Color(l, c, h, 'lch');\n        return color;\n      } else if (mode === 'sine') {\n        t = t == null ? random() : t;\n        var r = round(80 * sin(2 * pi * t / 0.5 + 0.01) + 150);\n        var g = round(50 * sin(2 * pi * t / 0.5 + 4.6) + 200);\n        var b = round(100 * sin(2 * pi * t / 0.5 + 2.3) + 150);\n\n        var _color4 = new Color(r, g, b);\n\n        return _color4;\n      } else if (mode === 'pastel') {\n        var _l2 = (94 - 86) * random() + 86;\n\n        var _c5 = (26 - 9) * random() + 9;\n\n        var _h2 = 360 * random();\n\n        var _color5 = new Color(_l2, _c5, _h2, 'lch');\n\n        return _color5;\n      } else if (mode === 'dark') {\n        var _l3 = 10 + 10 * random();\n\n        var _c6 = (125 - 75) * random() + 86;\n\n        var _h3 = 360 * random();\n\n        var _color6 = new Color(_l3, _c6, _h3, 'lch');\n\n        return _color6;\n      } else if (mode === 'rgb') {\n        var _r3 = 255 * random();\n\n        var _g3 = 255 * random();\n\n        var _b7 = 255 * random();\n\n        var _color7 = new Color(_r3, _g3, _b7);\n\n        return _color7;\n      } else if (mode === 'lab') {\n        var _l4 = 100 * random();\n\n        var a = 256 * random() - 128;\n\n        var _b8 = 256 * random() - 128;\n\n        var _color8 = new Color(_l4, a, _b8, 'lab');\n\n        return _color8;\n      } else if (mode === 'grey') {\n        var grey = 255 * random();\n\n        var _color9 = new Color(grey, grey, grey);\n\n        return _color9;\n      }\n    }\n    /*\r\n    Constructing colors\r\n    */\n    // Test if given value is a color string\n\n  }, {\n    key: \"test\",\n    value: function test(color) {\n      return typeof color === 'string' && (isHex.test(color) || isRgb.test(color));\n    } // Test if given value is an rgb object\n\n  }, {\n    key: \"isRgb\",\n    value: function isRgb(color) {\n      return color && typeof color.r === 'number' && typeof color.g === 'number' && typeof color.b === 'number';\n    } // Test if given value is a color\n\n  }, {\n    key: \"isColor\",\n    value: function isColor(color) {\n      return color && (color instanceof Color || this.isRgb(color) || this.test(color));\n    }\n  }]);\n\n  return Color;\n}();\n\nvar FAILS_ON_PRIMITIVES$1 = fails(function () { objectKeys(1); });\n\n// `Object.keys` method\n// https://tc39.github.io/ecma262/#sec-object.keys\n_export({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES$1 }, {\n  keys: function keys(it) {\n    return objectKeys(toObject(it));\n  }\n});\n\n// @@match logic\nfixRegexpWellKnownSymbolLogic('match', 1, function (MATCH, nativeMatch, maybeCallNative) {\n  return [\n    // `String.prototype.match` method\n    // https://tc39.github.io/ecma262/#sec-string.prototype.match\n    function match(regexp) {\n      var O = requireObjectCoercible(this);\n      var matcher = regexp == undefined ? undefined : regexp[MATCH];\n      return matcher !== undefined ? matcher.call(regexp, O) : new RegExp(regexp)[MATCH](String(O));\n    },\n    // `RegExp.prototype[@@match]` method\n    // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@match\n    function (regexp) {\n      var res = maybeCallNative(nativeMatch, regexp, this);\n      if (res.done) return res.value;\n\n      var rx = anObject(regexp);\n      var S = String(this);\n\n      if (!rx.global) return regexpExecAbstract(rx, S);\n\n      var fullUnicode = rx.unicode;\n      rx.lastIndex = 0;\n      var A = [];\n      var n = 0;\n      var result;\n      while ((result = regexpExecAbstract(rx, S)) !== null) {\n        var matchStr = String(result[0]);\n        A[n] = matchStr;\n        if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n        n++;\n      }\n      return n === 0 ? null : A;\n    }\n  ];\n});\n\nfunction _assertThisInitialized(self) {\n  if (self === void 0) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n\n  return self;\n}\n\nfunction _possibleConstructorReturn(self, call) {\n  if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n    return call;\n  }\n\n  return _assertThisInitialized(self);\n}\n\nfunction _getPrototypeOf(o) {\n  _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n    return o.__proto__ || Object.getPrototypeOf(o);\n  };\n  return _getPrototypeOf(o);\n}\n\nfunction _superPropBase(object, property) {\n  while (!Object.prototype.hasOwnProperty.call(object, property)) {\n    object = _getPrototypeOf(object);\n    if (object === null) break;\n  }\n\n  return object;\n}\n\nfunction _get(target, property, receiver) {\n  if (typeof Reflect !== \"undefined\" && Reflect.get) {\n    _get = Reflect.get;\n  } else {\n    _get = function _get(target, property, receiver) {\n      var base = _superPropBase(target, property);\n      if (!base) return;\n      var desc = Object.getOwnPropertyDescriptor(base, property);\n\n      if (desc.get) {\n        return desc.get.call(receiver);\n      }\n\n      return desc.value;\n    };\n  }\n\n  return _get(target, property, receiver || target);\n}\n\nfunction _setPrototypeOf(o, p) {\n  _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n    o.__proto__ = p;\n    return o;\n  };\n\n  return _setPrototypeOf(o, p);\n}\n\nfunction _inherits(subClass, superClass) {\n  if (typeof superClass !== \"function\" && superClass !== null) {\n    throw new TypeError(\"Super expression must either be null or a function\");\n  }\n\n  subClass.prototype = Object.create(superClass && superClass.prototype, {\n    constructor: {\n      value: subClass,\n      writable: true,\n      configurable: true\n    }\n  });\n  if (superClass) _setPrototypeOf(subClass, superClass);\n}\n\nvar getOwnPropertyNames = objectGetOwnPropertyNames.f;\nvar getOwnPropertyDescriptor$2 = objectGetOwnPropertyDescriptor.f;\nvar defineProperty$5 = objectDefineProperty.f;\nvar trim$1 = stringTrim.trim;\n\nvar NUMBER = 'Number';\nvar NativeNumber = global_1[NUMBER];\nvar NumberPrototype = NativeNumber.prototype;\n\n// Opera ~12 has broken Object#toString\nvar BROKEN_CLASSOF = classofRaw(objectCreate(NumberPrototype)) == NUMBER;\n\n// `ToNumber` abstract operation\n// https://tc39.github.io/ecma262/#sec-tonumber\nvar toNumber = function (argument) {\n  var it = toPrimitive(argument, false);\n  var first, third, radix, maxCode, digits, length, index, code;\n  if (typeof it == 'string' && it.length > 2) {\n    it = trim$1(it);\n    first = it.charCodeAt(0);\n    if (first === 43 || first === 45) {\n      third = it.charCodeAt(2);\n      if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix\n    } else if (first === 48) {\n      switch (it.charCodeAt(1)) {\n        case 66: case 98: radix = 2; maxCode = 49; break; // fast equal of /^0b[01]+$/i\n        case 79: case 111: radix = 8; maxCode = 55; break; // fast equal of /^0o[0-7]+$/i\n        default: return +it;\n      }\n      digits = it.slice(2);\n      length = digits.length;\n      for (index = 0; index < length; index++) {\n        code = digits.charCodeAt(index);\n        // parseInt parses a string to a first unavailable symbol\n        // but ToNumber should return NaN if a string contains unavailable symbols\n        if (code < 48 || code > maxCode) return NaN;\n      } return parseInt(digits, radix);\n    }\n  } return +it;\n};\n\n// `Number` constructor\n// https://tc39.github.io/ecma262/#sec-number-constructor\nif (isForced_1(NUMBER, !NativeNumber(' 0o1') || !NativeNumber('0b1') || NativeNumber('+0x1'))) {\n  var NumberWrapper = function Number(value) {\n    var it = arguments.length < 1 ? 0 : value;\n    var dummy = this;\n    return dummy instanceof NumberWrapper\n      // check on 1..constructor(foo) case\n      && (BROKEN_CLASSOF ? fails(function () { NumberPrototype.valueOf.call(dummy); }) : classofRaw(dummy) != NUMBER)\n        ? inheritIfRequired(new NativeNumber(toNumber(it)), dummy, NumberWrapper) : toNumber(it);\n  };\n  for (var keys$1 = descriptors ? getOwnPropertyNames(NativeNumber) : (\n    // ES3:\n    'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' +\n    // ES2015 (in case, if modules with ES2015 Number statics required before):\n    'EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,' +\n    'MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger'\n  ).split(','), j = 0, key; keys$1.length > j; j++) {\n    if (has(NativeNumber, key = keys$1[j]) && !has(NumberWrapper, key)) {\n      defineProperty$5(NumberWrapper, key, getOwnPropertyDescriptor$2(NativeNumber, key));\n    }\n  }\n  NumberWrapper.prototype = NumberPrototype;\n  NumberPrototype.constructor = NumberWrapper;\n  redefine(global_1, NUMBER, NumberWrapper);\n}\n\nvar trim$2 = stringTrim.trim;\n\n\nvar nativeParseFloat = global_1.parseFloat;\nvar FORCED$2 = 1 / nativeParseFloat(whitespaces + '-0') !== -Infinity;\n\n// `parseFloat` method\n// https://tc39.github.io/ecma262/#sec-parsefloat-string\nvar _parseFloat = FORCED$2 ? function parseFloat(string) {\n  var trimmedString = trim$2(String(string));\n  var result = nativeParseFloat(trimmedString);\n  return result === 0 && trimmedString.charAt(0) == '-' ? -0 : result;\n} : nativeParseFloat;\n\n// `parseFloat` method\n// https://tc39.github.io/ecma262/#sec-parsefloat-string\n_export({ global: true, forced: parseFloat != _parseFloat }, {\n  parseFloat: _parseFloat\n});\n\nvar Point =\n/*#__PURE__*/\nfunction () {\n  // Initialize\n  function Point() {\n    _classCallCheck(this, Point);\n\n    this.init.apply(this, arguments);\n  }\n\n  _createClass(Point, [{\n    key: \"init\",\n    value: function init(x, y) {\n      var base = {\n        x: 0,\n        y: 0\n      }; // ensure source as object\n\n      var source = Array.isArray(x) ? {\n        x: x[0],\n        y: x[1]\n      } : _typeof(x) === 'object' ? {\n        x: x.x,\n        y: x.y\n      } : {\n        x: x,\n        y: y\n      }; // merge source\n\n      this.x = source.x == null ? base.x : source.x;\n      this.y = source.y == null ? base.y : source.y;\n      return this;\n    } // Clone point\n\n  }, {\n    key: \"clone\",\n    value: function clone() {\n      return new Point(this);\n    }\n  }, {\n    key: \"transform\",\n    value: function transform(m) {\n      return this.clone().transformO(m);\n    } // Transform point with matrix\n\n  }, {\n    key: \"transformO\",\n    value: function transformO(m) {\n      if (!Matrix.isMatrixLike(m)) {\n        m = new Matrix(m);\n      }\n\n      var x = this.x,\n          y = this.y; // Perform the matrix multiplication\n\n      this.x = m.a * x + m.c * y + m.e;\n      this.y = m.b * x + m.d * y + m.f;\n      return this;\n    }\n  }, {\n    key: \"toArray\",\n    value: function toArray() {\n      return [this.x, this.y];\n    }\n  }]);\n\n  return Point;\n}();\nfunction point(x, y) {\n  return new Point(x, y).transform(this.screenCTM().inverse());\n}\n\nfunction closeEnough(a, b, threshold) {\n  return Math.abs(b - a) < (threshold || 1e-6);\n}\n\nvar Matrix =\n/*#__PURE__*/\nfunction () {\n  function Matrix() {\n    _classCallCheck(this, Matrix);\n\n    this.init.apply(this, arguments);\n  } // Initialize\n\n\n  _createClass(Matrix, [{\n    key: \"init\",\n    value: function init(source) {\n      var base = Matrix.fromArray([1, 0, 0, 1, 0, 0]); // ensure source as object\n\n      source = source instanceof Element ? source.matrixify() : typeof source === 'string' ? Matrix.fromArray(source.split(delimiter).map(parseFloat)) : Array.isArray(source) ? Matrix.fromArray(source) : _typeof(source) === 'object' && Matrix.isMatrixLike(source) ? source : _typeof(source) === 'object' ? new Matrix().transform(source) : arguments.length === 6 ? Matrix.fromArray([].slice.call(arguments)) : base; // Merge the source matrix with the base matrix\n\n      this.a = source.a != null ? source.a : base.a;\n      this.b = source.b != null ? source.b : base.b;\n      this.c = source.c != null ? source.c : base.c;\n      this.d = source.d != null ? source.d : base.d;\n      this.e = source.e != null ? source.e : base.e;\n      this.f = source.f != null ? source.f : base.f;\n      return this;\n    } // Clones this matrix\n\n  }, {\n    key: \"clone\",\n    value: function clone() {\n      return new Matrix(this);\n    } // Transform a matrix into another matrix by manipulating the space\n\n  }, {\n    key: \"transform\",\n    value: function transform(o) {\n      // Check if o is a matrix and then left multiply it directly\n      if (Matrix.isMatrixLike(o)) {\n        var matrix = new Matrix(o);\n        return matrix.multiplyO(this);\n      } // Get the proposed transformations and the current transformations\n\n\n      var t = Matrix.formatTransforms(o);\n      var current = this;\n\n      var _transform = new Point(t.ox, t.oy).transform(current),\n          ox = _transform.x,\n          oy = _transform.y; // Construct the resulting matrix\n\n\n      var transformer = new Matrix().translateO(t.rx, t.ry).lmultiplyO(current).translateO(-ox, -oy).scaleO(t.scaleX, t.scaleY).skewO(t.skewX, t.skewY).shearO(t.shear).rotateO(t.theta).translateO(ox, oy); // If we want the origin at a particular place, we force it there\n\n      if (isFinite(t.px) || isFinite(t.py)) {\n        var origin = new Point(ox, oy).transform(transformer); // TODO: Replace t.px with isFinite(t.px)\n\n        var dx = t.px ? t.px - origin.x : 0;\n        var dy = t.py ? t.py - origin.y : 0;\n        transformer.translateO(dx, dy);\n      } // Translate now after positioning\n\n\n      transformer.translateO(t.tx, t.ty);\n      return transformer;\n    } // Applies a matrix defined by its affine parameters\n\n  }, {\n    key: \"compose\",\n    value: function compose(o) {\n      if (o.origin) {\n        o.originX = o.origin[0];\n        o.originY = o.origin[1];\n      } // Get the parameters\n\n\n      var ox = o.originX || 0;\n      var oy = o.originY || 0;\n      var sx = o.scaleX || 1;\n      var sy = o.scaleY || 1;\n      var lam = o.shear || 0;\n      var theta = o.rotate || 0;\n      var tx = o.translateX || 0;\n      var ty = o.translateY || 0; // Apply the standard matrix\n\n      var result = new Matrix().translateO(-ox, -oy).scaleO(sx, sy).shearO(lam).rotateO(theta).translateO(tx, ty).lmultiplyO(this).translateO(ox, oy);\n      return result;\n    } // Decomposes this matrix into its affine parameters\n\n  }, {\n    key: \"decompose\",\n    value: function decompose() {\n      var cx = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n      var cy = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n      // Get the parameters from the matrix\n      var a = this.a;\n      var b = this.b;\n      var c = this.c;\n      var d = this.d;\n      var e = this.e;\n      var f = this.f; // Figure out if the winding direction is clockwise or counterclockwise\n\n      var determinant = a * d - b * c;\n      var ccw = determinant > 0 ? 1 : -1; // Since we only shear in x, we can use the x basis to get the x scale\n      // and the rotation of the resulting matrix\n\n      var sx = ccw * Math.sqrt(a * a + b * b);\n      var thetaRad = Math.atan2(ccw * b, ccw * a);\n      var theta = 180 / Math.PI * thetaRad;\n      var ct = Math.cos(thetaRad);\n      var st = Math.sin(thetaRad); // We can then solve the y basis vector simultaneously to get the other\n      // two affine parameters directly from these parameters\n\n      var lam = (a * c + b * d) / determinant;\n      var sy = c * sx / (lam * a - b) || d * sx / (lam * b + a); // Use the translations\n\n      var tx = e - cx + cx * ct * sx + cy * (lam * ct * sx - st * sy);\n      var ty = f - cy + cx * st * sx + cy * (lam * st * sx + ct * sy); // Construct the decomposition and return it\n\n      return {\n        // Return the affine parameters\n        scaleX: sx,\n        scaleY: sy,\n        shear: lam,\n        rotate: theta,\n        translateX: tx,\n        translateY: ty,\n        originX: cx,\n        originY: cy,\n        // Return the matrix parameters\n        a: this.a,\n        b: this.b,\n        c: this.c,\n        d: this.d,\n        e: this.e,\n        f: this.f\n      };\n    } // Left multiplies by the given matrix\n\n  }, {\n    key: \"multiply\",\n    value: function multiply(matrix) {\n      return this.clone().multiplyO(matrix);\n    }\n  }, {\n    key: \"multiplyO\",\n    value: function multiplyO(matrix) {\n      // Get the matrices\n      var l = this;\n      var r = matrix instanceof Matrix ? matrix : new Matrix(matrix);\n      return Matrix.matrixMultiply(l, r, this);\n    }\n  }, {\n    key: \"lmultiply\",\n    value: function lmultiply(matrix) {\n      return this.clone().lmultiplyO(matrix);\n    }\n  }, {\n    key: \"lmultiplyO\",\n    value: function lmultiplyO(matrix) {\n      var r = this;\n      var l = matrix instanceof Matrix ? matrix : new Matrix(matrix);\n      return Matrix.matrixMultiply(l, r, this);\n    } // Inverses matrix\n\n  }, {\n    key: \"inverseO\",\n    value: function inverseO() {\n      // Get the current parameters out of the matrix\n      var a = this.a;\n      var b = this.b;\n      var c = this.c;\n      var d = this.d;\n      var e = this.e;\n      var f = this.f; // Invert the 2x2 matrix in the top left\n\n      var det = a * d - b * c;\n      if (!det) throw new Error('Cannot invert ' + this); // Calculate the top 2x2 matrix\n\n      var na = d / det;\n      var nb = -b / det;\n      var nc = -c / det;\n      var nd = a / det; // Apply the inverted matrix to the top right\n\n      var ne = -(na * e + nc * f);\n      var nf = -(nb * e + nd * f); // Construct the inverted matrix\n\n      this.a = na;\n      this.b = nb;\n      this.c = nc;\n      this.d = nd;\n      this.e = ne;\n      this.f = nf;\n      return this;\n    }\n  }, {\n    key: \"inverse\",\n    value: function inverse() {\n      return this.clone().inverseO();\n    } // Translate matrix\n\n  }, {\n    key: \"translate\",\n    value: function translate(x, y) {\n      return this.clone().translateO(x, y);\n    }\n  }, {\n    key: \"translateO\",\n    value: function translateO(x, y) {\n      this.e += x || 0;\n      this.f += y || 0;\n      return this;\n    } // Scale matrix\n\n  }, {\n    key: \"scale\",\n    value: function scale(x, y, cx, cy) {\n      var _this$clone;\n\n      return (_this$clone = this.clone()).scaleO.apply(_this$clone, arguments);\n    }\n  }, {\n    key: \"scaleO\",\n    value: function scaleO(x) {\n      var y = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : x;\n      var cx = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n      var cy = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;\n\n      // Support uniform scaling\n      if (arguments.length === 3) {\n        cy = cx;\n        cx = y;\n        y = x;\n      }\n\n      var a = this.a,\n          b = this.b,\n          c = this.c,\n          d = this.d,\n          e = this.e,\n          f = this.f;\n      this.a = a * x;\n      this.b = b * y;\n      this.c = c * x;\n      this.d = d * y;\n      this.e = e * x - cx * x + cx;\n      this.f = f * y - cy * y + cy;\n      return this;\n    } // Rotate matrix\n\n  }, {\n    key: \"rotate\",\n    value: function rotate(r, cx, cy) {\n      return this.clone().rotateO(r, cx, cy);\n    }\n  }, {\n    key: \"rotateO\",\n    value: function rotateO(r) {\n      var cx = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n      var cy = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n      // Convert degrees to radians\n      r = radians(r);\n      var cos = Math.cos(r);\n      var sin = Math.sin(r);\n      var a = this.a,\n          b = this.b,\n          c = this.c,\n          d = this.d,\n          e = this.e,\n          f = this.f;\n      this.a = a * cos - b * sin;\n      this.b = b * cos + a * sin;\n      this.c = c * cos - d * sin;\n      this.d = d * cos + c * sin;\n      this.e = e * cos - f * sin + cy * sin - cx * cos + cx;\n      this.f = f * cos + e * sin - cx * sin - cy * cos + cy;\n      return this;\n    } // Flip matrix on x or y, at a given offset\n\n  }, {\n    key: \"flip\",\n    value: function flip(axis, around) {\n      return this.clone().flipO(axis, around);\n    }\n  }, {\n    key: \"flipO\",\n    value: function flipO(axis, around) {\n      return axis === 'x' ? this.scaleO(-1, 1, around, 0) : axis === 'y' ? this.scaleO(1, -1, 0, around) : this.scaleO(-1, -1, axis, around || axis); // Define an x, y flip point\n    } // Shear matrix\n\n  }, {\n    key: \"shear\",\n    value: function shear(a, cx, cy) {\n      return this.clone().shearO(a, cx, cy);\n    }\n  }, {\n    key: \"shearO\",\n    value: function shearO(lx) {\n      var cy = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n      var a = this.a,\n          b = this.b,\n          c = this.c,\n          d = this.d,\n          e = this.e,\n          f = this.f;\n      this.a = a + b * lx;\n      this.c = c + d * lx;\n      this.e = e + f * lx - cy * lx;\n      return this;\n    } // Skew Matrix\n\n  }, {\n    key: \"skew\",\n    value: function skew(x, y, cx, cy) {\n      var _this$clone2;\n\n      return (_this$clone2 = this.clone()).skewO.apply(_this$clone2, arguments);\n    }\n  }, {\n    key: \"skewO\",\n    value: function skewO(x) {\n      var y = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : x;\n      var cx = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n      var cy = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;\n\n      // support uniformal skew\n      if (arguments.length === 3) {\n        cy = cx;\n        cx = y;\n        y = x;\n      } // Convert degrees to radians\n\n\n      x = radians(x);\n      y = radians(y);\n      var lx = Math.tan(x);\n      var ly = Math.tan(y);\n      var a = this.a,\n          b = this.b,\n          c = this.c,\n          d = this.d,\n          e = this.e,\n          f = this.f;\n      this.a = a + b * lx;\n      this.b = b + a * ly;\n      this.c = c + d * lx;\n      this.d = d + c * ly;\n      this.e = e + f * lx - cy * lx;\n      this.f = f + e * ly - cx * ly;\n      return this;\n    } // SkewX\n\n  }, {\n    key: \"skewX\",\n    value: function skewX(x, cx, cy) {\n      return this.skew(x, 0, cx, cy);\n    }\n  }, {\n    key: \"skewXO\",\n    value: function skewXO(x, cx, cy) {\n      return this.skewO(x, 0, cx, cy);\n    } // SkewY\n\n  }, {\n    key: \"skewY\",\n    value: function skewY(y, cx, cy) {\n      return this.skew(0, y, cx, cy);\n    }\n  }, {\n    key: \"skewYO\",\n    value: function skewYO(y, cx, cy) {\n      return this.skewO(0, y, cx, cy);\n    } // Transform around a center point\n\n  }, {\n    key: \"aroundO\",\n    value: function aroundO(cx, cy, matrix) {\n      var dx = cx || 0;\n      var dy = cy || 0;\n      return this.translateO(-dx, -dy).lmultiplyO(matrix).translateO(dx, dy);\n    }\n  }, {\n    key: \"around\",\n    value: function around(cx, cy, matrix) {\n      return this.clone().aroundO(cx, cy, matrix);\n    } // Check if two matrices are equal\n\n  }, {\n    key: \"equals\",\n    value: function equals(other) {\n      var comp = new Matrix(other);\n      return closeEnough(this.a, comp.a) && closeEnough(this.b, comp.b) && closeEnough(this.c, comp.c) && closeEnough(this.d, comp.d) && closeEnough(this.e, comp.e) && closeEnough(this.f, comp.f);\n    } // Convert matrix to string\n\n  }, {\n    key: \"toString\",\n    value: function toString() {\n      return 'matrix(' + this.a + ',' + this.b + ',' + this.c + ',' + this.d + ',' + this.e + ',' + this.f + ')';\n    }\n  }, {\n    key: \"toArray\",\n    value: function toArray() {\n      return [this.a, this.b, this.c, this.d, this.e, this.f];\n    }\n  }, {\n    key: \"valueOf\",\n    value: function valueOf() {\n      return {\n        a: this.a,\n        b: this.b,\n        c: this.c,\n        d: this.d,\n        e: this.e,\n        f: this.f\n      };\n    }\n  }], [{\n    key: \"fromArray\",\n    value: function fromArray(a) {\n      return {\n        a: a[0],\n        b: a[1],\n        c: a[2],\n        d: a[3],\n        e: a[4],\n        f: a[5]\n      };\n    }\n  }, {\n    key: \"isMatrixLike\",\n    value: function isMatrixLike(o) {\n      return o.a != null || o.b != null || o.c != null || o.d != null || o.e != null || o.f != null;\n    }\n  }, {\n    key: \"formatTransforms\",\n    value: function formatTransforms(o) {\n      // Get all of the parameters required to form the matrix\n      var flipBoth = o.flip === 'both' || o.flip === true;\n      var flipX = o.flip && (flipBoth || o.flip === 'x') ? -1 : 1;\n      var flipY = o.flip && (flipBoth || o.flip === 'y') ? -1 : 1;\n      var skewX = o.skew && o.skew.length ? o.skew[0] : isFinite(o.skew) ? o.skew : isFinite(o.skewX) ? o.skewX : 0;\n      var skewY = o.skew && o.skew.length ? o.skew[1] : isFinite(o.skew) ? o.skew : isFinite(o.skewY) ? o.skewY : 0;\n      var scaleX = o.scale && o.scale.length ? o.scale[0] * flipX : isFinite(o.scale) ? o.scale * flipX : isFinite(o.scaleX) ? o.scaleX * flipX : flipX;\n      var scaleY = o.scale && o.scale.length ? o.scale[1] * flipY : isFinite(o.scale) ? o.scale * flipY : isFinite(o.scaleY) ? o.scaleY * flipY : flipY;\n      var shear = o.shear || 0;\n      var theta = o.rotate || o.theta || 0;\n      var origin = new Point(o.origin || o.around || o.ox || o.originX, o.oy || o.originY);\n      var ox = origin.x;\n      var oy = origin.y;\n      var position = new Point(o.position || o.px || o.positionX, o.py || o.positionY);\n      var px = position.x;\n      var py = position.y;\n      var translate = new Point(o.translate || o.tx || o.translateX, o.ty || o.translateY);\n      var tx = translate.x;\n      var ty = translate.y;\n      var relative = new Point(o.relative || o.rx || o.relativeX, o.ry || o.relativeY);\n      var rx = relative.x;\n      var ry = relative.y; // Populate all of the values\n\n      return {\n        scaleX: scaleX,\n        scaleY: scaleY,\n        skewX: skewX,\n        skewY: skewY,\n        shear: shear,\n        theta: theta,\n        rx: rx,\n        ry: ry,\n        tx: tx,\n        ty: ty,\n        ox: ox,\n        oy: oy,\n        px: px,\n        py: py\n      };\n    } // left matrix, right matrix, target matrix which is overwritten\n\n  }, {\n    key: \"matrixMultiply\",\n    value: function matrixMultiply(l, r, o) {\n      // Work out the product directly\n      var a = l.a * r.a + l.c * r.b;\n      var b = l.b * r.a + l.d * r.b;\n      var c = l.a * r.c + l.c * r.d;\n      var d = l.b * r.c + l.d * r.d;\n      var e = l.e + l.a * r.e + l.c * r.f;\n      var f = l.f + l.b * r.e + l.d * r.f; // make sure to use local variables because l/r and o could be the same\n\n      o.a = a;\n      o.b = b;\n      o.c = c;\n      o.d = d;\n      o.e = e;\n      o.f = f;\n      return o;\n    }\n  }]);\n\n  return Matrix;\n}();\nfunction ctm() {\n  return new Matrix(this.node.getCTM());\n}\nfunction screenCTM() {\n  /* https://bugzilla.mozilla.org/show_bug.cgi?id=1344537\r\n     This is needed because FF does not return the transformation matrix\r\n     for the inner coordinate system when getScreenCTM() is called on nested svgs.\r\n     However all other Browsers do that */\n  if (typeof this.isRoot === 'function' && !this.isRoot()) {\n    var rect = this.rect(1, 1);\n    var m = rect.node.getScreenCTM();\n    rect.remove();\n    return new Matrix(m);\n  }\n\n  return new Matrix(this.node.getScreenCTM());\n}\nregister(Matrix, 'Matrix');\n\nfunction parser() {\n  // Reuse cached element if possible\n  if (!parser.nodes) {\n    var svg = makeInstance().size(2, 0);\n    svg.node.style.cssText = ['opacity: 0', 'position: absolute', 'left: -100%', 'top: -100%', 'overflow: hidden'].join(';');\n    svg.attr('focusable', 'false');\n    svg.attr('aria-hidden', 'true');\n    var path = svg.path().node;\n    parser.nodes = {\n      svg: svg,\n      path: path\n    };\n  }\n\n  if (!parser.nodes.svg.node.parentNode) {\n    var b = globals.document.body || globals.document.documentElement;\n    parser.nodes.svg.addTo(b);\n  }\n\n  return parser.nodes;\n}\n\nfunction isNulledBox(box) {\n  return !box.width && !box.height && !box.x && !box.y;\n}\n\nfunction domContains(node) {\n  return node === globals.document || (globals.document.documentElement.contains || function (node) {\n    // This is IE - it does not support contains() for top-level SVGs\n    while (node.parentNode) {\n      node = node.parentNode;\n    }\n\n    return node === globals.document;\n  }).call(globals.document.documentElement, node);\n}\n\nvar Box =\n/*#__PURE__*/\nfunction () {\n  function Box() {\n    _classCallCheck(this, Box);\n\n    this.init.apply(this, arguments);\n  }\n\n  _createClass(Box, [{\n    key: \"init\",\n    value: function init(source) {\n      var base = [0, 0, 0, 0];\n      source = typeof source === 'string' ? source.split(delimiter).map(parseFloat) : Array.isArray(source) ? source : _typeof(source) === 'object' ? [source.left != null ? source.left : source.x, source.top != null ? source.top : source.y, source.width, source.height] : arguments.length === 4 ? [].slice.call(arguments) : base;\n      this.x = source[0] || 0;\n      this.y = source[1] || 0;\n      this.width = this.w = source[2] || 0;\n      this.height = this.h = source[3] || 0; // Add more bounding box properties\n\n      this.x2 = this.x + this.w;\n      this.y2 = this.y + this.h;\n      this.cx = this.x + this.w / 2;\n      this.cy = this.y + this.h / 2;\n      return this;\n    } // Merge rect box with another, return a new instance\n\n  }, {\n    key: \"merge\",\n    value: function merge(box) {\n      var x = Math.min(this.x, box.x);\n      var y = Math.min(this.y, box.y);\n      var width = Math.max(this.x + this.width, box.x + box.width) - x;\n      var height = Math.max(this.y + this.height, box.y + box.height) - y;\n      return new Box(x, y, width, height);\n    }\n  }, {\n    key: \"transform\",\n    value: function transform(m) {\n      if (!(m instanceof Matrix)) {\n        m = new Matrix(m);\n      }\n\n      var xMin = Infinity;\n      var xMax = -Infinity;\n      var yMin = Infinity;\n      var yMax = -Infinity;\n      var pts = [new Point(this.x, this.y), new Point(this.x2, this.y), new Point(this.x, this.y2), new Point(this.x2, this.y2)];\n      pts.forEach(function (p) {\n        p = p.transform(m);\n        xMin = Math.min(xMin, p.x);\n        xMax = Math.max(xMax, p.x);\n        yMin = Math.min(yMin, p.y);\n        yMax = Math.max(yMax, p.y);\n      });\n      return new Box(xMin, yMin, xMax - xMin, yMax - yMin);\n    }\n  }, {\n    key: \"addOffset\",\n    value: function addOffset() {\n      // offset by window scroll position, because getBoundingClientRect changes when window is scrolled\n      this.x += globals.window.pageXOffset;\n      this.y += globals.window.pageYOffset;\n      return this;\n    }\n  }, {\n    key: \"toString\",\n    value: function toString() {\n      return this.x + ' ' + this.y + ' ' + this.width + ' ' + this.height;\n    }\n  }, {\n    key: \"toArray\",\n    value: function toArray() {\n      return [this.x, this.y, this.width, this.height];\n    }\n  }, {\n    key: \"isNulled\",\n    value: function isNulled() {\n      return isNulledBox(this);\n    }\n  }]);\n\n  return Box;\n}();\n\nfunction getBox(cb, retry) {\n  var box;\n\n  try {\n    box = cb(this.node);\n\n    if (isNulledBox(box) && !domContains(this.node)) {\n      throw new Error('Element not in the dom');\n    }\n  } catch (e) {\n    box = retry(this);\n  }\n\n  return box;\n}\n\nfunction bbox() {\n  return new Box(getBox.call(this, function (node) {\n    return node.getBBox();\n  }, function (el) {\n    try {\n      var clone = el.clone().addTo(parser().svg).show();\n      var box = clone.node.getBBox();\n      clone.remove();\n      return box;\n    } catch (e) {\n      throw new Error('Getting bbox of element \"' + el.node.nodeName + '\" is not possible. ' + e.toString());\n    }\n  }));\n}\nfunction rbox(el) {\n  var box = new Box(getBox.call(this, function (node) {\n    return node.getBoundingClientRect();\n  }, function (el) {\n    throw new Error('Getting rbox of element \"' + el.node.nodeName + '\" is not possible');\n  }));\n  if (el) return box.transform(el.screenCTM().inverse());\n  return box.addOffset();\n}\nregisterMethods({\n  viewbox: {\n    viewbox: function viewbox(x, y, width, height) {\n      // act as getter\n      if (x == null) return new Box(this.attr('viewBox')); // act as setter\n\n      return this.attr('viewBox', new Box(x, y, width, height));\n    },\n    zoom: function zoom(level, point) {\n      var width = this.node.clientWidth;\n      var height = this.node.clientHeight;\n      var v = this.viewbox(); // Firefox does not support clientHeight and returns 0\n      // https://bugzilla.mozilla.org/show_bug.cgi?id=874811\n\n      if (!width && !height) {\n        var style = window.getComputedStyle(this.node);\n        width = parseFloat(style.getPropertyValue('width'));\n        height = parseFloat(style.getPropertyValue('height'));\n      }\n\n      var zoomX = width / v.width;\n      var zoomY = height / v.height;\n      var zoom = Math.min(zoomX, zoomY);\n\n      if (level == null) {\n        return zoom;\n      }\n\n      var zoomAmount = zoom / level;\n      if (zoomAmount === Infinity) zoomAmount = Number.MIN_VALUE;\n      point = point || new Point(width / 2 / zoomX + v.x, height / 2 / zoomY + v.y);\n      var box = new Box(v).transform(new Matrix({\n        scale: zoomAmount,\n        origin: point\n      }));\n      return this.viewbox(box);\n    }\n  }\n});\nregister(Box, 'Box');\n\n/* eslint no-new-func: \"off\" */\nvar subClassArray = function () {\n  try {\n    // try es6 subclassing\n    return Function('name', 'baseClass', '_constructor', ['baseClass = baseClass || Array', 'return {', '  [name]: class extends baseClass {', '    constructor (...args) {', '      super(...args)', '      _constructor && _constructor.apply(this, args)', '    }', '  }', '}[name]'].join('\\n'));\n  } catch (e) {\n    // Use es5 approach\n    return function (name) {\n      var baseClass = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Array;\n\n      var _constructor = arguments.length > 2 ? arguments[2] : undefined;\n\n      var Arr = function Arr() {\n        baseClass.apply(this, arguments);\n        _constructor && _constructor.apply(this, arguments);\n      };\n\n      Arr.prototype = Object.create(baseClass.prototype);\n      Arr.prototype.constructor = Arr;\n\n      Arr.prototype.map = function (fn) {\n        var arr = new Arr();\n        arr.push.apply(arr, Array.prototype.map.call(this, fn));\n        return arr;\n      };\n\n      return Arr;\n    };\n  }\n}();\n\nvar List = subClassArray('List', Array, function () {\n  var arr = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n  // This catches the case, that native map tries to create an array with new Array(1)\n  if (typeof arr === 'number') return this;\n  this.length = 0;\n  this.push.apply(this, _toConsumableArray(arr));\n});\nextend(List, {\n  each: function each(fnOrMethodName) {\n    for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n      args[_key - 1] = arguments[_key];\n    }\n\n    if (typeof fnOrMethodName === 'function') {\n      return this.map(function (el) {\n        return fnOrMethodName.call(el, el);\n      });\n    } else {\n      return this.map(function (el) {\n        return el[fnOrMethodName].apply(el, args);\n      });\n    }\n  },\n  toArray: function toArray() {\n    return Array.prototype.concat.apply([], this);\n  }\n});\nvar reserved = ['toArray', 'constructor', 'each'];\n\nList.extend = function (methods) {\n  methods = methods.reduce(function (obj, name) {\n    // Don't overwrite own methods\n    if (reserved.includes(name)) return obj; // Don't add private methods\n\n    if (name[0] === '_') return obj; // Relay every call to each()\n\n    obj[name] = function () {\n      for (var _len2 = arguments.length, attrs = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n        attrs[_key2] = arguments[_key2];\n      }\n\n      return this.each.apply(this, [name].concat(attrs));\n    };\n\n    return obj;\n  }, {});\n  extend(List, methods);\n};\n\nfunction baseFind(query, parent) {\n  return new List(map((parent || globals.document).querySelectorAll(query), function (node) {\n    return adopt(node);\n  }));\n} // Scoped find method\n\nfunction find(query) {\n  return baseFind(query, this.node);\n}\nfunction findOne(query) {\n  return adopt(this.node.querySelector(query));\n}\n\nvar EventTarget =\n/*#__PURE__*/\nfunction (_Base) {\n  _inherits(EventTarget, _Base);\n\n  function EventTarget() {\n    var _this;\n\n    var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n        _ref$events = _ref.events,\n        events = _ref$events === void 0 ? {} : _ref$events;\n\n    _classCallCheck(this, EventTarget);\n\n    _this = _possibleConstructorReturn(this, _getPrototypeOf(EventTarget).call(this));\n    _this.events = events;\n    return _this;\n  }\n\n  _createClass(EventTarget, [{\n    key: \"addEventListener\",\n    value: function addEventListener() {}\n  }, {\n    key: \"dispatch\",\n    value: function dispatch$1(event, data) {\n      return dispatch(this, event, data);\n    }\n  }, {\n    key: \"dispatchEvent\",\n    value: function dispatchEvent(event) {\n      var bag = this.getEventHolder().events;\n      if (!bag) return true;\n      var events = bag[event.type];\n\n      for (var i in events) {\n        for (var j in events[i]) {\n          events[i][j](event);\n        }\n      }\n\n      return !event.defaultPrevented;\n    } // Fire given event\n\n  }, {\n    key: \"fire\",\n    value: function fire(event, data) {\n      this.dispatch(event, data);\n      return this;\n    }\n  }, {\n    key: \"getEventHolder\",\n    value: function getEventHolder() {\n      return this;\n    }\n  }, {\n    key: \"getEventTarget\",\n    value: function getEventTarget() {\n      return this;\n    } // Unbind event from listener\n\n  }, {\n    key: \"off\",\n    value: function off$1(event, listener) {\n      off(this, event, listener);\n\n      return this;\n    } // Bind given event to listener\n\n  }, {\n    key: \"on\",\n    value: function on$1(event, listener, binding, options) {\n      on(this, event, listener, binding, options);\n\n      return this;\n    }\n  }, {\n    key: \"removeEventListener\",\n    value: function removeEventListener() {}\n  }]);\n\n  return EventTarget;\n}(Base);\nregister(EventTarget, 'EventTarget');\n\nfunction noop() {} // Default animation values\n\nvar timeline = {\n  duration: 400,\n  ease: '>',\n  delay: 0\n}; // Default attribute values\n\nvar attrs = {\n  // fill and stroke\n  'fill-opacity': 1,\n  'stroke-opacity': 1,\n  'stroke-width': 0,\n  'stroke-linejoin': 'miter',\n  'stroke-linecap': 'butt',\n  fill: '#000000',\n  stroke: '#000000',\n  opacity: 1,\n  // position\n  x: 0,\n  y: 0,\n  cx: 0,\n  cy: 0,\n  // size\n  width: 0,\n  height: 0,\n  // radius\n  r: 0,\n  rx: 0,\n  ry: 0,\n  // gradient\n  offset: 0,\n  'stop-opacity': 1,\n  'stop-color': '#000000',\n  // text\n  'text-anchor': 'start'\n};\n\nvar defaults = ({\n\t__proto__: null,\n\tnoop: noop,\n\ttimeline: timeline,\n\tattrs: attrs\n});\n\nvar SVGArray = subClassArray('SVGArray', Array, function (arr) {\n  this.init(arr);\n});\nextend(SVGArray, {\n  init: function init(arr) {\n    // This catches the case, that native map tries to create an array with new Array(1)\n    if (typeof arr === 'number') return this;\n    this.length = 0;\n    this.push.apply(this, _toConsumableArray(this.parse(arr)));\n    return this;\n  },\n  toArray: function toArray() {\n    return Array.prototype.concat.apply([], this);\n  },\n  toString: function toString() {\n    return this.join(' ');\n  },\n  // Flattens the array if needed\n  valueOf: function valueOf() {\n    var ret = [];\n    ret.push.apply(ret, _toConsumableArray(this));\n    return ret;\n  },\n  // Parse whitespace separated string\n  parse: function parse() {\n    var array = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n    // If already is an array, no need to parse it\n    if (array instanceof Array) return array;\n    return array.trim().split(delimiter).map(parseFloat);\n  },\n  clone: function clone() {\n    return new this.constructor(this);\n  },\n  toSet: function toSet() {\n    return new Set(this);\n  }\n});\n\nvar SVGNumber =\n/*#__PURE__*/\nfunction () {\n  // Initialize\n  function SVGNumber() {\n    _classCallCheck(this, SVGNumber);\n\n    this.init.apply(this, arguments);\n  }\n\n  _createClass(SVGNumber, [{\n    key: \"init\",\n    value: function init(value, unit) {\n      unit = Array.isArray(value) ? value[1] : unit;\n      value = Array.isArray(value) ? value[0] : value; // initialize defaults\n\n      this.value = 0;\n      this.unit = unit || ''; // parse value\n\n      if (typeof value === 'number') {\n        // ensure a valid numeric value\n        this.value = isNaN(value) ? 0 : !isFinite(value) ? value < 0 ? -3.4e+38 : +3.4e+38 : value;\n      } else if (typeof value === 'string') {\n        unit = value.match(numberAndUnit);\n\n        if (unit) {\n          // make value numeric\n          this.value = parseFloat(unit[1]); // normalize\n\n          if (unit[5] === '%') {\n            this.value /= 100;\n          } else if (unit[5] === 's') {\n            this.value *= 1000;\n          } // store unit\n\n\n          this.unit = unit[5];\n        }\n      } else {\n        if (value instanceof SVGNumber) {\n          this.value = value.valueOf();\n          this.unit = value.unit;\n        }\n      }\n\n      return this;\n    }\n  }, {\n    key: \"toString\",\n    value: function toString() {\n      return (this.unit === '%' ? ~~(this.value * 1e8) / 1e6 : this.unit === 's' ? this.value / 1e3 : this.value) + this.unit;\n    }\n  }, {\n    key: \"toJSON\",\n    value: function toJSON() {\n      return this.toString();\n    }\n  }, {\n    key: \"toArray\",\n    value: function toArray() {\n      return [this.value, this.unit];\n    }\n  }, {\n    key: \"valueOf\",\n    value: function valueOf() {\n      return this.value;\n    } // Add number\n\n  }, {\n    key: \"plus\",\n    value: function plus(number) {\n      number = new SVGNumber(number);\n      return new SVGNumber(this + number, this.unit || number.unit);\n    } // Subtract number\n\n  }, {\n    key: \"minus\",\n    value: function minus(number) {\n      number = new SVGNumber(number);\n      return new SVGNumber(this - number, this.unit || number.unit);\n    } // Multiply number\n\n  }, {\n    key: \"times\",\n    value: function times(number) {\n      number = new SVGNumber(number);\n      return new SVGNumber(this * number, this.unit || number.unit);\n    } // Divide number\n\n  }, {\n    key: \"divide\",\n    value: function divide(number) {\n      number = new SVGNumber(number);\n      return new SVGNumber(this / number, this.unit || number.unit);\n    }\n  }, {\n    key: \"convert\",\n    value: function convert(unit) {\n      return new SVGNumber(this.value, unit);\n    }\n  }]);\n\n  return SVGNumber;\n}();\n\nvar hooks = [];\nfunction registerAttrHook(fn) {\n  hooks.push(fn);\n} // Set svg element attribute\n\nfunction attr(attr, val, ns) {\n  var _this = this;\n\n  // act as full getter\n  if (attr == null) {\n    // get an object of attributes\n    attr = {};\n    val = this.node.attributes;\n    var _iteratorNormalCompletion = true;\n    var _didIteratorError = false;\n    var _iteratorError = undefined;\n\n    try {\n      for (var _iterator = val[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n        var node = _step.value;\n        attr[node.nodeName] = isNumber.test(node.nodeValue) ? parseFloat(node.nodeValue) : node.nodeValue;\n      }\n    } catch (err) {\n      _didIteratorError = true;\n      _iteratorError = err;\n    } finally {\n      try {\n        if (!_iteratorNormalCompletion && _iterator.return != null) {\n          _iterator.return();\n        }\n      } finally {\n        if (_didIteratorError) {\n          throw _iteratorError;\n        }\n      }\n    }\n\n    return attr;\n  } else if (attr instanceof Array) {\n    // loop through array and get all values\n    return attr.reduce(function (last, curr) {\n      last[curr] = _this.attr(curr);\n      return last;\n    }, {});\n  } else if (_typeof(attr) === 'object' && attr.constructor === Object) {\n    // apply every attribute individually if an object is passed\n    for (val in attr) {\n      this.attr(val, attr[val]);\n    }\n  } else if (val === null) {\n    // remove value\n    this.node.removeAttribute(attr);\n  } else if (val == null) {\n    // act as a getter if the first and only argument is not an object\n    val = this.node.getAttribute(attr);\n    return val == null ? attrs[attr] : isNumber.test(val) ? parseFloat(val) : val;\n  } else {\n    // Loop through hooks and execute them to convert value\n    val = hooks.reduce(function (_val, hook) {\n      return hook(attr, _val, _this);\n    }, val); // ensure correct numeric values (also accepts NaN and Infinity)\n\n    if (typeof val === 'number') {\n      val = new SVGNumber(val);\n    } else if (Color.isColor(val)) {\n      // ensure full hex color\n      val = new Color(val);\n    } else if (val.constructor === Array) {\n      // Check for plain arrays and parse array values\n      val = new SVGArray(val);\n    } // if the passed attribute is leading...\n\n\n    if (attr === 'leading') {\n      // ... call the leading method instead\n      if (this.leading) {\n        this.leading(val);\n      }\n    } else {\n      // set given attribute on node\n      typeof ns === 'string' ? this.node.setAttributeNS(ns, attr, val.toString()) : this.node.setAttribute(attr, val.toString());\n    } // rebuild if required\n\n\n    if (this.rebuild && (attr === 'font-size' || attr === 'x')) {\n      this.rebuild();\n    }\n  }\n\n  return this;\n}\n\nvar Dom =\n/*#__PURE__*/\nfunction (_EventTarget) {\n  _inherits(Dom, _EventTarget);\n\n  function Dom(node, attrs) {\n    var _this2;\n\n    _classCallCheck(this, Dom);\n\n    _this2 = _possibleConstructorReturn(this, _getPrototypeOf(Dom).call(this, node));\n    _this2.node = node;\n    _this2.type = node.nodeName;\n\n    if (attrs && node !== attrs) {\n      _this2.attr(attrs);\n    }\n\n    return _this2;\n  } // Add given element at a position\n\n\n  _createClass(Dom, [{\n    key: \"add\",\n    value: function add(element, i) {\n      element = makeInstance(element);\n\n      if (i == null) {\n        this.node.appendChild(element.node);\n      } else if (element.node !== this.node.childNodes[i]) {\n        this.node.insertBefore(element.node, this.node.childNodes[i]);\n      }\n\n      return this;\n    } // Add element to given container and return self\n\n  }, {\n    key: \"addTo\",\n    value: function addTo(parent) {\n      return makeInstance(parent).put(this);\n    } // Returns all child elements\n\n  }, {\n    key: \"children\",\n    value: function children() {\n      return new List(map(this.node.children, function (node) {\n        return adopt(node);\n      }));\n    } // Remove all elements in this container\n\n  }, {\n    key: \"clear\",\n    value: function clear() {\n      // remove children\n      while (this.node.hasChildNodes()) {\n        this.node.removeChild(this.node.lastChild);\n      }\n\n      return this;\n    } // Clone element\n\n  }, {\n    key: \"clone\",\n    value: function clone() {\n      // write dom data to the dom so the clone can pickup the data\n      this.writeDataToDom(); // clone element and assign new id\n\n      return assignNewId(this.node.cloneNode(true));\n    } // Iterates over all children and invokes a given block\n\n  }, {\n    key: \"each\",\n    value: function each(block, deep) {\n      var children = this.children();\n      var i, il;\n\n      for (i = 0, il = children.length; i < il; i++) {\n        block.apply(children[i], [i, children]);\n\n        if (deep) {\n          children[i].each(block, deep);\n        }\n      }\n\n      return this;\n    }\n  }, {\n    key: \"element\",\n    value: function element(nodeName) {\n      return this.put(new Dom(create(nodeName)));\n    } // Get first child\n\n  }, {\n    key: \"first\",\n    value: function first() {\n      return adopt(this.node.firstChild);\n    } // Get a element at the given index\n\n  }, {\n    key: \"get\",\n    value: function get(i) {\n      return adopt(this.node.childNodes[i]);\n    }\n  }, {\n    key: \"getEventHolder\",\n    value: function getEventHolder() {\n      return this.node;\n    }\n  }, {\n    key: \"getEventTarget\",\n    value: function getEventTarget() {\n      return this.node;\n    } // Checks if the given element is a child\n\n  }, {\n    key: \"has\",\n    value: function has(element) {\n      return this.index(element) >= 0;\n    } // Get / set id\n\n  }, {\n    key: \"id\",\n    value: function id(_id) {\n      // generate new id if no id set\n      if (typeof _id === 'undefined' && !this.node.id) {\n        this.node.id = eid(this.type);\n      } // dont't set directly width this.node.id to make `null` work correctly\n\n\n      return this.attr('id', _id);\n    } // Gets index of given element\n\n  }, {\n    key: \"index\",\n    value: function index(element) {\n      return [].slice.call(this.node.childNodes).indexOf(element.node);\n    } // Get the last child\n\n  }, {\n    key: \"last\",\n    value: function last() {\n      return adopt(this.node.lastChild);\n    } // matches the element vs a css selector\n\n  }, {\n    key: \"matches\",\n    value: function matches(selector) {\n      var el = this.node;\n      return (el.matches || el.matchesSelector || el.msMatchesSelector || el.mozMatchesSelector || el.webkitMatchesSelector || el.oMatchesSelector).call(el, selector);\n    } // Returns the parent element instance\n\n  }, {\n    key: \"parent\",\n    value: function parent(type) {\n      var parent = this; // check for parent\n\n      if (!parent.node.parentNode) return null; // get parent element\n\n      parent = adopt(parent.node.parentNode);\n      if (!type) return parent; // loop trough ancestors if type is given\n\n      while (parent) {\n        if (typeof type === 'string' ? parent.matches(type) : parent instanceof type) return parent;\n        if (!parent.node.parentNode || parent.node.parentNode.nodeName === '#document' || parent.node.parentNode.nodeName === '#document-fragment') return null; // #759, #720\n\n        parent = adopt(parent.node.parentNode);\n      }\n    } // Basically does the same as `add()` but returns the added element instead\n\n  }, {\n    key: \"put\",\n    value: function put(element, i) {\n      this.add(element, i);\n      return element;\n    } // Add element to given container and return container\n\n  }, {\n    key: \"putIn\",\n    value: function putIn(parent) {\n      return makeInstance(parent).add(this);\n    } // Remove element\n\n  }, {\n    key: \"remove\",\n    value: function remove() {\n      if (this.parent()) {\n        this.parent().removeElement(this);\n      }\n\n      return this;\n    } // Remove a given child\n\n  }, {\n    key: \"removeElement\",\n    value: function removeElement(element) {\n      this.node.removeChild(element.node);\n      return this;\n    } // Replace this with element\n\n  }, {\n    key: \"replace\",\n    value: function replace(element) {\n      element = makeInstance(element);\n      this.node.parentNode.replaceChild(element.node, this.node);\n      return element;\n    }\n  }, {\n    key: \"round\",\n    value: function round() {\n      var precision = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 2;\n      var map = arguments.length > 1 ? arguments[1] : undefined;\n      var factor = Math.pow(10, precision);\n      var attrs = this.attr(); // If we have no map, build one from attrs\n\n      if (!map) {\n        map = Object.keys(attrs);\n      } // Holds rounded attributes\n\n\n      var newAttrs = {};\n      map.forEach(function (key) {\n        newAttrs[key] = Math.round(attrs[key] * factor) / factor;\n      });\n      this.attr(newAttrs);\n      return this;\n    } // Return id on string conversion\n\n  }, {\n    key: \"toString\",\n    value: function toString() {\n      return this.id();\n    } // Import raw svg\n\n  }, {\n    key: \"svg\",\n    value: function svg(svgOrFn, outerHTML) {\n      var well, len, fragment;\n\n      if (svgOrFn === false) {\n        outerHTML = false;\n        svgOrFn = null;\n      } // act as getter if no svg string is given\n\n\n      if (svgOrFn == null || typeof svgOrFn === 'function') {\n        // The default for exports is, that the outerNode is included\n        outerHTML = outerHTML == null ? true : outerHTML; // write svgjs data to the dom\n\n        this.writeDataToDom();\n        var current = this; // An export modifier was passed\n\n        if (svgOrFn != null) {\n          current = adopt(current.node.cloneNode(true)); // If the user wants outerHTML we need to process this node, too\n\n          if (outerHTML) {\n            var result = svgOrFn(current);\n            current = result || current; // The user does not want this node? Well, then he gets nothing\n\n            if (result === false) return '';\n          } // Deep loop through all children and apply modifier\n\n\n          current.each(function () {\n            var result = svgOrFn(this);\n\n            var _this = result || this; // If modifier returns false, discard node\n\n\n            if (result === false) {\n              this.remove(); // If modifier returns new node, use it\n            } else if (result && this !== _this) {\n              this.replace(_this);\n            }\n          }, true);\n        } // Return outer or inner content\n\n\n        return outerHTML ? current.node.outerHTML : current.node.innerHTML;\n      } // Act as setter if we got a string\n      // The default for import is, that the current node is not replaced\n\n\n      outerHTML = outerHTML == null ? false : outerHTML; // Create temporary holder\n\n      well = globals.document.createElementNS(ns, 'svg');\n      fragment = globals.document.createDocumentFragment(); // Dump raw svg\n\n      well.innerHTML = svgOrFn; // Transplant nodes into the fragment\n\n      for (len = well.children.length; len--;) {\n        fragment.appendChild(well.firstElementChild);\n      }\n\n      var parent = this.parent(); // Add the whole fragment at once\n\n      return outerHTML ? this.replace(fragment) && parent : this.add(fragment);\n    }\n  }, {\n    key: \"words\",\n    value: function words(text) {\n      // This is faster than removing all children and adding a new one\n      this.node.textContent = text;\n      return this;\n    } // write svgjs data to the dom\n\n  }, {\n    key: \"writeDataToDom\",\n    value: function writeDataToDom() {\n      // dump variables recursively\n      this.each(function () {\n        this.writeDataToDom();\n      });\n      return this;\n    }\n  }]);\n\n  return Dom;\n}(EventTarget);\nextend(Dom, {\n  attr: attr,\n  find: find,\n  findOne: findOne\n});\nregister(Dom, 'Dom');\n\nvar Element =\n/*#__PURE__*/\nfunction (_Dom) {\n  _inherits(Element, _Dom);\n\n  function Element(node, attrs) {\n    var _this;\n\n    _classCallCheck(this, Element);\n\n    _this = _possibleConstructorReturn(this, _getPrototypeOf(Element).call(this, node, attrs)); // initialize data object\n\n    _this.dom = {}; // create circular reference\n\n    _this.node.instance = _assertThisInitialized(_this);\n\n    if (node.hasAttribute('svgjs:data')) {\n      // pull svgjs data from the dom (getAttributeNS doesn't work in html5)\n      _this.setData(JSON.parse(node.getAttribute('svgjs:data')) || {});\n    }\n\n    return _this;\n  } // Move element by its center\n\n\n  _createClass(Element, [{\n    key: \"center\",\n    value: function center(x, y) {\n      return this.cx(x).cy(y);\n    } // Move by center over x-axis\n\n  }, {\n    key: \"cx\",\n    value: function cx(x) {\n      return x == null ? this.x() + this.width() / 2 : this.x(x - this.width() / 2);\n    } // Move by center over y-axis\n\n  }, {\n    key: \"cy\",\n    value: function cy(y) {\n      return y == null ? this.y() + this.height() / 2 : this.y(y - this.height() / 2);\n    } // Get defs\n\n  }, {\n    key: \"defs\",\n    value: function defs() {\n      return this.root().defs();\n    } // Relative move over x and y axes\n\n  }, {\n    key: \"dmove\",\n    value: function dmove(x, y) {\n      return this.dx(x).dy(y);\n    } // Relative move over x axis\n\n  }, {\n    key: \"dx\",\n    value: function dx() {\n      var x = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n      return this.x(new SVGNumber(x).plus(this.x()));\n    } // Relative move over y axis\n\n  }, {\n    key: \"dy\",\n    value: function dy() {\n      var y = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n      return this.y(new SVGNumber(y).plus(this.y()));\n    } // Get parent document\n\n  }, {\n    key: \"root\",\n    value: function root$1() {\n      var p = this.parent(getClass(root));\n      return p && p.root();\n    }\n  }, {\n    key: \"getEventHolder\",\n    value: function getEventHolder() {\n      return this;\n    } // Set height of element\n\n  }, {\n    key: \"height\",\n    value: function height(_height) {\n      return this.attr('height', _height);\n    } // Checks whether the given point inside the bounding box of the element\n\n  }, {\n    key: \"inside\",\n    value: function inside(x, y) {\n      var box = this.bbox();\n      return x > box.x && y > box.y && x < box.x + box.width && y < box.y + box.height;\n    } // Move element to given x and y values\n\n  }, {\n    key: \"move\",\n    value: function move(x, y) {\n      return this.x(x).y(y);\n    } // return array of all ancestors of given type up to the root svg\n\n  }, {\n    key: \"parents\",\n    value: function parents() {\n      var until = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : globals.document;\n      until = makeInstance(until);\n      var parents = new List();\n      var parent = this;\n\n      while ((parent = parent.parent()) && parent.node !== until.node && parent.node !== globals.document) {\n        parents.push(parent);\n      }\n\n      return parents;\n    } // Get referenced element form attribute value\n\n  }, {\n    key: \"reference\",\n    value: function reference$1(attr) {\n      attr = this.attr(attr);\n      if (!attr) return null;\n      var m = attr.match(reference);\n      return m ? makeInstance(m[1]) : null;\n    } // set given data to the elements data property\n\n  }, {\n    key: \"setData\",\n    value: function setData(o) {\n      this.dom = o;\n      return this;\n    } // Set element size to given width and height\n\n  }, {\n    key: \"size\",\n    value: function size(width, height) {\n      var p = proportionalSize(this, width, height);\n      return this.width(new SVGNumber(p.width)).height(new SVGNumber(p.height));\n    } // Set width of element\n\n  }, {\n    key: \"width\",\n    value: function width(_width) {\n      return this.attr('width', _width);\n    } // write svgjs data to the dom\n\n  }, {\n    key: \"writeDataToDom\",\n    value: function writeDataToDom() {\n      // remove previously set data\n      this.node.removeAttribute('svgjs:data');\n\n      if (Object.keys(this.dom).length) {\n        this.node.setAttribute('svgjs:data', JSON.stringify(this.dom)); // see #428\n      }\n\n      return _get(_getPrototypeOf(Element.prototype), \"writeDataToDom\", this).call(this);\n    } // Move over x-axis\n\n  }, {\n    key: \"x\",\n    value: function x(_x) {\n      return this.attr('x', _x);\n    } // Move over y-axis\n\n  }, {\n    key: \"y\",\n    value: function y(_y) {\n      return this.attr('y', _y);\n    }\n  }]);\n\n  return Element;\n}(Dom);\nextend(Element, {\n  bbox: bbox,\n  rbox: rbox,\n  point: point,\n  ctm: ctm,\n  screenCTM: screenCTM\n});\nregister(Element, 'Element');\n\nvar sugar = {\n  stroke: ['color', 'width', 'opacity', 'linecap', 'linejoin', 'miterlimit', 'dasharray', 'dashoffset'],\n  fill: ['color', 'opacity', 'rule'],\n  prefix: function prefix(t, a) {\n    return a === 'color' ? t : t + '-' + a;\n  }\n} // Add sugar for fill and stroke\n;\n['fill', 'stroke'].forEach(function (m) {\n  var extension = {};\n  var i;\n\n  extension[m] = function (o) {\n    if (typeof o === 'undefined') {\n      return this.attr(m);\n    }\n\n    if (typeof o === 'string' || o instanceof Color || Color.isRgb(o) || o instanceof Element) {\n      this.attr(m, o);\n    } else {\n      // set all attributes from sugar.fill and sugar.stroke list\n      for (i = sugar[m].length - 1; i >= 0; i--) {\n        if (o[sugar[m][i]] != null) {\n          this.attr(sugar.prefix(m, sugar[m][i]), o[sugar[m][i]]);\n        }\n      }\n    }\n\n    return this;\n  };\n\n  registerMethods(['Element', 'Runner'], extension);\n});\nregisterMethods(['Element', 'Runner'], {\n  // Let the user set the matrix directly\n  matrix: function matrix(mat, b, c, d, e, f) {\n    // Act as a getter\n    if (mat == null) {\n      return new Matrix(this);\n    } // Act as a setter, the user can pass a matrix or a set of numbers\n\n\n    return this.attr('transform', new Matrix(mat, b, c, d, e, f));\n  },\n  // Map rotation to transform\n  rotate: function rotate(angle, cx, cy) {\n    return this.transform({\n      rotate: angle,\n      ox: cx,\n      oy: cy\n    }, true);\n  },\n  // Map skew to transform\n  skew: function skew(x, y, cx, cy) {\n    return arguments.length === 1 || arguments.length === 3 ? this.transform({\n      skew: x,\n      ox: y,\n      oy: cx\n    }, true) : this.transform({\n      skew: [x, y],\n      ox: cx,\n      oy: cy\n    }, true);\n  },\n  shear: function shear(lam, cx, cy) {\n    return this.transform({\n      shear: lam,\n      ox: cx,\n      oy: cy\n    }, true);\n  },\n  // Map scale to transform\n  scale: function scale(x, y, cx, cy) {\n    return arguments.length === 1 || arguments.length === 3 ? this.transform({\n      scale: x,\n      ox: y,\n      oy: cx\n    }, true) : this.transform({\n      scale: [x, y],\n      ox: cx,\n      oy: cy\n    }, true);\n  },\n  // Map translate to transform\n  translate: function translate(x, y) {\n    return this.transform({\n      translate: [x, y]\n    }, true);\n  },\n  // Map relative translations to transform\n  relative: function relative(x, y) {\n    return this.transform({\n      relative: [x, y]\n    }, true);\n  },\n  // Map flip to transform\n  flip: function flip(direction, around) {\n    var directionString = typeof direction === 'string' ? direction : isFinite(direction) ? 'both' : 'both';\n    var origin = direction === 'both' && isFinite(around) ? [around, around] : direction === 'x' ? [around, 0] : direction === 'y' ? [0, around] : isFinite(direction) ? [direction, direction] : [0, 0];\n    return this.transform({\n      flip: directionString,\n      origin: origin\n    }, true);\n  },\n  // Opacity\n  opacity: function opacity(value) {\n    return this.attr('opacity', value);\n  }\n});\nregisterMethods('radius', {\n  // Add x and y radius\n  radius: function radius(x, y) {\n    var type = (this._element || this).type;\n    return type === 'radialGradient' || type === 'radialGradient' ? this.attr('r', new SVGNumber(x)) : this.rx(x).ry(y == null ? x : y);\n  }\n});\nregisterMethods('Path', {\n  // Get path length\n  length: function length() {\n    return this.node.getTotalLength();\n  },\n  // Get point at length\n  pointAt: function pointAt(length) {\n    return new Point(this.node.getPointAtLength(length));\n  }\n});\nregisterMethods(['Element', 'Runner'], {\n  // Set font\n  font: function font(a, v) {\n    if (_typeof(a) === 'object') {\n      for (v in a) {\n        this.font(v, a[v]);\n      }\n\n      return this;\n    }\n\n    return a === 'leading' ? this.leading(v) : a === 'anchor' ? this.attr('text-anchor', v) : a === 'size' || a === 'family' || a === 'weight' || a === 'stretch' || a === 'variant' || a === 'style' ? this.attr('font-' + a, v) : this.attr(a, v);\n  }\n});\nregisterMethods('Text', {\n  ax: function ax(x) {\n    return this.attr('x', x);\n  },\n  ay: function ay(y) {\n    return this.attr('y', y);\n  },\n  amove: function amove(x, y) {\n    return this.ax(x).ay(y);\n  }\n}); // Add events to elements\n\nvar methods$1 = ['click', 'dblclick', 'mousedown', 'mouseup', 'mouseover', 'mouseout', 'mousemove', 'mouseenter', 'mouseleave', 'touchstart', 'touchmove', 'touchleave', 'touchend', 'touchcancel'].reduce(function (last, event) {\n  // add event to Element\n  var fn = function fn(f) {\n    if (f === null) {\n      off(this, event);\n    } else {\n      on(this, event, f);\n    }\n\n    return this;\n  };\n\n  last[event] = fn;\n  return last;\n}, {});\nregisterMethods('Element', methods$1);\n\nvar nativeReverse = [].reverse;\nvar test$1 = [1, 2];\n\n// `Array.prototype.reverse` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.reverse\n// fix for Safari 12.0 bug\n// https://bugs.webkit.org/show_bug.cgi?id=188794\n_export({ target: 'Array', proto: true, forced: String(test$1) === String(test$1.reverse()) }, {\n  reverse: function reverse() {\n    // eslint-disable-next-line no-self-assign\n    if (isArray(this)) this.length = this.length;\n    return nativeReverse.call(this);\n  }\n});\n\n// `Object.defineProperties` method\n// https://tc39.github.io/ecma262/#sec-object.defineproperties\n_export({ target: 'Object', stat: true, forced: !descriptors, sham: !descriptors }, {\n  defineProperties: objectDefineProperties\n});\n\n// `Object.defineProperty` method\n// https://tc39.github.io/ecma262/#sec-object.defineproperty\n_export({ target: 'Object', stat: true, forced: !descriptors, sham: !descriptors }, {\n  defineProperty: objectDefineProperty.f\n});\n\nvar nativeGetOwnPropertyDescriptor$2 = objectGetOwnPropertyDescriptor.f;\n\n\nvar FAILS_ON_PRIMITIVES$2 = fails(function () { nativeGetOwnPropertyDescriptor$2(1); });\nvar FORCED$3 = !descriptors || FAILS_ON_PRIMITIVES$2;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptor\n_export({ target: 'Object', stat: true, forced: FORCED$3, sham: !descriptors }, {\n  getOwnPropertyDescriptor: function getOwnPropertyDescriptor(it, key) {\n    return nativeGetOwnPropertyDescriptor$2(toIndexedObject(it), key);\n  }\n});\n\n// `Object.getOwnPropertyDescriptors` method\n// https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptors\n_export({ target: 'Object', stat: true, sham: !descriptors }, {\n  getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object) {\n    var O = toIndexedObject(object);\n    var getOwnPropertyDescriptor = objectGetOwnPropertyDescriptor.f;\n    var keys = ownKeys(O);\n    var result = {};\n    var index = 0;\n    var key, descriptor;\n    while (keys.length > index) {\n      descriptor = getOwnPropertyDescriptor(O, key = keys[index++]);\n      if (descriptor !== undefined) createProperty(result, key, descriptor);\n    }\n    return result;\n  }\n});\n\nfunction _defineProperty(obj, key, value) {\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n\n  return obj;\n}\n\nfunction ownKeys$1(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$1(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$1(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction untransform() {\n  return this.attr('transform', null);\n} // merge the whole transformation chain into one matrix and returns it\n\nfunction matrixify() {\n  var matrix = (this.attr('transform') || ''). // split transformations\n  split(transforms).slice(0, -1).map(function (str) {\n    // generate key => value pairs\n    var kv = str.trim().split('(');\n    return [kv[0], kv[1].split(delimiter).map(function (str) {\n      return parseFloat(str);\n    })];\n  }).reverse() // merge every transformation into one matrix\n  .reduce(function (matrix, transform) {\n    if (transform[0] === 'matrix') {\n      return matrix.lmultiply(Matrix.fromArray(transform[1]));\n    }\n\n    return matrix[transform[0]].apply(matrix, transform[1]);\n  }, new Matrix());\n  return matrix;\n} // add an element to another parent without changing the visual representation on the screen\n\nfunction toParent(parent) {\n  if (this === parent) return this;\n  var ctm = this.screenCTM();\n  var pCtm = parent.screenCTM().inverse();\n  this.addTo(parent).untransform().transform(pCtm.multiply(ctm));\n  return this;\n} // same as above with parent equals root-svg\n\nfunction toRoot() {\n  return this.toParent(this.root());\n} // Add transformations\n\nfunction transform(o, relative) {\n  // Act as a getter if no object was passed\n  if (o == null || typeof o === 'string') {\n    var decomposed = new Matrix(this).decompose();\n    return o == null ? decomposed : decomposed[o];\n  }\n\n  if (!Matrix.isMatrixLike(o)) {\n    // Set the origin according to the defined transform\n    o = _objectSpread({}, o, {\n      origin: getOrigin(o, this)\n    });\n  } // The user can pass a boolean, an Element or an Matrix or nothing\n\n\n  var cleanRelative = relative === true ? this : relative || false;\n  var result = new Matrix(cleanRelative).transform(o);\n  return this.attr('transform', result);\n}\nregisterMethods('Element', {\n  untransform: untransform,\n  matrixify: matrixify,\n  toParent: toParent,\n  toRoot: toRoot,\n  transform: transform\n});\n\nfunction rx(rx) {\n  return this.attr('rx', rx);\n} // Radius y value\n\nfunction ry(ry) {\n  return this.attr('ry', ry);\n} // Move over x-axis\n\nfunction x(x) {\n  return x == null ? this.cx() - this.rx() : this.cx(x + this.rx());\n} // Move over y-axis\n\nfunction y(y) {\n  return y == null ? this.cy() - this.ry() : this.cy(y + this.ry());\n} // Move by center over x-axis\n\nfunction cx(x) {\n  return x == null ? this.attr('cx') : this.attr('cx', x);\n} // Move by center over y-axis\n\nfunction cy(y) {\n  return y == null ? this.attr('cy') : this.attr('cy', y);\n} // Set width of element\n\nfunction width(width) {\n  return width == null ? this.rx() * 2 : this.rx(new SVGNumber(width).divide(2));\n} // Set height of element\n\nfunction height(height) {\n  return height == null ? this.ry() * 2 : this.ry(new SVGNumber(height).divide(2));\n}\n\nvar circled = ({\n\t__proto__: null,\n\trx: rx,\n\try: ry,\n\tx: x,\n\ty: y,\n\tcx: cx,\n\tcy: cy,\n\twidth: width,\n\theight: height\n});\n\nvar Shape =\n/*#__PURE__*/\nfunction (_Element) {\n  _inherits(Shape, _Element);\n\n  function Shape() {\n    _classCallCheck(this, Shape);\n\n    return _possibleConstructorReturn(this, _getPrototypeOf(Shape).apply(this, arguments));\n  }\n\n  return Shape;\n}(Element);\nregister(Shape, 'Shape');\n\nvar Circle =\n/*#__PURE__*/\nfunction (_Shape) {\n  _inherits(Circle, _Shape);\n\n  function Circle(node) {\n    _classCallCheck(this, Circle);\n\n    return _possibleConstructorReturn(this, _getPrototypeOf(Circle).call(this, nodeOrNew('circle', node), node));\n  }\n\n  _createClass(Circle, [{\n    key: \"radius\",\n    value: function radius(r) {\n      return this.attr('r', r);\n    } // Radius x value\n\n  }, {\n    key: \"rx\",\n    value: function rx(_rx) {\n      return this.attr('r', _rx);\n    } // Alias radius x value\n\n  }, {\n    key: \"ry\",\n    value: function ry(_ry) {\n      return this.rx(_ry);\n    }\n  }, {\n    key: \"size\",\n    value: function size(_size) {\n      return this.radius(new SVGNumber(_size).divide(2));\n    }\n  }]);\n\n  return Circle;\n}(Shape);\nextend(Circle, {\n  x: x,\n  y: y,\n  cx: cx,\n  cy: cy,\n  width: width,\n  height: height\n});\nregisterMethods({\n  Container: {\n    // Create circle element\n    circle: wrapWithAttrCheck(function (size) {\n      return this.put(new Circle()).size(size).move(0, 0);\n    })\n  }\n});\nregister(Circle, 'Circle');\n\nvar Container =\n/*#__PURE__*/\nfunction (_Element) {\n  _inherits(Container, _Element);\n\n  function Container() {\n    _classCallCheck(this, Container);\n\n    return _possibleConstructorReturn(this, _getPrototypeOf(Container).apply(this, arguments));\n  }\n\n  _createClass(Container, [{\n    key: \"flatten\",\n    value: function flatten(parent) {\n      this.each(function () {\n        if (this instanceof Container) return this.flatten(parent).ungroup(parent);\n        return this.toParent(parent);\n      }); // we need this so that the root does not get removed\n\n      this.node.firstElementChild || this.remove();\n      return this;\n    }\n  }, {\n    key: \"ungroup\",\n    value: function ungroup(parent) {\n      parent = parent || this.parent();\n      this.each(function () {\n        return this.toParent(parent);\n      });\n      this.remove();\n      return this;\n    }\n  }]);\n\n  return Container;\n}(Element);\nregister(Container, 'Container');\n\nvar Defs =\n/*#__PURE__*/\nfunction (_Container) {\n  _inherits(Defs, _Container);\n\n  function Defs(node) {\n    _classCallCheck(this, Defs);\n\n    return _possibleConstructorReturn(this, _getPrototypeOf(Defs).call(this, nodeOrNew('defs', node), node));\n  }\n\n  _createClass(Defs, [{\n    key: \"flatten\",\n    value: function flatten() {\n      return this;\n    }\n  }, {\n    key: \"ungroup\",\n    value: function ungroup() {\n      return this;\n    }\n  }]);\n\n  return Defs;\n}(Container);\nregister(Defs, 'Defs');\n\nvar Ellipse =\n/*#__PURE__*/\nfunction (_Shape) {\n  _inherits(Ellipse, _Shape);\n\n  function Ellipse(node) {\n    _classCallCheck(this, Ellipse);\n\n    return _possibleConstructorReturn(this, _getPrototypeOf(Ellipse).call(this, nodeOrNew('ellipse', node), node));\n  }\n\n  _createClass(Ellipse, [{\n    key: \"size\",\n    value: function size(width, height) {\n      var p = proportionalSize(this, width, height);\n      return this.rx(new SVGNumber(p.width).divide(2)).ry(new SVGNumber(p.height).divide(2));\n    }\n  }]);\n\n  return Ellipse;\n}(Shape);\nextend(Ellipse, circled);\nregisterMethods('Container', {\n  // Create an ellipse\n  ellipse: wrapWithAttrCheck(function () {\n    var width = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n    var height = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : width;\n    return this.put(new Ellipse()).size(width, height).move(0, 0);\n  })\n});\nregister(Ellipse, 'Ellipse');\n\nvar Stop =\n/*#__PURE__*/\nfunction (_Element) {\n  _inherits(Stop, _Element);\n\n  function Stop(node) {\n    _classCallCheck(this, Stop);\n\n    return _possibleConstructorReturn(this, _getPrototypeOf(Stop).call(this, nodeOrNew('stop', node), node));\n  } // add color stops\n\n\n  _createClass(Stop, [{\n    key: \"update\",\n    value: function update(o) {\n      if (typeof o === 'number' || o instanceof SVGNumber) {\n        o = {\n          offset: arguments[0],\n          color: arguments[1],\n          opacity: arguments[2]\n        };\n      } // set attributes\n\n\n      if (o.opacity != null) this.attr('stop-opacity', o.opacity);\n      if (o.color != null) this.attr('stop-color', o.color);\n      if (o.offset != null) this.attr('offset', new SVGNumber(o.offset));\n      return this;\n    }\n  }]);\n\n  return Stop;\n}(Element);\nregister(Stop, 'Stop');\n\nfunction from(x, y) {\n  return (this._element || this).type === 'radialGradient' ? this.attr({\n    fx: new SVGNumber(x),\n    fy: new SVGNumber(y)\n  }) : this.attr({\n    x1: new SVGNumber(x),\n    y1: new SVGNumber(y)\n  });\n}\nfunction to(x, y) {\n  return (this._element || this).type === 'radialGradient' ? this.attr({\n    cx: new SVGNumber(x),\n    cy: new SVGNumber(y)\n  }) : this.attr({\n    x2: new SVGNumber(x),\n    y2: new SVGNumber(y)\n  });\n}\n\nvar gradiented = ({\n\t__proto__: null,\n\tfrom: from,\n\tto: to\n});\n\nvar Gradient =\n/*#__PURE__*/\nfunction (_Container) {\n  _inherits(Gradient, _Container);\n\n  function Gradient(type, attrs) {\n    _classCallCheck(this, Gradient);\n\n    return _possibleConstructorReturn(this, _getPrototypeOf(Gradient).call(this, nodeOrNew(type + 'Gradient', typeof type === 'string' ? null : type), attrs));\n  } // Add a color stop\n\n\n  _createClass(Gradient, [{\n    key: \"stop\",\n    value: function stop(offset, color, opacity) {\n      return this.put(new Stop()).update(offset, color, opacity);\n    } // Update gradient\n\n  }, {\n    key: \"update\",\n    value: function update(block) {\n      // remove all stops\n      this.clear(); // invoke passed block\n\n      if (typeof block === 'function') {\n        block.call(this, this);\n      }\n\n      return this;\n    } // Return the fill id\n\n  }, {\n    key: \"url\",\n    value: function url() {\n      return 'url(#' + this.id() + ')';\n    } // Alias string convertion to fill\n\n  }, {\n    key: \"toString\",\n    value: function toString() {\n      return this.url();\n    } // custom attr to handle transform\n\n  }, {\n    key: \"attr\",\n    value: function attr(a, b, c) {\n      if (a === 'transform') a = 'gradientTransform';\n      return _get(_getPrototypeOf(Gradient.prototype), \"attr\", this).call(this, a, b, c);\n    }\n  }, {\n    key: \"targets\",\n    value: function targets() {\n      return baseFind('svg [fill*=\"' + this.id() + '\"]');\n    }\n  }, {\n    key: \"bbox\",\n    value: function bbox() {\n      return new Box();\n    }\n  }]);\n\n  return Gradient;\n}(Container);\nextend(Gradient, gradiented);\nregisterMethods({\n  Container: {\n    // Create gradient element in defs\n    gradient: wrapWithAttrCheck(function (type, block) {\n      return this.defs().gradient(type, block);\n    })\n  },\n  // define gradient\n  Defs: {\n    gradient: wrapWithAttrCheck(function (type, block) {\n      return this.put(new Gradient(type)).update(block);\n    })\n  }\n});\nregister(Gradient, 'Gradient');\n\nvar Pattern =\n/*#__PURE__*/\nfunction (_Container) {\n  _inherits(Pattern, _Container);\n\n  // Initialize node\n  function Pattern(node) {\n    _classCallCheck(this, Pattern);\n\n    return _possibleConstructorReturn(this, _getPrototypeOf(Pattern).call(this, nodeOrNew('pattern', node), node));\n  } // Return the fill id\n\n\n  _createClass(Pattern, [{\n    key: \"url\",\n    value: function url() {\n      return 'url(#' + this.id() + ')';\n    } // Update pattern by rebuilding\n\n  }, {\n    key: \"update\",\n    value: function update(block) {\n      // remove content\n      this.clear(); // invoke passed block\n\n      if (typeof block === 'function') {\n        block.call(this, this);\n      }\n\n      return this;\n    } // Alias string convertion to fill\n\n  }, {\n    key: \"toString\",\n    value: function toString() {\n      return this.url();\n    } // custom attr to handle transform\n\n  }, {\n    key: \"attr\",\n    value: function attr(a, b, c) {\n      if (a === 'transform') a = 'patternTransform';\n      return _get(_getPrototypeOf(Pattern.prototype), \"attr\", this).call(this, a, b, c);\n    }\n  }, {\n    key: \"targets\",\n    value: function targets() {\n      return baseFind('svg [fill*=\"' + this.id() + '\"]');\n    }\n  }, {\n    key: \"bbox\",\n    value: function bbox() {\n      return new Box();\n    }\n  }]);\n\n  return Pattern;\n}(Container);\nregisterMethods({\n  Container: {\n    // Create pattern element in defs\n    pattern: function pattern() {\n      var _this$defs;\n\n      return (_this$defs = this.defs()).pattern.apply(_this$defs, arguments);\n    }\n  },\n  Defs: {\n    pattern: wrapWithAttrCheck(function (width, height, block) {\n      return this.put(new Pattern()).update(block).attr({\n        x: 0,\n        y: 0,\n        width: width,\n        height: height,\n        patternUnits: 'userSpaceOnUse'\n      });\n    })\n  }\n});\nregister(Pattern, 'Pattern');\n\nvar Image =\n/*#__PURE__*/\nfunction (_Shape) {\n  _inherits(Image, _Shape);\n\n  function Image(node) {\n    _classCallCheck(this, Image);\n\n    return _possibleConstructorReturn(this, _getPrototypeOf(Image).call(this, nodeOrNew('image', node), node));\n  } // (re)load image\n\n\n  _createClass(Image, [{\n    key: \"load\",\n    value: function load(url, callback) {\n      if (!url) return this;\n      var img = new globals.window.Image();\n      on(img, 'load', function (e) {\n        var p = this.parent(Pattern); // ensure image size\n\n        if (this.width() === 0 && this.height() === 0) {\n          this.size(img.width, img.height);\n        }\n\n        if (p instanceof Pattern) {\n          // ensure pattern size if not set\n          if (p.width() === 0 && p.height() === 0) {\n            p.size(this.width(), this.height());\n          }\n        }\n\n        if (typeof callback === 'function') {\n          callback.call(this, e);\n        }\n      }, this);\n      on(img, 'load error', function () {\n        // dont forget to unbind memory leaking events\n        off(img);\n      });\n      return this.attr('href', img.src = url, xlink);\n    }\n  }]);\n\n  return Image;\n}(Shape);\nregisterAttrHook(function (attr, val, _this) {\n  // convert image fill and stroke to patterns\n  if (attr === 'fill' || attr === 'stroke') {\n    if (isImage.test(val)) {\n      val = _this.root().defs().image(val);\n    }\n  }\n\n  if (val instanceof Image) {\n    val = _this.root().defs().pattern(0, 0, function (pattern) {\n      pattern.add(val);\n    });\n  }\n\n  return val;\n});\nregisterMethods({\n  Container: {\n    // create image element, load image and set its size\n    image: wrapWithAttrCheck(function (source, callback) {\n      return this.put(new Image()).size(0, 0).load(source, callback);\n    })\n  }\n});\nregister(Image, 'Image');\n\nvar PointArray = subClassArray('PointArray', SVGArray);\nextend(PointArray, {\n  // Convert array to string\n  toString: function toString() {\n    // convert to a poly point string\n    for (var i = 0, il = this.length, array = []; i < il; i++) {\n      array.push(this[i].join(','));\n    }\n\n    return array.join(' ');\n  },\n  // Convert array to line object\n  toLine: function toLine() {\n    return {\n      x1: this[0][0],\n      y1: this[0][1],\n      x2: this[1][0],\n      y2: this[1][1]\n    };\n  },\n  // Get morphed array at given position\n  at: function at(pos) {\n    // make sure a destination is defined\n    if (!this.destination) return this; // generate morphed point string\n\n    for (var i = 0, il = this.length, array = []; i < il; i++) {\n      array.push([this[i][0] + (this.destination[i][0] - this[i][0]) * pos, this[i][1] + (this.destination[i][1] - this[i][1]) * pos]);\n    }\n\n    return new PointArray(array);\n  },\n  // Parse point string and flat array\n  parse: function parse() {\n    var array = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [[0, 0]];\n    var points = []; // if it is an array\n\n    if (array instanceof Array) {\n      // and it is not flat, there is no need to parse it\n      if (array[0] instanceof Array) {\n        return array;\n      }\n    } else {\n      // Else, it is considered as a string\n      // parse points\n      array = array.trim().split(delimiter).map(parseFloat);\n    } // validate points - https://svgwg.org/svg2-draft/shapes.html#DataTypePoints\n    // Odd number of coordinates is an error. In such cases, drop the last odd coordinate.\n\n\n    if (array.length % 2 !== 0) array.pop(); // wrap points in two-tuples\n\n    for (var i = 0, len = array.length; i < len; i = i + 2) {\n      points.push([array[i], array[i + 1]]);\n    }\n\n    return points;\n  },\n  // transform points with matrix (similar to Point.transform)\n  transform: function transform(m) {\n    var points = [];\n\n    for (var i = 0; i < this.length; i++) {\n      var point = this[i]; // Perform the matrix multiplication\n\n      points.push([m.a * point[0] + m.c * point[1] + m.e, m.b * point[0] + m.d * point[1] + m.f]);\n    } // Return the required point\n\n\n    return new PointArray(points);\n  },\n  // Move point string\n  move: function move(x, y) {\n    var box = this.bbox(); // get relative offset\n\n    x -= box.x;\n    y -= box.y; // move every point\n\n    if (!isNaN(x) && !isNaN(y)) {\n      for (var i = this.length - 1; i >= 0; i--) {\n        this[i] = [this[i][0] + x, this[i][1] + y];\n      }\n    }\n\n    return this;\n  },\n  // Resize poly string\n  size: function size(width, height) {\n    var i;\n    var box = this.bbox(); // recalculate position of all points according to new size\n\n    for (i = this.length - 1; i >= 0; i--) {\n      if (box.width) this[i][0] = (this[i][0] - box.x) * width / box.width + box.x;\n      if (box.height) this[i][1] = (this[i][1] - box.y) * height / box.height + box.y;\n    }\n\n    return this;\n  },\n  // Get bounding box of points\n  bbox: function bbox() {\n    var maxX = -Infinity;\n    var maxY = -Infinity;\n    var minX = Infinity;\n    var minY = Infinity;\n    this.forEach(function (el) {\n      maxX = Math.max(el[0], maxX);\n      maxY = Math.max(el[1], maxY);\n      minX = Math.min(el[0], minX);\n      minY = Math.min(el[1], minY);\n    });\n    return {\n      x: minX,\n      y: minY,\n      width: maxX - minX,\n      height: maxY - minY\n    };\n  }\n});\n\nvar MorphArray = PointArray; // Move by left top corner over x-axis\n\nfunction x$1(x) {\n  return x == null ? this.bbox().x : this.move(x, this.bbox().y);\n} // Move by left top corner over y-axis\n\nfunction y$1(y) {\n  return y == null ? this.bbox().y : this.move(this.bbox().x, y);\n} // Set width of element\n\nfunction width$1(width) {\n  var b = this.bbox();\n  return width == null ? b.width : this.size(width, b.height);\n} // Set height of element\n\nfunction height$1(height) {\n  var b = this.bbox();\n  return height == null ? b.height : this.size(b.width, height);\n}\n\nvar pointed = ({\n\t__proto__: null,\n\tMorphArray: MorphArray,\n\tx: x$1,\n\ty: y$1,\n\twidth: width$1,\n\theight: height$1\n});\n\nvar Line =\n/*#__PURE__*/\nfunction (_Shape) {\n  _inherits(Line, _Shape);\n\n  // Initialize node\n  function Line(node) {\n    _classCallCheck(this, Line);\n\n    return _possibleConstructorReturn(this, _getPrototypeOf(Line).call(this, nodeOrNew('line', node), node));\n  } // Get array\n\n\n  _createClass(Line, [{\n    key: \"array\",\n    value: function array() {\n      return new PointArray([[this.attr('x1'), this.attr('y1')], [this.attr('x2'), this.attr('y2')]]);\n    } // Overwrite native plot() method\n\n  }, {\n    key: \"plot\",\n    value: function plot(x1, y1, x2, y2) {\n      if (x1 == null) {\n        return this.array();\n      } else if (typeof y1 !== 'undefined') {\n        x1 = {\n          x1: x1,\n          y1: y1,\n          x2: x2,\n          y2: y2\n        };\n      } else {\n        x1 = new PointArray(x1).toLine();\n      }\n\n      return this.attr(x1);\n    } // Move by left top corner\n\n  }, {\n    key: \"move\",\n    value: function move(x, y) {\n      return this.attr(this.array().move(x, y).toLine());\n    } // Set element size to given width and height\n\n  }, {\n    key: \"size\",\n    value: function size(width, height) {\n      var p = proportionalSize(this, width, height);\n      return this.attr(this.array().size(p.width, p.height).toLine());\n    }\n  }]);\n\n  return Line;\n}(Shape);\nextend(Line, pointed);\nregisterMethods({\n  Container: {\n    // Create a line element\n    line: wrapWithAttrCheck(function () {\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n\n      // make sure plot is called as a setter\n      // x1 is not necessarily a number, it can also be an array, a string and a PointArray\n      return Line.prototype.plot.apply(this.put(new Line()), args[0] != null ? args : [0, 0, 0, 0]);\n    })\n  }\n});\nregister(Line, 'Line');\n\nvar Marker =\n/*#__PURE__*/\nfunction (_Container) {\n  _inherits(Marker, _Container);\n\n  // Initialize node\n  function Marker(node) {\n    _classCallCheck(this, Marker);\n\n    return _possibleConstructorReturn(this, _getPrototypeOf(Marker).call(this, nodeOrNew('marker', node), node));\n  } // Set width of element\n\n\n  _createClass(Marker, [{\n    key: \"width\",\n    value: function width(_width) {\n      return this.attr('markerWidth', _width);\n    } // Set height of element\n\n  }, {\n    key: \"height\",\n    value: function height(_height) {\n      return this.attr('markerHeight', _height);\n    } // Set marker refX and refY\n\n  }, {\n    key: \"ref\",\n    value: function ref(x, y) {\n      return this.attr('refX', x).attr('refY', y);\n    } // Update marker\n\n  }, {\n    key: \"update\",\n    value: function update(block) {\n      // remove all content\n      this.clear(); // invoke passed block\n\n      if (typeof block === 'function') {\n        block.call(this, this);\n      }\n\n      return this;\n    } // Return the fill id\n\n  }, {\n    key: \"toString\",\n    value: function toString() {\n      return 'url(#' + this.id() + ')';\n    }\n  }]);\n\n  return Marker;\n}(Container);\nregisterMethods({\n  Container: {\n    marker: function marker() {\n      var _this$defs;\n\n      // Create marker element in defs\n      return (_this$defs = this.defs()).marker.apply(_this$defs, arguments);\n    }\n  },\n  Defs: {\n    // Create marker\n    marker: wrapWithAttrCheck(function (width, height, block) {\n      // Set default viewbox to match the width and height, set ref to cx and cy and set orient to auto\n      return this.put(new Marker()).size(width, height).ref(width / 2, height / 2).viewbox(0, 0, width, height).attr('orient', 'auto').update(block);\n    })\n  },\n  marker: {\n    // Create and attach markers\n    marker: function marker(_marker, width, height, block) {\n      var attr = ['marker']; // Build attribute name\n\n      if (_marker !== 'all') attr.push(_marker);\n      attr = attr.join('-'); // Set marker attribute\n\n      _marker = arguments[1] instanceof Marker ? arguments[1] : this.defs().marker(width, height, block);\n      return this.attr(attr, _marker);\n    }\n  }\n});\nregister(Marker, 'Marker');\n\nvar nativeSort = [].sort;\nvar test$2 = [1, 2, 3];\n\n// IE8-\nvar FAILS_ON_UNDEFINED = fails(function () {\n  test$2.sort(undefined);\n});\n// V8 bug\nvar FAILS_ON_NULL = fails(function () {\n  test$2.sort(null);\n});\n// Old WebKit\nvar SLOPPY_METHOD$2 = sloppyArrayMethod('sort');\n\nvar FORCED$4 = FAILS_ON_UNDEFINED || !FAILS_ON_NULL || SLOPPY_METHOD$2;\n\n// `Array.prototype.sort` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.sort\n_export({ target: 'Array', proto: true, forced: FORCED$4 }, {\n  sort: function sort(comparefn) {\n    return comparefn === undefined\n      ? nativeSort.call(toObject(this))\n      : nativeSort.call(toObject(this), aFunction$1(comparefn));\n  }\n});\n\n/***\r\nBase Class\r\n==========\r\nThe base stepper class that will be\r\n***/\n\nfunction makeSetterGetter(k, f) {\n  return function (v) {\n    if (v == null) return this[v];\n    this[k] = v;\n    if (f) f.call(this);\n    return this;\n  };\n}\n\nvar easing = {\n  '-': function _(pos) {\n    return pos;\n  },\n  '<>': function _(pos) {\n    return -Math.cos(pos * Math.PI) / 2 + 0.5;\n  },\n  '>': function _(pos) {\n    return Math.sin(pos * Math.PI / 2);\n  },\n  '<': function _(pos) {\n    return -Math.cos(pos * Math.PI / 2) + 1;\n  },\n  bezier: function bezier(x1, y1, x2, y2) {\n    // see https://www.w3.org/TR/css-easing-1/#cubic-bezier-algo\n    return function (t) {\n      if (t < 0) {\n        if (x1 > 0) {\n          return y1 / x1 * t;\n        } else if (x2 > 0) {\n          return y2 / x2 * t;\n        } else {\n          return 0;\n        }\n      } else if (t > 1) {\n        if (x2 < 1) {\n          return (1 - y2) / (1 - x2) * t + (y2 - x2) / (1 - x2);\n        } else if (x1 < 1) {\n          return (1 - y1) / (1 - x1) * t + (y1 - x1) / (1 - x1);\n        } else {\n          return 1;\n        }\n      } else {\n        return 3 * t * Math.pow(1 - t, 2) * y1 + 3 * Math.pow(t, 2) * (1 - t) * y2 + Math.pow(t, 3);\n      }\n    };\n  },\n  // see https://www.w3.org/TR/css-easing-1/#step-timing-function-algo\n  steps: function steps(_steps) {\n    var stepPosition = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'end';\n    // deal with \"jump-\" prefix\n    stepPosition = stepPosition.split('-').reverse()[0];\n    var jumps = _steps;\n\n    if (stepPosition === 'none') {\n      --jumps;\n    } else if (stepPosition === 'both') {\n      ++jumps;\n    } // The beforeFlag is essentially useless\n\n\n    return function (t) {\n      var beforeFlag = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n      // Step is called currentStep in referenced url\n      var step = Math.floor(t * _steps);\n      var jumping = t * step % 1 === 0;\n\n      if (stepPosition === 'start' || stepPosition === 'both') {\n        ++step;\n      }\n\n      if (beforeFlag && jumping) {\n        --step;\n      }\n\n      if (t >= 0 && step < 0) {\n        step = 0;\n      }\n\n      if (t <= 1 && step > jumps) {\n        step = jumps;\n      }\n\n      return step / jumps;\n    };\n  }\n};\nvar Stepper =\n/*#__PURE__*/\nfunction () {\n  function Stepper() {\n    _classCallCheck(this, Stepper);\n  }\n\n  _createClass(Stepper, [{\n    key: \"done\",\n    value: function done() {\n      return false;\n    }\n  }]);\n\n  return Stepper;\n}();\n/***\r\nEasing Functions\r\n================\r\n***/\n\nvar Ease =\n/*#__PURE__*/\nfunction (_Stepper) {\n  _inherits(Ease, _Stepper);\n\n  function Ease(fn) {\n    var _this;\n\n    _classCallCheck(this, Ease);\n\n    _this = _possibleConstructorReturn(this, _getPrototypeOf(Ease).call(this));\n    _this.ease = easing[fn || timeline.ease] || fn;\n    return _this;\n  }\n\n  _createClass(Ease, [{\n    key: \"step\",\n    value: function step(from, to, pos) {\n      if (typeof from !== 'number') {\n        return pos < 1 ? from : to;\n      }\n\n      return from + (to - from) * this.ease(pos);\n    }\n  }]);\n\n  return Ease;\n}(Stepper);\n/***\r\nController Types\r\n================\r\n***/\n\nvar Controller =\n/*#__PURE__*/\nfunction (_Stepper2) {\n  _inherits(Controller, _Stepper2);\n\n  function Controller(fn) {\n    var _this2;\n\n    _classCallCheck(this, Controller);\n\n    _this2 = _possibleConstructorReturn(this, _getPrototypeOf(Controller).call(this));\n    _this2.stepper = fn;\n    return _this2;\n  }\n\n  _createClass(Controller, [{\n    key: \"step\",\n    value: function step(current, target, dt, c) {\n      return this.stepper(current, target, dt, c);\n    }\n  }, {\n    key: \"done\",\n    value: function done(c) {\n      return c.done;\n    }\n  }]);\n\n  return Controller;\n}(Stepper);\n\nfunction recalculate() {\n  // Apply the default parameters\n  var duration = (this._duration || 500) / 1000;\n  var overshoot = this._overshoot || 0; // Calculate the PID natural response\n\n  var eps = 1e-10;\n  var pi = Math.PI;\n  var os = Math.log(overshoot / 100 + eps);\n  var zeta = -os / Math.sqrt(pi * pi + os * os);\n  var wn = 3.9 / (zeta * duration); // Calculate the Spring values\n\n  this.d = 2 * zeta * wn;\n  this.k = wn * wn;\n}\n\nvar Spring =\n/*#__PURE__*/\nfunction (_Controller) {\n  _inherits(Spring, _Controller);\n\n  function Spring(duration, overshoot) {\n    var _this3;\n\n    _classCallCheck(this, Spring);\n\n    _this3 = _possibleConstructorReturn(this, _getPrototypeOf(Spring).call(this));\n\n    _this3.duration(duration || 500).overshoot(overshoot || 0);\n\n    return _this3;\n  }\n\n  _createClass(Spring, [{\n    key: \"step\",\n    value: function step(current, target, dt, c) {\n      if (typeof current === 'string') return current;\n      c.done = dt === Infinity;\n      if (dt === Infinity) return target;\n      if (dt === 0) return current;\n      if (dt > 100) dt = 16;\n      dt /= 1000; // Get the previous velocity\n\n      var velocity = c.velocity || 0; // Apply the control to get the new position and store it\n\n      var acceleration = -this.d * velocity - this.k * (current - target);\n      var newPosition = current + velocity * dt + acceleration * dt * dt / 2; // Store the velocity\n\n      c.velocity = velocity + acceleration * dt; // Figure out if we have converged, and if so, pass the value\n\n      c.done = Math.abs(target - newPosition) + Math.abs(velocity) < 0.002;\n      return c.done ? target : newPosition;\n    }\n  }]);\n\n  return Spring;\n}(Controller);\nextend(Spring, {\n  duration: makeSetterGetter('_duration', recalculate),\n  overshoot: makeSetterGetter('_overshoot', recalculate)\n});\nvar PID =\n/*#__PURE__*/\nfunction (_Controller2) {\n  _inherits(PID, _Controller2);\n\n  function PID(p, i, d, windup) {\n    var _this4;\n\n    _classCallCheck(this, PID);\n\n    _this4 = _possibleConstructorReturn(this, _getPrototypeOf(PID).call(this));\n    p = p == null ? 0.1 : p;\n    i = i == null ? 0.01 : i;\n    d = d == null ? 0 : d;\n    windup = windup == null ? 1000 : windup;\n\n    _this4.p(p).i(i).d(d).windup(windup);\n\n    return _this4;\n  }\n\n  _createClass(PID, [{\n    key: \"step\",\n    value: function step(current, target, dt, c) {\n      if (typeof current === 'string') return current;\n      c.done = dt === Infinity;\n      if (dt === Infinity) return target;\n      if (dt === 0) return current;\n      var p = target - current;\n      var i = (c.integral || 0) + p * dt;\n      var d = (p - (c.error || 0)) / dt;\n      var windup = this.windup; // antiwindup\n\n      if (windup !== false) {\n        i = Math.max(-windup, Math.min(i, windup));\n      }\n\n      c.error = p;\n      c.integral = i;\n      c.done = Math.abs(p) < 0.001;\n      return c.done ? target : current + (this.P * p + this.I * i + this.D * d);\n    }\n  }]);\n\n  return PID;\n}(Controller);\nextend(PID, {\n  windup: makeSetterGetter('windup'),\n  p: makeSetterGetter('P'),\n  i: makeSetterGetter('I'),\n  d: makeSetterGetter('D')\n});\n\nvar PathArray = subClassArray('PathArray', SVGArray);\nfunction pathRegReplace(a, b, c, d) {\n  return c + d.replace(dots, ' .');\n}\n\nfunction arrayToString(a) {\n  for (var i = 0, il = a.length, s = ''; i < il; i++) {\n    s += a[i][0];\n\n    if (a[i][1] != null) {\n      s += a[i][1];\n\n      if (a[i][2] != null) {\n        s += ' ';\n        s += a[i][2];\n\n        if (a[i][3] != null) {\n          s += ' ';\n          s += a[i][3];\n          s += ' ';\n          s += a[i][4];\n\n          if (a[i][5] != null) {\n            s += ' ';\n            s += a[i][5];\n            s += ' ';\n            s += a[i][6];\n\n            if (a[i][7] != null) {\n              s += ' ';\n              s += a[i][7];\n            }\n          }\n        }\n      }\n    }\n  }\n\n  return s + ' ';\n}\n\nvar pathHandlers = {\n  M: function M(c, p, p0) {\n    p.x = p0.x = c[0];\n    p.y = p0.y = c[1];\n    return ['M', p.x, p.y];\n  },\n  L: function L(c, p) {\n    p.x = c[0];\n    p.y = c[1];\n    return ['L', c[0], c[1]];\n  },\n  H: function H(c, p) {\n    p.x = c[0];\n    return ['H', c[0]];\n  },\n  V: function V(c, p) {\n    p.y = c[0];\n    return ['V', c[0]];\n  },\n  C: function C(c, p) {\n    p.x = c[4];\n    p.y = c[5];\n    return ['C', c[0], c[1], c[2], c[3], c[4], c[5]];\n  },\n  S: function S(c, p) {\n    p.x = c[2];\n    p.y = c[3];\n    return ['S', c[0], c[1], c[2], c[3]];\n  },\n  Q: function Q(c, p) {\n    p.x = c[2];\n    p.y = c[3];\n    return ['Q', c[0], c[1], c[2], c[3]];\n  },\n  T: function T(c, p) {\n    p.x = c[0];\n    p.y = c[1];\n    return ['T', c[0], c[1]];\n  },\n  Z: function Z(c, p, p0) {\n    p.x = p0.x;\n    p.y = p0.y;\n    return ['Z'];\n  },\n  A: function A(c, p) {\n    p.x = c[5];\n    p.y = c[6];\n    return ['A', c[0], c[1], c[2], c[3], c[4], c[5], c[6]];\n  }\n};\nvar mlhvqtcsaz = 'mlhvqtcsaz'.split('');\n\nfor (var i = 0, il = mlhvqtcsaz.length; i < il; ++i) {\n  pathHandlers[mlhvqtcsaz[i]] = function (i) {\n    return function (c, p, p0) {\n      if (i === 'H') c[0] = c[0] + p.x;else if (i === 'V') c[0] = c[0] + p.y;else if (i === 'A') {\n        c[5] = c[5] + p.x;\n        c[6] = c[6] + p.y;\n      } else {\n        for (var j = 0, jl = c.length; j < jl; ++j) {\n          c[j] = c[j] + (j % 2 ? p.y : p.x);\n        }\n      }\n      return pathHandlers[i](c, p, p0);\n    };\n  }(mlhvqtcsaz[i].toUpperCase());\n}\n\nextend(PathArray, {\n  // Convert array to string\n  toString: function toString() {\n    return arrayToString(this);\n  },\n  // Move path string\n  move: function move(x, y) {\n    // get bounding box of current situation\n    var box = this.bbox(); // get relative offset\n\n    x -= box.x;\n    y -= box.y;\n\n    if (!isNaN(x) && !isNaN(y)) {\n      // move every point\n      for (var l, i = this.length - 1; i >= 0; i--) {\n        l = this[i][0];\n\n        if (l === 'M' || l === 'L' || l === 'T') {\n          this[i][1] += x;\n          this[i][2] += y;\n        } else if (l === 'H') {\n          this[i][1] += x;\n        } else if (l === 'V') {\n          this[i][1] += y;\n        } else if (l === 'C' || l === 'S' || l === 'Q') {\n          this[i][1] += x;\n          this[i][2] += y;\n          this[i][3] += x;\n          this[i][4] += y;\n\n          if (l === 'C') {\n            this[i][5] += x;\n            this[i][6] += y;\n          }\n        } else if (l === 'A') {\n          this[i][6] += x;\n          this[i][7] += y;\n        }\n      }\n    }\n\n    return this;\n  },\n  // Resize path string\n  size: function size(width, height) {\n    // get bounding box of current situation\n    var box = this.bbox();\n    var i, l; // If the box width or height is 0 then we ignore\n    // transformations on the respective axis\n\n    box.width = box.width === 0 ? 1 : box.width;\n    box.height = box.height === 0 ? 1 : box.height; // recalculate position of all points according to new size\n\n    for (i = this.length - 1; i >= 0; i--) {\n      l = this[i][0];\n\n      if (l === 'M' || l === 'L' || l === 'T') {\n        this[i][1] = (this[i][1] - box.x) * width / box.width + box.x;\n        this[i][2] = (this[i][2] - box.y) * height / box.height + box.y;\n      } else if (l === 'H') {\n        this[i][1] = (this[i][1] - box.x) * width / box.width + box.x;\n      } else if (l === 'V') {\n        this[i][1] = (this[i][1] - box.y) * height / box.height + box.y;\n      } else if (l === 'C' || l === 'S' || l === 'Q') {\n        this[i][1] = (this[i][1] - box.x) * width / box.width + box.x;\n        this[i][2] = (this[i][2] - box.y) * height / box.height + box.y;\n        this[i][3] = (this[i][3] - box.x) * width / box.width + box.x;\n        this[i][4] = (this[i][4] - box.y) * height / box.height + box.y;\n\n        if (l === 'C') {\n          this[i][5] = (this[i][5] - box.x) * width / box.width + box.x;\n          this[i][6] = (this[i][6] - box.y) * height / box.height + box.y;\n        }\n      } else if (l === 'A') {\n        // resize radii\n        this[i][1] = this[i][1] * width / box.width;\n        this[i][2] = this[i][2] * height / box.height; // move position values\n\n        this[i][6] = (this[i][6] - box.x) * width / box.width + box.x;\n        this[i][7] = (this[i][7] - box.y) * height / box.height + box.y;\n      }\n    }\n\n    return this;\n  },\n  // Test if the passed path array use the same path data commands as this path array\n  equalCommands: function equalCommands(pathArray) {\n    var i, il, equalCommands;\n    pathArray = new PathArray(pathArray);\n    equalCommands = this.length === pathArray.length;\n\n    for (i = 0, il = this.length; equalCommands && i < il; i++) {\n      equalCommands = this[i][0] === pathArray[i][0];\n    }\n\n    return equalCommands;\n  },\n  // Make path array morphable\n  morph: function morph(pathArray) {\n    pathArray = new PathArray(pathArray);\n\n    if (this.equalCommands(pathArray)) {\n      this.destination = pathArray;\n    } else {\n      this.destination = null;\n    }\n\n    return this;\n  },\n  // Get morphed path array at given position\n  at: function at(pos) {\n    // make sure a destination is defined\n    if (!this.destination) return this;\n    var sourceArray = this;\n    var destinationArray = this.destination.value;\n    var array = [];\n    var pathArray = new PathArray();\n    var i, il, j, jl; // Animate has specified in the SVG spec\n    // See: https://www.w3.org/TR/SVG11/paths.html#PathElement\n\n    for (i = 0, il = sourceArray.length; i < il; i++) {\n      array[i] = [sourceArray[i][0]];\n\n      for (j = 1, jl = sourceArray[i].length; j < jl; j++) {\n        array[i][j] = sourceArray[i][j] + (destinationArray[i][j] - sourceArray[i][j]) * pos;\n      } // For the two flags of the elliptical arc command, the SVG spec say:\n      // Flags and booleans are interpolated as fractions between zero and one, with any non-zero value considered to be a value of one/true\n      // Elliptical arc command as an array followed by corresponding indexes:\n      // ['A', rx, ry, x-axis-rotation, large-arc-flag, sweep-flag, x, y]\n      //   0    1   2        3                 4             5      6  7\n\n\n      if (array[i][0] === 'A') {\n        array[i][4] = +(array[i][4] !== 0);\n        array[i][5] = +(array[i][5] !== 0);\n      }\n    } // Directly modify the value of a path array, this is done this way for performance\n\n\n    pathArray.value = array;\n    return pathArray;\n  },\n  // Absolutize and parse path to array\n  parse: function parse() {\n    var array = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [['M', 0, 0]];\n    // if it's already a patharray, no need to parse it\n    if (array instanceof PathArray) return array; // prepare for parsing\n\n    var s;\n    var paramCnt = {\n      M: 2,\n      L: 2,\n      H: 1,\n      V: 1,\n      C: 6,\n      S: 4,\n      Q: 4,\n      T: 2,\n      A: 7,\n      Z: 0\n    };\n\n    if (typeof array === 'string') {\n      array = array.replace(numbersWithDots, pathRegReplace) // convert 45.123.123 to 45.123 .123\n      .replace(pathLetters, ' $& ') // put some room between letters and numbers\n      .replace(hyphen, '$1 -') // add space before hyphen\n      .trim() // trim\n      .split(delimiter); // split into array\n    } else {\n      array = array.reduce(function (prev, curr) {\n        return [].concat.call(prev, curr);\n      }, []);\n    } // array now is an array containing all parts of a path e.g. ['M', '0', '0', 'L', '30', '30' ...]\n\n\n    var result = [];\n    var p = new Point();\n    var p0 = new Point();\n    var index = 0;\n    var len = array.length;\n\n    do {\n      // Test if we have a path letter\n      if (isPathLetter.test(array[index])) {\n        s = array[index];\n        ++index; // If last letter was a move command and we got no new, it defaults to [L]ine\n      } else if (s === 'M') {\n        s = 'L';\n      } else if (s === 'm') {\n        s = 'l';\n      }\n\n      result.push(pathHandlers[s].call(null, array.slice(index, index = index + paramCnt[s.toUpperCase()]).map(parseFloat), p, p0));\n    } while (len > index);\n\n    return result;\n  },\n  // Get bounding box of path\n  bbox: function bbox() {\n    parser().path.setAttribute('d', this.toString());\n    return parser.nodes.path.getBBox();\n  }\n});\n\nvar Morphable =\n/*#__PURE__*/\nfunction () {\n  function Morphable(stepper) {\n    _classCallCheck(this, Morphable);\n\n    this._stepper = stepper || new Ease('-');\n    this._from = null;\n    this._to = null;\n    this._type = null;\n    this._context = null;\n    this._morphObj = null;\n  }\n\n  _createClass(Morphable, [{\n    key: \"from\",\n    value: function from(val) {\n      if (val == null) {\n        return this._from;\n      }\n\n      this._from = this._set(val);\n      return this;\n    }\n  }, {\n    key: \"to\",\n    value: function to(val) {\n      if (val == null) {\n        return this._to;\n      }\n\n      this._to = this._set(val);\n      return this;\n    }\n  }, {\n    key: \"type\",\n    value: function type(_type) {\n      // getter\n      if (_type == null) {\n        return this._type;\n      } // setter\n\n\n      this._type = _type;\n      return this;\n    }\n  }, {\n    key: \"_set\",\n    value: function _set(value) {\n      if (!this._type) {\n        var type = _typeof(value);\n\n        if (type === 'number') {\n          this.type(SVGNumber);\n        } else if (type === 'string') {\n          if (Color.isColor(value)) {\n            this.type(Color);\n          } else if (delimiter.test(value)) {\n            this.type(pathLetters.test(value) ? PathArray : SVGArray);\n          } else if (numberAndUnit.test(value)) {\n            this.type(SVGNumber);\n          } else {\n            this.type(NonMorphable);\n          }\n        } else if (morphableTypes.indexOf(value.constructor) > -1) {\n          this.type(value.constructor);\n        } else if (Array.isArray(value)) {\n          this.type(SVGArray);\n        } else if (type === 'object') {\n          this.type(ObjectBag);\n        } else {\n          this.type(NonMorphable);\n        }\n      }\n\n      var result = new this._type(value);\n\n      if (this._type === Color) {\n        result = this._to ? result[this._to[4]]() : this._from ? result[this._from[4]]() : result;\n      }\n\n      result = result.toArray();\n      this._morphObj = this._morphObj || new this._type();\n      this._context = this._context || Array.apply(null, Array(result.length)).map(Object).map(function (o) {\n        o.done = true;\n        return o;\n      });\n      return result;\n    }\n  }, {\n    key: \"stepper\",\n    value: function stepper(_stepper) {\n      if (_stepper == null) return this._stepper;\n      this._stepper = _stepper;\n      return this;\n    }\n  }, {\n    key: \"done\",\n    value: function done() {\n      var complete = this._context.map(this._stepper.done).reduce(function (last, curr) {\n        return last && curr;\n      }, true);\n\n      return complete;\n    }\n  }, {\n    key: \"at\",\n    value: function at(pos) {\n      var _this = this;\n\n      return this._morphObj.fromArray(this._from.map(function (i, index) {\n        return _this._stepper.step(i, _this._to[index], pos, _this._context[index], _this._context);\n      }));\n    }\n  }]);\n\n  return Morphable;\n}();\nvar NonMorphable =\n/*#__PURE__*/\nfunction () {\n  function NonMorphable() {\n    _classCallCheck(this, NonMorphable);\n\n    this.init.apply(this, arguments);\n  }\n\n  _createClass(NonMorphable, [{\n    key: \"init\",\n    value: function init(val) {\n      val = Array.isArray(val) ? val[0] : val;\n      this.value = val;\n      return this;\n    }\n  }, {\n    key: \"valueOf\",\n    value: function valueOf() {\n      return this.value;\n    }\n  }, {\n    key: \"toArray\",\n    value: function toArray() {\n      return [this.value];\n    }\n  }]);\n\n  return NonMorphable;\n}();\nvar TransformBag =\n/*#__PURE__*/\nfunction () {\n  function TransformBag() {\n    _classCallCheck(this, TransformBag);\n\n    this.init.apply(this, arguments);\n  }\n\n  _createClass(TransformBag, [{\n    key: \"init\",\n    value: function init(obj) {\n      if (Array.isArray(obj)) {\n        obj = {\n          scaleX: obj[0],\n          scaleY: obj[1],\n          shear: obj[2],\n          rotate: obj[3],\n          translateX: obj[4],\n          translateY: obj[5],\n          originX: obj[6],\n          originY: obj[7]\n        };\n      }\n\n      Object.assign(this, TransformBag.defaults, obj);\n      return this;\n    }\n  }, {\n    key: \"toArray\",\n    value: function toArray() {\n      var v = this;\n      return [v.scaleX, v.scaleY, v.shear, v.rotate, v.translateX, v.translateY, v.originX, v.originY];\n    }\n  }]);\n\n  return TransformBag;\n}();\nTransformBag.defaults = {\n  scaleX: 1,\n  scaleY: 1,\n  shear: 0,\n  rotate: 0,\n  translateX: 0,\n  translateY: 0,\n  originX: 0,\n  originY: 0\n};\nvar ObjectBag =\n/*#__PURE__*/\nfunction () {\n  function ObjectBag() {\n    _classCallCheck(this, ObjectBag);\n\n    this.init.apply(this, arguments);\n  }\n\n  _createClass(ObjectBag, [{\n    key: \"init\",\n    value: function init(objOrArr) {\n      this.values = [];\n\n      if (Array.isArray(objOrArr)) {\n        this.values = objOrArr;\n        return;\n      }\n\n      objOrArr = objOrArr || {};\n      var entries = [];\n\n      for (var i in objOrArr) {\n        entries.push([i, objOrArr[i]]);\n      }\n\n      entries.sort(function (a, b) {\n        return a[0] - b[0];\n      });\n      this.values = entries.reduce(function (last, curr) {\n        return last.concat(curr);\n      }, []);\n      return this;\n    }\n  }, {\n    key: \"valueOf\",\n    value: function valueOf() {\n      var obj = {};\n      var arr = this.values;\n\n      for (var i = 0, len = arr.length; i < len; i += 2) {\n        obj[arr[i]] = arr[i + 1];\n      }\n\n      return obj;\n    }\n  }, {\n    key: \"toArray\",\n    value: function toArray() {\n      return this.values;\n    }\n  }]);\n\n  return ObjectBag;\n}();\nvar morphableTypes = [NonMorphable, TransformBag, ObjectBag];\nfunction registerMorphableType() {\n  var type = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n  morphableTypes.push.apply(morphableTypes, _toConsumableArray([].concat(type)));\n}\nfunction makeMorphable() {\n  extend(morphableTypes, {\n    to: function to(val) {\n      return new Morphable().type(this.constructor).from(this.valueOf()).to(val);\n    },\n    fromArray: function fromArray(arr) {\n      this.init(arr);\n      return this;\n    }\n  });\n}\n\nvar Path =\n/*#__PURE__*/\nfunction (_Shape) {\n  _inherits(Path, _Shape);\n\n  // Initialize node\n  function Path(node) {\n    _classCallCheck(this, Path);\n\n    return _possibleConstructorReturn(this, _getPrototypeOf(Path).call(this, nodeOrNew('path', node), node));\n  } // Get array\n\n\n  _createClass(Path, [{\n    key: \"array\",\n    value: function array() {\n      return this._array || (this._array = new PathArray(this.attr('d')));\n    } // Plot new path\n\n  }, {\n    key: \"plot\",\n    value: function plot(d) {\n      return d == null ? this.array() : this.clear().attr('d', typeof d === 'string' ? d : this._array = new PathArray(d));\n    } // Clear array cache\n\n  }, {\n    key: \"clear\",\n    value: function clear() {\n      delete this._array;\n      return this;\n    } // Move by left top corner\n\n  }, {\n    key: \"move\",\n    value: function move(x, y) {\n      return this.attr('d', this.array().move(x, y));\n    } // Move by left top corner over x-axis\n\n  }, {\n    key: \"x\",\n    value: function x(_x) {\n      return _x == null ? this.bbox().x : this.move(_x, this.bbox().y);\n    } // Move by left top corner over y-axis\n\n  }, {\n    key: \"y\",\n    value: function y(_y) {\n      return _y == null ? this.bbox().y : this.move(this.bbox().x, _y);\n    } // Set element size to given width and height\n\n  }, {\n    key: \"size\",\n    value: function size(width, height) {\n      var p = proportionalSize(this, width, height);\n      return this.attr('d', this.array().size(p.width, p.height));\n    } // Set width of element\n\n  }, {\n    key: \"width\",\n    value: function width(_width) {\n      return _width == null ? this.bbox().width : this.size(_width, this.bbox().height);\n    } // Set height of element\n\n  }, {\n    key: \"height\",\n    value: function height(_height) {\n      return _height == null ? this.bbox().height : this.size(this.bbox().width, _height);\n    }\n  }, {\n    key: \"targets\",\n    value: function targets() {\n      return baseFind('svg textpath [href*=\"' + this.id() + '\"]');\n    }\n  }]);\n\n  return Path;\n}(Shape); // Define morphable array\nPath.prototype.MorphArray = PathArray; // Add parent method\n\nregisterMethods({\n  Container: {\n    // Create a wrapped path element\n    path: wrapWithAttrCheck(function (d) {\n      // make sure plot is called as a setter\n      return this.put(new Path()).plot(d || new PathArray());\n    })\n  }\n});\nregister(Path, 'Path');\n\nfunction array() {\n  return this._array || (this._array = new PointArray(this.attr('points')));\n} // Plot new path\n\nfunction plot(p) {\n  return p == null ? this.array() : this.clear().attr('points', typeof p === 'string' ? p : this._array = new PointArray(p));\n} // Clear array cache\n\nfunction clear() {\n  delete this._array;\n  return this;\n} // Move by left top corner\n\nfunction move(x, y) {\n  return this.attr('points', this.array().move(x, y));\n} // Set element size to given width and height\n\nfunction size(width, height) {\n  var p = proportionalSize(this, width, height);\n  return this.attr('points', this.array().size(p.width, p.height));\n}\n\nvar poly = ({\n\t__proto__: null,\n\tarray: array,\n\tplot: plot,\n\tclear: clear,\n\tmove: move,\n\tsize: size\n});\n\nvar Polygon =\n/*#__PURE__*/\nfunction (_Shape) {\n  _inherits(Polygon, _Shape);\n\n  // Initialize node\n  function Polygon(node) {\n    _classCallCheck(this, Polygon);\n\n    return _possibleConstructorReturn(this, _getPrototypeOf(Polygon).call(this, nodeOrNew('polygon', node), node));\n  }\n\n  return Polygon;\n}(Shape);\nregisterMethods({\n  Container: {\n    // Create a wrapped polygon element\n    polygon: wrapWithAttrCheck(function (p) {\n      // make sure plot is called as a setter\n      return this.put(new Polygon()).plot(p || new PointArray());\n    })\n  }\n});\nextend(Polygon, pointed);\nextend(Polygon, poly);\nregister(Polygon, 'Polygon');\n\nvar Polyline =\n/*#__PURE__*/\nfunction (_Shape) {\n  _inherits(Polyline, _Shape);\n\n  // Initialize node\n  function Polyline(node) {\n    _classCallCheck(this, Polyline);\n\n    return _possibleConstructorReturn(this, _getPrototypeOf(Polyline).call(this, nodeOrNew('polyline', node), node));\n  }\n\n  return Polyline;\n}(Shape);\nregisterMethods({\n  Container: {\n    // Create a wrapped polygon element\n    polyline: wrapWithAttrCheck(function (p) {\n      // make sure plot is called as a setter\n      return this.put(new Polyline()).plot(p || new PointArray());\n    })\n  }\n});\nextend(Polyline, pointed);\nextend(Polyline, poly);\nregister(Polyline, 'Polyline');\n\nvar Rect =\n/*#__PURE__*/\nfunction (_Shape) {\n  _inherits(Rect, _Shape);\n\n  // Initialize node\n  function Rect(node) {\n    _classCallCheck(this, Rect);\n\n    return _possibleConstructorReturn(this, _getPrototypeOf(Rect).call(this, nodeOrNew('rect', node), node));\n  }\n\n  return Rect;\n}(Shape);\nextend(Rect, {\n  rx: rx,\n  ry: ry\n});\nregisterMethods({\n  Container: {\n    // Create a rect element\n    rect: wrapWithAttrCheck(function (width, height) {\n      return this.put(new Rect()).size(width, height);\n    })\n  }\n});\nregister(Rect, 'Rect');\n\nvar max$3 = Math.max;\nvar min$4 = Math.min;\nvar MAX_SAFE_INTEGER$1 = 0x1FFFFFFFFFFFFF;\nvar MAXIMUM_ALLOWED_LENGTH_EXCEEDED = 'Maximum allowed length exceeded';\n\n// `Array.prototype.splice` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.splice\n// with adding support of @@species\n_export({ target: 'Array', proto: true, forced: !arrayMethodHasSpeciesSupport('splice') }, {\n  splice: function splice(start, deleteCount /* , ...items */) {\n    var O = toObject(this);\n    var len = toLength(O.length);\n    var actualStart = toAbsoluteIndex(start, len);\n    var argumentsLength = arguments.length;\n    var insertCount, actualDeleteCount, A, k, from, to;\n    if (argumentsLength === 0) {\n      insertCount = actualDeleteCount = 0;\n    } else if (argumentsLength === 1) {\n      insertCount = 0;\n      actualDeleteCount = len - actualStart;\n    } else {\n      insertCount = argumentsLength - 2;\n      actualDeleteCount = min$4(max$3(toInteger(deleteCount), 0), len - actualStart);\n    }\n    if (len + insertCount - actualDeleteCount > MAX_SAFE_INTEGER$1) {\n      throw TypeError(MAXIMUM_ALLOWED_LENGTH_EXCEEDED);\n    }\n    A = arraySpeciesCreate(O, actualDeleteCount);\n    for (k = 0; k < actualDeleteCount; k++) {\n      from = actualStart + k;\n      if (from in O) createProperty(A, k, O[from]);\n    }\n    A.length = actualDeleteCount;\n    if (insertCount < actualDeleteCount) {\n      for (k = actualStart; k < len - actualDeleteCount; k++) {\n        from = k + actualDeleteCount;\n        to = k + insertCount;\n        if (from in O) O[to] = O[from];\n        else delete O[to];\n      }\n      for (k = len; k > len - actualDeleteCount + insertCount; k--) delete O[k - 1];\n    } else if (insertCount > actualDeleteCount) {\n      for (k = len - actualDeleteCount; k > actualStart; k--) {\n        from = k + actualDeleteCount - 1;\n        to = k + insertCount - 1;\n        if (from in O) O[to] = O[from];\n        else delete O[to];\n      }\n    }\n    for (k = 0; k < insertCount; k++) {\n      O[k + actualStart] = arguments[k + 2];\n    }\n    O.length = len - actualDeleteCount + insertCount;\n    return A;\n  }\n});\n\nvar Queue =\n/*#__PURE__*/\nfunction () {\n  function Queue() {\n    _classCallCheck(this, Queue);\n\n    this._first = null;\n    this._last = null;\n  }\n\n  _createClass(Queue, [{\n    key: \"push\",\n    value: function push(value) {\n      // An item stores an id and the provided value\n      var item = value.next ? value : {\n        value: value,\n        next: null,\n        prev: null\n      }; // Deal with the queue being empty or populated\n\n      if (this._last) {\n        item.prev = this._last;\n        this._last.next = item;\n        this._last = item;\n      } else {\n        this._last = item;\n        this._first = item;\n      } // Return the current item\n\n\n      return item;\n    }\n  }, {\n    key: \"shift\",\n    value: function shift() {\n      // Check if we have a value\n      var remove = this._first;\n      if (!remove) return null; // If we do, remove it and relink things\n\n      this._first = remove.next;\n      if (this._first) this._first.prev = null;\n      this._last = this._first ? this._last : null;\n      return remove.value;\n    } // Shows us the first item in the list\n\n  }, {\n    key: \"first\",\n    value: function first() {\n      return this._first && this._first.value;\n    } // Shows us the last item in the list\n\n  }, {\n    key: \"last\",\n    value: function last() {\n      return this._last && this._last.value;\n    } // Removes the item that was returned from the push\n\n  }, {\n    key: \"remove\",\n    value: function remove(item) {\n      // Relink the previous item\n      if (item.prev) item.prev.next = item.next;\n      if (item.next) item.next.prev = item.prev;\n      if (item === this._last) this._last = item.prev;\n      if (item === this._first) this._first = item.next; // Invalidate item\n\n      item.prev = null;\n      item.next = null;\n    }\n  }]);\n\n  return Queue;\n}();\n\nvar Animator = {\n  nextDraw: null,\n  frames: new Queue(),\n  timeouts: new Queue(),\n  immediates: new Queue(),\n  timer: function timer() {\n    return globals.window.performance || globals.window.Date;\n  },\n  transforms: [],\n  frame: function frame(fn) {\n    // Store the node\n    var node = Animator.frames.push({\n      run: fn\n    }); // Request an animation frame if we don't have one\n\n    if (Animator.nextDraw === null) {\n      Animator.nextDraw = globals.window.requestAnimationFrame(Animator._draw);\n    } // Return the node so we can remove it easily\n\n\n    return node;\n  },\n  timeout: function timeout(fn, delay) {\n    delay = delay || 0; // Work out when the event should fire\n\n    var time = Animator.timer().now() + delay; // Add the timeout to the end of the queue\n\n    var node = Animator.timeouts.push({\n      run: fn,\n      time: time\n    }); // Request another animation frame if we need one\n\n    if (Animator.nextDraw === null) {\n      Animator.nextDraw = globals.window.requestAnimationFrame(Animator._draw);\n    }\n\n    return node;\n  },\n  immediate: function immediate(fn) {\n    // Add the immediate fn to the end of the queue\n    var node = Animator.immediates.push(fn); // Request another animation frame if we need one\n\n    if (Animator.nextDraw === null) {\n      Animator.nextDraw = globals.window.requestAnimationFrame(Animator._draw);\n    }\n\n    return node;\n  },\n  cancelFrame: function cancelFrame(node) {\n    node != null && Animator.frames.remove(node);\n  },\n  clearTimeout: function clearTimeout(node) {\n    node != null && Animator.timeouts.remove(node);\n  },\n  cancelImmediate: function cancelImmediate(node) {\n    node != null && Animator.immediates.remove(node);\n  },\n  _draw: function _draw(now) {\n    // Run all the timeouts we can run, if they are not ready yet, add them\n    // to the end of the queue immediately! (bad timeouts!!! [sarcasm])\n    var nextTimeout = null;\n    var lastTimeout = Animator.timeouts.last();\n\n    while (nextTimeout = Animator.timeouts.shift()) {\n      // Run the timeout if its time, or push it to the end\n      if (now >= nextTimeout.time) {\n        nextTimeout.run();\n      } else {\n        Animator.timeouts.push(nextTimeout);\n      } // If we hit the last item, we should stop shifting out more items\n\n\n      if (nextTimeout === lastTimeout) break;\n    } // Run all of the animation frames\n\n\n    var nextFrame = null;\n    var lastFrame = Animator.frames.last();\n\n    while (nextFrame !== lastFrame && (nextFrame = Animator.frames.shift())) {\n      nextFrame.run(now);\n    }\n\n    var nextImmediate = null;\n\n    while (nextImmediate = Animator.immediates.shift()) {\n      nextImmediate();\n    } // If we have remaining timeouts or frames, draw until we don't anymore\n\n\n    Animator.nextDraw = Animator.timeouts.first() || Animator.frames.first() ? globals.window.requestAnimationFrame(Animator._draw) : null;\n  }\n};\n\nvar makeSchedule = function makeSchedule(runnerInfo) {\n  var start = runnerInfo.start;\n  var duration = runnerInfo.runner.duration();\n  var end = start + duration;\n  return {\n    start: start,\n    duration: duration,\n    end: end,\n    runner: runnerInfo.runner\n  };\n};\n\nvar defaultSource = function defaultSource() {\n  var w = globals.window;\n  return (w.performance || w.Date).now();\n};\n\nvar Timeline =\n/*#__PURE__*/\nfunction (_EventTarget) {\n  _inherits(Timeline, _EventTarget);\n\n  // Construct a new timeline on the given element\n  function Timeline() {\n    var _this;\n\n    var timeSource = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultSource;\n\n    _classCallCheck(this, Timeline);\n\n    _this = _possibleConstructorReturn(this, _getPrototypeOf(Timeline).call(this));\n    _this._timeSource = timeSource; // Store the timing variables\n\n    _this._startTime = 0;\n    _this._speed = 1.0; // Determines how long a runner is hold in memory. Can be a dt or true/false\n\n    _this._persist = 0; // Keep track of the running animations and their starting parameters\n\n    _this._nextFrame = null;\n    _this._paused = true;\n    _this._runners = [];\n    _this._runnerIds = [];\n    _this._lastRunnerId = -1;\n    _this._time = 0;\n    _this._lastSourceTime = 0;\n    _this._lastStepTime = 0; // Make sure that step is always called in class context\n\n    _this._step = _this._stepFn.bind(_assertThisInitialized(_this), false);\n    _this._stepImmediate = _this._stepFn.bind(_assertThisInitialized(_this), true);\n    return _this;\n  } // schedules a runner on the timeline\n\n\n  _createClass(Timeline, [{\n    key: \"schedule\",\n    value: function schedule(runner, delay, when) {\n      if (runner == null) {\n        return this._runners.map(makeSchedule);\n      } // The start time for the next animation can either be given explicitly,\n      // derived from the current timeline time or it can be relative to the\n      // last start time to chain animations direclty\n\n\n      var absoluteStartTime = 0;\n      var endTime = this.getEndTime();\n      delay = delay || 0; // Work out when to start the animation\n\n      if (when == null || when === 'last' || when === 'after') {\n        // Take the last time and increment\n        absoluteStartTime = endTime;\n      } else if (when === 'absolute' || when === 'start') {\n        absoluteStartTime = delay;\n        delay = 0;\n      } else if (when === 'now') {\n        absoluteStartTime = this._time;\n      } else if (when === 'relative') {\n        var _runnerInfo = this._runners[runner.id];\n\n        if (_runnerInfo) {\n          absoluteStartTime = _runnerInfo.start + delay;\n          delay = 0;\n        }\n      } else {\n        throw new Error('Invalid value for the \"when\" parameter');\n      } // Manage runner\n\n\n      runner.unschedule();\n      runner.timeline(this);\n      var persist = runner.persist();\n      var runnerInfo = {\n        persist: persist === null ? this._persist : persist,\n        start: absoluteStartTime + delay,\n        runner: runner\n      };\n      this._lastRunnerId = runner.id;\n\n      this._runners.push(runnerInfo);\n\n      this._runners.sort(function (a, b) {\n        return a.start - b.start;\n      });\n\n      this._runnerIds = this._runners.map(function (info) {\n        return info.runner.id;\n      });\n\n      this.updateTime()._continue();\n\n      return this;\n    } // Remove the runner from this timeline\n\n  }, {\n    key: \"unschedule\",\n    value: function unschedule(runner) {\n      var index = this._runnerIds.indexOf(runner.id);\n\n      if (index < 0) return this;\n\n      this._runners.splice(index, 1);\n\n      this._runnerIds.splice(index, 1);\n\n      runner.timeline(null);\n      return this;\n    } // Calculates the end of the timeline\n\n  }, {\n    key: \"getEndTime\",\n    value: function getEndTime() {\n      var lastRunnerInfo = this._runners[this._runnerIds.indexOf(this._lastRunnerId)];\n\n      var lastDuration = lastRunnerInfo ? lastRunnerInfo.runner.duration() : 0;\n      var lastStartTime = lastRunnerInfo ? lastRunnerInfo.start : 0;\n      return lastStartTime + lastDuration;\n    }\n  }, {\n    key: \"getEndTimeOfTimeline\",\n    value: function getEndTimeOfTimeline() {\n      var lastEndTime = 0;\n\n      for (var i = 0; i < this._runners.length; i++) {\n        var runnerInfo = this._runners[i];\n        var duration = runnerInfo ? runnerInfo.runner.duration() : 0;\n        var startTime = runnerInfo ? runnerInfo.start : 0;\n        var endTime = startTime + duration;\n\n        if (endTime > lastEndTime) {\n          lastEndTime = endTime;\n        }\n      }\n\n      return lastEndTime;\n    } // Makes sure, that after pausing the time doesn't jump\n\n  }, {\n    key: \"updateTime\",\n    value: function updateTime() {\n      if (!this.active()) {\n        this._lastSourceTime = this._timeSource();\n      }\n\n      return this;\n    }\n  }, {\n    key: \"play\",\n    value: function play() {\n      // Now make sure we are not paused and continue the animation\n      this._paused = false;\n      return this.updateTime()._continue();\n    }\n  }, {\n    key: \"pause\",\n    value: function pause() {\n      this._paused = true;\n      return this._continue();\n    }\n  }, {\n    key: \"stop\",\n    value: function stop() {\n      // Go to start and pause\n      this.time(0);\n      return this.pause();\n    }\n  }, {\n    key: \"finish\",\n    value: function finish() {\n      // Go to end and pause\n      this.time(this.getEndTimeOfTimeline() + 1);\n      return this.pause();\n    }\n  }, {\n    key: \"speed\",\n    value: function speed(_speed) {\n      if (_speed == null) return this._speed;\n      this._speed = _speed;\n      return this;\n    }\n  }, {\n    key: \"reverse\",\n    value: function reverse(yes) {\n      var currentSpeed = this.speed();\n      if (yes == null) return this.speed(-currentSpeed);\n      var positive = Math.abs(currentSpeed);\n      return this.speed(yes ? positive : -positive);\n    }\n  }, {\n    key: \"seek\",\n    value: function seek(dt) {\n      return this.time(this._time + dt);\n    }\n  }, {\n    key: \"time\",\n    value: function time(_time) {\n      if (_time == null) return this._time;\n      this._time = _time;\n      return this._continue(true);\n    }\n  }, {\n    key: \"persist\",\n    value: function persist(dtOrForever) {\n      if (dtOrForever == null) return this._persist;\n      this._persist = dtOrForever;\n      return this;\n    }\n  }, {\n    key: \"source\",\n    value: function source(fn) {\n      if (fn == null) return this._timeSource;\n      this._timeSource = fn;\n      return this;\n    }\n  }, {\n    key: \"_stepFn\",\n    value: function _stepFn() {\n      var immediateStep = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n      // Get the time delta from the last time and update the time\n      var time = this._timeSource();\n\n      var dtSource = time - this._lastSourceTime;\n      if (immediateStep) dtSource = 0;\n      var dtTime = this._speed * dtSource + (this._time - this._lastStepTime);\n      this._lastSourceTime = time; // Only update the time if we use the timeSource.\n      // Otherwise use the current time\n\n      if (!immediateStep) {\n        // Update the time\n        this._time += dtTime;\n        this._time = this._time < 0 ? 0 : this._time;\n      }\n\n      this._lastStepTime = this._time;\n      this.fire('time', this._time); // This is for the case that the timeline was seeked so that the time\n      // is now before the startTime of the runner. Thats why we need to set\n      // the runner to position 0\n      // FIXME:\n      // However, reseting in insertion order leads to bugs. Considering the case,\n      // where 2 runners change the same attriute but in different times,\n      // reseting both of them will lead to the case where the later defined\n      // runner always wins the reset even if the other runner started earlier\n      // and therefore should win the attribute battle\n      // this can be solved by reseting them backwards\n\n      for (var k = this._runners.length; k--;) {\n        // Get and run the current runner and ignore it if its inactive\n        var runnerInfo = this._runners[k];\n        var runner = runnerInfo.runner; // Make sure that we give the actual difference\n        // between runner start time and now\n\n        var dtToStart = this._time - runnerInfo.start; // Dont run runner if not started yet\n        // and try to reset it\n\n        if (dtToStart <= 0) {\n          runner.reset();\n        }\n      } // Run all of the runners directly\n\n\n      var runnersLeft = false;\n\n      for (var i = 0, len = this._runners.length; i < len; i++) {\n        // Get and run the current runner and ignore it if its inactive\n        var _runnerInfo2 = this._runners[i];\n        var _runner = _runnerInfo2.runner;\n        var dt = dtTime; // Make sure that we give the actual difference\n        // between runner start time and now\n\n        var _dtToStart = this._time - _runnerInfo2.start; // Dont run runner if not started yet\n\n\n        if (_dtToStart <= 0) {\n          runnersLeft = true;\n          continue;\n        } else if (_dtToStart < dt) {\n          // Adjust dt to make sure that animation is on point\n          dt = _dtToStart;\n        }\n\n        if (!_runner.active()) continue; // If this runner is still going, signal that we need another animation\n        // frame, otherwise, remove the completed runner\n\n        var finished = _runner.step(dt).done;\n\n        if (!finished) {\n          runnersLeft = true; // continue\n        } else if (_runnerInfo2.persist !== true) {\n          // runner is finished. And runner might get removed\n          var endTime = _runner.duration() - _runner.time() + this._time;\n\n          if (endTime + _runnerInfo2.persist < this._time) {\n            // Delete runner and correct index\n            _runner.unschedule();\n\n            --i;\n            --len;\n          }\n        }\n      } // Basically: we continue when there are runners right from us in time\n      // when -->, and when runners are left from us when <--\n\n\n      if (runnersLeft && !(this._speed < 0 && this._time === 0) || this._runnerIds.length && this._speed < 0 && this._time > 0) {\n        this._continue();\n      } else {\n        this.pause();\n        this.fire('finished');\n      }\n\n      return this;\n    } // Checks if we are running and continues the animation\n\n  }, {\n    key: \"_continue\",\n    value: function _continue() {\n      var immediateStep = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n      Animator.cancelFrame(this._nextFrame);\n      this._nextFrame = null;\n      if (immediateStep) return this._stepImmediate();\n      if (this._paused) return this;\n      this._nextFrame = Animator.frame(this._step);\n      return this;\n    }\n  }, {\n    key: \"active\",\n    value: function active() {\n      return !!this._nextFrame;\n    }\n  }]);\n\n  return Timeline;\n}(EventTarget);\nregisterMethods({\n  Element: {\n    timeline: function timeline(_timeline) {\n      if (_timeline == null) {\n        this._timeline = this._timeline || new Timeline();\n        return this._timeline;\n      } else {\n        this._timeline = _timeline;\n        return this;\n      }\n    }\n  }\n});\n\nfunction ownKeys$2(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread$1(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$2(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$2(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nvar Runner =\n/*#__PURE__*/\nfunction (_EventTarget) {\n  _inherits(Runner, _EventTarget);\n\n  function Runner(options) {\n    var _this;\n\n    _classCallCheck(this, Runner);\n\n    _this = _possibleConstructorReturn(this, _getPrototypeOf(Runner).call(this)); // Store a unique id on the runner, so that we can identify it later\n\n    _this.id = Runner.id++; // Ensure a default value\n\n    options = options == null ? timeline.duration : options; // Ensure that we get a controller\n\n    options = typeof options === 'function' ? new Controller(options) : options; // Declare all of the variables\n\n    _this._element = null;\n    _this._timeline = null;\n    _this.done = false;\n    _this._queue = []; // Work out the stepper and the duration\n\n    _this._duration = typeof options === 'number' && options;\n    _this._isDeclarative = options instanceof Controller;\n    _this._stepper = _this._isDeclarative ? options : new Ease(); // We copy the current values from the timeline because they can change\n\n    _this._history = {}; // Store the state of the runner\n\n    _this.enabled = true;\n    _this._time = 0;\n    _this._lastTime = 0; // At creation, the runner is in reseted state\n\n    _this._reseted = true; // Save transforms applied to this runner\n\n    _this.transforms = new Matrix();\n    _this.transformId = 1; // Looping variables\n\n    _this._haveReversed = false;\n    _this._reverse = false;\n    _this._loopsDone = 0;\n    _this._swing = false;\n    _this._wait = 0;\n    _this._times = 1;\n    _this._frameId = null; // Stores how long a runner is stored after beeing done\n\n    _this._persist = _this._isDeclarative ? true : null;\n    return _this;\n  }\n  /*\r\n  Runner Definitions\r\n  ==================\r\n  These methods help us define the runtime behaviour of the Runner or they\r\n  help us make new runners from the current runner\r\n  */\n\n\n  _createClass(Runner, [{\n    key: \"element\",\n    value: function element(_element) {\n      if (_element == null) return this._element;\n      this._element = _element;\n\n      _element._prepareRunner();\n\n      return this;\n    }\n  }, {\n    key: \"timeline\",\n    value: function timeline(_timeline) {\n      // check explicitly for undefined so we can set the timeline to null\n      if (typeof _timeline === 'undefined') return this._timeline;\n      this._timeline = _timeline;\n      return this;\n    }\n  }, {\n    key: \"animate\",\n    value: function animate(duration, delay, when) {\n      var o = Runner.sanitise(duration, delay, when);\n      var runner = new Runner(o.duration);\n      if (this._timeline) runner.timeline(this._timeline);\n      if (this._element) runner.element(this._element);\n      return runner.loop(o).schedule(o.delay, o.when);\n    }\n  }, {\n    key: \"schedule\",\n    value: function schedule(timeline, delay, when) {\n      // The user doesn't need to pass a timeline if we already have one\n      if (!(timeline instanceof Timeline)) {\n        when = delay;\n        delay = timeline;\n        timeline = this.timeline();\n      } // If there is no timeline, yell at the user...\n\n\n      if (!timeline) {\n        throw Error('Runner cannot be scheduled without timeline');\n      } // Schedule the runner on the timeline provided\n\n\n      timeline.schedule(this, delay, when);\n      return this;\n    }\n  }, {\n    key: \"unschedule\",\n    value: function unschedule() {\n      var timeline = this.timeline();\n      timeline && timeline.unschedule(this);\n      return this;\n    }\n  }, {\n    key: \"loop\",\n    value: function loop(times, swing, wait) {\n      // Deal with the user passing in an object\n      if (_typeof(times) === 'object') {\n        swing = times.swing;\n        wait = times.wait;\n        times = times.times;\n      } // Sanitise the values and store them\n\n\n      this._times = times || Infinity;\n      this._swing = swing || false;\n      this._wait = wait || 0; // Allow true to be passed\n\n      if (this._times === true) {\n        this._times = Infinity;\n      }\n\n      return this;\n    }\n  }, {\n    key: \"delay\",\n    value: function delay(_delay) {\n      return this.animate(0, _delay);\n    }\n    /*\r\n    Basic Functionality\r\n    ===================\r\n    These methods allow us to attach basic functions to the runner directly\r\n    */\n\n  }, {\n    key: \"queue\",\n    value: function queue(initFn, runFn, retargetFn, isTransform) {\n      this._queue.push({\n        initialiser: initFn || noop,\n        runner: runFn || noop,\n        retarget: retargetFn,\n        isTransform: isTransform,\n        initialised: false,\n        finished: false\n      });\n\n      var timeline = this.timeline();\n      timeline && this.timeline()._continue();\n      return this;\n    }\n  }, {\n    key: \"during\",\n    value: function during(fn) {\n      return this.queue(null, fn);\n    }\n  }, {\n    key: \"after\",\n    value: function after(fn) {\n      return this.on('finished', fn);\n    }\n    /*\r\n    Runner animation methods\r\n    ========================\r\n    Control how the animation plays\r\n    */\n\n  }, {\n    key: \"time\",\n    value: function time(_time) {\n      if (_time == null) {\n        return this._time;\n      }\n\n      var dt = _time - this._time;\n      this.step(dt);\n      return this;\n    }\n  }, {\n    key: \"duration\",\n    value: function duration() {\n      return this._times * (this._wait + this._duration) - this._wait;\n    }\n  }, {\n    key: \"loops\",\n    value: function loops(p) {\n      var loopDuration = this._duration + this._wait;\n\n      if (p == null) {\n        var loopsDone = Math.floor(this._time / loopDuration);\n        var relativeTime = this._time - loopsDone * loopDuration;\n        var position = relativeTime / this._duration;\n        return Math.min(loopsDone + position, this._times);\n      }\n\n      var whole = Math.floor(p);\n      var partial = p % 1;\n      var time = loopDuration * whole + this._duration * partial;\n      return this.time(time);\n    }\n  }, {\n    key: \"persist\",\n    value: function persist(dtOrForever) {\n      if (dtOrForever == null) return this._persist;\n      this._persist = dtOrForever;\n      return this;\n    }\n  }, {\n    key: \"position\",\n    value: function position(p) {\n      // Get all of the variables we need\n      var x = this._time;\n      var d = this._duration;\n      var w = this._wait;\n      var t = this._times;\n      var s = this._swing;\n      var r = this._reverse;\n      var position;\n\n      if (p == null) {\n        /*\r\n        This function converts a time to a position in the range [0, 1]\r\n        The full explanation can be found in this desmos demonstration\r\n          https://www.desmos.com/calculator/u4fbavgche\r\n        The logic is slightly simplified here because we can use booleans\r\n        */\n        // Figure out the value without thinking about the start or end time\n        var f = function f(x) {\n          var swinging = s * Math.floor(x % (2 * (w + d)) / (w + d));\n          var backwards = swinging && !r || !swinging && r;\n          var uncliped = Math.pow(-1, backwards) * (x % (w + d)) / d + backwards;\n          var clipped = Math.max(Math.min(uncliped, 1), 0);\n          return clipped;\n        }; // Figure out the value by incorporating the start time\n\n\n        var endTime = t * (w + d) - w;\n        position = x <= 0 ? Math.round(f(1e-5)) : x < endTime ? f(x) : Math.round(f(endTime - 1e-5));\n        return position;\n      } // Work out the loops done and add the position to the loops done\n\n\n      var loopsDone = Math.floor(this.loops());\n      var swingForward = s && loopsDone % 2 === 0;\n      var forwards = swingForward && !r || r && swingForward;\n      position = loopsDone + (forwards ? p : 1 - p);\n      return this.loops(position);\n    }\n  }, {\n    key: \"progress\",\n    value: function progress(p) {\n      if (p == null) {\n        return Math.min(1, this._time / this.duration());\n      }\n\n      return this.time(p * this.duration());\n    }\n  }, {\n    key: \"step\",\n    value: function step(dt) {\n      // If we are inactive, this stepper just gets skipped\n      if (!this.enabled) return this; // Update the time and get the new position\n\n      dt = dt == null ? 16 : dt;\n      this._time += dt;\n      var position = this.position(); // Figure out if we need to run the stepper in this frame\n\n      var running = this._lastPosition !== position && this._time >= 0;\n      this._lastPosition = position; // Figure out if we just started\n\n      var duration = this.duration();\n      var justStarted = this._lastTime <= 0 && this._time > 0;\n      var justFinished = this._lastTime < duration && this._time >= duration;\n      this._lastTime = this._time;\n\n      if (justStarted) {\n        this.fire('start', this);\n      } // Work out if the runner is finished set the done flag here so animations\n      // know, that they are running in the last step (this is good for\n      // transformations which can be merged)\n\n\n      var declarative = this._isDeclarative;\n      this.done = !declarative && !justFinished && this._time >= duration; // Runner is running. So its not in reseted state anymore\n\n      this._reseted = false; // Call initialise and the run function\n\n      if (running || declarative) {\n        this._initialise(running); // clear the transforms on this runner so they dont get added again and again\n\n\n        this.transforms = new Matrix();\n\n        var converged = this._run(declarative ? dt : position);\n\n        this.fire('step', this);\n      } // correct the done flag here\n      // declaritive animations itself know when they converged\n\n\n      this.done = this.done || converged && declarative;\n\n      if (justFinished) {\n        this.fire('finished', this);\n      }\n\n      return this;\n    }\n  }, {\n    key: \"reset\",\n    value: function reset() {\n      if (this._reseted) return this;\n      this.time(0);\n      this._reseted = true;\n      return this;\n    }\n  }, {\n    key: \"finish\",\n    value: function finish() {\n      return this.step(Infinity);\n    }\n  }, {\n    key: \"reverse\",\n    value: function reverse(_reverse) {\n      this._reverse = _reverse == null ? !this._reverse : _reverse;\n      return this;\n    }\n  }, {\n    key: \"ease\",\n    value: function ease(fn) {\n      this._stepper = new Ease(fn);\n      return this;\n    }\n  }, {\n    key: \"active\",\n    value: function active(enabled) {\n      if (enabled == null) return this.enabled;\n      this.enabled = enabled;\n      return this;\n    }\n    /*\r\n    Private Methods\r\n    ===============\r\n    Methods that shouldn't be used externally\r\n    */\n    // Save a morpher to the morpher list so that we can retarget it later\n\n  }, {\n    key: \"_rememberMorpher\",\n    value: function _rememberMorpher(method, morpher) {\n      this._history[method] = {\n        morpher: morpher,\n        caller: this._queue[this._queue.length - 1]\n      }; // We have to resume the timeline in case a controller\n      // is already done without beeing ever run\n      // This can happen when e.g. this is done:\n      //    anim = el.animate(new SVG.Spring)\n      // and later\n      //    anim.move(...)\n\n      if (this._isDeclarative) {\n        var timeline = this.timeline();\n        timeline && timeline.play();\n      }\n    } // Try to set the target for a morpher if the morpher exists, otherwise\n    // do nothing and return false\n\n  }, {\n    key: \"_tryRetarget\",\n    value: function _tryRetarget(method, target, extra) {\n      if (this._history[method]) {\n        // if the last method wasnt even initialised, throw it away\n        if (!this._history[method].caller.initialised) {\n          var index = this._queue.indexOf(this._history[method].caller);\n\n          this._queue.splice(index, 1);\n\n          return false;\n        } // for the case of transformations, we use the special retarget function\n        // which has access to the outer scope\n\n\n        if (this._history[method].caller.retarget) {\n          this._history[method].caller.retarget(target, extra); // for everything else a simple morpher change is sufficient\n\n        } else {\n          this._history[method].morpher.to(target);\n        }\n\n        this._history[method].caller.finished = false;\n        var timeline = this.timeline();\n        timeline && timeline.play();\n        return true;\n      }\n\n      return false;\n    } // Run each initialise function in the runner if required\n\n  }, {\n    key: \"_initialise\",\n    value: function _initialise(running) {\n      // If we aren't running, we shouldn't initialise when not declarative\n      if (!running && !this._isDeclarative) return; // Loop through all of the initialisers\n\n      for (var i = 0, len = this._queue.length; i < len; ++i) {\n        // Get the current initialiser\n        var current = this._queue[i]; // Determine whether we need to initialise\n\n        var needsIt = this._isDeclarative || !current.initialised && running;\n        running = !current.finished; // Call the initialiser if we need to\n\n        if (needsIt && running) {\n          current.initialiser.call(this);\n          current.initialised = true;\n        }\n      }\n    } // Run each run function for the position or dt given\n\n  }, {\n    key: \"_run\",\n    value: function _run(positionOrDt) {\n      // Run all of the _queue directly\n      var allfinished = true;\n\n      for (var i = 0, len = this._queue.length; i < len; ++i) {\n        // Get the current function to run\n        var current = this._queue[i]; // Run the function if its not finished, we keep track of the finished\n        // flag for the sake of declarative _queue\n\n        var converged = current.runner.call(this, positionOrDt);\n        current.finished = current.finished || converged === true;\n        allfinished = allfinished && current.finished;\n      } // We report when all of the constructors are finished\n\n\n      return allfinished;\n    }\n  }, {\n    key: \"addTransform\",\n    value: function addTransform(transform, index) {\n      this.transforms.lmultiplyO(transform);\n      return this;\n    }\n  }, {\n    key: \"clearTransform\",\n    value: function clearTransform() {\n      this.transforms = new Matrix();\n      return this;\n    } // TODO: Keep track of all transformations so that deletion is faster\n\n  }, {\n    key: \"clearTransformsFromQueue\",\n    value: function clearTransformsFromQueue() {\n      if (!this.done || !this._timeline || !this._timeline._runnerIds.includes(this.id)) {\n        this._queue = this._queue.filter(function (item) {\n          return !item.isTransform;\n        });\n      }\n    }\n  }], [{\n    key: \"sanitise\",\n    value: function sanitise(duration, delay, when) {\n      // Initialise the default parameters\n      var times = 1;\n      var swing = false;\n      var wait = 0;\n      duration = duration || timeline.duration;\n      delay = delay || timeline.delay;\n      when = when || 'last'; // If we have an object, unpack the values\n\n      if (_typeof(duration) === 'object' && !(duration instanceof Stepper)) {\n        delay = duration.delay || delay;\n        when = duration.when || when;\n        swing = duration.swing || swing;\n        times = duration.times || times;\n        wait = duration.wait || wait;\n        duration = duration.duration || timeline.duration;\n      }\n\n      return {\n        duration: duration,\n        delay: delay,\n        swing: swing,\n        times: times,\n        wait: wait,\n        when: when\n      };\n    }\n  }]);\n\n  return Runner;\n}(EventTarget);\nRunner.id = 0;\n\nvar FakeRunner =\n/*#__PURE__*/\nfunction () {\n  function FakeRunner() {\n    var transforms = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : new Matrix();\n    var id = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : -1;\n    var done = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n\n    _classCallCheck(this, FakeRunner);\n\n    this.transforms = transforms;\n    this.id = id;\n    this.done = done;\n  }\n\n  _createClass(FakeRunner, [{\n    key: \"clearTransformsFromQueue\",\n    value: function clearTransformsFromQueue() {}\n  }]);\n\n  return FakeRunner;\n}();\n\nextend([Runner, FakeRunner], {\n  mergeWith: function mergeWith(runner) {\n    return new FakeRunner(runner.transforms.lmultiply(this.transforms), runner.id);\n  }\n}); // FakeRunner.emptyRunner = new FakeRunner()\n\nvar lmultiply = function lmultiply(last, curr) {\n  return last.lmultiplyO(curr);\n};\n\nvar getRunnerTransform = function getRunnerTransform(runner) {\n  return runner.transforms;\n};\n\nfunction mergeTransforms() {\n  // Find the matrix to apply to the element and apply it\n  var runners = this._transformationRunners.runners;\n  var netTransform = runners.map(getRunnerTransform).reduce(lmultiply, new Matrix());\n  this.transform(netTransform);\n\n  this._transformationRunners.merge();\n\n  if (this._transformationRunners.length() === 1) {\n    this._frameId = null;\n  }\n}\n\nvar RunnerArray =\n/*#__PURE__*/\nfunction () {\n  function RunnerArray() {\n    _classCallCheck(this, RunnerArray);\n\n    this.runners = [];\n    this.ids = [];\n  }\n\n  _createClass(RunnerArray, [{\n    key: \"add\",\n    value: function add(runner) {\n      if (this.runners.includes(runner)) return;\n      var id = runner.id + 1;\n      this.runners.push(runner);\n      this.ids.push(id);\n      return this;\n    }\n  }, {\n    key: \"getByID\",\n    value: function getByID(id) {\n      return this.runners[this.ids.indexOf(id + 1)];\n    }\n  }, {\n    key: \"remove\",\n    value: function remove(id) {\n      var index = this.ids.indexOf(id + 1);\n      this.ids.splice(index, 1);\n      this.runners.splice(index, 1);\n      return this;\n    }\n  }, {\n    key: \"merge\",\n    value: function merge() {\n      var _this2 = this;\n\n      var lastRunner = null;\n      this.runners.forEach(function (runner, i) {\n        var condition = lastRunner && runner.done && lastRunner.done // don't merge runner when persisted on timeline\n        && (!runner._timeline || !runner._timeline._runnerIds.includes(runner.id)) && (!lastRunner._timeline || !lastRunner._timeline._runnerIds.includes(lastRunner.id));\n\n        if (condition) {\n          // the +1 happens in the function\n          _this2.remove(runner.id);\n\n          _this2.edit(lastRunner.id, runner.mergeWith(lastRunner));\n        }\n\n        lastRunner = runner;\n      });\n      return this;\n    }\n  }, {\n    key: \"edit\",\n    value: function edit(id, newRunner) {\n      var index = this.ids.indexOf(id + 1);\n      this.ids.splice(index, 1, id + 1);\n      this.runners.splice(index, 1, newRunner);\n      return this;\n    }\n  }, {\n    key: \"length\",\n    value: function length() {\n      return this.ids.length;\n    }\n  }, {\n    key: \"clearBefore\",\n    value: function clearBefore(id) {\n      var deleteCnt = this.ids.indexOf(id + 1) || 1;\n      this.ids.splice(0, deleteCnt, 0);\n      this.runners.splice(0, deleteCnt, new FakeRunner()).forEach(function (r) {\n        return r.clearTransformsFromQueue();\n      });\n      return this;\n    }\n  }]);\n\n  return RunnerArray;\n}();\n\nregisterMethods({\n  Element: {\n    animate: function animate(duration, delay, when) {\n      var o = Runner.sanitise(duration, delay, when);\n      var timeline = this.timeline();\n      return new Runner(o.duration).loop(o).element(this).timeline(timeline.play()).schedule(o.delay, o.when);\n    },\n    delay: function delay(by, when) {\n      return this.animate(0, by, when);\n    },\n    // this function searches for all runners on the element and deletes the ones\n    // which run before the current one. This is because absolute transformations\n    // overwfrite anything anyway so there is no need to waste time computing\n    // other runners\n    _clearTransformRunnersBefore: function _clearTransformRunnersBefore(currentRunner) {\n      this._transformationRunners.clearBefore(currentRunner.id);\n    },\n    _currentTransform: function _currentTransform(current) {\n      return this._transformationRunners.runners // we need the equal sign here to make sure, that also transformations\n      // on the same runner which execute before the current transformation are\n      // taken into account\n      .filter(function (runner) {\n        return runner.id <= current.id;\n      }).map(getRunnerTransform).reduce(lmultiply, new Matrix());\n    },\n    _addRunner: function _addRunner(runner) {\n      this._transformationRunners.add(runner); // Make sure that the runner merge is executed at the very end of\n      // all Animator functions. Thats why we use immediate here to execute\n      // the merge right after all frames are run\n\n\n      Animator.cancelImmediate(this._frameId);\n      this._frameId = Animator.immediate(mergeTransforms.bind(this));\n    },\n    _prepareRunner: function _prepareRunner() {\n      if (this._frameId == null) {\n        this._transformationRunners = new RunnerArray().add(new FakeRunner(new Matrix(this)));\n      }\n    }\n  }\n});\nextend(Runner, {\n  attr: function attr(a, v) {\n    return this.styleAttr('attr', a, v);\n  },\n  // Add animatable styles\n  css: function css(s, v) {\n    return this.styleAttr('css', s, v);\n  },\n  styleAttr: function styleAttr(type, name, val) {\n    // apply attributes individually\n    if (_typeof(name) === 'object') {\n      for (var key in name) {\n        this.styleAttr(type, key, name[key]);\n      }\n\n      return this;\n    }\n\n    var morpher = new Morphable(this._stepper).to(val);\n    this.queue(function () {\n      morpher = morpher.from(this.element()[type](name));\n    }, function (pos) {\n      this.element()[type](name, morpher.at(pos));\n      return morpher.done();\n    });\n    return this;\n  },\n  zoom: function zoom(level, point) {\n    if (this._tryRetarget('zoom', to, point)) return this;\n    var morpher = new Morphable(this._stepper).to(new SVGNumber(level));\n    this.queue(function () {\n      morpher = morpher.from(this.element().zoom());\n    }, function (pos) {\n      this.element().zoom(morpher.at(pos), point);\n      return morpher.done();\n    }, function (newLevel, newPoint) {\n      point = newPoint;\n      morpher.to(newLevel);\n    });\n\n    this._rememberMorpher('zoom', morpher);\n\n    return this;\n  },\n\n  /**\r\n   ** absolute transformations\r\n   **/\n  //\n  // M v -----|-----(D M v = F v)------|----->  T v\n  //\n  // 1. define the final state (T) and decompose it (once)\n  //    t = [tx, ty, the, lam, sy, sx]\n  // 2. on every frame: pull the current state of all previous transforms\n  //    (M - m can change)\n  //   and then write this as m = [tx0, ty0, the0, lam0, sy0, sx0]\n  // 3. Find the interpolated matrix F(pos) = m + pos * (t - m)\n  //   - Note F(0) = M\n  //   - Note F(1) = T\n  // 4. Now you get the delta matrix as a result: D = F * inv(M)\n  transform: function transform(transforms, relative, affine) {\n    // If we have a declarative function, we should retarget it if possible\n    relative = transforms.relative || relative;\n\n    if (this._isDeclarative && !relative && this._tryRetarget('transform', transforms)) {\n      return this;\n    } // Parse the parameters\n\n\n    var isMatrix = Matrix.isMatrixLike(transforms);\n    affine = transforms.affine != null ? transforms.affine : affine != null ? affine : !isMatrix; // Create a morepher and set its type\n\n    var morpher = new Morphable(this._stepper).type(affine ? TransformBag : Matrix);\n    var origin;\n    var element;\n    var current;\n    var currentAngle;\n    var startTransform;\n\n    function setup() {\n      // make sure element and origin is defined\n      element = element || this.element();\n      origin = origin || getOrigin(transforms, element);\n      startTransform = new Matrix(relative ? undefined : element); // add the runner to the element so it can merge transformations\n\n      element._addRunner(this); // Deactivate all transforms that have run so far if we are absolute\n\n\n      if (!relative) {\n        element._clearTransformRunnersBefore(this);\n      }\n    }\n\n    function run(pos) {\n      // clear all other transforms before this in case something is saved\n      // on this runner. We are absolute. We dont need these!\n      if (!relative) this.clearTransform();\n\n      var _transform = new Point(origin).transform(element._currentTransform(this)),\n          x = _transform.x,\n          y = _transform.y;\n\n      var target = new Matrix(_objectSpread$1({}, transforms, {\n        origin: [x, y]\n      }));\n      var start = this._isDeclarative && current ? current : startTransform;\n\n      if (affine) {\n        target = target.decompose(x, y);\n        start = start.decompose(x, y); // Get the current and target angle as it was set\n\n        var rTarget = target.rotate;\n        var rCurrent = start.rotate; // Figure out the shortest path to rotate directly\n\n        var possibilities = [rTarget - 360, rTarget, rTarget + 360];\n        var distances = possibilities.map(function (a) {\n          return Math.abs(a - rCurrent);\n        });\n        var shortest = Math.min.apply(Math, _toConsumableArray(distances));\n        var index = distances.indexOf(shortest);\n        target.rotate = possibilities[index];\n      }\n\n      if (relative) {\n        // we have to be careful here not to overwrite the rotation\n        // with the rotate method of Matrix\n        if (!isMatrix) {\n          target.rotate = transforms.rotate || 0;\n        }\n\n        if (this._isDeclarative && currentAngle) {\n          start.rotate = currentAngle;\n        }\n      }\n\n      morpher.from(start);\n      morpher.to(target);\n      var affineParameters = morpher.at(pos);\n      currentAngle = affineParameters.rotate;\n      current = new Matrix(affineParameters);\n      this.addTransform(current);\n\n      element._addRunner(this);\n\n      return morpher.done();\n    }\n\n    function retarget(newTransforms) {\n      // only get a new origin if it changed since the last call\n      if ((newTransforms.origin || 'center').toString() !== (transforms.origin || 'center').toString()) {\n        origin = getOrigin(transforms, element);\n      } // overwrite the old transformations with the new ones\n\n\n      transforms = _objectSpread$1({}, newTransforms, {\n        origin: origin\n      });\n    }\n\n    this.queue(setup, run, retarget, true);\n    this._isDeclarative && this._rememberMorpher('transform', morpher);\n    return this;\n  },\n  // Animatable x-axis\n  x: function x(_x, relative) {\n    return this._queueNumber('x', _x);\n  },\n  // Animatable y-axis\n  y: function y(_y) {\n    return this._queueNumber('y', _y);\n  },\n  dx: function dx() {\n    var x = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n    return this._queueNumberDelta('x', x);\n  },\n  dy: function dy() {\n    var y = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n    return this._queueNumberDelta('y', y);\n  },\n  dmove: function dmove(x, y) {\n    return this.dx(x).dy(y);\n  },\n  _queueNumberDelta: function _queueNumberDelta(method, to) {\n    to = new SVGNumber(to); // Try to change the target if we have this method already registerd\n\n    if (this._tryRetarget(method, to)) return this; // Make a morpher and queue the animation\n\n    var morpher = new Morphable(this._stepper).to(to);\n    var from = null;\n    this.queue(function () {\n      from = this.element()[method]();\n      morpher.from(from);\n      morpher.to(from + to);\n    }, function (pos) {\n      this.element()[method](morpher.at(pos));\n      return morpher.done();\n    }, function (newTo) {\n      morpher.to(from + new SVGNumber(newTo));\n    }); // Register the morpher so that if it is changed again, we can retarget it\n\n    this._rememberMorpher(method, morpher);\n\n    return this;\n  },\n  _queueObject: function _queueObject(method, to) {\n    // Try to change the target if we have this method already registerd\n    if (this._tryRetarget(method, to)) return this; // Make a morpher and queue the animation\n\n    var morpher = new Morphable(this._stepper).to(to);\n    this.queue(function () {\n      morpher.from(this.element()[method]());\n    }, function (pos) {\n      this.element()[method](morpher.at(pos));\n      return morpher.done();\n    }); // Register the morpher so that if it is changed again, we can retarget it\n\n    this._rememberMorpher(method, morpher);\n\n    return this;\n  },\n  _queueNumber: function _queueNumber(method, value) {\n    return this._queueObject(method, new SVGNumber(value));\n  },\n  // Animatable center x-axis\n  cx: function cx(x) {\n    return this._queueNumber('cx', x);\n  },\n  // Animatable center y-axis\n  cy: function cy(y) {\n    return this._queueNumber('cy', y);\n  },\n  // Add animatable move\n  move: function move(x, y) {\n    return this.x(x).y(y);\n  },\n  // Add animatable center\n  center: function center(x, y) {\n    return this.cx(x).cy(y);\n  },\n  // Add animatable size\n  size: function size(width, height) {\n    // animate bbox based size for all other elements\n    var box;\n\n    if (!width || !height) {\n      box = this._element.bbox();\n    }\n\n    if (!width) {\n      width = box.width / box.height * height;\n    }\n\n    if (!height) {\n      height = box.height / box.width * width;\n    }\n\n    return this.width(width).height(height);\n  },\n  // Add animatable width\n  width: function width(_width) {\n    return this._queueNumber('width', _width);\n  },\n  // Add animatable height\n  height: function height(_height) {\n    return this._queueNumber('height', _height);\n  },\n  // Add animatable plot\n  plot: function plot(a, b, c, d) {\n    // Lines can be plotted with 4 arguments\n    if (arguments.length === 4) {\n      return this.plot([a, b, c, d]);\n    }\n\n    if (this._tryRetarget('plot', a)) return this;\n    var morpher = new Morphable(this._stepper).type(this._element.MorphArray).to(a);\n    this.queue(function () {\n      morpher.from(this._element.array());\n    }, function (pos) {\n      this._element.plot(morpher.at(pos));\n\n      return morpher.done();\n    });\n\n    this._rememberMorpher('plot', morpher);\n\n    return this;\n  },\n  // Add leading method\n  leading: function leading(value) {\n    return this._queueNumber('leading', value);\n  },\n  // Add animatable viewbox\n  viewbox: function viewbox(x, y, width, height) {\n    return this._queueObject('viewbox', new Box(x, y, width, height));\n  },\n  update: function update(o) {\n    if (_typeof(o) !== 'object') {\n      return this.update({\n        offset: arguments[0],\n        color: arguments[1],\n        opacity: arguments[2]\n      });\n    }\n\n    if (o.opacity != null) this.attr('stop-opacity', o.opacity);\n    if (o.color != null) this.attr('stop-color', o.color);\n    if (o.offset != null) this.attr('offset', o.offset);\n    return this;\n  }\n});\nextend(Runner, {\n  rx: rx,\n  ry: ry,\n  from: from,\n  to: to\n});\nregister(Runner, 'Runner');\n\nvar Svg =\n/*#__PURE__*/\nfunction (_Container) {\n  _inherits(Svg, _Container);\n\n  function Svg(node) {\n    var _this;\n\n    _classCallCheck(this, Svg);\n\n    _this = _possibleConstructorReturn(this, _getPrototypeOf(Svg).call(this, nodeOrNew('svg', node), node));\n\n    _this.namespace();\n\n    return _this;\n  }\n\n  _createClass(Svg, [{\n    key: \"isRoot\",\n    value: function isRoot() {\n      return !this.node.parentNode || !(this.node.parentNode instanceof globals.window.SVGElement) || this.node.parentNode.nodeName === '#document';\n    } // Check if this is a root svg\n    // If not, call docs from this element\n\n  }, {\n    key: \"root\",\n    value: function root() {\n      if (this.isRoot()) return this;\n      return _get(_getPrototypeOf(Svg.prototype), \"root\", this).call(this);\n    } // Add namespaces\n\n  }, {\n    key: \"namespace\",\n    value: function namespace() {\n      if (!this.isRoot()) return this.root().namespace();\n      return this.attr({\n        xmlns: ns,\n        version: '1.1'\n      }).attr('xmlns:xlink', xlink, xmlns).attr('xmlns:svgjs', svgjs, xmlns);\n    } // Creates and returns defs element\n\n  }, {\n    key: \"defs\",\n    value: function defs() {\n      if (!this.isRoot()) return this.root().defs();\n      return adopt(this.node.querySelector('defs')) || this.put(new Defs());\n    } // custom parent method\n\n  }, {\n    key: \"parent\",\n    value: function parent(type) {\n      if (this.isRoot()) {\n        return this.node.parentNode.nodeName === '#document' ? null : adopt(this.node.parentNode);\n      }\n\n      return _get(_getPrototypeOf(Svg.prototype), \"parent\", this).call(this, type);\n    }\n  }, {\n    key: \"clear\",\n    value: function clear() {\n      // remove children\n      while (this.node.hasChildNodes()) {\n        this.node.removeChild(this.node.lastChild);\n      } // remove defs reference\n\n\n      delete this._defs;\n      return this;\n    }\n  }]);\n\n  return Svg;\n}(Container);\nregisterMethods({\n  Container: {\n    // Create nested svg document\n    nested: wrapWithAttrCheck(function () {\n      return this.put(new Svg());\n    })\n  }\n});\nregister(Svg, 'Svg', true);\n\nvar _Symbol =\n/*#__PURE__*/\nfunction (_Container) {\n  _inherits(_Symbol, _Container);\n\n  // Initialize node\n  function _Symbol(node) {\n    _classCallCheck(this, _Symbol);\n\n    return _possibleConstructorReturn(this, _getPrototypeOf(_Symbol).call(this, nodeOrNew('symbol', node), node));\n  }\n\n  return _Symbol;\n}(Container);\nregisterMethods({\n  Container: {\n    symbol: wrapWithAttrCheck(function () {\n      return this.put(new _Symbol());\n    })\n  }\n});\nregister(_Symbol, 'Symbol');\n\nfunction plain(text) {\n  // clear if build mode is disabled\n  if (this._build === false) {\n    this.clear();\n  } // create text node\n\n\n  this.node.appendChild(globals.document.createTextNode(text));\n  return this;\n} // Get length of text element\n\nfunction length() {\n  return this.node.getComputedTextLength();\n}\n\nvar textable = ({\n\t__proto__: null,\n\tplain: plain,\n\tlength: length\n});\n\nvar Text =\n/*#__PURE__*/\nfunction (_Shape) {\n  _inherits(Text, _Shape);\n\n  // Initialize node\n  function Text(node) {\n    var _this;\n\n    _classCallCheck(this, Text);\n\n    _this = _possibleConstructorReturn(this, _getPrototypeOf(Text).call(this, nodeOrNew('text', node), node));\n    _this.dom.leading = new SVGNumber(1.3); // store leading value for rebuilding\n\n    _this._rebuild = true; // enable automatic updating of dy values\n\n    _this._build = false; // disable build mode for adding multiple lines\n\n    return _this;\n  } // Move over x-axis\n  // Text is moved its bounding box\n  // text-anchor does NOT matter\n\n\n  _createClass(Text, [{\n    key: \"x\",\n    value: function x(_x) {\n      var box = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.bbox();\n\n      if (_x == null) {\n        return box.x;\n      }\n\n      return this.attr('x', this.attr('x') + _x - box.x);\n    } // Move over y-axis\n\n  }, {\n    key: \"y\",\n    value: function y(_y) {\n      var box = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.bbox();\n\n      if (_y == null) {\n        return box.y;\n      }\n\n      return this.attr('y', this.attr('y') + _y - box.y);\n    }\n  }, {\n    key: \"move\",\n    value: function move(x, y) {\n      var box = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : this.bbox();\n      return this.x(x, box).y(y, box);\n    } // Move center over x-axis\n\n  }, {\n    key: \"cx\",\n    value: function cx(x) {\n      var box = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.bbox();\n\n      if (x == null) {\n        return box.cx;\n      }\n\n      return this.attr('x', this.attr('x') + x - box.cx);\n    } // Move center over y-axis\n\n  }, {\n    key: \"cy\",\n    value: function cy(y) {\n      var box = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.bbox();\n\n      if (y == null) {\n        return box.cy;\n      }\n\n      return this.attr('y', this.attr('y') + y - box.cy);\n    }\n  }, {\n    key: \"center\",\n    value: function center(x, y) {\n      var box = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : this.bbox();\n      return this.cx(x, box).cy(y, box);\n    } // Set the text content\n\n  }, {\n    key: \"text\",\n    value: function text(_text) {\n      // act as getter\n      if (_text === undefined) {\n        var children = this.node.childNodes;\n        var firstLine = 0;\n        _text = '';\n\n        for (var i = 0, len = children.length; i < len; ++i) {\n          // skip textPaths - they are no lines\n          if (children[i].nodeName === 'textPath') {\n            if (i === 0) firstLine = 1;\n            continue;\n          } // add newline if its not the first child and newLined is set to true\n\n\n          if (i !== firstLine && children[i].nodeType !== 3 && adopt(children[i]).dom.newLined === true) {\n            _text += '\\n';\n          } // add content of this node\n\n\n          _text += children[i].textContent;\n        }\n\n        return _text;\n      } // remove existing content\n\n\n      this.clear().build(true);\n\n      if (typeof _text === 'function') {\n        // call block\n        _text.call(this, this);\n      } else {\n        // store text and make sure text is not blank\n        _text = _text.split('\\n'); // build new lines\n\n        for (var j = 0, jl = _text.length; j < jl; j++) {\n          this.tspan(_text[j]).newLine();\n        }\n      } // disable build mode and rebuild lines\n\n\n      return this.build(false).rebuild();\n    } // Set / get leading\n\n  }, {\n    key: \"leading\",\n    value: function leading(value) {\n      // act as getter\n      if (value == null) {\n        return this.dom.leading;\n      } // act as setter\n\n\n      this.dom.leading = new SVGNumber(value);\n      return this.rebuild();\n    } // Rebuild appearance type\n\n  }, {\n    key: \"rebuild\",\n    value: function rebuild(_rebuild) {\n      // store new rebuild flag if given\n      if (typeof _rebuild === 'boolean') {\n        this._rebuild = _rebuild;\n      } // define position of all lines\n\n\n      if (this._rebuild) {\n        var self = this;\n        var blankLineOffset = 0;\n        var leading = this.dom.leading;\n        this.each(function () {\n          var fontSize = globals.window.getComputedStyle(this.node).getPropertyValue('font-size');\n          var dy = leading * new SVGNumber(fontSize);\n\n          if (this.dom.newLined) {\n            this.attr('x', self.attr('x'));\n\n            if (this.text() === '\\n') {\n              blankLineOffset += dy;\n            } else {\n              this.attr('dy', dy + blankLineOffset);\n              blankLineOffset = 0;\n            }\n          }\n        });\n        this.fire('rebuild');\n      }\n\n      return this;\n    } // Enable / disable build mode\n\n  }, {\n    key: \"build\",\n    value: function build(_build) {\n      this._build = !!_build;\n      return this;\n    } // overwrite method from parent to set data properly\n\n  }, {\n    key: \"setData\",\n    value: function setData(o) {\n      this.dom = o;\n      this.dom.leading = new SVGNumber(o.leading || 1.3);\n      return this;\n    }\n  }]);\n\n  return Text;\n}(Shape);\nextend(Text, textable);\nregisterMethods({\n  Container: {\n    // Create text element\n    text: wrapWithAttrCheck(function (text) {\n      return this.put(new Text()).text(text);\n    }),\n    // Create plain text element\n    plain: wrapWithAttrCheck(function (text) {\n      return this.put(new Text()).plain(text);\n    })\n  }\n});\nregister(Text, 'Text');\n\nvar Tspan =\n/*#__PURE__*/\nfunction (_Text) {\n  _inherits(Tspan, _Text);\n\n  // Initialize node\n  function Tspan(node) {\n    _classCallCheck(this, Tspan);\n\n    return _possibleConstructorReturn(this, _getPrototypeOf(Tspan).call(this, nodeOrNew('tspan', node), node));\n  } // Set text content\n\n\n  _createClass(Tspan, [{\n    key: \"text\",\n    value: function text(_text) {\n      if (_text == null) return this.node.textContent + (this.dom.newLined ? '\\n' : '');\n      typeof _text === 'function' ? _text.call(this, this) : this.plain(_text);\n      return this;\n    } // Shortcut dx\n\n  }, {\n    key: \"dx\",\n    value: function dx(_dx) {\n      return this.attr('dx', _dx);\n    } // Shortcut dy\n\n  }, {\n    key: \"dy\",\n    value: function dy(_dy) {\n      return this.attr('dy', _dy);\n    }\n  }, {\n    key: \"x\",\n    value: function x(_x) {\n      return this.attr('x', _x);\n    }\n  }, {\n    key: \"y\",\n    value: function y(_y) {\n      return this.attr('x', _y);\n    }\n  }, {\n    key: \"move\",\n    value: function move(x, y) {\n      return this.x(x).y(y);\n    } // Create new line\n\n  }, {\n    key: \"newLine\",\n    value: function newLine() {\n      // fetch text parent\n      var t = this.parent(Text); // mark new line\n\n      this.dom.newLined = true;\n      var fontSize = globals.window.getComputedStyle(this.node).getPropertyValue('font-size');\n      var dy = t.dom.leading * new SVGNumber(fontSize); // apply new position\n\n      return this.dy(dy).attr('x', t.x());\n    }\n  }]);\n\n  return Tspan;\n}(Text);\nextend(Tspan, textable);\nregisterMethods({\n  Tspan: {\n    tspan: wrapWithAttrCheck(function (text) {\n      var tspan = new Tspan(); // clear if build mode is disabled\n\n      if (!this._build) {\n        this.clear();\n      } // add new tspan\n\n\n      this.node.appendChild(tspan.node);\n      return tspan.text(text);\n    })\n  }\n});\nregister(Tspan, 'Tspan');\n\nvar ClipPath =\n/*#__PURE__*/\nfunction (_Container) {\n  _inherits(ClipPath, _Container);\n\n  function ClipPath(node) {\n    _classCallCheck(this, ClipPath);\n\n    return _possibleConstructorReturn(this, _getPrototypeOf(ClipPath).call(this, nodeOrNew('clipPath', node), node));\n  } // Unclip all clipped elements and remove itself\n\n\n  _createClass(ClipPath, [{\n    key: \"remove\",\n    value: function remove() {\n      // unclip all targets\n      this.targets().forEach(function (el) {\n        el.unclip();\n      }); // remove clipPath from parent\n\n      return _get(_getPrototypeOf(ClipPath.prototype), \"remove\", this).call(this);\n    }\n  }, {\n    key: \"targets\",\n    value: function targets() {\n      return baseFind('svg [clip-path*=\"' + this.id() + '\"]');\n    }\n  }]);\n\n  return ClipPath;\n}(Container);\nregisterMethods({\n  Container: {\n    // Create clipping element\n    clip: wrapWithAttrCheck(function () {\n      return this.defs().put(new ClipPath());\n    })\n  },\n  Element: {\n    // Distribute clipPath to svg element\n    clipWith: function clipWith(element) {\n      // use given clip or create a new one\n      var clipper = element instanceof ClipPath ? element : this.parent().clip().add(element); // apply mask\n\n      return this.attr('clip-path', 'url(\"#' + clipper.id() + '\")');\n    },\n    // Unclip element\n    unclip: function unclip() {\n      return this.attr('clip-path', null);\n    },\n    clipper: function clipper() {\n      return this.reference('clip-path');\n    }\n  }\n});\nregister(ClipPath, 'ClipPath');\n\nvar ForeignObject =\n/*#__PURE__*/\nfunction (_Element) {\n  _inherits(ForeignObject, _Element);\n\n  function ForeignObject(node) {\n    _classCallCheck(this, ForeignObject);\n\n    return _possibleConstructorReturn(this, _getPrototypeOf(ForeignObject).call(this, nodeOrNew('foreignObject', node), node));\n  }\n\n  return ForeignObject;\n}(Element);\nregisterMethods({\n  Container: {\n    foreignObject: wrapWithAttrCheck(function (width, height) {\n      return this.put(new ForeignObject()).size(width, height);\n    })\n  }\n});\nregister(ForeignObject, 'ForeignObject');\n\nvar G =\n/*#__PURE__*/\nfunction (_Container) {\n  _inherits(G, _Container);\n\n  function G(node) {\n    _classCallCheck(this, G);\n\n    return _possibleConstructorReturn(this, _getPrototypeOf(G).call(this, nodeOrNew('g', node), node));\n  }\n\n  _createClass(G, [{\n    key: \"x\",\n    value: function x(_x) {\n      var box = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.bbox();\n      if (_x == null) return box.x;\n      return this.move(_x, box.y, box);\n    }\n  }, {\n    key: \"y\",\n    value: function y(_y) {\n      var box = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.bbox();\n      if (_y == null) return box.y;\n      return this.move(box.x, _y, box);\n    }\n  }, {\n    key: \"move\",\n    value: function move() {\n      var x = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n      var y = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n      var box = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : this.bbox();\n      var dx = x - box.x;\n      var dy = y - box.y;\n      return this.dmove(dx, dy);\n    }\n  }, {\n    key: \"dx\",\n    value: function dx(_dx) {\n      return this.dmove(_dx, 0);\n    }\n  }, {\n    key: \"dy\",\n    value: function dy(_dy) {\n      return this.dmove(0, _dy);\n    }\n  }, {\n    key: \"dmove\",\n    value: function dmove(dx, dy) {\n      this.children().forEach(function (child, i) {\n        // Get the childs bbox\n        var bbox = child.bbox(); // Get childs matrix\n\n        var m = new Matrix(child); // Translate childs matrix by amount and\n        // transform it back into parents space\n\n        var matrix = m.translate(dx, dy).transform(m.inverse()); // Calculate new x and y from old box\n\n        var p = new Point(bbox.x, bbox.y).transform(matrix); // Move element\n\n        child.move(p.x, p.y);\n      });\n      return this;\n    }\n  }, {\n    key: \"width\",\n    value: function width(_width) {\n      var box = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.bbox();\n      if (_width == null) return box.width;\n      return this.size(_width, box.height, box);\n    }\n  }, {\n    key: \"height\",\n    value: function height(_height) {\n      var box = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.bbox();\n      if (_height == null) return box.height;\n      return this.size(box.width, _height, box);\n    }\n  }, {\n    key: \"size\",\n    value: function size(width, height) {\n      var box = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : this.bbox();\n      var p = proportionalSize(this, width, height, box);\n      var scaleX = p.width / box.width;\n      var scaleY = p.height / box.height;\n      this.children().forEach(function (child, i) {\n        var o = new Point(box).transform(new Matrix(child).inverse());\n        child.scale(scaleX, scaleY, o.x, o.y);\n      });\n      return this;\n    }\n  }]);\n\n  return G;\n}(Container);\nregisterMethods({\n  Container: {\n    // Create a group element\n    group: wrapWithAttrCheck(function () {\n      return this.put(new G());\n    })\n  }\n});\nregister(G, 'G');\n\nvar A =\n/*#__PURE__*/\nfunction (_Container) {\n  _inherits(A, _Container);\n\n  function A(node) {\n    _classCallCheck(this, A);\n\n    return _possibleConstructorReturn(this, _getPrototypeOf(A).call(this, nodeOrNew('a', node), node));\n  } // Link url\n\n\n  _createClass(A, [{\n    key: \"to\",\n    value: function to(url) {\n      return this.attr('href', url, xlink);\n    } // Link target attribute\n\n  }, {\n    key: \"target\",\n    value: function target(_target) {\n      return this.attr('target', _target);\n    }\n  }]);\n\n  return A;\n}(Container);\nregisterMethods({\n  Container: {\n    // Create a hyperlink element\n    link: wrapWithAttrCheck(function (url) {\n      return this.put(new A()).to(url);\n    })\n  },\n  Element: {\n    // Create a hyperlink element\n    linkTo: function linkTo(url) {\n      var link = new A();\n\n      if (typeof url === 'function') {\n        url.call(link, link);\n      } else {\n        link.to(url);\n      }\n\n      return this.parent().put(link).put(this);\n    }\n  }\n});\nregister(A, 'A');\n\nvar Mask =\n/*#__PURE__*/\nfunction (_Container) {\n  _inherits(Mask, _Container);\n\n  // Initialize node\n  function Mask(node) {\n    _classCallCheck(this, Mask);\n\n    return _possibleConstructorReturn(this, _getPrototypeOf(Mask).call(this, nodeOrNew('mask', node), node));\n  } // Unmask all masked elements and remove itself\n\n\n  _createClass(Mask, [{\n    key: \"remove\",\n    value: function remove() {\n      // unmask all targets\n      this.targets().forEach(function (el) {\n        el.unmask();\n      }); // remove mask from parent\n\n      return _get(_getPrototypeOf(Mask.prototype), \"remove\", this).call(this);\n    }\n  }, {\n    key: \"targets\",\n    value: function targets() {\n      return baseFind('svg [mask*=\"' + this.id() + '\"]');\n    }\n  }]);\n\n  return Mask;\n}(Container);\nregisterMethods({\n  Container: {\n    mask: wrapWithAttrCheck(function () {\n      return this.defs().put(new Mask());\n    })\n  },\n  Element: {\n    // Distribute mask to svg element\n    maskWith: function maskWith(element) {\n      // use given mask or create a new one\n      var masker = element instanceof Mask ? element : this.parent().mask().add(element); // apply mask\n\n      return this.attr('mask', 'url(\"#' + masker.id() + '\")');\n    },\n    // Unmask element\n    unmask: function unmask() {\n      return this.attr('mask', null);\n    },\n    masker: function masker() {\n      return this.reference('mask');\n    }\n  }\n});\nregister(Mask, 'Mask');\n\nfunction ownKeys$3(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread$2(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$3(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$3(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction cssRule(selector, rule) {\n  if (!selector) return '';\n  if (!rule) return selector;\n  var ret = selector + '{';\n\n  for (var i in rule) {\n    ret += unCamelCase(i) + ':' + rule[i] + ';';\n  }\n\n  ret += '}';\n  return ret;\n}\n\nvar Style =\n/*#__PURE__*/\nfunction (_Element) {\n  _inherits(Style, _Element);\n\n  function Style(node) {\n    _classCallCheck(this, Style);\n\n    return _possibleConstructorReturn(this, _getPrototypeOf(Style).call(this, nodeOrNew('style', node), node));\n  }\n\n  _createClass(Style, [{\n    key: \"addText\",\n    value: function addText() {\n      var w = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n      this.node.textContent += w;\n      return this;\n    }\n  }, {\n    key: \"font\",\n    value: function font(name, src) {\n      var params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n      return this.rule('@font-face', _objectSpread$2({\n        fontFamily: name,\n        src: src\n      }, params));\n    }\n  }, {\n    key: \"rule\",\n    value: function rule(selector, obj) {\n      return this.addText(cssRule(selector, obj));\n    }\n  }]);\n\n  return Style;\n}(Element);\nregisterMethods('Dom', {\n  style: wrapWithAttrCheck(function (selector, obj) {\n    return this.put(new Style()).rule(selector, obj);\n  }),\n  fontface: wrapWithAttrCheck(function (name, src, params) {\n    return this.put(new Style()).font(name, src, params);\n  })\n});\nregister(Style, 'Style');\n\nvar TextPath =\n/*#__PURE__*/\nfunction (_Text) {\n  _inherits(TextPath, _Text);\n\n  // Initialize node\n  function TextPath(node) {\n    _classCallCheck(this, TextPath);\n\n    return _possibleConstructorReturn(this, _getPrototypeOf(TextPath).call(this, nodeOrNew('textPath', node), node));\n  } // return the array of the path track element\n\n\n  _createClass(TextPath, [{\n    key: \"array\",\n    value: function array() {\n      var track = this.track();\n      return track ? track.array() : null;\n    } // Plot path if any\n\n  }, {\n    key: \"plot\",\n    value: function plot(d) {\n      var track = this.track();\n      var pathArray = null;\n\n      if (track) {\n        pathArray = track.plot(d);\n      }\n\n      return d == null ? pathArray : this;\n    } // Get the path element\n\n  }, {\n    key: \"track\",\n    value: function track() {\n      return this.reference('href');\n    }\n  }]);\n\n  return TextPath;\n}(Text);\nregisterMethods({\n  Container: {\n    textPath: wrapWithAttrCheck(function (text, path) {\n      // Convert text to instance if needed\n      if (!(text instanceof Text)) {\n        text = this.text(text);\n      }\n\n      return text.path(path);\n    })\n  },\n  Text: {\n    // Create path for text to run on\n    path: wrapWithAttrCheck(function (track) {\n      var importNodes = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n      var textPath = new TextPath(); // if track is a path, reuse it\n\n      if (!(track instanceof Path)) {\n        // create path element\n        track = this.defs().path(track);\n      } // link textPath to path and add content\n\n\n      textPath.attr('href', '#' + track, xlink); // Transplant all nodes from text to textPath\n\n      var node;\n\n      if (importNodes) {\n        while (node = this.node.firstChild) {\n          textPath.node.appendChild(node);\n        }\n      } // add textPath element as child node and return textPath\n\n\n      return this.put(textPath);\n    }),\n    // Get the textPath children\n    textPath: function textPath() {\n      return this.findOne('textPath');\n    }\n  },\n  Path: {\n    // creates a textPath from this path\n    text: wrapWithAttrCheck(function (text) {\n      // Convert text to instance if needed\n      if (!(text instanceof Text)) {\n        text = new Text().addTo(this.parent()).text(text);\n      } // Create textPath from text and path and return\n\n\n      return text.path(this);\n    }),\n    targets: function targets() {\n      return baseFind('svg [href*=\"' + this.id() + '\"]');\n    }\n  }\n});\nTextPath.prototype.MorphArray = PathArray;\nregister(TextPath, 'TextPath');\n\nvar Use =\n/*#__PURE__*/\nfunction (_Shape) {\n  _inherits(Use, _Shape);\n\n  function Use(node) {\n    _classCallCheck(this, Use);\n\n    return _possibleConstructorReturn(this, _getPrototypeOf(Use).call(this, nodeOrNew('use', node), node));\n  } // Use element as a reference\n\n\n  _createClass(Use, [{\n    key: \"element\",\n    value: function element(_element, file) {\n      // Set lined element\n      return this.attr('href', (file || '') + '#' + _element, xlink);\n    }\n  }]);\n\n  return Use;\n}(Shape);\nregisterMethods({\n  Container: {\n    // Create a use element\n    use: wrapWithAttrCheck(function (element, file) {\n      return this.put(new Use()).element(element, file);\n    })\n  }\n});\nregister(Use, 'Use');\n\n/* Optional Modules */\nvar SVG = makeInstance;\nextend([Svg, _Symbol, Image, Pattern, Marker], getMethodsFor('viewbox'));\nextend([Line, Polyline, Polygon, Path], getMethodsFor('marker'));\nextend(Text, getMethodsFor('Text'));\nextend(Path, getMethodsFor('Path'));\nextend(Defs, getMethodsFor('Defs'));\nextend([Text, Tspan], getMethodsFor('Tspan'));\nextend([Rect, Ellipse, Circle, Gradient], getMethodsFor('radius'));\nextend(EventTarget, getMethodsFor('EventTarget'));\nextend(Dom, getMethodsFor('Dom'));\nextend(Element, getMethodsFor('Element'));\nextend(Shape, getMethodsFor('Shape')); // extend(Element, getConstructor('Memory'))\n\nextend(Container, getMethodsFor('Container'));\nextend(Runner, getMethodsFor('Runner'));\nList.extend(getMethodNames());\nregisterMorphableType([SVGNumber, Color, Box, Matrix, SVGArray, PointArray, PathArray]);\nmakeMorphable();\n\nexport { A, Animator, SVGArray as Array, Box, Circle, ClipPath, Color, Container, Controller, Defs, Dom, Ease, Element, Ellipse, EventTarget, ForeignObject, G, Gradient, Image, Line, List, Marker, Mask, Matrix, Morphable, NonMorphable, SVGNumber as Number, ObjectBag, PID, Path, PathArray, Pattern, Point, PointArray, Polygon, Polyline, Queue, Rect, Runner, SVG, Shape, Spring, Stop, Style, Svg, _Symbol as Symbol, Text, TextPath, Timeline, TransformBag, Tspan, Use, adopt, assignNewId, create, defaults, dispatch, easing, eid, extend, baseFind as find, getClass, invent, makeInstance, makeMorphable, mockAdopt, namespaces, nodeOrNew, off, on, parser, regex, register, registerMorphableType, registerWindow, root, utils, wrapWithAttrCheck };\n//# sourceMappingURL=svg.esm.js.map\n","'use strict';\n\nconst { SVG } = require('@svgdotjs/svg.js');\n\nfunction getPaper() {\n  return SVG();\n}\n\nmodule.exports = getPaper;\n","'use strict';\n\nconst getPaper = require('./getPaper');\n\nfunction appendResiduesPosition(data, options = {}) {\n  const residues = data.residues;\n  const {\n    leftRightBorders = 20,\n    spaceBetweenResidues = 20,\n    width = 600,\n  } = options;\n\n  let xPos = leftRightBorders;\n  let xOld = xPos;\n\n  let line = 0;\n  // we create a temporary paper in order to get the width of the text blocs\n\n  const paper = getPaper();\n\n  for (let i = 0; i < residues.all.length; i++) {\n    let residue = residues.all[i];\n    let textWidth = getTextWidth(paper, residue.label, options);\n    xPos += textWidth;\n    if (xPos > width - leftRightBorders) {\n      xOld = leftRightBorders;\n      xPos = leftRightBorders + textWidth;\n      line++;\n    }\n    setPaper(residue, xOld, xPos, line);\n    xPos += spaceBetweenResidues;\n    xOld = xPos;\n  }\n\n  residues.nbLines = line;\n}\n\nfunction setPaper(residue, xFrom, xTo, line) {\n  residue.paper = {\n    xFrom,\n    xTo,\n    line,\n    usedSlots: [],\n    topPosition: 0,\n    bottomPosition: 0,\n  };\n}\n\nfunction getTextWidth(paper, label, options = {}) {\n  const { labelFontFamily = 'Verdana', labelSize = 12 } = options;\n  let text = paper.text(label);\n  text.font({\n    family: labelFontFamily,\n    size: labelSize,\n    weight: 'bold',\n    fill: '#888',\n  });\n  let textWidth = text.length() || text.bbox().width;\n  text.remove();\n  return textWidth;\n}\n\nmodule.exports = appendResiduesPosition;\n","'use strict';\n\nfunction appendResults(data, analysisResult, options = {}) {\n  const numberResidues = data.residues.residues.length;\n  const { merge = {} } = options;\n  let results = JSON.parse(JSON.stringify(analysisResult));\n  results = results.filter((result) => !result.type.match(/^-B[0-9]$/));\n  // we calculate all the lines based on the results\n  for (let result of results) {\n    let parts = result.type.split(/:|(?=[a-z])/); // we may have ':' but not mandatory\n    if (parts.length === 2) {\n      result.internal = true;\n      if (parts[1].match(/^[abcd][1-9]/)) {\n        [parts[0], parts[1]] = [parts[1], parts[0]];\n      }\n      result.to = getNumber(parts[0]) - 1;\n      result.from = numberResidues - getNumber(parts[1]);\n    } else {\n      if (parts[0].match(/^[abcd][1-9]/)) {\n        result.fromBegin = true;\n        result.position = getNumber(parts[0]) - 1;\n      }\n      if (parts[0].match(/^[wxyz][1-9]/)) {\n        result.fromEnd = true;\n        result.position = numberResidues - 1 - getNumber(parts[0]);\n      }\n    }\n\n    if (result.fromEnd) result.color = 'red';\n    if (result.fromBegin) result.color = 'blue';\n    if (result.internal) {\n      switch (result.type.substring(0, 1)) {\n        case 'a':\n          result.color = 'green';\n          break;\n        case 'b':\n          result.color = 'orange';\n          break;\n        case 'c':\n          result.color = 'cyan';\n          break;\n        default:\n          result.color = 'green';\n      }\n    }\n  }\n\n  if (merge.charge) {\n    const unique = {};\n    for (let result of results) {\n      if (!unique[result.type]) {\n        unique[result.type] = [];\n      }\n      unique[result.type].push(result);\n    }\n    results = [];\n    for (let key in unique) {\n      let current = unique[key][0];\n      current.similarity = unique[key].reduce(\n        (previous, item) => previous + item.similarity,\n        0,\n      );\n      current.similarity = Math.round(current.similarity / unique[key].length);\n      results.push(current);\n      current.charge = '';\n    }\n  }\n\n  for (let result of results) {\n    if (result.similarity > 95) {\n      result.textColor = 'black';\n    } else if (result.similarity > 90) {\n      result.textColor = '#333';\n    } else if (result.similariy > 80) {\n      result.textColor = '#666';\n    } else {\n      result.textColor = '#999';\n    }\n  }\n\n  // sort by residue length\n  results.sort((a, b) => a.length - b.length);\n  data.results = results;\n}\n\nfunction getNumber(text) {\n  return Number(text.replace(/^.([0-9]+).*$/, '$1'));\n}\n\nmodule.exports = appendResults;\n","'use strict';\n\nfunction appendRows(data) {\n  let allResidues = data.residues.all.sort((a, b) => a.line - b.line);\n  data.rows = [];\n  for (let residue of allResidues) {\n    let line = residue.paper.line;\n    if (!data.rows[line]) {\n      data.rows[line] = {\n        residues: [],\n      };\n    }\n    data.rows[line].residues.push(residue);\n  }\n  for (let row of data.rows) {\n    row.info = {};\n  }\n}\n\nmodule.exports = appendRows;\n","/* eslint-disable no-loop-func */\n'use strict';\n\n/**\n * For each row we calculate internals, label over and label under\n * @param {*} data\n */\nfunction appendRowsInformation(data) {\n  for (let row of data.rows) {\n    let filtered = row.residues.filter(\n      (entry) => entry.fromBegin !== undefined,\n    );\n    if (filtered.length > 0) {\n      row.info.firstResidue = filtered[0].fromBegin;\n      row.info.lastResidue = filtered[filtered.length - 1].fromBegin;\n    }\n    row.internals = [];\n  }\n\n  for (let result of data.results) {\n    if (result.internal) {\n      let fromResidue = data.residues.residues[result.from];\n      let from = fromResidue.fromBegin;\n      let toResidue = data.residues.residues[result.to];\n      let to = toResidue.fromBegin;\n      for (let row of data.rows) {\n        if (from <= row.info.lastResidue && to >= row.info.firstResidue) {\n          result = JSON.parse(JSON.stringify(result));\n          result.fromResidue = fromResidue;\n          if (from < row.info.firstResidue) {\n            result.firstIndex = true;\n          } else {\n            row.residues.forEach((residue, index) => {\n              if (residue.fromBegin === from) {\n                result.firstIndex = index;\n              }\n            });\n          }\n          result.toResidue = toResidue;\n          if (to > row.info.lastResidue) {\n            result.lastIndex = true;\n          } else {\n            row.residues.forEach((residue, index) => {\n              if (residue.fromBegin === to) {\n                result.lastIndex = index;\n              }\n            });\n          }\n          row.internals.push(result);\n        }\n      }\n    } else {\n      if (\n        result.position !== undefined &&\n        data.residues.residues[result.position]\n      ) {\n        let residue = data.residues.residues[result.position];\n        if (result.fromEnd) {\n          residue.info.nbOver++;\n          residue.results.end.push(result);\n        }\n        if (result.fromBegin) {\n          residue.info.nbUnder++;\n          residue.results.begin.push(result);\n        }\n      }\n    }\n  }\n\n  for (let row of data.rows) {\n    let maxNbOver = 0;\n    let maxNbUnder = 0;\n    for (let residue of row.residues) {\n      if (residue.info.nbOver > maxNbOver) maxNbOver = residue.info.nbOver;\n      if (residue.info.nbUnder > maxNbUnder) maxNbUnder = residue.info.nbUnder;\n    }\n    row.info.nbOver = maxNbOver;\n    row.info.nbUnder = maxNbUnder;\n  }\n}\n\nmodule.exports = appendRowsInformation;\n","'use strict';\n\nfunction addCSS(paper) {\n  let cssCode = `\n    .highlight {\n        stroke: yellow;\n        stroke-width: 5px;\n        fill: red;\n    }\n    .highlightText {\n        fill: red;\n    }\n    `;\n  let style = paper.element('style');\n  style.words(cssCode);\n}\n\nmodule.exports = addCSS;\n","'use strict';\n\nfunction addScript(paper) {\n  let scriptCode = ` // <![CDATA[\n        function mouseOver(evt) {\n           \n            let targetRange=evt.target.id.replace(/^line/,'');\n            let from=targetRange.replace(/-.*/,'')*1;\n            let to=targetRange.replace(/.*-/,'')*1;\n            let children=evt.target.parentNode.children;\n            for (let child of children) {\n                if (child.id === evt.target.id) {\n                    child.setAttribute('class','highlight');\n                }\n                if (child.nodeName === 'text' && child.id.startsWith(\"residue\")) {\n                    let residueNumber=child.id.replace(/residue-/,'')*1;\n                    if (residueNumber>=from && residueNumber<=to) {\n                        child.setAttribute('class','highlightText');\n                    }\n                }\n            }\n        }\n        function mouseOut(evt) {\n            let children=evt.target.parentNode.children;\n            for (let child of children) {\n                if (child.id === evt.target.id) {\n                    child.setAttribute('class','');\n                }\n                if (child.nodeName === 'text' && child.id.startsWith(\"residue\")) {\n                    child.setAttribute('class','');\n                }\n            }\n        }\n     // ]]>\n    `;\n  let script = paper.element('script');\n  script.attr({\n    type: 'application/ecmascript',\n  });\n  script.words(scriptCode);\n}\n\nmodule.exports = addScript;\n","'use strict';\n\nfunction drawLabel(paper, result, x, y, options) {\n  let label = result.type;\n  let similarity = String(Math.round(result.similarity));\n  let charge = result.charge > 0 ? `+${result.charge}` : result.charge;\n  let text = paper.plain(label);\n  text.font({\n    fill: result.textColor,\n    family: options.labelFontFamily,\n    weight: 'bold',\n    size: options.labelSize,\n    anchor: 'end',\n  });\n  text.attr({\n    x,\n    y,\n  });\n  let textWidth = 0;\n  text = paper.plain(charge);\n  text.font({\n    fill: result.textColor,\n    family: options.labelFontFamily,\n    size: options.labelSize / 2,\n  });\n  text.attr({ x: x + textWidth, y: y - options.labelSize / 2 });\n  text = paper.plain(similarity);\n  text.font({\n    fill: result.textColor,\n    family: options.labelFontFamily,\n    size: options.labelSize / 2,\n  });\n  text.attr({ x: x + textWidth, y });\n}\n\nmodule.exports = drawLabel;\n","'use strict';\n\nconst drawLabel = require('./drawLabel');\n\nfunction drawInternals(paper, row, options) {\n  let fromX = 0;\n  let toX = 0;\n  for (const internal of row.internals) {\n    options.verticalPosition += options.spaceBetweenInternalLines;\n    if (internal.firstIndex === true) {\n      fromX = 0;\n    } else {\n      fromX =\n        internal.fromResidue.paper.xFrom - options.spaceBetweenResidues / 2;\n    }\n    if (internal.lastIndex === true) {\n      toX = options.width - 1;\n    } else {\n      toX = internal.toResidue.paper.xTo + options.spaceBetweenResidues / 2;\n    }\n\n    let y = options.verticalPosition;\n\n    let drawLine = paper.line(fromX, y, toX, y);\n    drawLine.attr({\n      onmouseover: 'mouseOver(evt)',\n      onmouseout: 'mouseOut(evt)',\n      id: `line${internal.fromResidue.fromBegin}-${internal.toResidue.fromBegin}`,\n    });\n    drawLine.stroke({\n      color: internal.color,\n      width: options.strokeWidth,\n    });\n\n    let center =\n      (fromX + toX + (internal.type.length * options.labelSize * 2) / 3) / 2;\n    drawLabel(paper, internal, center, y - 2, options);\n  }\n  options.verticalPosition += options.spaceBetweenInternalLines * 2;\n}\n\nmodule.exports = drawInternals;\n","'use strict';\n\nfunction drawReplacements(paper, data, options) {\n  let replacements = data.residues.replacements;\n  replacements = Object.keys(replacements).map((key) => {\n    return { key, ...replacements[key] };\n  });\n\n  for (let replacement of replacements) {\n    options.verticalPosition += options.spaceBetweenInternalLines;\n    let text = paper.plain(`${replacement.label} = ${replacement.key}`);\n    text.font({\n      fill: 'darkviolet',\n      family: options.labelFontFamily,\n      weight: 'bold',\n      size: 10,\n    });\n    text.attr({\n      x: options.leftRightBorders,\n      y: options.verticalPosition,\n    });\n  }\n  options.verticalPosition += options.spaceBetweenInternalLines;\n}\n\nmodule.exports = drawReplacements;\n","'use strict';\n\nconst drawLabel = require('./drawLabel');\n\nfunction drawTerminals(paper, row, options) {\n  for (let residue of row.residues) {\n    if (!residue.results) continue;\n    for (let result of residue.results.begin) {\n      let line = paper.line(\n        residue.paper.xTo + options.spaceBetweenResidues / 2,\n        residue.paper.y,\n        residue.paper.xTo + options.spaceBetweenResidues / 2,\n        residue.paper.y - 8,\n      );\n      line.stroke({\n        color: result.color,\n        width: options.strokeWidth,\n        linecap: 'round',\n      });\n      line = paper.line(\n        residue.paper.xTo + options.spaceBetweenResidues / 2,\n        residue.paper.y,\n        residue.paper.xTo + options.spaceBetweenResidues / 2 - 5,\n        residue.paper.y + 5,\n      );\n      line.stroke({\n        color: result.color,\n        width: options.strokeWidth,\n        linecap: 'round',\n      });\n      drawLabel(\n        paper,\n        result,\n        residue.paper.xTo + options.spaceBetweenResidues / 2,\n        residue.paper.y +\n          options.labelSize +\n          6 +\n          residue.paper.bottomPosition * options.labelSize,\n        options,\n      );\n      residue.paper.bottomPosition++;\n    }\n    for (let result of residue.results.end) {\n      let line = paper.line(\n        residue.paper.xTo +\n          options.spaceBetweenResidues / 2 +\n          options.strokeWidth,\n        residue.paper.y,\n        residue.paper.xTo +\n          options.spaceBetweenResidues / 2 +\n          options.strokeWidth,\n        residue.paper.y - 8,\n      );\n      line.stroke({\n        color: result.color,\n        width: options.strokeWidth,\n        linecap: 'round',\n      });\n      line = paper.line(\n        residue.paper.xTo +\n          options.spaceBetweenResidues / 2 +\n          options.strokeWidth,\n        residue.paper.y - 8,\n        residue.paper.xTo +\n          options.spaceBetweenResidues / 2 +\n          5 +\n          options.strokeWidth,\n        residue.paper.y - 13,\n      );\n      line.stroke({\n        color: result.color,\n        width: options.strokeWidth,\n        linecap: 'round',\n      });\n      drawLabel(\n        paper,\n        result,\n        residue.paper.xTo + options.spaceBetweenResidues,\n        residue.paper.y - 17 - residue.paper.topPosition * options.labelSize,\n        options,\n      );\n      residue.paper.topPosition++;\n    }\n  }\n}\n\nmodule.exports = drawTerminals;\n","'use strict';\n\nconst drawTerminals = require('./drawTerminals');\n\nfunction drawSequence(paper, row, options) {\n  // need to plan some space for the OVER\n  options.verticalPosition += row.info.nbOver * (options.labelSize + 1);\n\n  for (const residue of row.residues) {\n    residue.paper.y = options.verticalPosition;\n\n    let text = paper.plain(residue.label);\n\n    let textColor = residue.replaced\n      ? 'darkviolet'\n      : residue.kind === 'residue'\n      ? '#555'\n      : '#CCC';\n\n    text.font({\n      family: options.labelFontFamily,\n      size: 12,\n      weight: 'bold',\n      fill: textColor,\n    });\n    text.attr({\n      x: residue.paper.xFrom,\n      y: residue.paper.y,\n    });\n    text.attr({ id: `residue-${residue.fromBegin}` });\n  }\n\n  drawTerminals(paper, row, options);\n\n  // need to plan some space for the UNDER\n  options.verticalPosition += row.info.nbUnder * (options.labelSize + 1);\n\n  options.verticalPosition += options.spaceBetweenInternalLines * 2;\n}\n\nmodule.exports = drawSequence;\n","'use strict';\n\nconst appendInternals = require('./appendInternals');\nconst appendResidues = require('./appendResidues');\nconst appendResiduesPosition = require('./appendResiduesPosition');\nconst appendResults = require('./appendResults');\nconst appendRows = require('./appendRows');\nconst appendRowsInformation = require('./appendRowsInformation');\nconst addCSS = require('./draw/addCSS');\nconst addScript = require('./draw/addScript');\nconst drawInternals = require('./draw/drawInternals');\nconst drawReplacements = require('./draw/drawReplacements');\nconst drawSequence = require('./draw/drawSequence');\nconst getPaper = require('./getPaper');\n\n/**\n *\n * @param {string} sequence\n * @param {array} analysisResult\n * @param {object} [options={}]\n * @param {number} [options.leftRightBorders=50]\n * @param {number} [options.spaceBetweenResidues=30]\n * @param {number} [options.spaceBetweenInternalLines=12]\n * @param {number} [options.strokeWidth=2]\n * @param {string} [options.labelFontFamily='Verdana']\n * @param {number} [options.labelSize=8]\n * @param {object} [options.merge={}]\n * @param {object} [options.merge.charge] Merge results if only differs by charge\n */\nfunction sequenceSVG(sequence, analysisResult, options = {}) {\n  const {\n    width = 600,\n    leftRightBorders = 50,\n    spaceBetweenResidues = 30,\n    spaceBetweenInternalLines = 12,\n    strokeWidth = 2,\n    labelFontFamily = 'Verdana',\n    labelSize = 8,\n    parsing,\n    merge,\n  } = options;\n\n  const drawOptions = {\n    spaceBetweenResidues,\n    leftRightBorders,\n    spaceBetweenInternalLines,\n    strokeWidth,\n    labelSize,\n    labelFontFamily,\n    verticalPosition: spaceBetweenInternalLines,\n    width,\n  };\n\n  let data = {};\n  appendResidues(data, sequence, parsing);\n  appendResults(data, analysisResult, {\n    merge,\n  });\n  appendResiduesPosition(data, {\n    leftRightBorders,\n    spaceBetweenResidues,\n    labelFontFamily,\n    labelSize,\n    width,\n  });\n  appendRows(data);\n  appendInternals(data);\n  appendRowsInformation(data);\n\n  // We start to create the SVG and create the paper\n  const paper = getPaper();\n  addCSS(paper);\n  addScript(paper);\n\n  for (let row of data.rows) {\n    drawInternals(paper, row, drawOptions);\n    drawSequence(paper, row, drawOptions);\n  }\n  drawReplacements(paper, data, drawOptions);\n\n  paper.size(width, drawOptions.verticalPosition);\n\n  let svg = paper.svg();\n  paper.clear();\n  return svg;\n}\n\nmodule.exports = sequenceSVG;\n","'use strict';\n\nmodule.exports = {\n  sequenceSVG: require('./sequenceSVG'),\n};\n","'use strict';\n\nconst Kind = require('mf-parser/src/Kind');\nconst MF = require('mf-parser/src/MF');\nconst parse = require('mf-parser/src/parse');\n\nmodule.exports = function preprocessRanges(ranges, targetEA) {\n  ranges = JSON.parse(JSON.stringify(ranges));\n  if (typeof ranges === 'string') {\n    // need to convert to ranges\n    let parsed = parse(ranges.replace(/[\\r\\n\\t ]/g, ''));\n    let newRanges = [];\n    let current = {\n      mf: '',\n      min: 1,\n      max: 1,\n    };\n\n    // example ClBr2(CH2)0-2NO\n    // the idea is that has long as we don't have a range we don't really care\n    // there is a limitation is that the range has to be first level of parenthesis\n    let parenthesisLevel = 0;\n    let currentMF = ''; // start at an atom first level or a parenthesis\n    for (let item of parsed) {\n      switch (item.kind) {\n        case Kind.ATOM:\n          if (parenthesisLevel === 0 && currentMF) {\n            current.mf += currentMF;\n            currentMF = '';\n          }\n          currentMF += item.value;\n          break;\n        case Kind.ISOTOPE:\n          if (parenthesisLevel === 0 && currentMF) {\n            current.mf += currentMF;\n            currentMF = '';\n          }\n          currentMF += `[${item.value.isotope}${item.value.atom}]`;\n          break;\n        case Kind.MULTIPLIER:\n          if (parenthesisLevel === 0 && currentMF) {\n            current.mf += currentMF + item.value;\n            currentMF = '';\n          } else {\n            currentMF += item.value;\n          }\n          break;\n        case Kind.MULTIPLIER_RANGE:\n          if (parenthesisLevel !== 0) {\n            throw new Error('Range multiplier can only be at the first level');\n          }\n          newRanges.push({\n            mf: currentMF,\n            min: item.value.from,\n            max: item.value.to,\n          });\n          currentMF = '';\n          break;\n        case Kind.OPENING_PARENTHESIS:\n          parenthesisLevel++;\n          currentMF += '(';\n          break;\n        case Kind.CLOSING_PARENTHESIS:\n          parenthesisLevel--;\n          currentMF += ')';\n          break;\n        default:\n          throw Error(`can not preprocess ${ranges}`);\n      }\n    }\n    if (currentMF) {\n      current.mf += currentMF;\n    }\n    if (current.mf) {\n      newRanges.push(current);\n    }\n    ranges = newRanges;\n  }\n\n  let possibilities = [];\n  for (let i = 0; i < ranges.length; i++) {\n    let range = ranges[i];\n    let min = range.min === undefined ? 0 : range.min;\n    let max = range.max === undefined ? 1 : range.max;\n    let possibility = {\n      mf: range.mf,\n      minCount: min, // value defined by the user\n      maxCount: max, // value defined by the user\n      targetEA: targetEA[range.mf],\n      mw: 0, // mw till this level\n      aw: 0, // atomic weight (mass * currentCount)\n      maxRatio: 0, // maximum ratio possible if all next elements are 0\n      currentValue: 0,\n      currentCount: min - 1,\n      currentUnsaturation: 0,\n      initialOrder: i,\n    };\n    possibilities.push(possibility);\n    let info = new MF(range.mf).getInfo();\n    possibility.mass = info.mass;\n    possibility.unsaturation =\n      range.unsaturation === undefined\n        ? (info.unsaturation - 1) * 2\n        : range.unsaturation;\n    if (possibility.mf !== info.mf) possibility.isGroup = true;\n  }\n  possibilities = possibilities.filter(\n    (r) => r.minCount !== 0 || r.maxCount !== 0,\n  );\n\n  possibilities.sort((a, b) => {\n    return b.targetEA - a.targetEA;\n  });\n\n  return possibilities;\n};\n","'use strict';\n\nconst atomSorter = require('atom-sorter');\n\nconst preprocessEARanges = require('./preprocessEARanges');\n\n/**\n * Returns possible combinations\n * @param {object} [targetEA]\n * @param {object} [options={}]\n * @param {string} [options.ranges='C0-100 H0-100 O0-100 N0-100'] - range of mfs to search\n * @param {number} [options.maxElementError=0.003]\n * @param {number} [options.maxTotalError=0.01]\n * @param {number} [options.minMW=0] minimal molecular weight\n * @param {number} [options.maxMW=+Infinity] maximal molecular weight\n * @param {number} [options.unsaturation={}]\n * @param {number} [options.unsaturation.min=-Infinity] Minimal unsaturation\n * @param {number} [options.unsaturation.max=+Infinity] Maximal unsaturation\n * @param {number} [options.unsaturation.onlyInteger=false] Integer unsaturation\n * @param {number} [options.unsaturation.onlyNonInteger=false] Non integer unsaturation\n * @return {Array<object>}\n */\n\nmodule.exports = function mfFromEA(targetEA, options = {}) {\n  const {\n    unsaturation = {},\n    maxIterations = 1e8,\n    minMW = 0,\n    maxMW = +Infinity,\n    ranges = [\n      { mf: 'C', min: 0, max: 100 },\n      { mf: 'H', min: 0, max: 100 },\n      { mf: 'O', min: 0, max: 100 },\n      { mf: 'N', min: 0, max: 100 },\n    ],\n    maxElementError = 0.003,\n    maxTotalError = 0.01,\n  } = options;\n\n  let filterUnsaturation = unsaturation ? true : false;\n  // we calculate not the real unsaturation but the one before dividing by 2 + 1\n  let fakeMinUnsaturation =\n    unsaturation.min === undefined\n      ? Number.MIN_SAFE_INTEGER\n      : (unsaturation.min - 1) * 2;\n  let fakeMaxUnsaturation =\n    unsaturation.max === undefined\n      ? Number.MAX_SAFE_INTEGER\n      : (unsaturation.max - 1) * 2;\n\n  let results = {\n    mfs: [],\n    info: {\n      numberMFEvaluated: 0,\n      numberResults: 0,\n    },\n  };\n  let orderMapping = []; // used to sort the atoms\n\n  let possibilities = preprocessEARanges(ranges, targetEA, maxElementError);\n  orderMapping = getOrderMapping(possibilities);\n\n  if (possibilities.length === 0) return { mfs: [] };\n\n  let currentPosition = 0;\n  let currentAtom;\n\n  //  if (DEBUG) console.log('possibilities', possibilities.map((a) => `${a.mf + a.originalMinCount}-${a.originalMaxCount}`));\n\n  mfWhile: while (true) {\n    while (currentPosition < possibilities.length && currentPosition >= 0) {\n      let previousAtom =\n        currentPosition === 0 ? { mw: 0 } : possibilities[currentPosition - 1];\n      currentAtom = possibilities[currentPosition];\n      if (currentAtom.currentCount < currentAtom.maxCount) {\n        currentAtom.currentCount++;\n        currentAtom.aw = currentAtom.mass * currentAtom.currentCount;\n        currentAtom.mw = currentAtom.aw + previousAtom.mw;\n        currentAtom.maxRatio = currentAtom.aw / currentAtom.mw;\n        // we should check if we can reach the target\n        if (\n          currentAtom.targetEA &&\n          currentAtom.aw / currentAtom.mw - currentAtom.targetEA <\n            -maxElementError\n        ) {\n          // we already don't have enough quantity of this element and it can only become worse\n          continue;\n        }\n\n        if (currentPosition < possibilities.length - 1) {\n          currentPosition++;\n        } else {\n          break;\n        }\n      } else {\n        currentAtom.currentCount = currentAtom.minCount - 1;\n        currentPosition--;\n      }\n    }\n    if (currentPosition < 0) {\n      break;\n    }\n\n    if (results.info.numberMFEvaluated++ > maxIterations) {\n      throw Error(\n        `Iteration number is over the current maximum of: ${maxIterations}`,\n      );\n    }\n    if (filterUnsaturation) {\n      let unsaturationValue = 0;\n      for (const possibility of possibilities) {\n        unsaturationValue +=\n          possibility.unsaturation * possibility.currentCount;\n      }\n\n      let isOdd = Math.abs(unsaturationValue % 2);\n      if (\n        (unsaturation.onlyInteger && isOdd === 1) ||\n        (unsaturation.onlyNonInteger && isOdd === 0) ||\n        fakeMinUnsaturation > unsaturationValue ||\n        fakeMaxUnsaturation < unsaturationValue\n      ) {\n        continue;\n      }\n    }\n\n    let mw = currentAtom.mw;\n    if (mw < minMW || mw > maxMW) continue;\n\n    let totalError = 0;\n    for (let i = 0; i < possibilities.length; i++) {\n      const possibility = possibilities[i];\n      let ratio = (possibility.mass * possibility.currentCount) / mw;\n      if (possibility.targetEA !== undefined) {\n        let error = Math.abs(possibility.targetEA - ratio);\n        if (error > maxElementError) {\n          continue mfWhile;\n        }\n        totalError += error;\n      }\n\n      possibility.currentValue = ratio;\n    }\n    if (isNaN(totalError) || totalError > maxTotalError) continue;\n    results.mfs.push(getResult(possibilities, totalError, orderMapping));\n    results.info.numberResults++;\n  }\n\n  results.mfs.sort((a, b) => Math.abs(a.totalError) - Math.abs(b.totalError));\n  return results;\n};\n\nfunction getResult(possibilities, totalError, orderMapping) {\n  const result = { mf: '', totalError };\n  // we check that the first time we meet the ionization group it does not end\n  // in the final result\n  for (let i = 0; i < possibilities.length; i++) {\n    let possibility = possibilities[orderMapping[i]];\n    if (possibility.currentCount !== 0) {\n      if (possibility.isGroup) {\n        result.mf += `(${possibility.mf})`;\n        if (possibility.currentCount !== 1) {\n          result.mf += possibility.currentCount;\n        }\n      } else {\n        result.mf += possibility.mf;\n        if (possibility.currentCount !== 1) {\n          result.mf += possibility.currentCount;\n        }\n      }\n    }\n\n    result.ea = possibilities.map((current) => ({\n      mf: current.mf,\n      value: current.currentValue,\n      expected: current.targetEA,\n      error:\n        current.targetEA === undefined\n          ? undefined\n          : Math.abs(current.targetEA - current.currentValue),\n    }));\n  }\n  return result;\n}\n\nfunction getOrderMapping(possibilities) {\n  let mapping = possibilities.map((p, i) => ({ atom: p.mf, index: i }));\n  mapping.sort((a, b) => {\n    return atomSorter(a.atom, b.atom);\n  });\n  return mapping.map((a) => a.index);\n}\n","'use strict';\n\nmodule.exports = {\n  EMDB: require('../packages/emdb'),\n  Groups: require('../packages/chemical-groups/src/groups'),\n  Elements: require('../packages/chemical-elements/src/elementsAndIsotopes'),\n  IsotopicDistribution: require('../packages/isotopic-distribution'),\n  MF: require('../packages/mf-parser/src/MF.js'),\n  Peptide: require('peptide'),\n  Nucleotide: require('../packages/nucleotide'),\n  Spectrum: require('../packages/ms-spectrum/src/Spectrum'),\n  getPeaks: require('../packages/ms-spectrum/src//getPeaks'),\n  getBestPeaks: require('../packages/ms-spectrum/src//getBestPeaks'),\n  generateMFs: require('../packages/mf-generator'),\n  Report: require('../packages/ms-report'),\n  atomSorter: require('../packages/atom-sorter'),\n  mfFromEA: require('../packages/mf-from-ea'),\n};\n"],"names":["toString","Object","prototype","isAnyArray","object","call","endsWith","_interopDefault","ex","isArray","require$$0","max","input","options","TypeError","length","fromIndex","toIndex","Number","isInteger","Error","maxValue","i","arguments","undefined","_options$fromIndex","_options$toIndex","sum","sumValue","require$$1","require$$2","norm","algorithm","output","Array","toLowerCase","absoluteSumValue","absoluteSum","slice","currentMaxValue","factor","sumFactor","Math","abs","uniqueX","points","x","y","current","counter","parseXY","text","rescale","xColumn","yColumn","keepInfo","maxNumberColumns","MAX_SAFE_INTEGER","minNumberColumns","lines","split","maxY","MIN_VALUE","result","info","l","line","trim","match","fields","parseFloat","replace","push","position","value","uniqueXFunction","data","getBestPeaks","peaks","searchMonoisotopicRatio","from","reduce","previous","peak","min","to","MIN_SAFE_INTEGER","limit","threshold","numberCloseSlots","numberSlots","slot","closeSlot","selected","filter","map","monoisotopic","sort","a","b","item","j","nextItem","toReturn","minY","peakLoop","close","existing","newPeak","JSON","parse","stringify","compareNumbers","exports","values","minMax","arithmeticMean","geometricMean","mul","pow","logMean","lnsum","log","grandMean","means","samples","n","truncatedMean","percent","alreadySorted","concat","k","floor","harmonicMean","RangeError","contraHarmonicMean","r1","r2","median","half","variance","unbiased","theMean","mean","theVariance","standardDeviation","sqrt","standardError","robustMeanAndStdev","stdev","averageDeviations","quartiles","quart","q1","ceil","q2","q3","pooledStandardDeviation","pooledVariance","vari","mode","itemCount","itemArray","count","index","indexOf","maxIndex","covariance","vector1","vector2","mean1","mean2","cov","skewness","s2","s3","dev","m2","m3","g","kurtosis","s4","m4","v","c","entropy","eps","weightedMean","weights","weightedStandardDeviation","weightedVariance","z","w","center","inPlace","standardize","standardDev","cumulativeSum","array","matrix","Infinity","l1","l2","dimension","rows","cols","N","theSum","product","theProduct","sum1","sum2","medians","modes","skew","m","kurt","standardDeviations","standardErrors","sqrtN","scatter","divisor","s","correlation","scores","zScores","cor","jj","row","resultRow","sourceRow","isNaN","ii","weightSum","arrayStat","weightedCovariance","s1","weightedScatter","COMMON_NO","COMMON_FIRST","COMMON_SECOND","COMMON_BOTH","Stat","Comparator","widthTop","widthBottom","array1Extract","array2Extract","widthSlope","array1ExtractInfo","array2ExtractInfo","common","commonFactor","setOptions","array1","array2","newOptions","setTrapezoid","setFromTo","setPeaks1","anArray","checkArray","extracts","commonExtractAndNormalize","data1","info1","data2","info2","extract","extractAndNormalize","setPeaks2","getExtract1","getExtract2","getExtractInfo1","getExtractInfo2","newWidthBottom","newWidthTop","newFrom","newTo","getOverlap","x1","y1","x2","y2","diff","getOverlapTrapezoid","small","big","targets","segment","intersection","getIntersection","NaN","calculateDiff","newFirst","newSecond","array1Length","array2Length","pos1","pos2","previous2","overlap","trapezoid","getSimilarity","newPeaks1","newPeaks2","extract1","extract2","extractInfo1","extractInfo2","similarity","calculateOverlapFromDiff","fastSimilarity","getCommonArray","normalize","width","newArray","segment1","segment2","p0X","p0Y","p1X","p1Y","p2X","p2Y","p3X","p3Y","s1X","s1Y","s2X","s2Y","t","common1","common2","diffs","sumPos","NEUTRON_MASS","getPeakChargeBySimilarity","spectrum","targetMass","minCharge","maxCharge","zone","widthFunction","low","high","bottom","top","experimentalData","similarityProcessor","Similarity","Function","checkTopBottom","fromCharge","round","toCharge","fromIsotope","toIsotope","isotopeHeight","results","charge","isotopePositions","isotopePosition","getPeaks","isContinuous","minLength","maxDeltaRatio","minRadio","maxRatio","continuous","xs","ys","previousDelta","success","failed","delta","ratio","GAUSSIAN_EXP_FACTOR","LN2","ROOT_PI_OVER_LN2","PI","ROOT_THREE","ROOT_2LN2","ROOT_2LN2_MINUS_ONE","erfinv","ln1MinusXSqrd","lnEtcBy2Plus2","firstSqrt","secondSqrt","Gaussian","constructor","fwhm","sd","widthToFWHM","height","getData","getFactor","Float64Array","fct","area","getArea","fwhmToWidth","setFWHM","setHeight","exp","Lorentzian","squareFWHM","tan","PseudoVoigt","mu","setMu","getShapeGenerator","kind","shapeOptions","SavitzkyGolay","windowSize","derivative","polynomial","console","warn","np","ans","fullWeights","hs","constantH","wg1","wg2","d1","d2","getHs","wg","d","h","GramPoly","Grampoly","GenFact","gf","Weight","gsd","noiseLevel","sgOptions","shape","smoothY","heightFactor","broadRatio","maxCriteria","minMaxRatio","derivativeThreshold","realTopDetection","yIn","equalSpaced","isEqualSpaced","getNoiseLevel","yCorrection","yData","dY","ddY","SG","xData","dX","maxDdy","lastMax","lastMin","minddY","intervalL","intervalR","broadMask","widthProcessor","signals","lastK","possible","frequency","distanceJ","minDistance","gettingCloser","MAX_VALUE","soft","left","right","yLeft","yRight","determineRealTop","base","tmp","maxDx","minDx","stddev","peakList","alpha","beta","gamma","p","currentPoint","log10","checkOptions","parameterizedFunction","timeout","minValues","maxValues","initialValues","damping","dampingStepUp","dampingStepDown","maxIterations","errorTolerance","centralDifference","gradientDifference","improvementThreshold","parameters","fill","nbPoints","parLen","filler","checkTimeout","endTime","Date","now","weightSquare","errorCalculation","error","func","minValue","currentMin","currentMax","_options$min","autoMinMax","_options$max","indent","repeat","indentData","inspectMatrix","inspectMatrixWithOptions","maxRows","maxColumns","maxNumSize","name","inspectData","columns","maxI","maxJ","formatNumber","get","join","num","numStr","String","padEnd","precise","toPrecision","exponential","toExponential","eIndex","e","installMathOperations","AbstractMatrix","Matrix","add","addS","addM","set","checkMatrix","newMatrix","sub","subS","subM","subtract","subtractS","subtractM","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","clz32","cos","cosh","expm1","fround","log1p","log2","sign","sin","sinh","tanh","trunc","arg0","powS","powM","checkRowIndex","outer","checkColumnIndex","checkRowVector","vector","to1DArray","checkColumnVector","checkIndices","rowIndices","columnIndices","checkRowIndices","column","checkColumnIndices","rowOut","some","r","columnOut","checkRange","startRow","endRow","startColumn","endColumn","checkNumber","checkNonEmpty","isEmpty","sumByRow","sumByColumn","sumAll","productByRow","productByColumn","productAll","varianceByRow","varianceByColumn","varianceAll","size","centerByRow","centerByColumn","centerAll","getScaleByRow","scale","scaleByRow","getScaleByColumn","scaleByColumn","getScaleAll","divider","scaleAll","from1DArray","newRows","newColumns","newData","rowVector","columnVector","zeros","ones","rand","random","randInt","interval","eye","diag","matrix1","matrix2","isMatrix","klass","apply","callback","to2DArray","copy","toJSON","isRowVector","isColumnVector","isVector","isSquare","isSymmetric","isEchelonForm","previousColumn","checked","isReducedEchelonForm","echelonForm","clone","iMax","swapRows","reducedEchelonForm","maxRow","pivot","setSubMatrix","neg","getRow","getRowVector","setRow","row1","row2","temp","getColumn","getColumnVector","setColumn","swapColumns","column1","column2","addRowVector","subRowVector","mulRowVector","divRowVector","addColumnVector","subColumnVector","mulColumnVector","divColumnVector","mulRow","mulColumn","idx","minIndex","maxRowIndex","minRow","minRowIndex","maxColumn","maxColumnIndex","minColumn","minColumnIndex","type","dot","mmul","other","Bcolj","strassen2x2","a11","b11","a12","b12","a21","b21","a22","b22","m1","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","c1","c2","embed","mat","resultat","blockMult","halfRows","parseInt","halfCols","subMatrix","scaleRows","isFinite","scaleColumns","flipRows","middle","first","last","flipColumns","kroneckerProduct","q","transpose","sortRows","compareFunction","sortColumns","subMatrixRow","indices","subMatrixColumn","selection","rowIndex","columnIndex","trace","by","Symbol","for","randomInt","diagonal","identity","negate","tensorProduct","nRows","nColumns","arrayData","removeRow","splice","addRow","removeColumn","newRow","addColumn","WrapperMatrix2D","LuDecomposition","lu","pivotVector","pivotSign","LUcolj","kmax","LU","isSingular","col","solve","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","EPSILON","kase","ks","f","cs","sn","sp","spm1","epm1","sk","ek","shift","Y","scols","Ls","rightSingularVectors","VL","vrows","urows","VLU","solveForDiagonal","inverse","vcols","ucols","condition","norm2","rank","tol","leftSingularVectors","diagonalMatrix","useSVD","leftHandSide","rightHandSide","gradientFunction","evaluatedData","params","paramFunction","nbParams","param","auxParams","funcParam","point","funcParam2","matrixFunction","step","gradientFunc","residualError","inverseMatrix","jacobianWeigthResidualError","perturbations","levenbergMarquardt","converged","iteration","previousError","improvementMetric","parameterValues","parameterError","iterations","LEVENBERG_MARQUARDT","selectMethod","optimizationOptions","getKind","LM","assign","lmOptions","sumOfGaussianLorentzians","nL","sumOfGaussians","sumOfLorentzians","STATE_INIT","STATE_MIN","STATE_MAX","STATE_GS","keys","optimize","optimization","getMaxValue","paramsFunc","nbShapes","pInit","pMin","pMax","deltaX","getValue","pFit","parameterIndex","key","dt","_ref","module","window","xFindClosestIndex","target","xGetFromToIndex","global","factory","this","ascending","bisector","compare","ascendingComparator","lo","hi","mid","ascendingBisect","bisectRight","bisectLeft","descending","number$1","deviation","extent","constant","range","start","stop","e10","e5","e2","ticks","tickStep","step0","step1","LN10","sturges","number","histogram","domain","xz","x0","tz","pop","bins","bin","_","thresholds","quantile","freedmanDiaconis","scott","numbers","merge","arrays","merged","pairs","permute","indexes","permutes","scan","xi","xj","shuffle","i0","i1","zip","version","bisect","thresholdFreedmanDiaconis","thresholdScott","thresholdSturges","groupPeaks","previousPeak","NEGATIVE_INFINITY","currentGroup","groups","group","optimizePeaks","factorWidth","factorLimits","reverse","firstPeak","lastPeak","currentRange","optimizedPeaks","joinBroadPeaks","broadLines","candidates","fitted","forEach","broadenPeaks","nextPeak","appendPeaksCharge","precision","numberIsotopes","isotopeIntensity","localFromIndex","localToIndex","peakIndex","bestCharge","bestChargeMatch","theoreticalPositions","massRange","fromMass","toMass","localHeightSum","currentTheoreticalPosition","theoreticalMaxValue","totalMatch","minMass","maxMass","peakPicking","chargeOptions","maybeToPrecision","digits","checkArraySize","BaseRegression","new","predict","_predict","train","toLaTeX","score","xSum","ySum","chi2","rmsd","xSquared","ySquared","xY","SimpleLinearRegression","slope","intercept","coefficients","checkArrayLength","regress","computeX","xFactor","absIntercept","operator","load","json","slr","numerator","BaseRegression__default","PowerRegression","A","B","newInputs","latex","pr","xl","yl","linear","peaksWidth","widths","regression","Regression","computeQuality","computeCoefficient","regressionChart","fit","predictFct","bind","tex","predictFctString","getPeaksAnnotation","bestPeaks","emdb","numberDigits","showMF","numberMFs","mfPrefs","displayCharge","mfColors","color","annotations","annotation","_highlight","dy","props","rx","ry","fillOpacity","labels","toFixed","dx","currentMfPrefs","allowNeutral","ionizations","fromMonoisotopicMass","mfs","numberOfMFS","mf","ppm","ms","em","getColor","colors","Spectrum","defineProperty","enumerable","writable","cache","fromText","sumY","scaleY","intensity","basePeak","rescaleX","ensureOriginalX","xOriginal","normedY","total","normed","JsGraph","o","u","require","code","utils","support","_keyStr","encode","chr1","chr2","chr3","enc1","enc2","enc3","enc4","len","remainingBytes","getTypeOf","charCodeAt","charAt","decode","resultIndex","dataUrlPrefix","substr","totalLength","uint8array","Uint8Array","external","DataWorker","DataLengthProbe","Crc32Probe","CompressedObject","compressedSize","uncompressedSize","crc32","compression","compressedContent","getContentWorker","worker","Promise","resolve","pipe","uncompressWorker","that","on","streamInfo","getCompressedWorker","withStreamInfo","createWorkerFrom","uncompressedWorker","compressionOptions","compressWorker","GenericWorker","STORE","magic","DEFLATE","makeTable","table","crcTable","crc","buf","pos","end","crc32str","str","crc32wrapper","base64","binary","dir","createFolders","date","comment","unixPermissions","dosPermissions","ES6Promise","USE_TYPEDARRAY","Uint16Array","Uint32Array","pako","ARRAY_TYPE","FlateWorker","action","_pako","_pakoAction","_pakoOptions","meta","inherits","processChunk","chunk","_createPako","transformTo","flush","cleanUp","raw","level","self","onData","utf8","signature","decToHex","dec","bytes","hex","fromCharCode","generateUnixExternalFileAttr","isDir","generateDosExternalFileAttr","generateZipParts","streamedContent","streamingEnded","offset","platform","encodeFileName","file","useCustomEncoding","utf8encode","encodedFileName","utfEncodedFileName","encodedComment","utfEncodedComment","useUTF8ForFileName","useUTF8ForComment","dosTime","dosDate","extraFields","unicodePathExtraField","unicodeCommentExtraField","dataInfo","bitflag","extFileAttr","versionMadeBy","getUTCHours","getUTCMinutes","getUTCSeconds","getUTCFullYear","getUTCMonth","getUTCDate","header","fileRecord","LOCAL_FILE_HEADER","dirRecord","CENTRAL_FILE_HEADER","generateCentralDirectoryEnd","entriesCount","centralDirLength","localDirLength","dirEnd","CENTRAL_DIRECTORY_END","generateDataDescriptors","descriptor","DATA_DESCRIPTOR","ZipFileWorker","streamFiles","bytesWritten","zipComment","zipPlatform","accumulate","contentBuffer","dirRecords","currentSourceOffset","currentFile","_sources","currentFilePercent","remainingFiles","openedSource","record","closedSource","prepareNextSource","isPaused","pause","resume","registerPrevious","generatedError","sources","lock","compressions","getCompression","fileCompression","zipCompression","compressionName","generateWorker","zipFileWorker","relativePath","_compressWorker","JSZip","files","root","newObj","loadAsync","defaults","content","ZipEntries","nodejsUtils","checkEntryCRC32","zipEntry","reject","decompressed","extend","checkCRC32","optimizedBinaryString","decodeFileName","utf8decode","isNode","isStream","prepareContent","then","zipEntries","promises","all","addFiles","fileNameStr","fileCommentStr","NodejsStreamInputAdapter","filename","stream","_upstreamEnded","_bindStream","_stream","Readable","NodejsStreamOutputAdapter","helper","updateCb","_helper","emit","_read","Buffer","newBufferFrom","encoding","allocBuffer","alloc","isBuffer","obj","StreamHelper","ZipObject","generate","fileAdd","originalOptions","dataType","parent","toUpperCase","forceTrailingSlash","parentFolder","folderAdd","isUnicodeString","isCompressedEmpty","zipObjectContent","path","substring","lastSlash","lastIndexOf","isRegExp","out","cb","hasOwnProperty","search","entry","regexp","test","folder","arg","newFolder","ret","remove","kids","generateInternalStream","opts","mimeType","checkSupport","generateAsync","onUpdate","generateNodeStream","toNodejsStream","DataReader","ArrayReader","byteAt","zero","lastIndexOfSignature","sig","sig0","sig1","sig2","sig3","readAndCheckSignature","readData","checkOffset","checkIndex","newIndex","setIndex","skip","readInt","readString","readDate","dostime","UTC","Uint8ArrayReader","NodeBufferReader","StringReader","subarray","ZIP64_CENTRAL_DIRECTORY_LOCATOR","ZIP64_CENTRAL_DIRECTORY_END","ConvertWorker","destType","propName","DEFAULT_BLOCK_SIZE","dataP","dataIsReady","_tickScheduled","_tickAndRepeat","delay","isFinished","_tick","nextIndex","extraStreamInfo","isLocked","_listeners","listener","next","mergeStreamInfo","withError","me","nodestream","transformZipOutput","newBlob","dataArray","res","updateCallback","chunkType","_internalType","resultType","_outputType","_mimeType","err","outputType","internalType","_worker","evt","fn","objectMode","string","arraybuffer","ArrayBuffer","nodebuffer","blob","buffer","Blob","Builder","BlobBuilder","WebKitBlobBuilder","MozBlobBuilder","MSBlobBuilder","builder","append","getBlob","_utf8len","string2buf","m_pos","str_len","buf_len","utf8border","buf2string","c_len","utf16buf","applyFromCharCode","Utf8DecodeWorker","leftOver","previousData","nextBoundary","usableData","Utf8EncodeWorker","setImmediate","string2binary","stringToArrayLike","part","arrayToStringHelper","stringifyByChunk","stringifyByChar","resultStr","applyCanBeUsed","arrayLikeToString","canUseApply","arrayLikeToArrayLike","arrayFrom","arrayTo","transform","byteLength","inputType","supported","MAX_VALUE_16BITS","MAX_VALUE_32BITS","pretty","args","ctor","superCtor","Obj","attr","inputData","isBinary","isOptimizedBinaryString","isBase64","promise","isBlob","FileReader","reader","onload","onerror","readAsArrayBuffer","readerFor","ZipEntry","loadOptions","checkSignature","expectedSignature","isSignature","askedIndex","currentIndex","readBlockEndOfCentral","diskNumber","diskWithCentralDirStart","centralDirRecordsOnThisDisk","centralDirRecords","centralDirSize","centralDirOffset","zipCommentLength","decodeParamType","decodeContent","readBlockZip64EndOfCentral","zip64EndOfCentralSize","zip64ExtensibleData","extraDataSize","extraFieldId","extraFieldLength","extraFieldValue","id","readBlockZip64EndOfCentralLocator","diskWithZip64CentralDirStart","relativeOffsetEndOfZip64CentralDir","disksCount","readLocalFiles","localHeaderOffset","readLocalPart","handleUTF8","processAttributes","readCentralDir","zip64","readCentralPart","readEndOfCentral","isGarbage","endOfCentralDirOffset","expectedEndOfCentralDirOffset","extraBytes","prepareReader","crc32fn","MADE_BY_DOS","MADE_BY_UNIX","findCompression","compressionMethod","method","isEncrypted","bitFlag","useUTF8","localExtraFieldsLength","fileNameLength","fileName","extraFieldsLength","fileCommentLength","diskNumberStart","internalFileAttributes","externalFileAttributes","readExtraFields","parseZIP64ExtraField","fileComment","madeBy","extraReader","upath","findExtraFieldUnicodePath","fileNameByteArray","ucomment","findExtraFieldUnicodeComment","commentByteArray","upathField","ucommentField","_data","_dataBinary","internalStream","askUnicodeString","_decompressWorker","async","nodeStream","removedMethods","removedFn","Mutation","MutationObserver","WebKitMutationObserver","scheduleDrain","called","observer","nextTick","element","document","createTextNode","observe","characterData","MessageChannel","channel","port1","onmessage","port2","postMessage","createElement","scriptEl","onreadystatechange","parentNode","removeChild","documentElement","appendChild","setTimeout","draining","queue","oldQueue","immediate","task","INTERNAL","handlers","REJECTED","FULFILLED","PENDING","resolver","state","outcome","safelyResolveThenable","yes","reason","no","onRejected","onFulfilled","unwrap","QueueItem","callFulfilled","otherCallFulfilled","callRejected","otherCallRejected","returnValue","tryCatch","getThen","status","thenable","appyThen","onError","onSuccess","tryToUnwrap","iterable","resolved","allResolver","resolveFromAll","outValue","race","response","deflate","inflate","constants","zlib_deflate","strings","msg","ZStream","Z_NO_FLUSH","Z_FINISH","Z_OK","Z_STREAM_END","Z_SYNC_FLUSH","Z_DEFAULT_COMPRESSION","Z_DEFAULT_STRATEGY","Z_DEFLATED","Deflate","chunkSize","windowBits","memLevel","strategy","opt","gzip","ended","chunks","strm","avail_out","deflateInit2","deflateSetHeader","dictionary","dict","deflateSetDictionary","_dict_set","_mode","next_in","avail_in","Buf8","next_out","onEnd","buf2binstring","shrinkBuf","deflateEnd","flattenChunks","deflator","deflateRaw","zlib_inflate","GZheader","Inflate","inflateInit2","inflateGetHeader","next_out_utf8","tail","utf8str","allowBufError","binstring2buf","Z_NEED_DICT","inflateSetDictionary","Z_BUF_ERROR","arraySet","inflateEnd","inflator","inflateRaw","ungzip","TYPED_OK","Int32Array","source","fnTyped","dest","src","src_offs","dest_offs","fnUntyped","setTyped","Buf16","Buf32","STR_APPLY_OK","STR_APPLY_UIA_OK","__","adler32","adler","Z_PARTIAL_FLUSH","Z_FULL_FLUSH","Z_BLOCK","Z_TREES","Z_ERRNO","Z_STREAM_ERROR","Z_DATA_ERROR","Z_NO_COMPRESSION","Z_BEST_SPEED","Z_BEST_COMPRESSION","Z_FILTERED","Z_HUFFMAN_ONLY","Z_RLE","Z_FIXED","Z_BINARY","Z_TEXT","Z_UNKNOWN","trees","MAX_MEM_LEVEL","MAX_WBITS","DEF_MEM_LEVEL","LENGTH_CODES","LITERALS","L_CODES","D_CODES","BL_CODES","HEAP_SIZE","MAX_BITS","MIN_MATCH","MAX_MATCH","MIN_LOOKAHEAD","PRESET_DICT","INIT_STATE","EXTRA_STATE","NAME_STATE","COMMENT_STATE","HCRC_STATE","BUSY_STATE","FINISH_STATE","BS_NEED_MORE","BS_BLOCK_DONE","BS_FINISH_STARTED","BS_FINISH_DONE","OS_CODE","errorCode","flush_pending","pending","pending_buf","pending_out","total_out","flush_block_only","_tr_flush_block","block_start","strstart","put_byte","putShortMSB","read_buf","wrap","total_in","longest_match","cur_match","chain_length","max_chain_length","best_len","prev_length","nice_match","w_size","_win","wmask","w_mask","prev","strend","scan_end1","scan_end","good_match","lookahead","match_start","fill_window","_w_size","more","window_size","hash_size","head","insert","ins_h","hash_shift","hash_mask","deflate_stored","max_block_size","pending_buf_size","max_start","deflate_fast","hash_head","bflush","match_length","_tr_tally","max_lazy_match","last_lit","deflate_slow","max_insert","prev_match","match_available","deflate_rle","deflate_huff","Config","good_length","max_lazy","nice_length","max_chain","configuration_table","lm_init","DeflateState","gzhead","gzindex","last_flush","w_bits","hash_bits","dyn_ltree","dyn_dtree","bl_tree","l_desc","d_desc","bl_desc","bl_count","heap","heap_len","heap_max","depth","l_buf","lit_bufsize","d_buf","opt_len","static_len","matches","bi_buf","bi_valid","deflateResetKeep","data_type","_tr_init","deflateReset","deflateInit","old_flush","beg","val","hcrc","extra","time","os","level_flags","bstate","_tr_align","_tr_stored_block","dictLength","avail","tmpDict","deflateInfo","xflags","extra_len","done","BAD","TYPE","inflate_fast","_in","_out","dmax","wsize","whave","wnext","s_window","hold","bits","lcode","dcode","lmask","dmask","here","op","dist","from_source","lencode","distcode","lenbits","distbits","dolen","dodist","sane","inflate_table","CODES","LENS","DISTS","Z_MEM_ERROR","HEAD","FLAGS","TIME","OS","EXLEN","EXTRA","NAME","COMMENT","HCRC","DICTID","DICT","TYPEDO","STORED","COPY_","COPY","TABLE","LENLENS","CODELENS","LEN_","LEN","LENEXT","DIST","DISTEXT","MATCH","LIT","CHECK","LENGTH","DONE","MEM","SYNC","ENOUGH_LENS","ENOUGH_DISTS","DEF_WBITS","zswap32","InflateState","havedict","flags","check","wbits","ncode","nlen","ndist","have","lens","lendyn","distdyn","back","was","inflateResetKeep","inflateReset","inflateReset2","inflateInit","virgin","lenfix","distfix","fixedtables","sym","updatewindow","put","here_bits","here_op","here_val","last_bits","last_op","last_val","hbuf","order","inf_leave","dictid","inflateInfo","MAXBITS","lbase","lext","dbase","dext","lens_index","codes","table_index","curr","drop","used","huff","incr","mask","base_index","offs","extra_index","STORED_BLOCK","STATIC_TREES","DYN_TREES","Buf_size","MAX_BL_BITS","END_BLOCK","REP_3_6","REPZ_3_10","REPZ_11_138","extra_lbits","extra_dbits","extra_blbits","bl_order","DIST_CODE_LEN","static_ltree","static_dtree","_dist_code","_length_code","base_length","base_dist","StaticTreeDesc","static_tree","extra_bits","extra_base","elems","max_length","has_stree","static_l_desc","static_d_desc","static_bl_desc","TreeDesc","dyn_tree","stat_desc","max_code","d_code","put_short","send_bits","send_code","tree","bi_reverse","bi_flush","gen_bitlen","desc","stree","xbits","overflow","gen_codes","next_code","tr_static_init","init_block","bi_windup","copy_block","smaller","_n2","_m2","pqdownheap","compress_block","ltree","dtree","lc","lx","build_tree","node","scan_tree","prevlen","curlen","nextlen","max_count","min_count","send_tree","build_bl_tree","max_blindex","send_all_trees","lcodes","dcodes","blcodes","detect_data_type","black_mask","static_init_done","stored_len","opt_lenb","static_lenb","getGlobal","fetch","Headers","Request","Response","fetchArrayBufferBrowser","url","arrayBuffer","loadingPromises","loadCommercials","jsZip","fileData","ELECTRON_MASS","BEGIN","ATOM","MULTIPLIER_RANGE","ISOTOPE","ISOTOPE_RATIO","CHARGE","SALT","OPENING_PARENTHESIS","CLOSING_PARENTHESIS","PRE_MULTIPLIER","MULTIPLIER","TEXT","parseCharge","chargeNumber","MFParser","lastKind","Kind","char","ascii","nextAscii","getNumber","MFError","getAtom","getParenthesisCharge","isotope","getIsotope","isotopeRatio","getCurlyBracketIsotopeRatio","lastResult","atom","getNonParenthesisCharge","checkParenthesis","indexOfDash","begin","SyntaxError","message","SUBSCRIPT","SUPERSCRIPT","SUPERIMPOSE","formatCharge","convertForDisplay","Format","over","under","SUPERIMPOSE_SUP_SUB","getHtml","html","Style","elements","isotopes","abundance","elementsAndStableIsotopesObject","elementsAndStableIsotopes","symbol","capitalize","parts","newPart","two","one","includes","mass","monoisotopicMass","elementsAndIsotopesObject","elementsObject","elementsAndIsotopes","getIsotopeRatioInfo","isotopesArray","ratios","nominal","getEA","addMass","multiplier","isotopeRatioInfo","eas","ea","O","H","Na","K","Li","Ca","C","F","Si","Cl","Br","I","S","P","partToAtoms","atoms","partToMF","neutral","getInfo","customUnsaturations","getProcessedPart","currentPart","unsaturation","validUnsaturation","currentElement","unsaturations","observedMonoisotopicMass","getIsotopesInfo","distribution","getDistribution","partsToDisplay","partLine","toDisplay","partsToMF","atomSorter","toParts","expand","shouldExpandGroups","createNewPart","previousKind","openingParenthesis","closingParenthesis","preMultiplier","postMultiplier","globalPartMultiplier","expandGroups","combineAtomsIsotopesCharges","currentMultiplier","multipliers","expanded","calculateAndSortKeys","currentKey","atomA","atomB","getKey","stringComparator","prop","MF","ensureCase","parsed","displayed","toHtml","isotopesInfo","toMF","toNeutralMF","neutralMF","canonize","parseToHtml","display","require$$3","require$$4","unsaturationMatcher","onlyInteger","onlyNonInteger","generalMatcher","minMW","maxMW","minEM","maxEM","mw","getMsem","getMsInfo","allowNeutralMolecules","ionization","forceIonization","realIonization","xAbsolute","tmpArray","quickSelectMedian","xAbsoluteMedian","xAdd","isConstant","array3","xMultiply","xDotProduct","xCrossCorrelation","tau","lag","xAutoCorrelation","xBoxPlot","Q1","Q2","Q3","q1max","q3min","middleOver","xCorrelation","sumA","sumA2","sumB","sumB2","sumAB","xDivide","xGetTargetIndex","targetIndex","xIsMonotone","quincunx","smoothingSpline","sigma","lambda","SplineInterpolator","xIn","interpolate","xStart","xStop","curve","nInterval","vals","Y1","P1","Y2","P2","Y3","P3","Y4","P4","Q4","Y5","P5","Q5","polyval","coef","calc","Q","erfcinv","POSITIVE_INFINITY","rayleighCdf","xNoiseSanPlot","cutOff","refine","magnitudeMode","scaleFactor","factorStd","fixOffset","_e","medianIndex","firstNegativeValueIndex","findIndex","lastPositiveValueIndex","signPositive","signNegative","cutOffDist","determineCutOff","pIndex","initialNoiseLevelPositive","skyPoint","initialNoiseLevelNegative","nIndex","noiseLevelPositive","noiseLevelNegative","cloneSignPositive","cloneSignNegative","cutOffSignalsIndexPlus","cutOffSignalsIndexNeg","cutOffSignals","correctionFactor","simpleNormInv","effectiveCutOffDist","refinedCorrectionFactor","positive","negative","snr","considerList","indexMax","minKi","whereToCutStat","elementsOfCutOff","averageValue","kiSqrt","xTraining","createArray","yTraining","finalInput","interp","yValue","SQRT2","Float32Array","xNorm","xCheck","xPadding","fromEnd","toEnd","xRotate","xRolling","padding","subArray","xRollingAverage","xRollingMedian","xSubtract","xMinIndex","xMaxIndex","reimAbsolute","re","im","reimPhaseCorrection","phi0","phi1","cosTheta","sinTheta","newRe","newIm","newCosTheta","newSinTheta","defaultOptions","minRegSize","maxDistanceToJoin","factorNoise","reimAutoPhaseCorrection","magnitudeData","ds","holoborodko","peaksDs","robustBaseLineRegionsDetection","peaksSp","finalPeaks","reTmp","imTmp","autoPhaseRegion","ph1","ph0","weightedLinearRegression","phased","nSteps","maxSteps","bestAng","minArea","dAng","toRadians","negArea","getNegArea","sumX","dk","change","sxtw","swx","sw","sxtwy","swy","detMx","inMx","degree","FFT","_csize","angle","power","_width","_bitrev","revShift","_inv","fromComplexArray","complex","storage","createComplexArray","toComplexArray","completeSpectrum","_transform4","realTransform","_realTransform4","inverseTransform","outOff","bitrev","off","_singleTransform2","_singleTransform4","inv","quarterLen","D","Ar","Ai","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","reimFFT","applyZeroShift","csize","complexArray","fft","zeroShift","xreimZeroFilling","newX","newRE","newIM","xreimSortX","xyAlign","spectrum1","spectrum2","weightFunction","length1","length2","maxDiff","difference","weightedX","xyCheck","zonesNormalize","zones","currentZone","xyExtract","newY","loop","xyGetNMaxY","numberMaxPoints","xyGrowingX","xyIntegral","xyIntegration","currentxyIntegral","currentxyIntegration","xyMaxClosestYPoint","previousIndex","xyMaxY","currentxyMaxY","xyMaxYPoint","xyMaximaY","maxima","startEqualIndex","xyMinClosestYPoint","xyMinYPoint","xyMinimaY","xyPeakInfo","currentDiff","newDiff","after","before","inflectionBefore","inflectionAfter","extrema","inflectionMiddle","xyRealMaxYPoint","xyRealMinYPoint","xyReduce","totalPoints","currentTotal","appendFromTo","zoneNbPoints","currentX","xyRolling","xyToXYObject","objectArray","xyToXYArray","xyXShift","targetX","nbPeaks","gsdOptions","sliceddata","xyObjectCheck","xyObjectMaxXPoint","xyObjectMinXPoint","xyObjectBestPoints","xyObjectJoinX","xError","xyObjectMaxYPoint","xyObjectMinYPoint","xyObjectSlotX","slotWidth","halfSlot","xyObjectSortX","xyObjectToXY","zoneToX","probabilisticQuotientNormalization","normalizationFactor","referenceSpectrum","currentVariable","averageQuotients","quotients","quotient","msemMatcher","targetMasses","targetIntensities","minMSEM","maxMSEM","msInfo","closestMass","general","msem","processRange","currents","getMF","removeMFLastPart","parenthesis","preprocessIonizations","ionizationsString","toSum","matcher","generateMFs","uniqueMFs","estimate","filterFctVariables","filterFct","variables","canonizeMF","newParts","sizes","evolution","appendResult","uniqueMFsObject","ems","getMonoisotopicMass","mfString","getEMFromParts","comments","location","protocol","dynamicTyping","dynamicTypingFunction","WORKERS_SUPPORTED","URL","webkitURL","BLOB_URL","createObjectURL","Worker","userStep","userChunk","userComplete","complete","userError","config","workerId","download","readable","read","File","unparse","delimiter","BAD_DELIMITERS","quotes","skipEmptyLines","newline","quoteChar","escapeChar","escapeFormulae","RegExp","RECORD_SEP","UNIT_SEP","BYTE_ORDER_MARK","NODE_STREAM_INPUT","LocalChunkSize","RemoteChunkSize","DefaultDelimiter","Parser","ParserHandle","NetworkStreamer","FileStreamer","StringStreamer","ReadableStreamStreamer","jQuery","each","inputElem","instanceConfig","_handle","_finished","_completed","_halted","_input","_baseIndex","_partialLine","_rowCount","_start","_nextChunk","isFirstChunk","_completeResults","errors","E","streamer","_config","parseChunk","beforeFirstChunk","paused","aborted","cursor","preview","WORKER_ID","finished","_sendError","_readChunk","_chunkLoaded","XMLHttpRequest","withCredentials","_chunkError","open","downloadRequestBody","downloadRequestHeaders","setRequestHeader","send","readyState","responseText","getResponseHeader","statusText","webkitSlice","mozSlice","FileReaderSync","readAsText","_streamData","_streamEnd","_streamError","_checkIsFinished","_streamCleanUp","removeListener","abort","transformHeader","successful","bestDelimiter","delimitersToGuess","getCharIndex","T","L","fastMode","M","R","nextDelim","quoteSearch","linebreak","truncated","terminate","create","fetchTextBrowser","mfFromGoogleSheet","urlReferences","fetchText","tsv","tsvReferences","Papa","infoFields","formulas","references","referencesArray","label","formula","refs","ref","modif","infoField","ESI","MALDI","uniqueResults","loadGoogleSheet","refUUID","uuid","refURL","loadKnapSack","TargetMassCache","possibilities","firstPossibility","currentMinCharge","currentMaxCharge","currentCharge","getMinMass","getMaxMass","preprocessRanges","ranges","newRanges","parenthesisLevel","currentMF","possibility","originalMinCount","originalMaxCount","currentMinCount","currentMaxCount","currentCount","currentMonoisotopicMass","currentUnsaturation","initialOrder","minInnerMass","maxInnerMass","minInnerCharge","maxInnerCharge","innerCharge","isGroup","innerPossibility","targetMassCache","filterUnsaturation","fakeMinUnsaturation","fakeMaxUnsaturation","filterCharge","numberMFEvaluated","numberResults","orderMapping","currentIonization","getOrderMapping","theEnd","maxPosition","lastPosition","currentPosition","currentAtom","previousAtom","lastPossibility","initializePossibilities","isValid","unsaturationValue","isOdd","getResult","updateCurrentAtom","setCurrentMinMax","currentMass","mapping","findMFs","fromArray","mfsArray","combineMFs","rangesString","groupsToSequence","usefulParts","groupsObject","oneLetter","getGroupsObject","aa3","aa1","sc","pKaC","pKaN","pKa","aaObject","aa","calculateCharge","aas","pH","combined","combine","calculateForPh","calculateIEP","calculateChart","yAbs","acid","basic","iep","white","getAA","chargePeptide","chargeOnePeptide","firstAA","lastAA","allowNeutralLoss","allowOneNeutralLoss","splitSequence","sequence","digestSequence","enzyme","minMissed","maxMissed","minResidue","maxResidue","getRegexp","fragments","nbResidue","fragment","ya","yb","yc","zc","maxInternal","minInternal","mfparts","nTerm","cTerm","startsWith","addNTerm","addCTerm","iTerm","addITerm","convertAASequence","newMF","tmpmf","isOneLetterCode","nTerminal","cTerminal","parenthesisCounter","currentSymbol","convertAA1To3","newmf","aa1To3","splitPeptide","digestPeptide","IEP","ph","generatePeptideFragments","fromPeptidicSequence","digestion","protonation","protonationPH","fragmentation","peptide","fragmentsArray","digests","ensureUppercaseSequence","sequenceToMF","fivePrimeTerminal","threePrimeTerminal","circular","fivePrime","nucleotideType","desoxyNucleotides","oxyNucleotides","unshift","complementary","G","alcohol","monophosphate","diphosphate","triphosphate","furanThreeTerm","nucleotide","addFiveTerm","fiveTerm","ab","dh2o","mfDiff","mfString1","mfString2","mf1","mf2","mfLosses","baseLoss","addFiveTermBaseLoss","abcdBaseLoss","loss","addInternalTerm","internal","ter3","ter5","aw","bw","abw","aby","addThreeTerm","threeTerm","zch2","addThreeTermBaseLoss","wxyzBaseLoss","generateFragments","fromNucleicSequence","sequencesString","sequences","TheilSenRegression","theilSen","slopes","medianSlope","cuts","massShifts","similarities","minSimilarity","shifts","datum","minX","maxX","shiftsPPM","databases","flatten","database","flattenResults","searchMSEM","fetchJSONBrowser","searchPubchem","minPubchemEntries","realMass","mfInfo","mfParser","nbPubchemEntries","addBaseline","baselineFct","sourceRandomUniform","randomUniform","defaultSource","sourceRandomNormal","randomNormal","LOOP","FLOAT_MUL","sh1","sh2","sh3","multiply_uint32","nlo","nhi","XSadd","seed","init","getFloat","getUint32","nextState","periodCertification","addNoise","generateRandomNumber","getRandom","findMax","XSAdd","SpectrumGenerator","peakWidthFct","maxPeakHeight","shapeGenerator","assertNumber","assertInteger","reset","addPeaks","addPeak","xPosition","peakWidth","widthLeft","widthRight","firstValue","lastValue","firstPoint","lastPoint","middlePoint","getSpectrum","minPeakHeight","generateSpectrum","generator","baseline","noise","sortX","ySorted","xSorted","sortY","joinX","topY","maxToOne","maxLines","entryA","entryB","move","square","closestPointX","Distribution","multiplyY","setArray","distCopy","require$$5","require$$6","require$$7","require$$8","require$$9","IsotopicDistribution","confidence","partOriginal","cachedDistribution","getParts","finalDistribution","totalDistribution","absoluteCharge","isotopeDistribution","fromX","toX","isotopicDistribution","getCSV","getText","getTSV","getTable","xLabel","yLabel","getMaxY","newPoint","numberDecimals","csv","getXY","getGaussian","gaussianWidth","maxLength","gaussianOptions","spectrumGenerator","searchSimilarity","experimentalSpectrum","flatEntries","experimental","theoretical","experimentalInfo","thereoticalInfo","quantity","DBManager","setExperimentalSpectrum","databaseName","forceReload","loadKnapSackPromise","loadCommercialsPromise","loadContaminants","loadGoogleSheetPromise","loadTest","loadNeutralTest","maxC","replaceOrAppend","fromRange","listDatabases","nbEntries","require$$10","Peptide","require$$11","Nucleotide","require$$12","require$$13","require$$14","appendInternals","maxNumberLines","assignSlot","residues","internals","residue","paper","usedSlots","usedSlot","ALTERNATIVES","SYMBOLS","appendResidues","STATE_BEGIN","STATE_MIDDLE","STATE_END","currentChar","nextChar","nextNextChar","alternatives","replacements","fromBegin","getModifiedReplacement","getUnknownReplacement","removeStartEndParenthesis","nbOver","nbUnder","unknownResidue","replaced","modifiedResidue","residueCode","modification","alternativeOneLetter","SVG","getPaper","appendResiduesPosition","leftRightBorders","spaceBetweenResidues","xPos","xOld","textWidth","getTextWidth","setPaper","nbLines","xFrom","xTo","topPosition","bottomPosition","labelFontFamily","labelSize","font","family","weight","bbox","appendResults","analysisResult","numberResidues","unique","textColor","similariy","appendRows","allResidues","appendRowsInformation","filtered","firstResidue","lastResidue","fromResidue","toResidue","firstIndex","lastIndex","maxNbOver","maxNbUnder","addCSS","cssCode","style","words","addScript","scriptCode","script","drawLabel","plain","anchor","drawInternals","verticalPosition","spaceBetweenInternalLines","drawLine","onmouseover","onmouseout","stroke","strokeWidth","drawReplacements","replacement","drawTerminals","linecap","drawSequence","sequenceSVG","parsing","drawOptions","svg","clear","targetEA","minCount","maxCount","currentValue","mfFromEA","maxElementError","maxTotalError","preprocessEARanges","mfWhile","totalError","expected","EMDB","Groups","Elements","Report"],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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AArB,CAAP;;;EC5RF;EACA;AACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;EAEA,wBAAc,GAAG,SAAS++B,oBAAT,CAA8BskC,IAA9B,EAAoC5sE,OAAO,GAAG,EAA9C,EAAkD;EACjE,SAAO43F,KAAO,CAAChrB,IAAD,EAAO5sE,OAAP,CAAd;EACD,CAFD;;ECrBA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;EAEA,aAAc,GAAG,SAAS63F,SAAT,CAAmBC,QAAnB,EAA6B93F,OAAO,GAAG,EAAvC,EAA2C;EAC1D,SAAO+3F,KAAU,CAACD,QAAD,EAAW93F,OAAX,CAAjB;EACD,CAFD;;EChEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;EAEA,aAAc,GAAG,SAAS63F,SAAT,CAAmBG,YAAnB,EAAiCh4F,OAAO,GAAG,EAA3C,EAA+C;EAC9D,MAAI80F,MAAM,GAAGkD,YAAY,CAACj1F,KAAb,CAAmB,aAAnB,CAAb;;EACA,OAAK,IAAItC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGq0F,MAAM,CAAC50F,MAA3B,EAAmCO,CAAC,EAApC,EAAwC;EACtC,QAAIw9B,KAAK,GAAG62D,MAAM,CAACr0F,CAAD,CAAlB;;EACA,QAAIw9B,KAAK,CAAC0uC,QAAN,CAA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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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"}