{"version":3,"file":"spc-parser.esm.js","sources":["../lib/galactic/utility/getDataShape.js","../lib/galactic/utility/guessSpectraType.js","../node_modules/iobuffer/lib/text.js","../node_modules/iobuffer/lib/iobuffer.js","../node_modules/ml-spectra-processing/lib/utils/createFromToArray.js","../node_modules/ml-spectra-processing/lib/x/xIsMonotonic.js","../node_modules/ml-spectra-processing/lib/xy/xySortX.js","../lib/galactic/dataBlock/shared.js","../lib/galactic/dataBlock/newDataBlock.js","../lib/galactic/dataBlock/oldDataBlock.js","../lib/galactic/types.js","../lib/galactic/utility/headerUtils.js","../lib/galactic/fileHeader.js","../lib/galactic/logBlock.js","../lib/galactic/parse.js","../lib/uvProbe/buildVariables.js","../lib/uvProbe/parseFlat.js","../node_modules/cfb/cfb.js","../lib/uvProbe/pageTexts.js","../lib/uvProbe/parseOle.js","../lib/parse.js"],"sourcesContent":["/**\n * Get how the data was stored.\n * @param flagParameters - flag parameters from the file header.\n * @param flagParameters.multiFile - whether there are multiple spectra (subfiles) or not.\n * @param flagParameters.xy - uneven x values.\n * @param flagParameters.xyxy - multifile with separate x axis.\n * @returns the shape of the data as a string.\n */\nexport function getDataShape({ multiFile, xy, xyxy, }) {\n    /* single file */\n    if (!multiFile) {\n        // Y or XY,\n        return !xy ? 'Y' : xyxy ? 'exception' : 'XY';\n    }\n    /* then multifile */\n    if (!xy) {\n        /* even X - equidistant */\n        return 'YY';\n    }\n    else {\n        // uneven x\n        return !xyxy ? 'XYY' : 'XYXY';\n    }\n}\n//# sourceMappingURL=getDataShape.js.map","import { getDataShape } from \"./getDataShape.js\";\n/**\n * Inspects properties and tries to classify the spectra for the most common spectra types.\n * @param meta - the parsed file header.\n * @returns string describing the type of spectra or \"General\" if unsure.\n */\nexport function guessSpectraType(meta) {\n    //function tested with the `fileHeader.test.ts`\n    // for the new file header they define a \"experiment type\"\n    if (meta.kind === 'new' && // \"General SPC\" does not give any information\n        !meta.experimentType.startsWith('General SPC')) {\n        const id = meta.experimentType.split(' ', 1)[0];\n        switch (id //find all possible ids in `types.ts` file\n        ) {\n            case 'FT-IR,':\n                return 'ir';\n            case 'NIR':\n                return 'ir';\n            case 'UV-VIS':\n                return 'uv';\n            case 'Mass':\n                return 'mass';\n            case 'Raman':\n                return 'raman';\n            default:\n                return 'other';\n        }\n    }\n    // for old header or General SPC\n    switch (meta.xUnitsType) {\n        case 'Mass (M/z)':\n            return 'mass';\n        case 'Raman Shift (cm-1)':\n            return 'raman';\n        case 'Micrometers (um)':\n            return uvOrIR(meta, 'micrometer');\n        case 'Wavenumber (cm-1)': {\n            return uvOrIR(meta, 'wavenumber');\n        }\n        case 'Nanometers (nm)':\n            if ([/*'Kubelka-Monk'*/ 'Absorbance', 'Log(1/R)', 'Transmission'].includes(meta.yUnitsType)) {\n                return uvOrIR(meta, 'nanometer');\n            }\n            return 'other';\n        default:\n            return 'other';\n    }\n}\n/**\n * Further classify an X axis that is using \"wavenumber\" as uv or ir.\n * @param meta - the parsed file header.\n * @param xUnit - the unit of the X axis.\n * @returns the region classification.\n */\nexport function uvOrIR(meta, xUnit) {\n    //tested in \"parse\" because of the input\n    const dataShape = getDataShape(meta.parameters);\n    //xyxy and exception won't normally get here anyways (raman or ms normally.)\n    const analyze = ['Y', 'YY', 'XY', 'XYY'].includes(dataShape);\n    if (analyze) {\n        let sX = meta.startingX;\n        let eX = meta.endingX;\n        if (xUnit !== 'nanometer') {\n            sX = unitToNano(sX, xUnit);\n            eX = unitToNano(eX, xUnit);\n        }\n        const lowerBound = Math.min(sX, eX);\n        return getRegion(lowerBound);\n    }\n    return 'other';\n}\n/**\n * Determines the spectral region from a wavelength boundary.\n * @param lb - lower boundary in nanometers.\n * @returns type of spectra.\n */\nexport function getRegion(lb) {\n    return lb < 150 ? 'other' : lb < 700 ? 'uv' : 'ir';\n}\n/**\n * Converts micrometers or wavenumber units to nanometers\n * This allows a unique way to determine the spectra region (using nanometers).\n * @param x - value\n * @param from - input unit to convert\n * @returns equivalent in nanometers\n */\nexport function unitToNano(x, from) {\n    return from === 'micrometer' ? x * 1000 : (1 / x) * 10 ** 7;\n}\n//# sourceMappingURL=guessSpectraType.js.map","/**\n * Decode bytes to text\n * @param bytes - Bytes to decode\n * @param encoding - Text encoding\n * @returns The decoded text\n */\nexport function decode(bytes, encoding = 'utf8') {\n    const decoder = new TextDecoder(encoding);\n    return decoder.decode(bytes);\n}\nconst encoder = new TextEncoder();\n/**\n * Encode text to utf8\n * @param str - Text to encode\n * @returns The encoded bytes\n */\nexport function encode(str) {\n    return encoder.encode(str);\n}\n//# sourceMappingURL=text.js.map","import { decode, encode } from \"./text.js\";\nconst defaultByteLength = 1024 * 8;\nconst hostBigEndian = (() => {\n    const array = new Uint8Array(4);\n    const view = new Uint32Array(array.buffer);\n    return !((view[0] = 1) & array[0]);\n})();\nconst typedArrays = {\n    int8: globalThis.Int8Array,\n    uint8: globalThis.Uint8Array,\n    int16: globalThis.Int16Array,\n    uint16: globalThis.Uint16Array,\n    int32: globalThis.Int32Array,\n    uint32: globalThis.Uint32Array,\n    uint64: globalThis.BigUint64Array,\n    int64: globalThis.BigInt64Array,\n    float32: globalThis.Float32Array,\n    float64: globalThis.Float64Array,\n};\nexport class IOBuffer {\n    /**\n     * Reference to the internal ArrayBuffer object.\n     */\n    buffer;\n    /**\n     * Byte length of the internal ArrayBuffer.\n     */\n    byteLength;\n    /**\n     * Byte offset of the internal ArrayBuffer.\n     */\n    byteOffset;\n    /**\n     * Byte length of the internal ArrayBuffer.\n     */\n    length;\n    /**\n     * The current offset of the buffer's pointer.\n     */\n    offset;\n    lastWrittenByte;\n    littleEndian;\n    _data;\n    _mark;\n    _marks;\n    /**\n     * Create a new IOBuffer.\n     * @param data - The data to construct the IOBuffer with.\n     * If data is a number, it will be the new buffer's length<br>\n     * If data is `undefined`, the buffer will be initialized with a default length of 8Kb<br>\n     * If data is an ArrayBuffer, SharedArrayBuffer, an ArrayBufferView (Typed Array), an IOBuffer instance,\n     * or a Node.js Buffer, a view will be created over the underlying ArrayBuffer.\n     * @param options - An object for the options.\n     * @returns A new IOBuffer instance.\n     */\n    constructor(data = defaultByteLength, options = {}) {\n        let dataIsGiven = false;\n        if (typeof data === 'number') {\n            data = new ArrayBuffer(data);\n        }\n        else {\n            dataIsGiven = true;\n            this.lastWrittenByte = data.byteLength;\n        }\n        const offset = options.offset ? options.offset >>> 0 : 0;\n        const byteLength = data.byteLength - offset;\n        let dvOffset = offset;\n        if (ArrayBuffer.isView(data) || data instanceof IOBuffer) {\n            if (data.byteLength !== data.buffer.byteLength) {\n                dvOffset = data.byteOffset + offset;\n            }\n            data = data.buffer;\n        }\n        if (dataIsGiven) {\n            this.lastWrittenByte = byteLength;\n        }\n        else {\n            this.lastWrittenByte = 0;\n        }\n        this.buffer = data;\n        this.length = byteLength;\n        this.byteLength = byteLength;\n        this.byteOffset = dvOffset;\n        this.offset = 0;\n        this.littleEndian = true;\n        this._data = new DataView(this.buffer, dvOffset, byteLength);\n        this._mark = 0;\n        this._marks = [];\n    }\n    /**\n     * Checks if the memory allocated to the buffer is sufficient to store more\n     * bytes after the offset.\n     * @param byteLength - The needed memory in bytes.\n     * @returns `true` if there is sufficient space and `false` otherwise.\n     */\n    available(byteLength = 1) {\n        return this.offset + byteLength <= this.length;\n    }\n    /**\n     * Check if little-endian mode is used for reading and writing multi-byte\n     * values.\n     * @returns `true` if little-endian mode is used, `false` otherwise.\n     */\n    isLittleEndian() {\n        return this.littleEndian;\n    }\n    /**\n     * Set little-endian mode for reading and writing multi-byte values.\n     * @returns This.\n     */\n    setLittleEndian() {\n        this.littleEndian = true;\n        return this;\n    }\n    /**\n     * Check if big-endian mode is used for reading and writing multi-byte values.\n     * @returns `true` if big-endian mode is used, `false` otherwise.\n     */\n    isBigEndian() {\n        return !this.littleEndian;\n    }\n    /**\n     * Switches to big-endian mode for reading and writing multi-byte values.\n     * @returns This.\n     */\n    setBigEndian() {\n        this.littleEndian = false;\n        return this;\n    }\n    /**\n     * Move the pointer n bytes forward.\n     * @param n - Number of bytes to skip.\n     * @returns This.\n     */\n    skip(n = 1) {\n        this.offset += n;\n        return this;\n    }\n    /**\n     * Move the pointer n bytes backward.\n     * @param n - Number of bytes to move back.\n     * @returns This.\n     */\n    back(n = 1) {\n        this.offset -= n;\n        return this;\n    }\n    /**\n     * Move the pointer to the given offset.\n     * @param offset - The offset to move to.\n     * @returns This.\n     */\n    seek(offset) {\n        this.offset = offset;\n        return this;\n    }\n    /**\n     * Store the current pointer offset.\n     * @see {@link IOBuffer#reset}\n     * @returns This.\n     */\n    mark() {\n        this._mark = this.offset;\n        return this;\n    }\n    /**\n     * Move the pointer back to the last pointer offset set by mark.\n     * @see {@link IOBuffer#mark}\n     * @returns This.\n     */\n    reset() {\n        this.offset = this._mark;\n        return this;\n    }\n    /**\n     * Push the current pointer offset to the mark stack.\n     * @see {@link IOBuffer#popMark}\n     * @returns This.\n     */\n    pushMark() {\n        this._marks.push(this.offset);\n        return this;\n    }\n    /**\n     * Pop the last pointer offset from the mark stack, and set the current\n     * pointer offset to the popped value.\n     * @see {@link IOBuffer#pushMark}\n     * @returns This.\n     */\n    popMark() {\n        const offset = this._marks.pop();\n        if (offset === undefined) {\n            throw new Error('Mark stack empty');\n        }\n        this.seek(offset);\n        return this;\n    }\n    /**\n     * Move the pointer offset back to 0.\n     * @returns This.\n     */\n    rewind() {\n        this.offset = 0;\n        return this;\n    }\n    /**\n     * Make sure the buffer has sufficient memory to write a given byteLength at\n     * the current pointer offset.\n     * If the buffer's memory is insufficient, this method will create a new\n     * buffer (a copy) with a length that is twice (byteLength + current offset).\n     * @param byteLength - The needed memory in bytes.\n     * @returns This.\n     */\n    ensureAvailable(byteLength = 1) {\n        if (!this.available(byteLength)) {\n            const lengthNeeded = this.offset + byteLength;\n            const newLength = lengthNeeded * 2;\n            const newArray = new Uint8Array(newLength);\n            newArray.set(new Uint8Array(this.buffer));\n            this.buffer = newArray.buffer;\n            this.length = newLength;\n            this.byteLength = newLength;\n            this._data = new DataView(this.buffer);\n        }\n        return this;\n    }\n    /**\n     * Read a byte and return false if the byte's value is 0, or true otherwise.\n     * Moves pointer forward by one byte.\n     * @returns The read boolean.\n     */\n    readBoolean() {\n        return this.readUint8() !== 0;\n    }\n    /**\n     * Read a signed 8-bit integer and move pointer forward by 1 byte.\n     * @returns The read byte.\n     */\n    readInt8() {\n        return this._data.getInt8(this.offset++);\n    }\n    /**\n     * Read an unsigned 8-bit integer and move pointer forward by 1 byte.\n     * @returns The read byte.\n     */\n    readUint8() {\n        return this._data.getUint8(this.offset++);\n    }\n    /**\n     * Alias for {@link IOBuffer#readUint8}.\n     * @returns The read byte.\n     */\n    readByte() {\n        return this.readUint8();\n    }\n    /**\n     * Read `n` bytes and move pointer forward by `n` bytes.\n     * @param n - Number of bytes to read.\n     * @returns The read bytes.\n     */\n    readBytes(n = 1) {\n        return this.readArray(n, 'uint8');\n    }\n    /**\n     * Creates an array of corresponding to the type `type` and size `size`.\n     * For example, type `uint8` will create a `Uint8Array`.\n     * @param size - size of the resulting array\n     * @param type - number type of elements to read\n     * @returns The read array.\n     */\n    readArray(size, type) {\n        const bytes = typedArrays[type].BYTES_PER_ELEMENT * size;\n        const offset = this.byteOffset + this.offset;\n        const slice = this.buffer.slice(offset, offset + bytes);\n        if (this.littleEndian === hostBigEndian &&\n            type !== 'uint8' &&\n            type !== 'int8') {\n            const slice = new Uint8Array(this.buffer.slice(offset, offset + bytes));\n            slice.reverse();\n            const returnArray = new typedArrays[type](slice.buffer);\n            this.offset += bytes;\n            returnArray.reverse();\n            return returnArray;\n        }\n        const returnArray = new typedArrays[type](slice);\n        this.offset += bytes;\n        return returnArray;\n    }\n    /**\n     * Read a 16-bit signed integer and move pointer forward by 2 bytes.\n     * @returns The read value.\n     */\n    readInt16() {\n        const value = this._data.getInt16(this.offset, this.littleEndian);\n        this.offset += 2;\n        return value;\n    }\n    /**\n     * Read a 16-bit unsigned integer and move pointer forward by 2 bytes.\n     * @returns The read value.\n     */\n    readUint16() {\n        const value = this._data.getUint16(this.offset, this.littleEndian);\n        this.offset += 2;\n        return value;\n    }\n    /**\n     * Read a 32-bit signed integer and move pointer forward by 4 bytes.\n     * @returns The read value.\n     */\n    readInt32() {\n        const value = this._data.getInt32(this.offset, this.littleEndian);\n        this.offset += 4;\n        return value;\n    }\n    /**\n     * Read a 32-bit unsigned integer and move pointer forward by 4 bytes.\n     * @returns The read value.\n     */\n    readUint32() {\n        const value = this._data.getUint32(this.offset, this.littleEndian);\n        this.offset += 4;\n        return value;\n    }\n    /**\n     * Read a 32-bit floating number and move pointer forward by 4 bytes.\n     * @returns The read value.\n     */\n    readFloat32() {\n        const value = this._data.getFloat32(this.offset, this.littleEndian);\n        this.offset += 4;\n        return value;\n    }\n    /**\n     * Read a 64-bit floating number and move pointer forward by 8 bytes.\n     * @returns The read value.\n     */\n    readFloat64() {\n        const value = this._data.getFloat64(this.offset, this.littleEndian);\n        this.offset += 8;\n        return value;\n    }\n    /**\n     * Read a 64-bit signed integer number and move pointer forward by 8 bytes.\n     * @returns The read value.\n     */\n    readBigInt64() {\n        const value = this._data.getBigInt64(this.offset, this.littleEndian);\n        this.offset += 8;\n        return value;\n    }\n    /**\n     * Read a 64-bit unsigned integer number and move pointer forward by 8 bytes.\n     * @returns The read value.\n     */\n    readBigUint64() {\n        const value = this._data.getBigUint64(this.offset, this.littleEndian);\n        this.offset += 8;\n        return value;\n    }\n    /**\n     * Read a 1-byte ASCII character and move pointer forward by 1 byte.\n     * @returns The read character.\n     */\n    readChar() {\n        // eslint-disable-next-line unicorn/prefer-code-point\n        return String.fromCharCode(this.readInt8());\n    }\n    /**\n     * Read `n` 1-byte ASCII characters and move pointer forward by `n` bytes.\n     * @param n - Number of characters to read.\n     * @returns The read characters.\n     */\n    readChars(n = 1) {\n        let result = '';\n        for (let i = 0; i < n; i++) {\n            result += this.readChar();\n        }\n        return result;\n    }\n    /**\n     * Read the next `n` bytes, return a UTF-8 decoded string and move pointer\n     * forward by `n` bytes.\n     * @param n - Number of bytes to read.\n     * @returns The decoded string.\n     */\n    readUtf8(n = 1) {\n        return decode(this.readBytes(n));\n    }\n    /**\n     * Read the next `n` bytes, return a string decoded with `encoding` and move pointer\n     * forward by `n` bytes.\n     * If no encoding is passed, the function is equivalent to @see {@link IOBuffer#readUtf8}\n     * @param n - Number of bytes to read.\n     * @param encoding - The encoding to use. Default is 'utf8'.\n     * @returns The decoded string.\n     */\n    decodeText(n = 1, encoding = 'utf8') {\n        return decode(this.readBytes(n), encoding);\n    }\n    /**\n     * Write 0xff if the passed value is truthy, 0x00 otherwise and move pointer\n     * forward by 1 byte.\n     * @param value - The value to write.\n     * @returns This.\n     */\n    writeBoolean(value) {\n        this.writeUint8(value ? 0xff : 0x00);\n        return this;\n    }\n    /**\n     * Write `value` as an 8-bit signed integer and move pointer forward by 1 byte.\n     * @param value - The value to write.\n     * @returns This.\n     */\n    writeInt8(value) {\n        this.ensureAvailable(1);\n        this._data.setInt8(this.offset++, value);\n        this._updateLastWrittenByte();\n        return this;\n    }\n    /**\n     * Write `value` as an 8-bit unsigned integer and move pointer forward by 1\n     * byte.\n     * @param value - The value to write.\n     * @returns This.\n     */\n    writeUint8(value) {\n        this.ensureAvailable(1);\n        this._data.setUint8(this.offset++, value);\n        this._updateLastWrittenByte();\n        return this;\n    }\n    /**\n     * An alias for {@link IOBuffer#writeUint8}.\n     * @param value - The value to write.\n     * @returns This.\n     */\n    writeByte(value) {\n        return this.writeUint8(value);\n    }\n    /**\n     * Write all elements of `bytes` as uint8 values and move pointer forward by\n     * `bytes.length` bytes.\n     * @param bytes - The array of bytes to write.\n     * @returns This.\n     */\n    writeBytes(bytes) {\n        this.ensureAvailable(bytes.length);\n        // eslint-disable-next-line @typescript-eslint/prefer-for-of\n        for (let i = 0; i < bytes.length; i++) {\n            this._data.setUint8(this.offset++, bytes[i]);\n        }\n        this._updateLastWrittenByte();\n        return this;\n    }\n    /**\n     * Write `value` as a 16-bit signed integer and move pointer forward by 2\n     * bytes.\n     * @param value - The value to write.\n     * @returns This.\n     */\n    writeInt16(value) {\n        this.ensureAvailable(2);\n        this._data.setInt16(this.offset, value, this.littleEndian);\n        this.offset += 2;\n        this._updateLastWrittenByte();\n        return this;\n    }\n    /**\n     * Write `value` as a 16-bit unsigned integer and move pointer forward by 2\n     * bytes.\n     * @param value - The value to write.\n     * @returns This.\n     */\n    writeUint16(value) {\n        this.ensureAvailable(2);\n        this._data.setUint16(this.offset, value, this.littleEndian);\n        this.offset += 2;\n        this._updateLastWrittenByte();\n        return this;\n    }\n    /**\n     * Write `value` as a 32-bit signed integer and move pointer forward by 4\n     * bytes.\n     * @param value - The value to write.\n     * @returns This.\n     */\n    writeInt32(value) {\n        this.ensureAvailable(4);\n        this._data.setInt32(this.offset, value, this.littleEndian);\n        this.offset += 4;\n        this._updateLastWrittenByte();\n        return this;\n    }\n    /**\n     * Write `value` as a 32-bit unsigned integer and move pointer forward by 4\n     * bytes.\n     * @param value - The value to write.\n     * @returns This.\n     */\n    writeUint32(value) {\n        this.ensureAvailable(4);\n        this._data.setUint32(this.offset, value, this.littleEndian);\n        this.offset += 4;\n        this._updateLastWrittenByte();\n        return this;\n    }\n    /**\n     * Write `value` as a 32-bit floating number and move pointer forward by 4\n     * bytes.\n     * @param value - The value to write.\n     * @returns This.\n     */\n    writeFloat32(value) {\n        this.ensureAvailable(4);\n        this._data.setFloat32(this.offset, value, this.littleEndian);\n        this.offset += 4;\n        this._updateLastWrittenByte();\n        return this;\n    }\n    /**\n     * Write `value` as a 64-bit floating number and move pointer forward by 8\n     * bytes.\n     * @param value - The value to write.\n     * @returns This.\n     */\n    writeFloat64(value) {\n        this.ensureAvailable(8);\n        this._data.setFloat64(this.offset, value, this.littleEndian);\n        this.offset += 8;\n        this._updateLastWrittenByte();\n        return this;\n    }\n    /**\n     * Write `value` as a 64-bit signed bigint and move pointer forward by 8\n     * bytes.\n     * @param value - The value to write.\n     * @returns This.\n     */\n    writeBigInt64(value) {\n        this.ensureAvailable(8);\n        this._data.setBigInt64(this.offset, value, this.littleEndian);\n        this.offset += 8;\n        this._updateLastWrittenByte();\n        return this;\n    }\n    /**\n     * Write `value` as a 64-bit unsigned bigint and move pointer forward by 8\n     * bytes.\n     * @param value - The value to write.\n     * @returns This.\n     */\n    writeBigUint64(value) {\n        this.ensureAvailable(8);\n        this._data.setBigUint64(this.offset, value, this.littleEndian);\n        this.offset += 8;\n        this._updateLastWrittenByte();\n        return this;\n    }\n    /**\n     * Write the charCode of `str`'s first character as an 8-bit unsigned integer\n     * and move pointer forward by 1 byte.\n     * @param str - The character to write.\n     * @returns This.\n     */\n    writeChar(str) {\n        // eslint-disable-next-line unicorn/prefer-code-point\n        return this.writeUint8(str.charCodeAt(0));\n    }\n    /**\n     * Write the charCodes of all `str`'s characters as 8-bit unsigned integers\n     * and move pointer forward by `str.length` bytes.\n     * @param str - The characters to write.\n     * @returns This.\n     */\n    writeChars(str) {\n        for (let i = 0; i < str.length; i++) {\n            // eslint-disable-next-line unicorn/prefer-code-point\n            this.writeUint8(str.charCodeAt(i));\n        }\n        return this;\n    }\n    /**\n     * UTF-8 encode and write `str` to the current pointer offset and move pointer\n     * forward according to the encoded length.\n     * @param str - The string to write.\n     * @returns This.\n     */\n    writeUtf8(str) {\n        return this.writeBytes(encode(str));\n    }\n    /**\n     * Export a Uint8Array view of the internal buffer.\n     * The view starts at the byte offset and its length\n     * is calculated to stop at the last written byte or the original length.\n     * @returns A new Uint8Array view.\n     */\n    toArray() {\n        return new Uint8Array(this.buffer, this.byteOffset, this.lastWrittenByte);\n    }\n    /**\n     *  Get the total number of bytes written so far, regardless of the current offset.\n     * @returns - Total number of bytes.\n     */\n    getWrittenByteLength() {\n        return this.lastWrittenByte - this.byteOffset;\n    }\n    /**\n     * Update the last written byte offset\n     * @private\n     */\n    _updateLastWrittenByte() {\n        if (this.offset > this.lastWrittenByte) {\n            this.lastWrittenByte = this.offset;\n        }\n    }\n}\n//# sourceMappingURL=iobuffer.js.map","/**\n * Create an array with numbers between \"from\" and \"to\" of length \"length\"\n * @param options - options.\n * @returns array of distributed numbers between \"from\" and \"to\".\n */\nexport function createFromToArray(options = {}) {\n    const { from = 0, to = 1, length = 1000, includeFrom = true, includeTo = true, distribution = 'uniform', } = options;\n    const array = new Float64Array(length);\n    let div = length;\n    if (includeFrom && includeTo) {\n        div = length - 1;\n    }\n    else if ((!includeFrom && includeTo) || (includeFrom && !includeTo)) {\n        div = length;\n    }\n    else if (!includeFrom && !includeTo) {\n        div = length + 1;\n    }\n    const delta = (to - from) / div;\n    if (distribution === 'uniform') {\n        if (includeFrom) {\n            let index = 0;\n            while (index < length) {\n                array[index] = from + delta * index;\n                index++;\n            }\n        }\n        else {\n            let index = 0;\n            while (index < length) {\n                array[index] = from + delta * (index + 1);\n                index++;\n            }\n        }\n    }\n    else if (distribution === 'log') {\n        const base = (to / from) ** (1 / div);\n        const firstExponent = Math.log(from) / Math.log(base);\n        if (includeFrom) {\n            let index = 0;\n            while (index < length) {\n                array[index] = base ** (firstExponent + index);\n                index++;\n            }\n        }\n        else {\n            let index = 0;\n            while (index < length) {\n                array[index] = base ** (firstExponent + index + 1);\n                index++;\n            }\n        }\n    }\n    else {\n        throw new Error('distribution must be uniform or log');\n    }\n    return array;\n}\n//# sourceMappingURL=createFromToArray.js.map","/**\n * Returns true if x is monotonic.\n * @param array - array of numbers.\n * @returns 1 if monotonic increasing, -1 if monotonic decreasing, 0 if not monotonic.\n */\nexport function xIsMonotonic(array) {\n    if (array.length <= 2) {\n        return 1;\n    }\n    if (array[0] === array[1]) {\n        // maybe a constant series\n        for (let i = 1; i < array.length - 1; i++) {\n            if (array[i] !== array[i + 1])\n                return 0;\n        }\n        return 1;\n    }\n    if (array[0] < array.at(-1)) {\n        for (let i = 0; i < array.length - 1; i++) {\n            if (array[i] >= array[i + 1])\n                return 0;\n        }\n        return 1;\n    }\n    else {\n        for (let i = 0; i < array.length - 1; i++) {\n            if (array[i] <= array[i + 1])\n                return 0;\n        }\n        return -1;\n    }\n}\n//# sourceMappingURL=xIsMonotonic.js.map","import { xIsMonotonic } from \"../x/index.js\";\n/**\n * This function performs a quick sort of the x array while transforming the y array to preserve the coordinates.\n * @param data - object that contains property x (Array) and y (Array).\n */\nexport function xySortX(data) {\n    const { x, y } = data;\n    if (xIsMonotonic(x) && x.length > 1) {\n        const floatX = Float64Array.from(x);\n        const floatY = Float64Array.from(y);\n        if (floatX.at(-1) < floatX[0]) {\n            floatX.reverse();\n            floatY.reverse();\n        }\n        return {\n            x: floatX,\n            y: floatY,\n        };\n    }\n    const xyObject = Array.from(x, (val, index) => ({\n        x: val,\n        y: y[index],\n    }));\n    xyObject.sort((a, b) => a.x - b.x);\n    const response = {\n        x: new Float64Array(x.length),\n        y: new Float64Array(y.length),\n    };\n    for (let i = 0; i < x.length; i++) {\n        response.x[i] = xyObject[i].x;\n        response.y[i] = xyObject[i].y;\n    }\n    return response;\n}\n//# sourceMappingURL=xySortX.js.map","import { xySortX } from 'ml-spectra-processing';\n/**\n * Gets the Subfile flags.\n * @param flag - First byte of the subheader.\n * @returns The parameters.\n */\nexport function parseSubFlagParameters(flag) {\n    return {\n        changed: (flag & 1) !== 0,\n        noPeakTable: (flag & 8) !== 0,\n        modifiedArithmetic: (flag & 128) !== 0,\n    };\n}\n/**\n * Parses the subheader (header of the subfile).\n * @param buffer - SPC buffer.\n * @returns subheader object.\n */\nexport function parseSubHeader(buffer) {\n    return {\n        parameters: parseSubFlagParameters(buffer.readUint8()),\n        exponentY: buffer.readInt8(),\n        indexNumber: buffer.readUint16(),\n        startingZ: buffer.readFloat32(),\n        endingZ: buffer.readFloat32(),\n        noiseValue: buffer.readFloat32(),\n        numberPoints: buffer.readUint32(),\n        numberCoAddedScans: buffer.readUint32(),\n        wAxisValue: buffer.readFloat32(),\n        reserved: buffer.readChars(4).replaceAll('\\u0000', '').trim(),\n    };\n}\n/**\n * Set the X and Y axis (object with labels, values etc.)\n * @param x - X values array.\n * @param y - Y values array.\n * @param fileHeader - main file header.\n * @returns object with x and y as axis.\n */\nexport function setXYAxis(x, y, fileHeader) {\n    const xAxis = /(?<label>.*?) ?[([](?<units>.*)[)\\]]/.exec(fileHeader.xUnitsType);\n    const yAxis = /(?<label>.*?) ?[([](?<units>.*)[)\\]]/.exec(fileHeader.yUnitsType);\n    const { x: oX, y: oY } = xySortX({ x, y });\n    const variables = {\n        x: {\n            symbol: 'x',\n            label: xAxis?.groups?.label || fileHeader.xUnitsType,\n            units: xAxis?.groups?.units || '',\n            data: oX,\n            isDependent: false,\n        },\n        y: {\n            symbol: 'y',\n            label: yAxis?.groups?.label || fileHeader.yUnitsType,\n            units: yAxis?.groups?.units || '',\n            data: oY,\n            isDependent: true,\n        },\n    };\n    return variables;\n}\n//# sourceMappingURL=shared.js.map","import { createFromToArray } from 'ml-spectra-processing';\nimport { getDataShape } from \"../utility/getDataShape.js\";\nimport { parseSubHeader, setXYAxis } from \"./shared.js\";\n/**\n * Reads the data block of the SPC file.\n * @param buffer - spc buffer.\n * @param fileHeader - main header.\n * @returns Array containing the spectra.\n */\nexport function newDataBlock(buffer, fileHeader) {\n    let x;\n    const spectra = [];\n    const dataShape = getDataShape(fileHeader.parameters);\n    if (dataShape === 'XY' || dataShape === 'XYY') {\n        //for these ones, X axis comes before subheader !!\n        x = new Float64Array(fileHeader.numberPoints);\n        for (let i = 0; i < fileHeader.numberPoints; i++) {\n            x[i] = buffer.readFloat32();\n        }\n    }\n    else if (dataShape === 'YY' || dataShape === 'Y') {\n        //for these ones, no X axis, we create it as we have all parameters\n        x = createFromToArray({\n            from: fileHeader.startingX,\n            to: fileHeader.endingX,\n            length: fileHeader.numberPoints,\n        });\n    }\n    for (let i = 0; i < fileHeader.spectra; i++) {\n        // here Y is set (runs only once for a single spectra.)\n        const subFileHeader = parseSubHeader(buffer);\n        // set X for the remaining cases if neccesary\n        if (dataShape === 'XYXY' || dataShape === 'exception') {\n            x = new Float64Array(subFileHeader.numberPoints);\n            for (let j = 0; j < x.length; j++) {\n                x[j] = buffer.readFloat32();\n            }\n        }\n        const y = getNewY(new Float64Array(x.length), subFileHeader, fileHeader, buffer);\n        const variables = setXYAxis(x, y, fileHeader);\n        spectra.push({ meta: subFileHeader, variables });\n    }\n    return spectra;\n}\n/**\n * Reads Y values from the buffer for new format SPC files.\n * @param y - output Y array to fill.\n * @param subHeader - subfile header.\n * @param fileHeader - main file header.\n * @param buffer - SPC buffer.\n * @returns the filled Y array.\n */\nexport function getNewY(y, subHeader, fileHeader, buffer) {\n    const { exponentY, parameters: { y16BitPrecision }, } = fileHeader;\n    if (subHeader.exponentY === 0) {\n        subHeader.exponentY = exponentY;\n    }\n    const yFactor = 2 ** (subHeader.exponentY - (y16BitPrecision ? 16 : 32));\n    if (y16BitPrecision) {\n        for (let j = 0; j < y.length; j++) {\n            y[j] = buffer.readInt16() * yFactor;\n        }\n    }\n    else {\n        for (let j = 0; j < y.length; j++) {\n            if (subHeader.exponentY !== -128) {\n                y[j] = buffer.readInt32() * yFactor;\n            }\n            else {\n                y[j] = buffer.readFloat32();\n            }\n        }\n    }\n    return y;\n}\n//# sourceMappingURL=newDataBlock.js.map","import { createFromToArray } from 'ml-spectra-processing';\nimport { parseSubHeader, setXYAxis } from \"./shared.js\";\n/**\n * Reads a file's data block (old SPC format)\n * @param buffer - spc buffer.\n * @param fileHeader - header.\n * @returns Array containing the spectra.\n */\nexport function oldDataBlock(buffer, fileHeader) {\n    // either Y or YY fall on the for loop\n    const spectra = [];\n    // old format uses always equidistant arrays\n    const x = createFromToArray({\n        from: fileHeader.startingX,\n        to: fileHeader.endingX,\n        length: fileHeader.numberPoints,\n    });\n    for (let i = 0; buffer.offset + fileHeader.numberPoints < buffer.length; i++) {\n        const subFileHeader = parseSubHeader(buffer);\n        const y = getOldY(new Float64Array(x.length), subFileHeader, fileHeader, buffer);\n        const variables = setXYAxis(x, y, fileHeader);\n        spectra.push({ meta: subFileHeader, variables });\n    }\n    return spectra;\n}\n/**\n * Reads Y values from the buffer for old format SPC files.\n * @param y - output Y array to fill.\n * @param subHeader - subfile header.\n * @param fileHeader - main file header.\n * @param buffer - SPC buffer.\n * @returns the filled Y array.\n */\nexport function getOldY(y, subHeader, fileHeader, buffer) {\n    const { fileVersion, exponentY, parameters: { y16BitPrecision }, } = fileHeader;\n    if (subHeader.exponentY === 0) {\n        subHeader.exponentY = exponentY;\n    }\n    const yFactor = 2 ** (subHeader.exponentY - (y16BitPrecision ? 16 : 32));\n    if (y16BitPrecision) {\n        for (let j = 0; j < y.length; j++) {\n            y[j] = buffer.readInt16() * yFactor;\n        }\n    }\n    else {\n        for (let j = 0; j < y.length; j++) {\n            if (fileVersion === 0x4d) {\n                y[j] =\n                    ((buffer.readUint8() << 16) +\n                        (buffer.readInt8() << 24) +\n                        (buffer.readUint8() << 0) +\n                        (buffer.readUint8() << 8)) *\n                        yFactor;\n            }\n        }\n    }\n    return y;\n}\n//# sourceMappingURL=oldDataBlock.js.map","/**\n * Gives meaning to type codes.\n * @param  xzwType - x, z or w type code.\n * @returns  String corresponding to the code.\n */\nexport function xzwTypes(xzwType) {\n    switch (xzwType) {\n        case 1:\n            return 'Wavenumber (cm-1)';\n        case 2:\n            return 'Micrometers (um)';\n        case 3:\n            return 'Nanometers (nm)';\n        case 4:\n            return 'Seconds';\n        case 5:\n            return 'Minutes';\n        case 6:\n            return 'Hertz (Hz)';\n        case 7:\n            return 'Kilohertz (KHz)';\n        case 8:\n            return 'Megahertz (MHz)';\n        case 9:\n            return 'Mass (M/z)';\n        case 10:\n            return 'Parts per million (PPM)';\n        case 11:\n            return 'Days';\n        case 12:\n            return 'Years';\n        case 13:\n            return 'Raman Shift (cm-1)';\n        case 14:\n            return 'eV';\n        case 15:\n            return 0;\n        case 16:\n            return 'Diode Number';\n        case 17:\n            return 'Channel ';\n        case 18:\n            return 'Degrees';\n        case 19:\n            return 'Temperature (F)';\n        case 20:\n            return 'Temperature (C)';\n        case 21:\n            return 'Temperature (K)';\n        case 22:\n            return 'Data Points';\n        case 23:\n            return 'Milliseconds (mSec)';\n        case 24:\n            return 'Microseconds (uSec)';\n        case 25:\n            return 'Nanoseconds (nSec)';\n        case 26:\n            return 'Gigahertz (GHz)';\n        case 27:\n            return 'Centimeters (cm)';\n        case 28:\n            return 'Meters (m)';\n        case 29:\n            return 'Millimeters (mm)';\n        case 30:\n            return 'Hours';\n        case 255:\n            return 'Double interferogram';\n        default:\n            return 'Arbitrary';\n    }\n}\n/**\n * Gives meaning to y type codes\n * @param  yType - y type code\n * @returns  String corresponding to the code\n */\nexport function yTypes(yType) {\n    switch (yType) {\n        case 0:\n            return 'Arbitrary Intensity';\n        case 1:\n            return 'Interferogram';\n        case 2:\n            return 'Absorbance';\n        case 3:\n            return 'Kubelka-Monk';\n        case 4:\n            return 'Counts';\n        case 5:\n            return 'Volts';\n        case 6:\n            return 'Degrees';\n        case 7:\n            return 'Milliamps';\n        case 8:\n            return 'Millimeters';\n        case 9:\n            return 'Millivolts';\n        case 10:\n            return 'Log(1/R)';\n        case 11:\n            return 'Percent';\n        case 12:\n            return 'Intensity';\n        case 13:\n            return 'Relative Intensity';\n        case 14:\n            return 'Energy';\n        case 16:\n            return 'Decibel';\n        case 19:\n            return 'Temperature (F)';\n        case 20:\n            return 'Temperature (C)';\n        case 21:\n            return 'Temperature (K)';\n        case 22:\n            return 'Index of Refraction [N]';\n        case 23:\n            return 'Extinction Coeff. [K]';\n        case 24:\n            return 'Real';\n        case 25:\n            return 'Imaginary';\n        case 26:\n            return 'Complex';\n        case 128:\n            return 'Transmission';\n        case 129:\n            return 'Reflectance';\n        case 130:\n            return 'Arbitrary or Single Beam with Valley Peaks';\n        case 131:\n            return 'Emission';\n        default:\n            return 'Reference Arbitrary Energy';\n    }\n}\n/**\n * Convert code to experiment type\n * @param code - experiment type code.\n * @returns type of experiment carried out.\n */\nexport function experimentSettings(code) {\n    switch (code) {\n        case 1:\n            return 'Gas Chromatogram';\n        case 2:\n            return 'General Chromatogram (same as SPCGEN with TCGRAM)';\n        case 3:\n            return 'HPLC Chromatogram';\n        case 4:\n            return 'FT-IR, FT-NIR, FT-Raman Spectrum or Igram (Can also be used for scanning IR.)';\n        case 5:\n            return 'NIR Spectrum (Usually multi-spectral data sets for calibration.)';\n        case 7:\n            return 'UV-VIS Spectrum (Can be used for single scanning UV-VIS-NIR.)';\n        case 8:\n            return 'X-ray Diffraction Spectrum';\n        case 9:\n            return 'Mass Spectrum  (Can be single, GC-MS, Continuum, Centroid or TOF.)';\n        case 10:\n            return 'NMR Spectrum or FID';\n        case 11:\n            return 'Raman Spectrum (Usually Diode Array, CCD, etc. use SPCFTIR for FT-Raman.)';\n        case 12:\n            return 'Fluorescence Spectrum';\n        case 13:\n            return 'Atomic Spectrum';\n        case 14:\n            return 'Chromatography Diode Array Spectra';\n        default:\n            return 'General SPC (could be anything)';\n    }\n}\n//# sourceMappingURL=types.js.map","/**\n * Gets the parameter in each bit of the flag.\n * @param flag - First byte of the main header.\n * @returns The parameters.\n */\nexport function parseFlagParameters(flag) {\n    return {\n        y16BitPrecision: (flag & 1) !== 0,\n        useExperimentExtension: (flag & 2) !== 0,\n        multiFile: (flag & 4) !== 0,\n        zValuesRandom: (flag & 8) !== 0,\n        zValuesUneven: (flag & 16) !== 0,\n        customAxisLabels: (flag & 32) !== 0,\n        xyxy: (flag & 64) !== 0,\n        xy: (flag & 128) !== 0,\n    };\n}\n/**\n * Gets the date encoded in binary in a long number.\n * @param  long - Binary date.\n * @returns  Date formatted to ISO 8601:2019 convention.\n */\nexport function longToDate(long) {\n    if (long === 0) {\n        return '0000-00-00T00:00:00.00Z';\n    }\n    const date = new Date();\n    date.setUTCFullYear(long >> 20);\n    date.setUTCMonth(((long >> 16) & 0x0f) - 1);\n    date.setUTCDate((long >> 11) & 0x1f);\n    date.setUTCHours((long >> 6) & 0x1f);\n    date.setUTCMinutes(long & 0x3f);\n    date.setUTCSeconds(0);\n    date.setUTCMilliseconds(0);\n    return date.toISOString();\n}\n//# sourceMappingURL=headerUtils.js.map","import { experimentSettings, xzwTypes, yTypes } from \"./types.js\";\nimport { longToDate, parseFlagParameters } from \"./utility/headerUtils.js\";\n/**\n * Old-format File-header parsing.\n * @param buffer - spc buffer.\n * @param prev - `{parameters, fileVersion}`.\n * @returns file metadata.\n */\nfunction parseOldHeader(buffer, prev) {\n    const exponentY = buffer.readInt16(); //Word (16 bits) instead of byte\n    const numberPoints = buffer.readFloat32();\n    const startingX = buffer.readFloat32();\n    const endingX = buffer.readFloat32();\n    const xUnitsType = xzwTypes(buffer.readUint8());\n    const yUnitsType = yTypes(buffer.readUint8());\n    const date = new Date();\n    const zTypeYear = buffer.readUint16(); //Unrelated to Z axis\n    date.setUTCFullYear(zTypeYear % 4096); // TODO: might be wrong\n    date.setUTCMonth(Math.max(buffer.readUint8() - 1, 0));\n    date.setUTCDate(buffer.readUint8());\n    date.setUTCHours(buffer.readUint8());\n    date.setUTCMinutes(buffer.readUint8());\n    const resolutionDescription = buffer\n        .readChars(8)\n        .replaceAll('\\u0000', '')\n        .trim();\n    const peakPointNumber = buffer.readUint16();\n    const scans = buffer.readUint16();\n    const spare = [];\n    for (let i = 0; i < 7; i++) {\n        spare.push(buffer.readFloat32());\n    }\n    const memo = buffer.readChars(130).replaceAll('\\u0000', '').trim();\n    const xyzLabels = buffer.readChars(30).replaceAll('\\u0000', '').trim();\n    return {\n        kind: 'old',\n        fileVersion: prev.fileVersion, //Each bit contains a parameter\n        parameters: prev.parameters, //4B => New format; 4D => LabCalc format\n        exponentY,\n        numberPoints,\n        startingX,\n        endingX,\n        xUnitsType,\n        yUnitsType,\n        date: date.toISOString(),\n        resolutionDescription,\n        peakPointNumber,\n        scans,\n        spare,\n        memo,\n        xyzLabels,\n    };\n}\n/**\n * New format file-header parsing.\n * @param buffer - spc buffer.\n * @param prev - `{parameters, fileVersion}`.\n * @returns file metadata.\n */\nfunction parseNewHeader(buffer, prev) {\n    const experimentType = experimentSettings(buffer.readUint8()); //Experiment type code (See SPC.h)\n    const exponentY = buffer.readInt8(); //Exponent for Y values (80h = floating point): FloatY = (2^Exp)*IntY/(2^32) 32-bit; FloatY = (2^Exp)*IntY/(2^16) 32-bit\n    const numberPoints = buffer.readUint32(); //Number of points (if not XYXY)\n    const startingX = buffer.readFloat64(); //First X coordinate\n    const endingX = buffer.readFloat64(); //Last X coordinate\n    const spectra = buffer.readUint32(); //Number of spectrums\n    let xUnitsType = xzwTypes(buffer.readUint8()); //X Units type code (See types.js)\n    const yUnitsType = yTypes(buffer.readUint8()); //Y \"\"\n    let zUnitsType = xzwTypes(buffer.readUint8()); //Z \"\"\n    const postingDisposition = buffer.readUint8(); //Posting disposition (See GRAMSDDE.H)\n    const date = longToDate(buffer.readUint32()); //Date: minutes = first 6 bits, hours = 5 next bits, days = 5 next, months = 4 next, years = 12 last\n    const resolutionDescription = buffer\n        .readChars(9)\n        .replaceAll('\\u0000', '')\n        .trim(); //Resolution description text\n    const sourceInstrumentDescription = buffer\n        .readChars(9)\n        .replaceAll('\\u0000', '')\n        .trim(); // Source Instrument description text\n    const peakPointNumber = buffer.readUint16(); //Peak point number for interferograms\n    let spare = [];\n    for (let i = 0; i < 8; i++) {\n        spare.push(buffer.readFloat32());\n    }\n    if (prev.fileVersion === 0x4c) {\n        //Untested case because no test files\n        spare = spare.toReversed();\n    }\n    const memo = buffer.readChars(130).replaceAll('\\u0000', '').trim();\n    const xyzLabels = buffer.readChars(30).replaceAll('\\u0000', '').trim();\n    const logOffset = buffer.readUint32(); //Byte offset to Log Block\n    const modifiedFlag = buffer.readUint32(); //File modification flag (See values in SPC.H)\n    const processingCode = buffer.readUint8(); //Processing code (See GRAMSDDE.H)\n    const calibrationLevel = buffer.readUint8(); //Calibration level + 1\n    const subMethodSampleInjectionNumber = buffer.readUint16(); //Sub-method sample injection number\n    const concentrationFactor = buffer.readFloat32(); //Floating data multiplier concentration factor\n    const methodFile = buffer.readChars(48).replaceAll('\\u0000', '').trim(); //Method file\n    const zSubIncrement = buffer.readFloat32(); //Z subfile increment for even Z Multifiles\n    const wPlanes = buffer.readUint32();\n    const wPlaneIncrement = buffer.readFloat32();\n    const wAxisUnits = xzwTypes(buffer.readUint8()); //W axis units code\n    const reserved = buffer.readChars(187).replaceAll('\\u0000', '').trim(); //Reserved space (Must be zero)\n    if (xUnitsType === 0) {\n        xUnitsType = xyzLabels.slice(0, 10);\n    }\n    if (zUnitsType === 0) {\n        zUnitsType = xyzLabels.slice(20, 30);\n    }\n    return {\n        kind: 'new',\n        fileVersion: prev.fileVersion, //Each bit contains a parameter\n        parameters: prev.parameters, //4B => New format; 4D => LabCalc format\n        experimentType,\n        exponentY,\n        numberPoints,\n        startingX,\n        endingX,\n        spectra,\n        xUnitsType,\n        yUnitsType,\n        zUnitsType,\n        postingDisposition,\n        date,\n        resolutionDescription,\n        sourceInstrumentDescription,\n        peakPointNumber,\n        spare,\n        memo,\n        xyzLabels,\n        logOffset,\n        modifiedFlag,\n        processingCode,\n        calibrationLevel,\n        subMethodSampleInjectionNumber,\n        concentrationFactor,\n        methodFile,\n        zSubIncrement,\n        wPlanes,\n        wPlaneIncrement,\n        wAxisUnits,\n        reserved,\n    };\n}\n/**\n * File-header parsing - First 512/256 bytes (new/old format).\n * @param buffer - SPC buffer.\n * @returns File-header object.\n */\nexport function fileHeader(buffer) {\n    const parameters = parseFlagParameters(buffer.readUint8()); //Each bit contains a parameter\n    const fileVersion = buffer.readUint8(); //4B => New format; 4D => LabCalc format\n    const headerOpts = { parameters, fileVersion };\n    switch (fileVersion) {\n        case 0x4b: // new format\n            break;\n        case 0x4c:\n            buffer.setBigEndian();\n            break;\n        case 0x4d: {\n            // old LabCalc format\n            return parseOldHeader(buffer, headerOpts);\n        }\n        default:\n            throw new Error('Unrecognized file format: byte 01 must be either 4B, 4C or 4D');\n    }\n    return parseNewHeader(buffer, headerOpts);\n}\n//# sourceMappingURL=fileHeader.js.map","/**\n * Reads the log block from an SPC file.\n * @param  buffer - SPC buffer.\n * @param  logOffset - Offset of the log (from mainHeader).\n * @returns  Object containing log meta, data and text.\n */\nexport function readLogBlock(buffer, logOffset) {\n    const logHeader = {\n        size: buffer.readUint32(), //Size of the block in bytes\n        memorySize: buffer.readUint32(), //Size of the memory rounded up to nearest multiple of 4096\n        textOffset: buffer.readUint32(), //Offset to Text section\n        binarySize: buffer.readUint32(), //Size of binary log block\n        diskArea: buffer.readUint32(), //Size of the disk area\n        reserved: buffer.readChars(44).trim().replaceAll('\\u0000', ''), //Reserved space\n    };\n    const logData = buffer.readChars(logHeader.binarySize);\n    buffer.offset = logOffset + logHeader.textOffset;\n    const logASCII = buffer\n        .readChars(logHeader.size - logHeader.textOffset)\n        .trim()\n        .replaceAll('\\u0000', '');\n    return { meta: logHeader, data: logData, text: logASCII };\n}\n//# sourceMappingURL=logBlock.js.map","import { newDataBlock } from \"./dataBlock/newDataBlock.js\";\nimport { oldDataBlock } from \"./dataBlock/oldDataBlock.js\";\nimport { fileHeader } from \"./fileHeader.js\";\nimport { readLogBlock } from \"./logBlock.js\";\n/**\n * Parses a Thermo Galactic GRAMS SPC file (`0x4B`/`0x4C`/`0x4D`).\n * @param ioBuffer - SPC buffer positioned at the start of the file.\n * @returns JSON-like object with information contained in the SPC file.\n */\nexport function parseGalactic(ioBuffer) {\n    const meta = fileHeader(ioBuffer);\n    if (meta.kind === 'new') {\n        const spectra = newDataBlock(ioBuffer, meta);\n        const logs = meta.logOffset !== 0 ? readLogBlock(ioBuffer, meta.logOffset) : null;\n        return { meta, spectra, logs };\n    }\n    return {\n        meta,\n        spectra: oldDataBlock(ioBuffer, meta),\n    };\n}\n//# sourceMappingURL=parse.js.map","import { xySortX } from 'ml-spectra-processing';\n/**\n * Builds increasing-X measurement variables for UVProbe absorbance spectra.\n * @param x - wavelength values (nm).\n * @param y - absorbance values.\n * @returns The `x`/`y` measurement variables with increasing wavelength.\n */\nexport function buildVariables(x, y) {\n    const { x: oX, y: oY } = xySortX({ x, y });\n    return {\n        x: {\n            symbol: 'x',\n            label: 'Wavelength',\n            units: 'nm',\n            data: oX,\n            isDependent: false,\n        },\n        y: {\n            symbol: 'y',\n            label: 'Absorbance',\n            units: '',\n            data: oY,\n            isDependent: true,\n        },\n    };\n}\n//# sourceMappingURL=buildVariables.js.map","import { createFromToArray } from 'ml-spectra-processing';\nimport { buildVariables } from \"./buildVariables.js\";\nconst startingXOffset = 10;\nconst endingXOffset = 14;\n/**\n * Parses the flat (raw single-spectrum) Shimadzu UVProbe `.spc` variant.\n *\n * The header is proprietary; the point count is a `uint16` stored immediately\n * before the `float32` absorbance block, and the wavelength range is two\n * `float32` near the start of the file. Layout reverse-engineered from sample files.\n * @param bytes - the whole file as bytes.\n * @returns The spectrum and its metadata.\n */\nexport function parseUVProbeFlat(bytes) {\n    const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);\n    const startingX = view.getFloat32(startingXOffset, true);\n    const endingX = view.getFloat32(endingXOffset, true);\n    const located = findData(view, bytes.length);\n    if (!located) {\n        throw new Error('UVProbe flat: could not locate the data block');\n    }\n    const { numberPoints, dataStart } = located;\n    const y = new Float64Array(numberPoints);\n    for (let i = 0; i < numberPoints; i++) {\n        y[i] = view.getFloat32(dataStart + i * 4, true);\n    }\n    const rawX = createFromToArray({\n        from: startingX,\n        to: endingX,\n        length: numberPoints,\n    });\n    const x = rawX instanceof Float64Array ? rawX : Float64Array.from(rawX);\n    const meta = {\n        kind: 'flat',\n        numberPoints,\n        date: readDate(bytes),\n        properties: {},\n    };\n    return { meta, spectra: [{ meta, variables: buildVariables(x, y) }] };\n}\n/**\n * Detects the flat UVProbe variant by its structural signature: a locatable\n * data block whose point count exactly fills the file (see {@link findData}).\n * @param bytes - the whole file as bytes.\n * @returns True when the bytes look like a UVProbe flat file.\n */\nexport function isUVProbeFlat(bytes) {\n    if (bytes.length < endingXOffset + 4)\n        return false;\n    const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);\n    return findData(view, bytes.length) !== null;\n}\n/**\n * Finds the point count and start of the data block.\n *\n * The count is the `uint16` `n` for which the remaining `n` `float32` values\n * fill the file exactly: `offset + 2 + n * 4 === fileLength`.\n * @param view - data view over the whole file.\n * @param fileLength - total file length in bytes.\n * @returns The number of points and the byte offset, or null when not found.\n */\nfunction findData(view, fileLength) {\n    for (let offset = 2; offset < 300; offset++) {\n        const numberPoints = view.getUint16(offset, true);\n        if (numberPoints > 1 && offset + 2 + numberPoints * 4 === fileLength) {\n            return { numberPoints, dataStart: offset + 2 };\n        }\n    }\n    return null;\n}\n/**\n * Reads the `MM/DD/YY` date and `HH:MM:SS` time from the header.\n * @param bytes - the whole file as bytes.\n * @returns ISO date string, or undefined when not found.\n */\nfunction readDate(bytes) {\n    let header = '';\n    for (const byte of bytes.subarray(0, 256)) {\n        header += String.fromCodePoint(byte);\n    }\n    const date = /(?<month>\\d{2})\\/(?<day>\\d{2})\\/(?<year>\\d{2})/.exec(header);\n    const time = /(?<hour>\\d{2}):(?<minute>\\d{2}):(?<second>\\d{2})/.exec(header);\n    if (!date?.groups)\n        return undefined;\n    const { month, day, year } = date.groups;\n    const t = time?.groups ?? { hour: '00', minute: '00', second: '00' };\n    return `20${year}-${month}-${day}T${t.hour}:${t.minute}:${t.second}.000Z`;\n}\n//# sourceMappingURL=parseFlat.js.map","/* cfb.js (C) 2013-present SheetJS -- http://sheetjs.com */\n/* vim: set ts=2: */\n/*jshint eqnull:true */\n/*exported CFB */\n/*global module, require:false, process:false, Buffer:false, Uint8Array:false, Uint16Array:false */\n\nvar Base64_map = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\nfunction Base64_encode(input) {\n\tvar o = \"\";\n\tvar c1 = 0, c2 = 0, c3 = 0, e1 = 0, e2 = 0, e3 = 0, e4 = 0;\n\tfor (var i = 0; i < input.length; ) {\n\t\tc1 = input.charCodeAt(i++);\n\t\te1 = (c1 >> 2);\n\t\tc2 = input.charCodeAt(i++);\n\t\te2 = ((c1 & 3) << 4) | (c2 >> 4);\n\t\tc3 = input.charCodeAt(i++);\n\t\te3 = ((c2 & 15) << 2) | (c3 >> 6);\n\t\te4 = (c3 & 63);\n\t\tif (isNaN(c2)) e3 = e4 = 64;\n\t\telse if (isNaN(c3)) e4 = 64;\n\t\to += Base64_map.charAt(e1) + Base64_map.charAt(e2) + Base64_map.charAt(e3) + Base64_map.charAt(e4);\n\t}\n\treturn o;\n}\nfunction Base64_decode(input) {\n\tvar o = \"\";\n\tvar c1 = 0, c2 = 0, c3 = 0, e1 = 0, e2 = 0, e3 = 0, e4 = 0;\n\tinput = input.replace(/[^\\w\\+\\/\\=]/g, \"\");\n\tfor (var i = 0; i < input.length;) {\n\t\te1 = Base64_map.indexOf(input.charAt(i++));\n\t\te2 = Base64_map.indexOf(input.charAt(i++));\n\t\tc1 = (e1 << 2) | (e2 >> 4);\n\t\to += String.fromCharCode(c1);\n\t\te3 = Base64_map.indexOf(input.charAt(i++));\n\t\tc2 = ((e2 & 15) << 4) | (e3 >> 2);\n\t\tif (e3 !== 64) o += String.fromCharCode(c2);\n\t\te4 = Base64_map.indexOf(input.charAt(i++));\n\t\tc3 = ((e3 & 3) << 6) | e4;\n\t\tif (e4 !== 64) o += String.fromCharCode(c3);\n\t}\n\treturn o;\n}\nvar has_buf = (function() { return typeof Buffer !== 'undefined' && typeof process !== 'undefined' && typeof process.versions !== 'undefined' && !!process.versions.node; })();\n\nvar Buffer_from = (function() {\n\tif(typeof Buffer !== 'undefined') {\n\t\tvar nbfs = !Buffer.from;\n\t\tif(!nbfs) try { Buffer.from(\"foo\", \"utf8\"); } catch(e) { nbfs = true; }\n\t\treturn nbfs ? function(buf, enc) { return (enc) ? new Buffer(buf, enc) : new Buffer(buf); } : Buffer.from.bind(Buffer);\n\t}\n\treturn function() {};\n})();\n\n\nfunction new_raw_buf(len) {\n\t/* jshint -W056 */\n\tif(has_buf) {\n\t\tif(Buffer.alloc) return Buffer.alloc(len);\n\t\tvar b = new Buffer(len); b.fill(0); return b;\n\t}\n\treturn typeof Uint8Array != \"undefined\" ? new Uint8Array(len) : new Array(len);\n\t/* jshint +W056 */\n}\n\nfunction new_unsafe_buf(len) {\n\t/* jshint -W056 */\n\tif(has_buf) return Buffer.allocUnsafe ? Buffer.allocUnsafe(len) : new Buffer(len);\n\treturn typeof Uint8Array != \"undefined\" ? new Uint8Array(len) : new Array(len);\n\t/* jshint +W056 */\n}\n\nvar s2a = function s2a(s) {\n\tif(has_buf) return Buffer_from(s, \"binary\");\n\treturn s.split(\"\").map(function(x){ return x.charCodeAt(0) & 0xff; });\n};\n\nvar chr0 = /\\u0000/g, chr1 = /[\\u0001-\\u0006]/g;\nvar __toBuffer = function(bufs) { var x = []; for(var i = 0; i < bufs[0].length; ++i) { x.push.apply(x, bufs[0][i]); } return x; };\nvar ___toBuffer = __toBuffer;\nvar __utf16le = function(b,s,e) { var ss=[]; for(var i=s; i<e; i+=2) ss.push(String.fromCharCode(__readUInt16LE(b,i))); return ss.join(\"\").replace(chr0,''); };\nvar ___utf16le = __utf16le;\nvar __hexlify = function(b,s,l) { var ss=[]; for(var i=s; i<s+l; ++i) ss.push((\"0\" + b[i].toString(16)).slice(-2)); return ss.join(\"\"); };\nvar ___hexlify = __hexlify;\nvar __bconcat = function(bufs) {\n\tif(Array.isArray(bufs[0])) return [].concat.apply([], bufs);\n\tvar maxlen = 0, i = 0;\n\tfor(i = 0; i < bufs.length; ++i) maxlen += bufs[i].length;\n\tvar o = new Uint8Array(maxlen);\n\tfor(i = 0, maxlen = 0; i < bufs.length; maxlen += bufs[i].length, ++i) o.set(bufs[i], maxlen);\n\treturn o;\n};\nvar bconcat = __bconcat;\n\n\nif(has_buf) {\n\t__utf16le = function(b,s,e) {\n\t\tif(!Buffer.isBuffer(b)) return ___utf16le(b,s,e);\n\t\treturn b.toString('utf16le',s,e).replace(chr0,'')/*.replace(chr1,'!')*/;\n\t};\n\t__hexlify = function(b,s,l) { return Buffer.isBuffer(b) ? b.toString('hex',s,s+l) : ___hexlify(b,s,l); };\n\t__toBuffer = function(bufs) { return (bufs[0].length > 0 && Buffer.isBuffer(bufs[0][0])) ? Buffer.concat((bufs[0])) : ___toBuffer(bufs);};\n\ts2a = function(s) { return Buffer_from(s, \"binary\"); };\n\tbconcat = function(bufs) { return Buffer.isBuffer(bufs[0]) ? Buffer.concat(bufs) : __bconcat(bufs); };\n}\n\n\nvar __readUInt8 = function(b, idx) { return b[idx]; };\nvar __readUInt16LE = function(b, idx) { return b[idx+1]*(1<<8)+b[idx]; };\nvar __readInt16LE = function(b, idx) { var u = b[idx+1]*(1<<8)+b[idx]; return (u < 0x8000) ? u : (0xffff - u + 1) * -1; };\nvar __readUInt32LE = function(b, idx) { return b[idx+3]*(1<<24)+(b[idx+2]<<16)+(b[idx+1]<<8)+b[idx]; };\nvar __readInt32LE = function(b, idx) { return (b[idx+3]<<24)+(b[idx+2]<<16)+(b[idx+1]<<8)+b[idx]; };\n\nfunction ReadShift(size, t) {\n\tvar oI, oS, type = 0;\n\tswitch(size) {\n\t\tcase 1: oI = __readUInt8(this, this.l); break;\n\t\tcase 2: oI = (t !== 'i' ? __readUInt16LE : __readInt16LE)(this, this.l); break;\n\t\tcase 4: oI = __readInt32LE(this, this.l); break;\n\t\tcase 16: type = 2; oS = __hexlify(this, this.l, size);\n\t}\n\tthis.l += size; if(type === 0) return oI; return oS;\n}\n\nvar __writeUInt32LE = function(b, val, idx) { b[idx] = (val & 0xFF); b[idx+1] = ((val >>> 8) & 0xFF); b[idx+2] = ((val >>> 16) & 0xFF); b[idx+3] = ((val >>> 24) & 0xFF); };\nvar __writeInt32LE  = function(b, val, idx) { b[idx] = (val & 0xFF); b[idx+1] = ((val >> 8) & 0xFF); b[idx+2] = ((val >> 16) & 0xFF); b[idx+3] = ((val >> 24) & 0xFF); };\n\nfunction WriteShift(t, val, f) {\n\tvar size = 0, i = 0;\n\tswitch(f) {\n\t\tcase \"hex\": for(; i < t; ++i) {\nthis[this.l++] = parseInt(val.slice(2*i, 2*i+2), 16)||0;\n\t\t} return this;\n\t\tcase \"utf16le\":\nvar end = this.l + t;\n\t\t\tfor(i = 0; i < Math.min(val.length, t); ++i) {\n\t\t\t\tvar cc = val.charCodeAt(i);\n\t\t\t\tthis[this.l++] = cc & 0xff;\n\t\t\t\tthis[this.l++] = cc >> 8;\n\t\t\t}\n\t\t\twhile(this.l < end) this[this.l++] = 0;\n\t\t\treturn this;\n\t}\nswitch(t) {\n\t\tcase  1: size = 1; this[this.l] = val&0xFF; break;\n\t\tcase  2: size = 2; this[this.l] = val&0xFF; val >>>= 8; this[this.l+1] = val&0xFF; break;\n\t\tcase  4: size = 4; __writeUInt32LE(this, val, this.l); break;\n\t\tcase -4: size = 4; __writeInt32LE(this, val, this.l); break;\n\t}\n\tthis.l += size; return this;\n}\n\nfunction CheckField(hexstr, fld) {\n\tvar m = __hexlify(this,this.l,hexstr.length>>1);\n\tif(m !== hexstr) throw new Error(fld + 'Expected ' + hexstr + ' saw ' + m);\n\tthis.l += hexstr.length>>1;\n}\n\nfunction prep_blob(blob, pos) {\n\tblob.l = pos;\n\tblob.read_shift = ReadShift;\n\tblob.chk = CheckField;\n\tblob.write_shift = WriteShift;\n}\n\nfunction new_buf(sz) {\n\tvar o = (new_raw_buf(sz));\n\tprep_blob(o, 0);\n\treturn o;\n}\n\n/*! crc32.js (C) 2014-present SheetJS -- http://sheetjs.com */\n/* vim: set ts=2: */\n/*exported CRC32 */\nvar CRC32 = (function() {\nvar CRC32 = {};\nCRC32.version = '1.2.1';\n/*global Int32Array */\nfunction signed_crc_table() {\n\tvar c = 0, table = new Array(256);\n\n\tfor(var n =0; n != 256; ++n){\n\t\tc = n;\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\ttable[n] = c;\n\t}\n\n\treturn typeof Int32Array !== 'undefined' ? new Int32Array(table) : table;\n}\n\nvar T0 = signed_crc_table();\nfunction slice_by_16_tables(T) {\n\tvar c = 0, v = 0, n = 0, table = typeof Int32Array !== 'undefined' ? new Int32Array(4096) : new Array(4096) ;\n\n\tfor(n = 0; n != 256; ++n) table[n] = T[n];\n\tfor(n = 0; n != 256; ++n) {\n\t\tv = T[n];\n\t\tfor(c = 256 + n; c < 4096; c += 256) v = table[c] = (v >>> 8) ^ T[v & 0xFF];\n\t}\n\tvar out = [];\n\tfor(n = 1; n != 16; ++n) out[n - 1] = typeof Int32Array !== 'undefined' ? table.subarray(n * 256, n * 256 + 256) : table.slice(n * 256, n * 256 + 256);\n\treturn out;\n}\nvar TT = slice_by_16_tables(T0);\nvar T1 = TT[0],  T2 = TT[1],  T3 = TT[2],  T4 = TT[3],  T5 = TT[4];\nvar T6 = TT[5],  T7 = TT[6],  T8 = TT[7],  T9 = TT[8],  Ta = TT[9];\nvar Tb = TT[10], Tc = TT[11], Td = TT[12], Te = TT[13], Tf = TT[14];\nfunction crc32_bstr(bstr, seed) {\n\tvar C = seed ^ -1;\n\tfor(var i = 0, L = bstr.length; i < L;) C = (C>>>8) ^ T0[(C^bstr.charCodeAt(i++))&0xFF];\n\treturn ~C;\n}\n\nfunction crc32_buf(B, seed) {\n\tvar C = seed ^ -1, L = B.length - 15, i = 0;\n\tfor(; i < L;) C =\n\t\tTf[B[i++] ^ (C & 255)] ^\n\t\tTe[B[i++] ^ ((C >> 8) & 255)] ^\n\t\tTd[B[i++] ^ ((C >> 16) & 255)] ^\n\t\tTc[B[i++] ^ (C >>> 24)] ^\n\t\tTb[B[i++]] ^ Ta[B[i++]] ^ T9[B[i++]] ^ T8[B[i++]] ^\n\t\tT7[B[i++]] ^ T6[B[i++]] ^ T5[B[i++]] ^ T4[B[i++]] ^\n\t\tT3[B[i++]] ^ T2[B[i++]] ^ T1[B[i++]] ^ T0[B[i++]];\n\tL += 15;\n\twhile(i < L) C = (C>>>8) ^ T0[(C^B[i++])&0xFF];\n\treturn ~C;\n}\n\nfunction crc32_str(str, seed) {\n\tvar C = seed ^ -1;\n\tfor(var i = 0, L = str.length, c = 0, d = 0; i < L;) {\n\t\tc = str.charCodeAt(i++);\n\t\tif(c < 0x80) {\n\t\t\tC = (C>>>8) ^ T0[(C^c)&0xFF];\n\t\t} else if(c < 0x800) {\n\t\t\tC = (C>>>8) ^ T0[(C ^ (192|((c>>6)&31)))&0xFF];\n\t\t\tC = (C>>>8) ^ T0[(C ^ (128|(c&63)))&0xFF];\n\t\t} else if(c >= 0xD800 && c < 0xE000) {\n\t\t\tc = (c&1023)+64; d = str.charCodeAt(i++)&1023;\n\t\t\tC = (C>>>8) ^ T0[(C ^ (240|((c>>8)&7)))&0xFF];\n\t\t\tC = (C>>>8) ^ T0[(C ^ (128|((c>>2)&63)))&0xFF];\n\t\t\tC = (C>>>8) ^ T0[(C ^ (128|((d>>6)&15)|((c&3)<<4)))&0xFF];\n\t\t\tC = (C>>>8) ^ T0[(C ^ (128|(d&63)))&0xFF];\n\t\t} else {\n\t\t\tC = (C>>>8) ^ T0[(C ^ (224|((c>>12)&15)))&0xFF];\n\t\t\tC = (C>>>8) ^ T0[(C ^ (128|((c>>6)&63)))&0xFF];\n\t\t\tC = (C>>>8) ^ T0[(C ^ (128|(c&63)))&0xFF];\n\t\t}\n\t}\n\treturn ~C;\n}\nCRC32.table = T0;\nCRC32.bstr = crc32_bstr;\nCRC32.buf = crc32_buf;\nCRC32.str = crc32_str;\nreturn CRC32;\n})();\n/* [MS-CFB] v20171201 */\nvar CFB = (function _CFB(){\nvar exports = {};\nexports.version = '1.2.2';\n/* [MS-CFB] 2.6.4 */\nfunction namecmp(l, r) {\n\tvar L = l.split(\"/\"), R = r.split(\"/\");\n\tfor(var i = 0, c = 0, Z = Math.min(L.length, R.length); i < Z; ++i) {\n\t\tif((c = L[i].length - R[i].length)) return c;\n\t\tif(L[i] != R[i]) return L[i] < R[i] ? -1 : 1;\n\t}\n\treturn L.length - R.length;\n}\nfunction dirname(p) {\n\tif(p.charAt(p.length - 1) == \"/\") return (p.slice(0,-1).indexOf(\"/\") === -1) ? p : dirname(p.slice(0, -1));\n\tvar c = p.lastIndexOf(\"/\");\n\treturn (c === -1) ? p : p.slice(0, c+1);\n}\n\nfunction filename(p) {\n\tif(p.charAt(p.length - 1) == \"/\") return filename(p.slice(0, -1));\n\tvar c = p.lastIndexOf(\"/\");\n\treturn (c === -1) ? p : p.slice(c+1);\n}\n/* -------------------------------------------------------------------------- */\n/* DOS Date format:\n   high|YYYYYYYm.mmmddddd.HHHHHMMM.MMMSSSSS|low\n   add 1980 to stored year\n   stored second should be doubled\n*/\n\n/* write JS date to buf as a DOS date */\nfunction write_dos_date(buf, date) {\n\tif(typeof date === \"string\") date = new Date(date);\n\tvar hms = date.getHours();\n\thms = hms << 6 | date.getMinutes();\n\thms = hms << 5 | (date.getSeconds()>>>1);\n\tbuf.write_shift(2, hms);\n\tvar ymd = (date.getFullYear() - 1980);\n\tymd = ymd << 4 | (date.getMonth()+1);\n\tymd = ymd << 5 | date.getDate();\n\tbuf.write_shift(2, ymd);\n}\n\n/* read four bytes from buf and interpret as a DOS date */\nfunction parse_dos_date(buf) {\n\tvar hms = buf.read_shift(2) & 0xFFFF;\n\tvar ymd = buf.read_shift(2) & 0xFFFF;\n\tvar val = new Date();\n\tvar d = ymd & 0x1F; ymd >>>= 5;\n\tvar m = ymd & 0x0F; ymd >>>= 4;\n\tval.setMilliseconds(0);\n\tval.setFullYear(ymd + 1980);\n\tval.setMonth(m-1);\n\tval.setDate(d);\n\tvar S = hms & 0x1F; hms >>>= 5;\n\tvar M = hms & 0x3F; hms >>>= 6;\n\tval.setHours(hms);\n\tval.setMinutes(M);\n\tval.setSeconds(S<<1);\n\treturn val;\n}\nfunction parse_extra_field(blob) {\n\tprep_blob(blob, 0);\n\tvar o = {};\n\tvar flags = 0;\n\twhile(blob.l <= blob.length - 4) {\n\t\tvar type = blob.read_shift(2);\n\t\tvar sz = blob.read_shift(2), tgt = blob.l + sz;\n\t\tvar p = {};\n\t\tswitch(type) {\n\t\t\t/* UNIX-style Timestamps */\n\t\t\tcase 0x5455: {\n\t\t\t\tflags = blob.read_shift(1);\n\t\t\t\tif(flags & 1) p.mtime = blob.read_shift(4);\n\t\t\t\t/* for some reason, CD flag corresponds to LFH */\n\t\t\t\tif(sz > 5) {\n\t\t\t\t\tif(flags & 2) p.atime = blob.read_shift(4);\n\t\t\t\t\tif(flags & 4) p.ctime = blob.read_shift(4);\n\t\t\t\t}\n\t\t\t\tif(p.mtime) p.mt = new Date(p.mtime*1000);\n\t\t\t}\n\t\t\tbreak;\n\t\t}\n\t\tblob.l = tgt;\n\t\to[type] = p;\n\t}\n\treturn o;\n}\nvar fs;\nfunction get_fs() { return fs || (fs = require('fs')); }\nfunction parse(file, options) {\nif(file[0] == 0x50 && file[1] == 0x4b) return parse_zip(file, options);\nif((file[0] | 0x20) == 0x6d && (file[1]|0x20) == 0x69) return parse_mad(file, options);\nif(file.length < 512) throw new Error(\"CFB file size \" + file.length + \" < 512\");\nvar mver = 3;\nvar ssz = 512;\nvar nmfs = 0; // number of mini FAT sectors\nvar difat_sec_cnt = 0;\nvar dir_start = 0;\nvar minifat_start = 0;\nvar difat_start = 0;\n\nvar fat_addrs = []; // locations of FAT sectors\n\n/* [MS-CFB] 2.2 Compound File Header */\nvar blob = file.slice(0,512);\nprep_blob(blob, 0);\n\n/* major version */\nvar mv = check_get_mver(blob);\nmver = mv[0];\nswitch(mver) {\n\tcase 3: ssz = 512; break; case 4: ssz = 4096; break;\n\tcase 0: if(mv[1] == 0) return parse_zip(file, options);\n\t/* falls through */\n\tdefault: throw new Error(\"Major Version: Expected 3 or 4 saw \" + mver);\n}\n\n/* reprocess header */\nif(ssz !== 512) { blob = file.slice(0,ssz); prep_blob(blob, 28 /* blob.l */); }\n/* Save header for final object */\nvar header = file.slice(0,ssz);\n\ncheck_shifts(blob, mver);\n\n// Number of Directory Sectors\nvar dir_cnt = blob.read_shift(4, 'i');\nif(mver === 3 && dir_cnt !== 0) throw new Error('# Directory Sectors: Expected 0 saw ' + dir_cnt);\n\n// Number of FAT Sectors\nblob.l += 4;\n\n// First Directory Sector Location\ndir_start = blob.read_shift(4, 'i');\n\n// Transaction Signature\nblob.l += 4;\n\n// Mini Stream Cutoff Size\nblob.chk('00100000', 'Mini Stream Cutoff Size: ');\n\n// First Mini FAT Sector Location\nminifat_start = blob.read_shift(4, 'i');\n\n// Number of Mini FAT Sectors\nnmfs = blob.read_shift(4, 'i');\n\n// First DIFAT sector location\ndifat_start = blob.read_shift(4, 'i');\n\n// Number of DIFAT Sectors\ndifat_sec_cnt = blob.read_shift(4, 'i');\n\n// Grab FAT Sector Locations\nfor(var q = -1, j = 0; j < 109; ++j) { /* 109 = (512 - blob.l)>>>2; */\n\tq = blob.read_shift(4, 'i');\n\tif(q<0) break;\n\tfat_addrs[j] = q;\n}\n\n/** Break the file up into sectors */\nvar sectors = sectorify(file, ssz);\n\nsleuth_fat(difat_start, difat_sec_cnt, sectors, ssz, fat_addrs);\n\n/** Chains */\nvar sector_list = make_sector_list(sectors, dir_start, fat_addrs, ssz);\n\nsector_list[dir_start].name = \"!Directory\";\nif(nmfs > 0 && minifat_start !== ENDOFCHAIN) sector_list[minifat_start].name = \"!MiniFAT\";\nsector_list[fat_addrs[0]].name = \"!FAT\";\nsector_list.fat_addrs = fat_addrs;\nsector_list.ssz = ssz;\n\n/* [MS-CFB] 2.6.1 Compound File Directory Entry */\nvar files = {}, Paths = [], FileIndex = [], FullPaths = [];\nread_directory(dir_start, sector_list, sectors, Paths, nmfs, files, FileIndex, minifat_start);\n\nbuild_full_paths(FileIndex, FullPaths, Paths);\nPaths.shift();\n\nvar o = {\n\tFileIndex: FileIndex,\n\tFullPaths: FullPaths\n};\n\n// $FlowIgnore\nif(options && options.raw) o.raw = {header: header, sectors: sectors};\nreturn o;\n} // parse\n\n/* [MS-CFB] 2.2 Compound File Header -- read up to major version */\nfunction check_get_mver(blob) {\n\tif(blob[blob.l] == 0x50 && blob[blob.l + 1] == 0x4b) return [0, 0];\n\t// header signature 8\n\tblob.chk(HEADER_SIGNATURE, 'Header Signature: ');\n\n\t// clsid 16\n\t//blob.chk(HEADER_CLSID, 'CLSID: ');\n\tblob.l += 16;\n\n\t// minor version 2\n\tvar mver = blob.read_shift(2, 'u');\n\n\treturn [blob.read_shift(2,'u'), mver];\n}\nfunction check_shifts(blob, mver) {\n\tvar shift = 0x09;\n\n\t// Byte Order\n\t//blob.chk('feff', 'Byte Order: '); // note: some writers put 0xffff\n\tblob.l += 2;\n\n\t// Sector Shift\n\tswitch((shift = blob.read_shift(2))) {\n\t\tcase 0x09: if(mver != 3) throw new Error('Sector Shift: Expected 9 saw ' + shift); break;\n\t\tcase 0x0c: if(mver != 4) throw new Error('Sector Shift: Expected 12 saw ' + shift); break;\n\t\tdefault: throw new Error('Sector Shift: Expected 9 or 12 saw ' + shift);\n\t}\n\n\t// Mini Sector Shift\n\tblob.chk('0600', 'Mini Sector Shift: ');\n\n\t// Reserved\n\tblob.chk('000000000000', 'Reserved: ');\n}\n\n/** Break the file up into sectors */\nfunction sectorify(file, ssz) {\n\tvar nsectors = Math.ceil(file.length/ssz)-1;\n\tvar sectors = [];\n\tfor(var i=1; i < nsectors; ++i) sectors[i-1] = file.slice(i*ssz,(i+1)*ssz);\n\tsectors[nsectors-1] = file.slice(nsectors*ssz);\n\treturn sectors;\n}\n\n/* [MS-CFB] 2.6.4 Red-Black Tree */\nfunction build_full_paths(FI, FP, Paths) {\n\tvar i = 0, L = 0, R = 0, C = 0, j = 0, pl = Paths.length;\n\tvar dad = [], q = [];\n\n\tfor(; i < pl; ++i) { dad[i]=q[i]=i; FP[i]=Paths[i]; }\n\n\tfor(; j < q.length; ++j) {\n\t\ti = q[j];\n\t\tL = FI[i].L; R = FI[i].R; C = FI[i].C;\n\t\tif(dad[i] === i) {\n\t\t\tif(L !== -1 /*NOSTREAM*/ && dad[L] !== L) dad[i] = dad[L];\n\t\t\tif(R !== -1 && dad[R] !== R) dad[i] = dad[R];\n\t\t}\n\t\tif(C !== -1 /*NOSTREAM*/) dad[C] = i;\n\t\tif(L !== -1 && i != dad[i]) { dad[L] = dad[i]; if(q.lastIndexOf(L) < j) q.push(L); }\n\t\tif(R !== -1 && i != dad[i]) { dad[R] = dad[i]; if(q.lastIndexOf(R) < j) q.push(R); }\n\t}\n\tfor(i=1; i < pl; ++i) if(dad[i] === i) {\n\t\tif(R !== -1 /*NOSTREAM*/ && dad[R] !== R) dad[i] = dad[R];\n\t\telse if(L !== -1 && dad[L] !== L) dad[i] = dad[L];\n\t}\n\n\tfor(i=1; i < pl; ++i) {\n\t\tif(FI[i].type === 0 /* unknown */) continue;\n\t\tj = i;\n\t\tif(j != dad[j]) do {\n\t\t\tj = dad[j];\n\t\t\tFP[i] = FP[j] + \"/\" + FP[i];\n\t\t} while (j !== 0 && -1 !== dad[j] && j != dad[j]);\n\t\tdad[i] = -1;\n\t}\n\n\tFP[0] += \"/\";\n\tfor(i=1; i < pl; ++i) {\n\t\tif(FI[i].type !== 2 /* stream */) FP[i] += \"/\";\n\t}\n}\n\nfunction get_mfat_entry(entry, payload, mini) {\n\tvar start = entry.start, size = entry.size;\n\t//return (payload.slice(start*MSSZ, start*MSSZ + size));\n\tvar o = [];\n\tvar idx = start;\n\twhile(mini && size > 0 && idx >= 0) {\n\t\to.push(payload.slice(idx * MSSZ, idx * MSSZ + MSSZ));\n\t\tsize -= MSSZ;\n\t\tidx = __readInt32LE(mini, idx * 4);\n\t}\n\tif(o.length === 0) return (new_buf(0));\n\treturn (bconcat(o).slice(0, entry.size));\n}\n\n/** Chase down the rest of the DIFAT chain to build a comprehensive list\n    DIFAT chains by storing the next sector number as the last 32 bits */\nfunction sleuth_fat(idx, cnt, sectors, ssz, fat_addrs) {\n\tvar q = ENDOFCHAIN;\n\tif(idx === ENDOFCHAIN) {\n\t\tif(cnt !== 0) throw new Error(\"DIFAT chain shorter than expected\");\n\t} else if(idx !== -1 /*FREESECT*/) {\n\t\tvar sector = sectors[idx], m = (ssz>>>2)-1;\n\t\tif(!sector) return;\n\t\tfor(var i = 0; i < m; ++i) {\n\t\t\tif((q = __readInt32LE(sector,i*4)) === ENDOFCHAIN) break;\n\t\t\tfat_addrs.push(q);\n\t\t}\n\t\tif(cnt >= 1) sleuth_fat(__readInt32LE(sector,ssz-4),cnt - 1, sectors, ssz, fat_addrs);\n\t}\n}\n\n/** Follow the linked list of sectors for a given starting point */\nfunction get_sector_list(sectors, start, fat_addrs, ssz, chkd) {\n\tvar buf = [], buf_chain = [];\n\tif(!chkd) chkd = [];\n\tvar modulus = ssz - 1, j = 0, jj = 0;\n\tfor(j=start; j>=0;) {\n\t\tchkd[j] = true;\n\t\tbuf[buf.length] = j;\n\t\tbuf_chain.push(sectors[j]);\n\t\tvar addr = fat_addrs[Math.floor(j*4/ssz)];\n\t\tjj = ((j*4) & modulus);\n\t\tif(ssz < 4 + jj) throw new Error(\"FAT boundary crossed: \" + j + \" 4 \"+ssz);\n\t\tif(!sectors[addr]) break;\n\t\tj = __readInt32LE(sectors[addr], jj);\n\t}\n\treturn {nodes: buf, data:__toBuffer([buf_chain])};\n}\n\n/** Chase down the sector linked lists */\nfunction make_sector_list(sectors, dir_start, fat_addrs, ssz) {\n\tvar sl = sectors.length, sector_list = ([]);\n\tvar chkd = [], buf = [], buf_chain = [];\n\tvar modulus = ssz - 1, i=0, j=0, k=0, jj=0;\n\tfor(i=0; i < sl; ++i) {\n\t\tbuf = ([]);\n\t\tk = (i + dir_start); if(k >= sl) k-=sl;\n\t\tif(chkd[k]) continue;\n\t\tbuf_chain = [];\n\t\tvar seen = [];\n\t\tfor(j=k; j>=0;) {\n\t\t\tseen[j] = true;\n\t\t\tchkd[j] = true;\n\t\t\tbuf[buf.length] = j;\n\t\t\tbuf_chain.push(sectors[j]);\n\t\t\tvar addr = fat_addrs[Math.floor(j*4/ssz)];\n\t\t\tjj = ((j*4) & modulus);\n\t\t\tif(ssz < 4 + jj) throw new Error(\"FAT boundary crossed: \" + j + \" 4 \"+ssz);\n\t\t\tif(!sectors[addr]) break;\n\t\t\tj = __readInt32LE(sectors[addr], jj);\n\t\t\tif(seen[j]) break;\n\t\t}\n\t\tsector_list[k] = ({nodes: buf, data:__toBuffer([buf_chain])});\n\t}\n\treturn sector_list;\n}\n\n/* [MS-CFB] 2.6.1 Compound File Directory Entry */\nfunction read_directory(dir_start, sector_list, sectors, Paths, nmfs, files, FileIndex, mini) {\n\tvar minifat_store = 0, pl = (Paths.length?2:0);\n\tvar sector = sector_list[dir_start].data;\n\tvar i = 0, namelen = 0, name;\n\tfor(; i < sector.length; i+= 128) {\n\t\tvar blob = sector.slice(i, i+128);\n\t\tprep_blob(blob, 64);\n\t\tnamelen = blob.read_shift(2);\n\t\tname = __utf16le(blob,0,namelen-pl);\n\t\tPaths.push(name);\n\t\tvar o = ({\n\t\t\tname:  name,\n\t\t\ttype:  blob.read_shift(1),\n\t\t\tcolor: blob.read_shift(1),\n\t\t\tL:     blob.read_shift(4, 'i'),\n\t\t\tR:     blob.read_shift(4, 'i'),\n\t\t\tC:     blob.read_shift(4, 'i'),\n\t\t\tclsid: blob.read_shift(16),\n\t\t\tstate: blob.read_shift(4, 'i'),\n\t\t\tstart: 0,\n\t\t\tsize: 0\n\t\t});\n\t\tvar ctime = blob.read_shift(2) + blob.read_shift(2) + blob.read_shift(2) + blob.read_shift(2);\n\t\tif(ctime !== 0) o.ct = read_date(blob, blob.l-8);\n\t\tvar mtime = blob.read_shift(2) + blob.read_shift(2) + blob.read_shift(2) + blob.read_shift(2);\n\t\tif(mtime !== 0) o.mt = read_date(blob, blob.l-8);\n\t\to.start = blob.read_shift(4, 'i');\n\t\to.size = blob.read_shift(4, 'i');\n\t\tif(o.size < 0 && o.start < 0) { o.size = o.type = 0; o.start = ENDOFCHAIN; o.name = \"\"; }\n\t\tif(o.type === 5) { /* root */\n\t\t\tminifat_store = o.start;\n\t\t\tif(nmfs > 0 && minifat_store !== ENDOFCHAIN) sector_list[minifat_store].name = \"!StreamData\";\n\t\t\t/*minifat_size = o.size;*/\n\t\t} else if(o.size >= 4096 /* MSCSZ */) {\n\t\t\to.storage = 'fat';\n\t\t\tif(sector_list[o.start] === undefined) sector_list[o.start] = get_sector_list(sectors, o.start, sector_list.fat_addrs, sector_list.ssz);\n\t\t\tsector_list[o.start].name = o.name;\n\t\t\to.content = (sector_list[o.start].data.slice(0,o.size));\n\t\t} else {\n\t\t\to.storage = 'minifat';\n\t\t\tif(o.size < 0) o.size = 0;\n\t\t\telse if(minifat_store !== ENDOFCHAIN && o.start !== ENDOFCHAIN && sector_list[minifat_store]) {\n\t\t\t\to.content = get_mfat_entry(o, sector_list[minifat_store].data, (sector_list[mini]||{}).data);\n\t\t\t}\n\t\t}\n\t\tif(o.content) prep_blob(o.content, 0);\n\t\tfiles[name] = o;\n\t\tFileIndex.push(o);\n\t}\n}\n\nfunction read_date(blob, offset) {\n\treturn new Date(( ( (__readUInt32LE(blob,offset+4)/1e7)*Math.pow(2,32)+__readUInt32LE(blob,offset)/1e7 ) - 11644473600)*1000);\n}\n\nfunction read_file(filename, options) {\n\tget_fs();\n\treturn parse(fs.readFileSync(filename), options);\n}\n\nfunction read(blob, options) {\n\tvar type = options && options.type;\n\tif(!type) {\n\t\tif(has_buf && Buffer.isBuffer(blob)) type = \"buffer\";\n\t}\n\tswitch(type || \"base64\") {\n\t\tcase \"file\": return read_file(blob, options);\n\t\tcase \"base64\": return parse(s2a(Base64_decode(blob)), options);\n\t\tcase \"binary\": return parse(s2a(blob), options);\n\t}\n\treturn parse(blob, options);\n}\n\nfunction init_cfb(cfb, opts) {\n\tvar o = opts || {}, root = o.root || \"Root Entry\";\n\tif(!cfb.FullPaths) cfb.FullPaths = [];\n\tif(!cfb.FileIndex) cfb.FileIndex = [];\n\tif(cfb.FullPaths.length !== cfb.FileIndex.length) throw new Error(\"inconsistent CFB structure\");\n\tif(cfb.FullPaths.length === 0) {\n\t\tcfb.FullPaths[0] = root + \"/\";\n\t\tcfb.FileIndex[0] = ({ name: root, type: 5 });\n\t}\n\tif(o.CLSID) cfb.FileIndex[0].clsid = o.CLSID;\n\tseed_cfb(cfb);\n}\nfunction seed_cfb(cfb) {\n\tvar nm = \"\\u0001Sh33tJ5\";\n\tif(CFB.find(cfb, \"/\" + nm)) return;\n\tvar p = new_buf(4); p[0] = 55; p[1] = p[3] = 50; p[2] = 54;\n\tcfb.FileIndex.push(({ name: nm, type: 2, content:p, size:4, L:69, R:69, C:69 }));\n\tcfb.FullPaths.push(cfb.FullPaths[0] + nm);\n\trebuild_cfb(cfb);\n}\nfunction rebuild_cfb(cfb, f) {\n\tinit_cfb(cfb);\n\tvar gc = false, s = false;\n\tfor(var i = cfb.FullPaths.length - 1; i >= 0; --i) {\n\t\tvar _file = cfb.FileIndex[i];\n\t\tswitch(_file.type) {\n\t\t\tcase 0:\n\t\t\t\tif(s) gc = true;\n\t\t\t\telse { cfb.FileIndex.pop(); cfb.FullPaths.pop(); }\n\t\t\t\tbreak;\n\t\t\tcase 1: case 2: case 5:\n\t\t\t\ts = true;\n\t\t\t\tif(isNaN(_file.R * _file.L * _file.C)) gc = true;\n\t\t\t\tif(_file.R > -1 && _file.L > -1 && _file.R == _file.L) gc = true;\n\t\t\t\tbreak;\n\t\t\tdefault: gc = true; break;\n\t\t}\n\t}\n\tif(!gc && !f) return;\n\n\tvar now = new Date(1987, 1, 19), j = 0;\n\t// Track which names exist\n\tvar fullPaths = Object.create ? Object.create(null) : {};\n\tvar data = [];\n\tfor(i = 0; i < cfb.FullPaths.length; ++i) {\n\t\tfullPaths[cfb.FullPaths[i]] = true;\n\t\tif(cfb.FileIndex[i].type === 0) continue;\n\t\tdata.push([cfb.FullPaths[i], cfb.FileIndex[i]]);\n\t}\n\tfor(i = 0; i < data.length; ++i) {\n\t\tvar dad = dirname(data[i][0]);\n\t\ts = fullPaths[dad];\n\t\twhile(!s) {\n\t\t\twhile(dirname(dad) && !fullPaths[dirname(dad)]) dad = dirname(dad);\n\n\t\t\tdata.push([dad, ({\n\t\t\t\tname: filename(dad).replace(\"/\",\"\"),\n\t\t\t\ttype: 1,\n\t\t\t\tclsid: HEADER_CLSID,\n\t\t\t\tct: now, mt: now,\n\t\t\t\tcontent: null\n\t\t\t})]);\n\n\t\t\t// Add name to set\n\t\t\tfullPaths[dad] = true;\n\n\t\t\tdad = dirname(data[i][0]);\n\t\t\ts = fullPaths[dad];\n\t\t}\n\t}\n\n\tdata.sort(function(x,y) { return namecmp(x[0], y[0]); });\n\tcfb.FullPaths = []; cfb.FileIndex = [];\n\tfor(i = 0; i < data.length; ++i) { cfb.FullPaths[i] = data[i][0]; cfb.FileIndex[i] = data[i][1]; }\n\tfor(i = 0; i < data.length; ++i) {\n\t\tvar elt = cfb.FileIndex[i];\n\t\tvar nm = cfb.FullPaths[i];\n\n\t\telt.name =  filename(nm).replace(\"/\",\"\");\n\t\telt.L = elt.R = elt.C = -(elt.color = 1);\n\t\telt.size = elt.content ? elt.content.length : 0;\n\t\telt.start = 0;\n\t\telt.clsid = (elt.clsid || HEADER_CLSID);\n\t\tif(i === 0) {\n\t\t\telt.C = data.length > 1 ? 1 : -1;\n\t\t\telt.size = 0;\n\t\t\telt.type = 5;\n\t\t} else if(nm.slice(-1) == \"/\") {\n\t\t\tfor(j=i+1;j < data.length; ++j) if(dirname(cfb.FullPaths[j])==nm) break;\n\t\t\telt.C = j >= data.length ? -1 : j;\n\t\t\tfor(j=i+1;j < data.length; ++j) if(dirname(cfb.FullPaths[j])==dirname(nm)) break;\n\t\t\telt.R = j >= data.length ? -1 : j;\n\t\t\telt.type = 1;\n\t\t} else {\n\t\t\tif(dirname(cfb.FullPaths[i+1]||\"\") == dirname(nm)) elt.R = i + 1;\n\t\t\telt.type = 2;\n\t\t}\n\t}\n\n}\n\nfunction _write(cfb, options) {\n\tvar _opts = options || {};\n\t/* MAD is order-sensitive, skip rebuild and sort */\n\tif(_opts.fileType == 'mad') return write_mad(cfb, _opts);\n\trebuild_cfb(cfb);\n\tswitch(_opts.fileType) {\n\t\tcase 'zip': return write_zip(cfb, _opts);\n\t\t//case 'mad': return write_mad(cfb, _opts);\n\t}\n\tvar L = (function(cfb){\n\t\tvar mini_size = 0, fat_size = 0;\n\t\tfor(var i = 0; i < cfb.FileIndex.length; ++i) {\n\t\t\tvar file = cfb.FileIndex[i];\n\t\t\tif(!file.content) continue;\n\t\t\tvar flen = file.content.length;\n\t\t\tif(flen > 0){\n\t\t\t\tif(flen < 0x1000) mini_size += (flen + 0x3F) >> 6;\n\t\t\t\telse fat_size += (flen + 0x01FF) >> 9;\n\t\t\t}\n\t\t}\n\t\tvar dir_cnt = (cfb.FullPaths.length +3) >> 2;\n\t\tvar mini_cnt = (mini_size + 7) >> 3;\n\t\tvar mfat_cnt = (mini_size + 0x7F) >> 7;\n\t\tvar fat_base = mini_cnt + fat_size + dir_cnt + mfat_cnt;\n\t\tvar fat_cnt = (fat_base + 0x7F) >> 7;\n\t\tvar difat_cnt = fat_cnt <= 109 ? 0 : Math.ceil((fat_cnt-109)/0x7F);\n\t\twhile(((fat_base + fat_cnt + difat_cnt + 0x7F) >> 7) > fat_cnt) difat_cnt = ++fat_cnt <= 109 ? 0 : Math.ceil((fat_cnt-109)/0x7F);\n\t\tvar L =  [1, difat_cnt, fat_cnt, mfat_cnt, dir_cnt, fat_size, mini_size, 0];\n\t\tcfb.FileIndex[0].size = mini_size << 6;\n\t\tL[7] = (cfb.FileIndex[0].start=L[0]+L[1]+L[2]+L[3]+L[4]+L[5])+((L[6]+7) >> 3);\n\t\treturn L;\n\t})(cfb);\n\tvar o = new_buf(L[7] << 9);\n\tvar i = 0, T = 0;\n\t{\n\t\tfor(i = 0; i < 8; ++i) o.write_shift(1, HEADER_SIG[i]);\n\t\tfor(i = 0; i < 8; ++i) o.write_shift(2, 0);\n\t\to.write_shift(2, 0x003E);\n\t\to.write_shift(2, 0x0003);\n\t\to.write_shift(2, 0xFFFE);\n\t\to.write_shift(2, 0x0009);\n\t\to.write_shift(2, 0x0006);\n\t\tfor(i = 0; i < 3; ++i) o.write_shift(2, 0);\n\t\to.write_shift(4, 0);\n\t\to.write_shift(4, L[2]);\n\t\to.write_shift(4, L[0] + L[1] + L[2] + L[3] - 1);\n\t\to.write_shift(4, 0);\n\t\to.write_shift(4, 1<<12);\n\t\to.write_shift(4, L[3] ? L[0] + L[1] + L[2] - 1: ENDOFCHAIN);\n\t\to.write_shift(4, L[3]);\n\t\to.write_shift(-4, L[1] ? L[0] - 1: ENDOFCHAIN);\n\t\to.write_shift(4, L[1]);\n\t\tfor(i = 0; i < 109; ++i) o.write_shift(-4, i < L[2] ? L[1] + i : -1);\n\t}\n\tif(L[1]) {\n\t\tfor(T = 0; T < L[1]; ++T) {\n\t\t\tfor(; i < 236 + T * 127; ++i) o.write_shift(-4, i < L[2] ? L[1] + i : -1);\n\t\t\to.write_shift(-4, T === L[1] - 1 ? ENDOFCHAIN : T + 1);\n\t\t}\n\t}\n\tvar chainit = function(w) {\n\t\tfor(T += w; i<T-1; ++i) o.write_shift(-4, i+1);\n\t\tif(w) { ++i; o.write_shift(-4, ENDOFCHAIN); }\n\t};\n\tT = i = 0;\n\tfor(T+=L[1]; i<T; ++i) o.write_shift(-4, consts.DIFSECT);\n\tfor(T+=L[2]; i<T; ++i) o.write_shift(-4, consts.FATSECT);\n\tchainit(L[3]);\n\tchainit(L[4]);\n\tvar j = 0, flen = 0;\n\tvar file = cfb.FileIndex[0];\n\tfor(; j < cfb.FileIndex.length; ++j) {\n\t\tfile = cfb.FileIndex[j];\n\t\tif(!file.content) continue;\nflen = file.content.length;\n\t\tif(flen < 0x1000) continue;\n\t\tfile.start = T;\n\t\tchainit((flen + 0x01FF) >> 9);\n\t}\n\tchainit((L[6] + 7) >> 3);\n\twhile(o.l & 0x1FF) o.write_shift(-4, consts.ENDOFCHAIN);\n\tT = i = 0;\n\tfor(j = 0; j < cfb.FileIndex.length; ++j) {\n\t\tfile = cfb.FileIndex[j];\n\t\tif(!file.content) continue;\nflen = file.content.length;\n\t\tif(!flen || flen >= 0x1000) continue;\n\t\tfile.start = T;\n\t\tchainit((flen + 0x3F) >> 6);\n\t}\n\twhile(o.l & 0x1FF) o.write_shift(-4, consts.ENDOFCHAIN);\n\tfor(i = 0; i < L[4]<<2; ++i) {\n\t\tvar nm = cfb.FullPaths[i];\n\t\tif(!nm || nm.length === 0) {\n\t\t\tfor(j = 0; j < 17; ++j) o.write_shift(4, 0);\n\t\t\tfor(j = 0; j < 3; ++j) o.write_shift(4, -1);\n\t\t\tfor(j = 0; j < 12; ++j) o.write_shift(4, 0);\n\t\t\tcontinue;\n\t\t}\n\t\tfile = cfb.FileIndex[i];\n\t\tif(i === 0) file.start = file.size ? file.start - 1 : ENDOFCHAIN;\n\t\tvar _nm = (i === 0 && _opts.root) || file.name;\n\t\tif(_nm.length > 32) {\n\t\t\tconsole.error(\"Name \" + _nm + \" will be truncated to \" + _nm.slice(0,32));\n\t\t\t_nm = _nm.slice(0, 32);\n\t\t}\n\t\tflen = 2*(_nm.length+1);\n\t\to.write_shift(64, _nm, \"utf16le\");\n\t\to.write_shift(2, flen);\n\t\to.write_shift(1, file.type);\n\t\to.write_shift(1, file.color);\n\t\to.write_shift(-4, file.L);\n\t\to.write_shift(-4, file.R);\n\t\to.write_shift(-4, file.C);\n\t\tif(!file.clsid) for(j = 0; j < 4; ++j) o.write_shift(4, 0);\n\t\telse o.write_shift(16, file.clsid, \"hex\");\n\t\to.write_shift(4, file.state || 0);\n\t\to.write_shift(4, 0); o.write_shift(4, 0);\n\t\to.write_shift(4, 0); o.write_shift(4, 0);\n\t\to.write_shift(4, file.start);\n\t\to.write_shift(4, file.size); o.write_shift(4, 0);\n\t}\n\tfor(i = 1; i < cfb.FileIndex.length; ++i) {\n\t\tfile = cfb.FileIndex[i];\nif(file.size >= 0x1000) {\n\t\t\to.l = (file.start+1) << 9;\n\t\t\tif (has_buf && Buffer.isBuffer(file.content)) {\n\t\t\t\tfile.content.copy(o, o.l, 0, file.size);\n\t\t\t\t// o is a 0-filled Buffer so just set next offset\n\t\t\t\to.l += (file.size + 511) & -512;\n\t\t\t} else {\n\t\t\t\tfor(j = 0; j < file.size; ++j) o.write_shift(1, file.content[j]);\n\t\t\t\tfor(; j & 0x1FF; ++j) o.write_shift(1, 0);\n\t\t\t}\n\t\t}\n\t}\n\tfor(i = 1; i < cfb.FileIndex.length; ++i) {\n\t\tfile = cfb.FileIndex[i];\nif(file.size > 0 && file.size < 0x1000) {\n\t\t\tif (has_buf && Buffer.isBuffer(file.content)) {\n\t\t\t\tfile.content.copy(o, o.l, 0, file.size);\n\t\t\t\t// o is a 0-filled Buffer so just set next offset\n\t\t\t\to.l += (file.size + 63) & -64;\n\t\t\t} else {\n\t\t\t\tfor(j = 0; j < file.size; ++j) o.write_shift(1, file.content[j]);\n\t\t\t\tfor(; j & 0x3F; ++j) o.write_shift(1, 0);\n\t\t\t}\n\t\t}\n\t}\n\tif (has_buf) {\n\t\to.l = o.length;\n\t} else {\n\t\t// When using Buffer, already 0-filled\n\t\twhile(o.l < o.length) o.write_shift(1, 0);\n\t}\n\treturn o;\n}\n/* [MS-CFB] 2.6.4 (Unicode 3.0.1 case conversion) */\nfunction find(cfb, path) {\n\tvar UCFullPaths = cfb.FullPaths.map(function(x) { return x.toUpperCase(); });\n\tvar UCPaths = UCFullPaths.map(function(x) { var y = x.split(\"/\"); return y[y.length - (x.slice(-1) == \"/\" ? 2 : 1)]; });\n\tvar k = false;\n\tif(path.charCodeAt(0) === 47 /* \"/\" */) { k = true; path = UCFullPaths[0].slice(0, -1) + path; }\n\telse k = path.indexOf(\"/\") !== -1;\n\tvar UCPath = path.toUpperCase();\n\tvar w = k === true ? UCFullPaths.indexOf(UCPath) : UCPaths.indexOf(UCPath);\n\tif(w !== -1) return cfb.FileIndex[w];\n\n\tvar m = !UCPath.match(chr1);\n\tUCPath = UCPath.replace(chr0,'');\n\tif(m) UCPath = UCPath.replace(chr1,'!');\n\tfor(w = 0; w < UCFullPaths.length; ++w) {\n\t\tif((m ? UCFullPaths[w].replace(chr1,'!') : UCFullPaths[w]).replace(chr0,'') == UCPath) return cfb.FileIndex[w];\n\t\tif((m ? UCPaths[w].replace(chr1,'!') : UCPaths[w]).replace(chr0,'') == UCPath) return cfb.FileIndex[w];\n\t}\n\treturn null;\n}\n/** CFB Constants */\nvar MSSZ = 64; /* Mini Sector Size = 1<<6 */\n//var MSCSZ = 4096; /* Mini Stream Cutoff Size */\n/* 2.1 Compound File Sector Numbers and Types */\nvar ENDOFCHAIN = -2;\n/* 2.2 Compound File Header */\nvar HEADER_SIGNATURE = 'd0cf11e0a1b11ae1';\nvar HEADER_SIG = [0xD0, 0xCF, 0x11, 0xE0, 0xA1, 0xB1, 0x1A, 0xE1];\nvar HEADER_CLSID = '00000000000000000000000000000000';\nvar consts = {\n\t/* 2.1 Compund File Sector Numbers and Types */\n\tMAXREGSECT: -6,\n\tDIFSECT: -4,\n\tFATSECT: -3,\n\tENDOFCHAIN: ENDOFCHAIN,\n\tFREESECT: -1,\n\t/* 2.2 Compound File Header */\n\tHEADER_SIGNATURE: HEADER_SIGNATURE,\n\tHEADER_MINOR_VERSION: '3e00',\n\tMAXREGSID: -6,\n\tNOSTREAM: -1,\n\tHEADER_CLSID: HEADER_CLSID,\n\t/* 2.6.1 Compound File Directory Entry */\n\tEntryTypes: ['unknown','storage','stream','lockbytes','property','root']\n};\n\nfunction write_file(cfb, filename, options) {\n\tget_fs();\n\tvar o = _write(cfb, options);\nfs.writeFileSync(filename, o);\n}\n\nfunction a2s(o) {\n\tvar out = new Array(o.length);\n\tfor(var i = 0; i < o.length; ++i) out[i] = String.fromCharCode(o[i]);\n\treturn out.join(\"\");\n}\n\nfunction write(cfb, options) {\n\tvar o = _write(cfb, options);\n\tswitch(options && options.type || \"buffer\") {\n\t\tcase \"file\": get_fs(); fs.writeFileSync(options.filename, (o)); return o;\n\t\tcase \"binary\": return typeof o == \"string\" ? o : a2s(o);\n\t\tcase \"base64\": return Base64_encode(typeof o == \"string\" ? o : a2s(o));\n\t\tcase \"buffer\": if(has_buf) return Buffer.isBuffer(o) ? o : Buffer_from(o);\n\t\t\t/* falls through */\n\t\tcase \"array\": return typeof o == \"string\" ? s2a(o) : o;\n\t}\n\treturn o;\n}\n/* node < 8.1 zlib does not expose bytesRead, so default to pure JS */\nvar _zlib;\nfunction use_zlib(zlib) { try {\n\tvar InflateRaw = zlib.InflateRaw;\n\tvar InflRaw = new InflateRaw();\n\tInflRaw._processChunk(new Uint8Array([3, 0]), InflRaw._finishFlushFlag);\n\tif(InflRaw.bytesRead) _zlib = zlib;\n\telse throw new Error(\"zlib does not expose bytesRead\");\n} catch(e) {console.error(\"cannot use native zlib: \" + (e.message || e)); } }\n\nfunction _inflateRawSync(payload, usz) {\n\tif(!_zlib) return _inflate(payload, usz);\n\tvar InflateRaw = _zlib.InflateRaw;\n\tvar InflRaw = new InflateRaw();\n\tvar out = InflRaw._processChunk(payload.slice(payload.l), InflRaw._finishFlushFlag);\n\tpayload.l += InflRaw.bytesRead;\n\treturn out;\n}\n\nfunction _deflateRawSync(payload) {\n\treturn _zlib ? _zlib.deflateRawSync(payload) : _deflate(payload);\n}\nvar CLEN_ORDER = [ 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 ];\n\n/*  LEN_ID = [ 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285 ]; */\nvar LEN_LN = [   3,   4,   5,   6,   7,   8,   9,  10,  11,  13 , 15,  17,  19,  23,  27,  31,  35,  43,  51,  59,  67,  83,  99, 115, 131, 163, 195, 227, 258 ];\n\n/*  DST_ID = [  0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13,  14,  15,  16,  17,  18,  19,   20,   21,   22,   23,   24,   25,   26,    27,    28,    29 ]; */\nvar DST_LN = [  1,  2,  3,  4,  5,  7,  9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, 8193, 12289, 16385, 24577 ];\n\nfunction bit_swap_8(n) { var t = (((((n<<1)|(n<<11)) & 0x22110) | (((n<<5)|(n<<15)) & 0x88440))); return ((t>>16) | (t>>8) |t)&0xFF; }\n\nvar use_typed_arrays = typeof Uint8Array !== 'undefined';\n\nvar bitswap8 = use_typed_arrays ? new Uint8Array(1<<8) : [];\nfor(var q = 0; q < (1<<8); ++q) bitswap8[q] = bit_swap_8(q);\n\nfunction bit_swap_n(n, b) {\n\tvar rev = bitswap8[n & 0xFF];\n\tif(b <= 8) return rev >>> (8-b);\n\trev = (rev << 8) | bitswap8[(n>>8)&0xFF];\n\tif(b <= 16) return rev >>> (16-b);\n\trev = (rev << 8) | bitswap8[(n>>16)&0xFF];\n\treturn rev >>> (24-b);\n}\n\n/* helpers for unaligned bit reads */\nfunction read_bits_2(buf, bl) { var w = (bl&7), h = (bl>>>3); return ((buf[h]|(w <= 6 ? 0 : buf[h+1]<<8))>>>w)& 0x03; }\nfunction read_bits_3(buf, bl) { var w = (bl&7), h = (bl>>>3); return ((buf[h]|(w <= 5 ? 0 : buf[h+1]<<8))>>>w)& 0x07; }\nfunction read_bits_4(buf, bl) { var w = (bl&7), h = (bl>>>3); return ((buf[h]|(w <= 4 ? 0 : buf[h+1]<<8))>>>w)& 0x0F; }\nfunction read_bits_5(buf, bl) { var w = (bl&7), h = (bl>>>3); return ((buf[h]|(w <= 3 ? 0 : buf[h+1]<<8))>>>w)& 0x1F; }\nfunction read_bits_7(buf, bl) { var w = (bl&7), h = (bl>>>3); return ((buf[h]|(w <= 1 ? 0 : buf[h+1]<<8))>>>w)& 0x7F; }\n\n/* works up to n = 3 * 8 + 1 = 25 */\nfunction read_bits_n(buf, bl, n) {\n\tvar w = (bl&7), h = (bl>>>3), f = ((1<<n)-1);\n\tvar v = buf[h] >>> w;\n\tif(n < 8 - w) return v & f;\n\tv |= buf[h+1]<<(8-w);\n\tif(n < 16 - w) return v & f;\n\tv |= buf[h+2]<<(16-w);\n\tif(n < 24 - w) return v & f;\n\tv |= buf[h+3]<<(24-w);\n\treturn v & f;\n}\n\n/* helpers for unaligned bit writes */\nfunction write_bits_3(buf, bl, v) { var w = bl & 7, h = bl >>> 3;\n\tif(w <= 5) buf[h] |= (v & 7) << w;\n\telse {\n\t\tbuf[h] |= (v << w) & 0xFF;\n\t\tbuf[h+1] = (v&7) >> (8-w);\n\t}\n\treturn bl + 3;\n}\n\nfunction write_bits_1(buf, bl, v) {\n\tvar w = bl & 7, h = bl >>> 3;\n\tv = (v&1) << w;\n\tbuf[h] |= v;\n\treturn bl + 1;\n}\nfunction write_bits_8(buf, bl, v) {\n\tvar w = bl & 7, h = bl >>> 3;\n\tv <<= w;\n\tbuf[h] |=  v & 0xFF; v >>>= 8;\n\tbuf[h+1] = v;\n\treturn bl + 8;\n}\nfunction write_bits_16(buf, bl, v) {\n\tvar w = bl & 7, h = bl >>> 3;\n\tv <<= w;\n\tbuf[h] |=  v & 0xFF; v >>>= 8;\n\tbuf[h+1] = v & 0xFF;\n\tbuf[h+2] = v >>> 8;\n\treturn bl + 16;\n}\n\n/* until ArrayBuffer#realloc is a thing, fake a realloc */\nfunction realloc(b, sz) {\n\tvar L = b.length, M = 2*L > sz ? 2*L : sz + 5, i = 0;\n\tif(L >= sz) return b;\n\tif(has_buf) {\n\t\tvar o = new_unsafe_buf(M);\n\t\t// $FlowIgnore\n\t\tif(b.copy) b.copy(o);\n\t\telse for(; i < b.length; ++i) o[i] = b[i];\n\t\treturn o;\n\t} else if(use_typed_arrays) {\n\t\tvar a = new Uint8Array(M);\n\t\tif(a.set) a.set(b);\n\t\telse for(; i < L; ++i) a[i] = b[i];\n\t\treturn a;\n\t}\n\tb.length = M;\n\treturn b;\n}\n\n/* zero-filled arrays for older browsers */\nfunction zero_fill_array(n) {\n\tvar o = new Array(n);\n\tfor(var i = 0; i < n; ++i) o[i] = 0;\n\treturn o;\n}\n\n/* build tree (used for literals and lengths) */\nfunction build_tree(clens, cmap, MAX) {\n\tvar maxlen = 1, w = 0, i = 0, j = 0, ccode = 0, L = clens.length;\n\n\tvar bl_count  = use_typed_arrays ? new Uint16Array(32) : zero_fill_array(32);\n\tfor(i = 0; i < 32; ++i) bl_count[i] = 0;\n\n\tfor(i = L; i < MAX; ++i) clens[i] = 0;\n\tL = clens.length;\n\n\tvar ctree = use_typed_arrays ? new Uint16Array(L) : zero_fill_array(L); // []\n\n\t/* build code tree */\n\tfor(i = 0; i < L; ++i) {\n\t\tbl_count[(w = clens[i])]++;\n\t\tif(maxlen < w) maxlen = w;\n\t\tctree[i] = 0;\n\t}\n\tbl_count[0] = 0;\n\tfor(i = 1; i <= maxlen; ++i) bl_count[i+16] = (ccode = (ccode + bl_count[i-1])<<1);\n\tfor(i = 0; i < L; ++i) {\n\t\tccode = clens[i];\n\t\tif(ccode != 0) ctree[i] = bl_count[ccode+16]++;\n\t}\n\n\t/* cmap[maxlen + 4 bits] = (off&15) + (lit<<4) reverse mapping */\n\tvar cleni = 0;\n\tfor(i = 0; i < L; ++i) {\n\t\tcleni = clens[i];\n\t\tif(cleni != 0) {\n\t\t\tccode = bit_swap_n(ctree[i], maxlen)>>(maxlen-cleni);\n\t\t\tfor(j = (1<<(maxlen + 4 - cleni)) - 1; j>=0; --j)\n\t\t\t\tcmap[ccode|(j<<cleni)] = (cleni&15) | (i<<4);\n\t\t}\n\t}\n\treturn maxlen;\n}\n\n/* Fixed Huffman */\nvar fix_lmap = use_typed_arrays ? new Uint16Array(512) : zero_fill_array(512);\nvar fix_dmap = use_typed_arrays ? new Uint16Array(32)  : zero_fill_array(32);\nif(!use_typed_arrays) {\n\tfor(var i = 0; i < 512; ++i) fix_lmap[i] = 0;\n\tfor(i = 0; i < 32; ++i) fix_dmap[i] = 0;\n}\n(function() {\n\tvar dlens = [];\n\tvar i = 0;\n\tfor(;i<32; i++) dlens.push(5);\n\tbuild_tree(dlens, fix_dmap, 32);\n\n\tvar clens = [];\n\ti = 0;\n\tfor(; i<=143; i++) clens.push(8);\n\tfor(; i<=255; i++) clens.push(9);\n\tfor(; i<=279; i++) clens.push(7);\n\tfor(; i<=287; i++) clens.push(8);\n\tbuild_tree(clens, fix_lmap, 288);\n})();var _deflateRaw = (function _deflateRawIIFE() {\n\tvar DST_LN_RE = use_typed_arrays ? new Uint8Array(0x8000) : [];\n\tvar j = 0, k = 0;\n\tfor(; j < DST_LN.length - 1; ++j) {\n\t\tfor(; k < DST_LN[j+1]; ++k) DST_LN_RE[k] = j;\n\t}\n\tfor(;k < 32768; ++k) DST_LN_RE[k] = 29;\n\n\tvar LEN_LN_RE = use_typed_arrays ? new Uint8Array(0x103) : [];\n\tfor(j = 0, k = 0; j < LEN_LN.length - 1; ++j) {\n\t\tfor(; k < LEN_LN[j+1]; ++k) LEN_LN_RE[k] = j;\n\t}\n\n\tfunction write_stored(data, out) {\n\t\tvar boff = 0;\n\t\twhile(boff < data.length) {\n\t\t\tvar L = Math.min(0xFFFF, data.length - boff);\n\t\t\tvar h = boff + L == data.length;\n\t\t\tout.write_shift(1, +h);\n\t\t\tout.write_shift(2, L);\n\t\t\tout.write_shift(2, (~L) & 0xFFFF);\n\t\t\twhile(L-- > 0) out[out.l++] = data[boff++];\n\t\t}\n\t\treturn out.l;\n\t}\n\n\t/* Fixed Huffman */\n\tfunction write_huff_fixed(data, out) {\n\t\tvar bl = 0;\n\t\tvar boff = 0;\n\t\tvar addrs = use_typed_arrays ? new Uint16Array(0x8000) : [];\n\t\twhile(boff < data.length) {\n\t\t\tvar L = /* data.length - boff; */ Math.min(0xFFFF, data.length - boff);\n\n\t\t\t/* write a stored block for short data */\n\t\t\tif(L < 10) {\n\t\t\t\tbl = write_bits_3(out, bl, +!!(boff + L == data.length)); // jshint ignore:line\n\t\t\t\tif(bl & 7) bl += 8 - (bl & 7);\n\t\t\t\tout.l = (bl / 8) | 0;\n\t\t\t\tout.write_shift(2, L);\n\t\t\t\tout.write_shift(2, (~L) & 0xFFFF);\n\t\t\t\twhile(L-- > 0) out[out.l++] = data[boff++];\n\t\t\t\tbl = out.l * 8;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tbl = write_bits_3(out, bl, +!!(boff + L == data.length) + 2); // jshint ignore:line\n\t\t\tvar hash = 0;\n\t\t\twhile(L-- > 0) {\n\t\t\t\tvar d = data[boff];\n\t\t\t\thash = ((hash << 5) ^ d) & 0x7FFF;\n\n\t\t\t\tvar match = -1, mlen = 0;\n\n\t\t\t\tif((match = addrs[hash])) {\n\t\t\t\t\tmatch |= boff & ~0x7FFF;\n\t\t\t\t\tif(match > boff) match -= 0x8000;\n\t\t\t\t\tif(match < boff) while(data[match + mlen] == data[boff + mlen] && mlen < 250) ++mlen;\n\t\t\t\t}\n\n\t\t\t\tif(mlen > 2) {\n\t\t\t\t\t/* Copy Token  */\n\t\t\t\t\td = LEN_LN_RE[mlen];\n\t\t\t\t\tif(d <= 22) bl = write_bits_8(out, bl, bitswap8[d+1]>>1) - 1;\n\t\t\t\t\telse {\n\t\t\t\t\t\twrite_bits_8(out, bl, 3);\n\t\t\t\t\t\tbl += 5;\n\t\t\t\t\t\twrite_bits_8(out, bl, bitswap8[d-23]>>5);\n\t\t\t\t\t\tbl += 3;\n\t\t\t\t\t}\n\t\t\t\t\tvar len_eb = (d < 8) ? 0 : ((d - 4)>>2);\n\t\t\t\t\tif(len_eb > 0) {\n\t\t\t\t\t\twrite_bits_16(out, bl, mlen - LEN_LN[d]);\n\t\t\t\t\t\tbl += len_eb;\n\t\t\t\t\t}\n\n\t\t\t\t\td = DST_LN_RE[boff - match];\n\t\t\t\t\tbl = write_bits_8(out, bl, bitswap8[d]>>3);\n\t\t\t\t\tbl -= 3;\n\n\t\t\t\t\tvar dst_eb = d < 4 ? 0 : (d-2)>>1;\n\t\t\t\t\tif(dst_eb > 0) {\n\t\t\t\t\t\twrite_bits_16(out, bl, boff - match - DST_LN[d]);\n\t\t\t\t\t\tbl += dst_eb;\n\t\t\t\t\t}\n\t\t\t\t\tfor(var q = 0; q < mlen; ++q) {\n\t\t\t\t\t\taddrs[hash] = boff & 0x7FFF;\n\t\t\t\t\t\thash = ((hash << 5) ^ data[boff]) & 0x7FFF;\n\t\t\t\t\t\t++boff;\n\t\t\t\t\t}\n\t\t\t\t\tL-= mlen - 1;\n\t\t\t\t} else {\n\t\t\t\t\t/* Literal Token */\n\t\t\t\t\tif(d <= 143) d = d + 48;\n\t\t\t\t\telse bl = write_bits_1(out, bl, 1);\n\t\t\t\t\tbl = write_bits_8(out, bl, bitswap8[d]);\n\t\t\t\t\taddrs[hash] = boff & 0x7FFF;\n\t\t\t\t\t++boff;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tbl = write_bits_8(out, bl, 0) - 1;\n\t\t}\n\t\tout.l = ((bl + 7)/8)|0;\n\t\treturn out.l;\n\t}\n\treturn function _deflateRaw(data, out) {\n\t\tif(data.length < 8) return write_stored(data, out);\n\t\treturn write_huff_fixed(data, out);\n\t};\n})();\n\nfunction _deflate(data) {\n\tvar buf = new_buf(50+Math.floor(data.length*1.1));\n\tvar off = _deflateRaw(data, buf);\n\treturn buf.slice(0, off);\n}\n/* modified inflate function also moves original read head */\n\nvar dyn_lmap = use_typed_arrays ? new Uint16Array(32768) : zero_fill_array(32768);\nvar dyn_dmap = use_typed_arrays ? new Uint16Array(32768) : zero_fill_array(32768);\nvar dyn_cmap = use_typed_arrays ? new Uint16Array(128)   : zero_fill_array(128);\nvar dyn_len_1 = 1, dyn_len_2 = 1;\n\n/* 5.5.3 Expanding Huffman Codes */\nfunction dyn(data, boff) {\n\t/* nomenclature from RFC1951 refers to bit values; these are offset by the implicit constant */\n\tvar _HLIT = read_bits_5(data, boff) + 257; boff += 5;\n\tvar _HDIST = read_bits_5(data, boff) + 1; boff += 5;\n\tvar _HCLEN = read_bits_4(data, boff) + 4; boff += 4;\n\tvar w = 0;\n\n\t/* grab and store code lengths */\n\tvar clens = use_typed_arrays ? new Uint8Array(19) : zero_fill_array(19);\n\tvar ctree = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ];\n\tvar maxlen = 1;\n\tvar bl_count =  use_typed_arrays ? new Uint8Array(8) : zero_fill_array(8);\n\tvar next_code = use_typed_arrays ? new Uint8Array(8) : zero_fill_array(8);\n\tvar L = clens.length; /* 19 */\n\tfor(var i = 0; i < _HCLEN; ++i) {\n\t\tclens[CLEN_ORDER[i]] = w = read_bits_3(data, boff);\n\t\tif(maxlen < w) maxlen = w;\n\t\tbl_count[w]++;\n\t\tboff += 3;\n\t}\n\n\t/* build code tree */\n\tvar ccode = 0;\n\tbl_count[0] = 0;\n\tfor(i = 1; i <= maxlen; ++i) next_code[i] = ccode = (ccode + bl_count[i-1])<<1;\n\tfor(i = 0; i < L; ++i) if((ccode = clens[i]) != 0) ctree[i] = next_code[ccode]++;\n\t/* cmap[7 bits from stream] = (off&7) + (lit<<3) */\n\tvar cleni = 0;\n\tfor(i = 0; i < L; ++i) {\n\t\tcleni = clens[i];\n\t\tif(cleni != 0) {\n\t\t\tccode = bitswap8[ctree[i]]>>(8-cleni);\n\t\t\tfor(var j = (1<<(7-cleni))-1; j>=0; --j) dyn_cmap[ccode|(j<<cleni)] = (cleni&7) | (i<<3);\n\t\t}\n\t}\n\n\t/* read literal and dist codes at once */\n\tvar hcodes = [];\n\tmaxlen = 1;\n\tfor(; hcodes.length < _HLIT + _HDIST;) {\n\t\tccode = dyn_cmap[read_bits_7(data, boff)];\n\t\tboff += ccode & 7;\n\t\tswitch((ccode >>>= 3)) {\n\t\t\tcase 16:\n\t\t\t\tw = 3 + read_bits_2(data, boff); boff += 2;\n\t\t\t\tccode = hcodes[hcodes.length - 1];\n\t\t\t\twhile(w-- > 0) hcodes.push(ccode);\n\t\t\t\tbreak;\n\t\t\tcase 17:\n\t\t\t\tw = 3 + read_bits_3(data, boff); boff += 3;\n\t\t\t\twhile(w-- > 0) hcodes.push(0);\n\t\t\t\tbreak;\n\t\t\tcase 18:\n\t\t\t\tw = 11 + read_bits_7(data, boff); boff += 7;\n\t\t\t\twhile(w -- > 0) hcodes.push(0);\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\thcodes.push(ccode);\n\t\t\t\tif(maxlen < ccode) maxlen = ccode;\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\t/* build literal / length trees */\n\tvar h1 = hcodes.slice(0, _HLIT), h2 = hcodes.slice(_HLIT);\n\tfor(i = _HLIT; i < 286; ++i) h1[i] = 0;\n\tfor(i = _HDIST; i < 30; ++i) h2[i] = 0;\n\tdyn_len_1 = build_tree(h1, dyn_lmap, 286);\n\tdyn_len_2 = build_tree(h2, dyn_dmap, 30);\n\treturn boff;\n}\n\n/* return [ data, bytesRead ] */\nfunction inflate(data, usz) {\n\t/* shortcircuit for empty buffer [0x03, 0x00] */\n\tif(data[0] == 3 && !(data[1] & 0x3)) { return [new_raw_buf(usz), 2]; }\n\n\t/* bit offset */\n\tvar boff = 0;\n\n\t/* header includes final bit and type bits */\n\tvar header = 0;\n\n\tvar outbuf = new_unsafe_buf(usz ? usz : (1<<18));\n\tvar woff = 0;\n\tvar OL = outbuf.length>>>0;\n\tvar max_len_1 = 0, max_len_2 = 0;\n\n\twhile((header&1) == 0) {\n\t\theader = read_bits_3(data, boff); boff += 3;\n\t\tif((header >>> 1) == 0) {\n\t\t\t/* Stored block */\n\t\t\tif(boff & 7) boff += 8 - (boff&7);\n\t\t\t/* 2 bytes sz, 2 bytes bit inverse */\n\t\t\tvar sz = data[boff>>>3] | data[(boff>>>3)+1]<<8;\n\t\t\tboff += 32;\n\t\t\t/* push sz bytes */\n\t\t\tif(sz > 0) {\n\t\t\t\tif(!usz && OL < woff + sz) { outbuf = realloc(outbuf, woff + sz); OL = outbuf.length; }\n\t\t\t\twhile(sz-- > 0) { outbuf[woff++] = data[boff>>>3]; boff += 8; }\n\t\t\t}\n\t\t\tcontinue;\n\t\t} else if((header >> 1) == 1) {\n\t\t\t/* Fixed Huffman */\n\t\t\tmax_len_1 = 9; max_len_2 = 5;\n\t\t} else {\n\t\t\t/* Dynamic Huffman */\n\t\t\tboff = dyn(data, boff);\n\t\t\tmax_len_1 = dyn_len_1; max_len_2 = dyn_len_2;\n\t\t}\n\t\tfor(;;) { // while(true) is apparently out of vogue in modern JS circles\n\t\t\tif(!usz && (OL < woff + 32767)) { outbuf = realloc(outbuf, woff + 32767); OL = outbuf.length; }\n\t\t\t/* ingest code and move read head */\n\t\t\tvar bits = read_bits_n(data, boff, max_len_1);\n\t\t\tvar code = (header>>>1) == 1 ? fix_lmap[bits] : dyn_lmap[bits];\n\t\t\tboff += code & 15; code >>>= 4;\n\t\t\t/* 0-255 are literals, 256 is end of block token, 257+ are copy tokens */\n\t\t\tif(((code>>>8)&0xFF) === 0) outbuf[woff++] = code;\n\t\t\telse if(code == 256) break;\n\t\t\telse {\n\t\t\t\tcode -= 257;\n\t\t\t\tvar len_eb = (code < 8) ? 0 : ((code-4)>>2); if(len_eb > 5) len_eb = 0;\n\t\t\t\tvar tgt = woff + LEN_LN[code];\n\t\t\t\t/* length extra bits */\n\t\t\t\tif(len_eb > 0) {\n\t\t\t\t\ttgt += read_bits_n(data, boff, len_eb);\n\t\t\t\t\tboff += len_eb;\n\t\t\t\t}\n\n\t\t\t\t/* dist code */\n\t\t\t\tbits = read_bits_n(data, boff, max_len_2);\n\t\t\t\tcode = (header>>>1) == 1 ? fix_dmap[bits] : dyn_dmap[bits];\n\t\t\t\tboff += code & 15; code >>>= 4;\n\t\t\t\tvar dst_eb = (code < 4 ? 0 : (code-2)>>1);\n\t\t\t\tvar dst = DST_LN[code];\n\t\t\t\t/* dist extra bits */\n\t\t\t\tif(dst_eb > 0) {\n\t\t\t\t\tdst += read_bits_n(data, boff, dst_eb);\n\t\t\t\t\tboff += dst_eb;\n\t\t\t\t}\n\n\t\t\t\t/* in the common case, manual byte copy is faster than TA set / Buffer copy */\n\t\t\t\tif(!usz && OL < tgt) { outbuf = realloc(outbuf, tgt + 100); OL = outbuf.length; }\n\t\t\t\twhile(woff < tgt) { outbuf[woff] = outbuf[woff - dst]; ++woff; }\n\t\t\t}\n\t\t}\n\t}\n\tif(usz) return [outbuf, (boff+7)>>>3];\n\treturn [outbuf.slice(0, woff), (boff+7)>>>3];\n}\n\nfunction _inflate(payload, usz) {\n\tvar data = payload.slice(payload.l||0);\n\tvar out = inflate(data, usz);\n\tpayload.l += out[1];\n\treturn out[0];\n}\n\nfunction warn_or_throw(wrn, msg) {\n\tif(wrn) { if(typeof console !== 'undefined') console.error(msg); }\n\telse throw new Error(msg);\n}\n\nfunction parse_zip(file, options) {\n\tvar blob = file;\n\tprep_blob(blob, 0);\n\n\tvar FileIndex = [], FullPaths = [];\n\tvar o = {\n\t\tFileIndex: FileIndex,\n\t\tFullPaths: FullPaths\n\t};\n\tinit_cfb(o, { root: options.root });\n\n\t/* find end of central directory, start just after signature */\n\tvar i = blob.length - 4;\n\twhile((blob[i] != 0x50 || blob[i+1] != 0x4b || blob[i+2] != 0x05 || blob[i+3] != 0x06) && i >= 0) --i;\n\tblob.l = i + 4;\n\n\t/* parse end of central directory */\n\tblob.l += 4;\n\tvar fcnt = blob.read_shift(2);\n\tblob.l += 6;\n\tvar start_cd = blob.read_shift(4);\n\n\t/* parse central directory */\n\tblob.l = start_cd;\n\n\tfor(i = 0; i < fcnt; ++i) {\n\t\t/* trust local file header instead of CD entry */\n\t\tblob.l += 20;\n\t\tvar csz = blob.read_shift(4);\n\t\tvar usz = blob.read_shift(4);\n\t\tvar namelen = blob.read_shift(2);\n\t\tvar efsz = blob.read_shift(2);\n\t\tvar fcsz = blob.read_shift(2);\n\t\tblob.l += 8;\n\t\tvar offset = blob.read_shift(4);\n\t\tvar EF = parse_extra_field(blob.slice(blob.l+namelen, blob.l+namelen+efsz));\n\t\tblob.l += namelen + efsz + fcsz;\n\n\t\tvar L = blob.l;\n\t\tblob.l = offset + 4;\n\t\tparse_local_file(blob, csz, usz, o, EF);\n\t\tblob.l = L;\n\t}\n\n\treturn o;\n}\n\n\n/* head starts just after local file header signature */\nfunction parse_local_file(blob, csz, usz, o, EF) {\n\t/* [local file header] */\n\tblob.l += 2;\n\tvar flags = blob.read_shift(2);\n\tvar meth = blob.read_shift(2);\n\tvar date = parse_dos_date(blob);\n\n\tif(flags & 0x2041) throw new Error(\"Unsupported ZIP encryption\");\n\tvar crc32 = blob.read_shift(4);\n\tvar _csz = blob.read_shift(4);\n\tvar _usz = blob.read_shift(4);\n\n\tvar namelen = blob.read_shift(2);\n\tvar efsz = blob.read_shift(2);\n\n\t// TODO: flags & (1<<11) // UTF8\n\tvar name = \"\"; for(var i = 0; i < namelen; ++i) name += String.fromCharCode(blob[blob.l++]);\n\tif(efsz) {\n\t\tvar ef = parse_extra_field(blob.slice(blob.l, blob.l + efsz));\n\t\tif((ef[0x5455]||{}).mt) date = ef[0x5455].mt;\n\t\tif(((EF||{})[0x5455]||{}).mt) date = EF[0x5455].mt;\n\t}\n\tblob.l += efsz;\n\n\t/* [encryption header] */\n\n\t/* [file data] */\n\tvar data = blob.slice(blob.l, blob.l + _csz);\n\tswitch(meth) {\n\t\tcase 8: data = _inflateRawSync(blob, _usz); break;\n\t\tcase 0: break; // TODO: scan for magic number\n\t\tdefault: throw new Error(\"Unsupported ZIP Compression method \" + meth);\n\t}\n\n\t/* [data descriptor] */\n\tvar wrn = false;\n\tif(flags & 8) {\n\t\tcrc32 = blob.read_shift(4);\n\t\tif(crc32 == 0x08074b50) { crc32 = blob.read_shift(4); wrn = true; }\n\t\t_csz = blob.read_shift(4);\n\t\t_usz = blob.read_shift(4);\n\t}\n\n\tif(_csz != csz) warn_or_throw(wrn, \"Bad compressed size: \" + csz + \" != \" + _csz);\n\tif(_usz != usz) warn_or_throw(wrn, \"Bad uncompressed size: \" + usz + \" != \" + _usz);\n\tvar _crc32 = CRC32.buf(data, 0);\n\tif((crc32>>0) != (_crc32>>0)) warn_or_throw(wrn, \"Bad CRC32 checksum: \" + crc32 + \" != \" + _crc32);\n\tcfb_add(o, name, data, {unsafe: true, mt: date});\n}\nfunction write_zip(cfb, options) {\n\tvar _opts = options || {};\n\tvar out = [], cdirs = [];\n\tvar o = new_buf(1);\n\tvar method = (_opts.compression ? 8 : 0), flags = 0;\n\tvar desc = false;\n\tif(desc) flags |= 8;\n\tvar i = 0, j = 0;\n\n\tvar start_cd = 0, fcnt = 0;\n\tvar root = cfb.FullPaths[0], fp = root, fi = cfb.FileIndex[0];\n\tvar crcs = [];\n\tvar sz_cd = 0;\n\n\tfor(i = 1; i < cfb.FullPaths.length; ++i) {\n\t\tfp = cfb.FullPaths[i].slice(root.length); fi = cfb.FileIndex[i];\n\t\tif(!fi.size || !fi.content || fp == \"\\u0001Sh33tJ5\") continue;\n\t\tvar start = start_cd;\n\n\t\t/* TODO: CP437 filename */\n\t\tvar namebuf = new_buf(fp.length);\n\t\tfor(j = 0; j < fp.length; ++j) namebuf.write_shift(1, fp.charCodeAt(j) & 0x7F);\n\t\tnamebuf = namebuf.slice(0, namebuf.l);\n\t\tcrcs[fcnt] = CRC32.buf(fi.content, 0);\n\n\t\tvar outbuf = fi.content;\n\t\tif(method == 8) outbuf = _deflateRawSync(outbuf);\n\n\t\t/* local file header */\n\t\to = new_buf(30);\n\t\to.write_shift(4, 0x04034b50);\n\t\to.write_shift(2, 20);\n\t\to.write_shift(2, flags);\n\t\to.write_shift(2, method);\n\t\t/* TODO: last mod file time/date */\n\t\tif(fi.mt) write_dos_date(o, fi.mt);\n\t\telse o.write_shift(4, 0);\n\t\to.write_shift(-4, (flags & 8) ? 0 : crcs[fcnt]);\n\t\to.write_shift(4,  (flags & 8) ? 0 : outbuf.length);\n\t\to.write_shift(4,  (flags & 8) ? 0 : fi.content.length);\n\t\to.write_shift(2, namebuf.length);\n\t\to.write_shift(2, 0);\n\n\t\tstart_cd += o.length;\n\t\tout.push(o);\n\t\tstart_cd += namebuf.length;\n\t\tout.push(namebuf);\n\n\t\t/* TODO: extra fields? */\n\n\t\t/* TODO: encryption header ? */\n\n\t\tstart_cd += outbuf.length;\n\t\tout.push(outbuf);\n\n\t\t/* data descriptor */\n\t\tif(flags & 8) {\n\t\t\to = new_buf(12);\n\t\t\to.write_shift(-4, crcs[fcnt]);\n\t\t\to.write_shift(4, outbuf.length);\n\t\t\to.write_shift(4, fi.content.length);\n\t\t\tstart_cd += o.l;\n\t\t\tout.push(o);\n\t\t}\n\n\t\t/* central directory */\n\t\to = new_buf(46);\n\t\to.write_shift(4, 0x02014b50);\n\t\to.write_shift(2, 0);\n\t\to.write_shift(2, 20);\n\t\to.write_shift(2, flags);\n\t\to.write_shift(2, method);\n\t\to.write_shift(4, 0); /* TODO: last mod file time/date */\n\t\to.write_shift(-4, crcs[fcnt]);\n\n\t\to.write_shift(4, outbuf.length);\n\t\to.write_shift(4, fi.content.length);\n\t\to.write_shift(2, namebuf.length);\n\t\to.write_shift(2, 0);\n\t\to.write_shift(2, 0);\n\t\to.write_shift(2, 0);\n\t\to.write_shift(2, 0);\n\t\to.write_shift(4, 0);\n\t\to.write_shift(4, start);\n\n\t\tsz_cd += o.l;\n\t\tcdirs.push(o);\n\t\tsz_cd += namebuf.length;\n\t\tcdirs.push(namebuf);\n\t\t++fcnt;\n\t}\n\n\t/* end of central directory */\n\to = new_buf(22);\n\to.write_shift(4, 0x06054b50);\n\to.write_shift(2, 0);\n\to.write_shift(2, 0);\n\to.write_shift(2, fcnt);\n\to.write_shift(2, fcnt);\n\to.write_shift(4, sz_cd);\n\to.write_shift(4, start_cd);\n\to.write_shift(2, 0);\n\n\treturn bconcat(([bconcat((out)), bconcat(cdirs), o]));\n}\nvar ContentTypeMap = ({\n\t\"htm\": \"text/html\",\n\t\"xml\": \"text/xml\",\n\n\t\"gif\": \"image/gif\",\n\t\"jpg\": \"image/jpeg\",\n\t\"png\": \"image/png\",\n\n\t\"mso\": \"application/x-mso\",\n\t\"thmx\": \"application/vnd.ms-officetheme\",\n\t\"sh33tj5\": \"application/octet-stream\"\n});\n\nfunction get_content_type(fi, fp) {\n\tif(fi.ctype) return fi.ctype;\n\n\tvar ext = fi.name || \"\", m = ext.match(/\\.([^\\.]+)$/);\n\tif(m && ContentTypeMap[m[1]]) return ContentTypeMap[m[1]];\n\n\tif(fp) {\n\t\tm = (ext = fp).match(/[\\.\\\\]([^\\.\\\\])+$/);\n\t\tif(m && ContentTypeMap[m[1]]) return ContentTypeMap[m[1]];\n\t}\n\n\treturn \"application/octet-stream\";\n}\n\n/* 76 character chunks TODO: intertwine encoding */\nfunction write_base64_76(bstr) {\n\tvar data = Base64_encode(bstr);\n\tvar o = [];\n\tfor(var i = 0; i < data.length; i+= 76) o.push(data.slice(i, i+76));\n\treturn o.join(\"\\r\\n\") + \"\\r\\n\";\n}\n\n/*\nRules for QP:\n\t- escape =## applies for all non-display characters and literal \"=\"\n\t- space or tab at end of line must be encoded\n\t- \\r\\n newlines can be preserved, but bare \\r and \\n must be escaped\n\t- lines must not exceed 76 characters, use soft breaks =\\r\\n\n\nTODO: Some files from word appear to write line extensions with bare equals:\n\n```\n<table class=3DMsoTableGrid border=3D1 cellspacing=3D0 cellpadding=3D0 width=\n=\"70%\"\n```\n*/\nfunction write_quoted_printable(text) {\n\tvar encoded = text.replace(/[\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7E-\\xFF=]/g, function(c) {\n\t\tvar w = c.charCodeAt(0).toString(16).toUpperCase();\n\t\treturn \"=\" + (w.length == 1 ? \"0\" + w : w);\n\t});\n\n\tencoded = encoded.replace(/ $/mg, \"=20\").replace(/\\t$/mg, \"=09\");\n\n\tif(encoded.charAt(0) == \"\\n\") encoded = \"=0D\" + encoded.slice(1);\n\tencoded = encoded.replace(/\\r(?!\\n)/mg, \"=0D\").replace(/\\n\\n/mg, \"\\n=0A\").replace(/([^\\r\\n])\\n/mg, \"$1=0A\");\n\n\tvar o = [], split = encoded.split(\"\\r\\n\");\n\tfor(var si = 0; si < split.length; ++si) {\n\t\tvar str = split[si];\n\t\tif(str.length == 0) { o.push(\"\"); continue; }\n\t\tfor(var i = 0; i < str.length;) {\n\t\t\tvar end = 76;\n\t\t\tvar tmp = str.slice(i, i + end);\n\t\t\tif(tmp.charAt(end - 1) == \"=\") end --;\n\t\t\telse if(tmp.charAt(end - 2) == \"=\") end -= 2;\n\t\t\telse if(tmp.charAt(end - 3) == \"=\") end -= 3;\n\t\t\ttmp = str.slice(i, i + end);\n\t\t\ti += end;\n\t\t\tif(i < str.length) tmp += \"=\";\n\t\t\to.push(tmp);\n\t\t}\n\t}\n\n\treturn o.join(\"\\r\\n\");\n}\nfunction parse_quoted_printable(data) {\n\tvar o = [];\n\n\t/* unify long lines */\n\tfor(var di = 0; di < data.length; ++di) {\n\t\tvar line = data[di];\n\t\twhile(di <= data.length && line.charAt(line.length - 1) == \"=\") line = line.slice(0, line.length - 1) + data[++di];\n\t\to.push(line);\n\t}\n\n\t/* decode */\n\tfor(var oi = 0; oi < o.length; ++oi) o[oi] = o[oi].replace(/[=][0-9A-Fa-f]{2}/g, function($$) { return String.fromCharCode(parseInt($$.slice(1), 16)); });\n\treturn s2a(o.join(\"\\r\\n\"));\n}\n\n\nfunction parse_mime(cfb, data, root) {\n\tvar fname = \"\", cte = \"\", ctype = \"\", fdata;\n\tvar di = 0;\n\tfor(;di < 10; ++di) {\n\t\tvar line = data[di];\n\t\tif(!line || line.match(/^\\s*$/)) break;\n\t\tvar m = line.match(/^(.*?):\\s*([^\\s].*)$/);\n\t\tif(m) switch(m[1].toLowerCase()) {\n\t\t\tcase \"content-location\": fname = m[2].trim(); break;\n\t\t\tcase \"content-type\": ctype = m[2].trim(); break;\n\t\t\tcase \"content-transfer-encoding\": cte = m[2].trim(); break;\n\t\t}\n\t}\n\t++di;\n\tswitch(cte.toLowerCase()) {\n\t\tcase 'base64': fdata = s2a(Base64_decode(data.slice(di).join(\"\"))); break;\n\t\tcase 'quoted-printable': fdata = parse_quoted_printable(data.slice(di)); break;\n\t\tdefault: throw new Error(\"Unsupported Content-Transfer-Encoding \" + cte);\n\t}\n\tvar file = cfb_add(cfb, fname.slice(root.length), fdata, {unsafe: true});\n\tif(ctype) file.ctype = ctype;\n}\n\nfunction parse_mad(file, options) {\n\tif(a2s(file.slice(0,13)).toLowerCase() != \"mime-version:\") throw new Error(\"Unsupported MAD header\");\n\tvar root = (options && options.root || \"\");\n\t// $FlowIgnore\n\tvar data = (has_buf && Buffer.isBuffer(file) ? file.toString(\"binary\") : a2s(file)).split(\"\\r\\n\");\n\tvar di = 0, row = \"\";\n\n\t/* if root is not specified, scan for the common prefix */\n\tfor(di = 0; di < data.length; ++di) {\n\t\trow = data[di];\n\t\tif(!/^Content-Location:/i.test(row)) continue;\n\t\trow = row.slice(row.indexOf(\"file\"));\n\t\tif(!root) root = row.slice(0, row.lastIndexOf(\"/\") + 1);\n\t\tif(row.slice(0, root.length) == root) continue;\n\t\twhile(root.length > 0) {\n\t\t\troot = root.slice(0, root.length - 1);\n\t\t\troot = root.slice(0, root.lastIndexOf(\"/\") + 1);\n\t\t\tif(row.slice(0,root.length) == root) break;\n\t\t}\n\t}\n\n\tvar mboundary = (data[1] || \"\").match(/boundary=\"(.*?)\"/);\n\tif(!mboundary) throw new Error(\"MAD cannot find boundary\");\n\tvar boundary = \"--\" + (mboundary[1] || \"\");\n\n\tvar FileIndex = [], FullPaths = [];\n\tvar o = {\n\t\tFileIndex: FileIndex,\n\t\tFullPaths: FullPaths\n\t};\n\tinit_cfb(o);\n\tvar start_di, fcnt = 0;\n\tfor(di = 0; di < data.length; ++di) {\n\t\tvar line = data[di];\n\t\tif(line !== boundary && line !== boundary + \"--\") continue;\n\t\tif(fcnt++) parse_mime(o, data.slice(start_di, di), root);\n\t\tstart_di = di;\n\t}\n\treturn o;\n}\n\nfunction write_mad(cfb, options) {\n\tvar opts = options || {};\n\tvar boundary = opts.boundary || \"SheetJS\";\n\tboundary = '------=' + boundary;\n\n\tvar out = [\n\t\t'MIME-Version: 1.0',\n\t\t'Content-Type: multipart/related; boundary=\"' + boundary.slice(2) + '\"',\n\t\t'',\n\t\t'',\n\t\t''\n\t];\n\n\tvar root = cfb.FullPaths[0], fp = root, fi = cfb.FileIndex[0];\n\tfor(var i = 1; i < cfb.FullPaths.length; ++i) {\n\t\tfp = cfb.FullPaths[i].slice(root.length);\n\t\tfi = cfb.FileIndex[i];\n\t\tif(!fi.size || !fi.content || fp == \"\\u0001Sh33tJ5\") continue;\n\n\t\t/* Normalize filename */\n\t\tfp = fp.replace(/[\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7E-\\xFF]/g, function(c) {\n\t\t\treturn \"_x\" + c.charCodeAt(0).toString(16) + \"_\";\n\t\t}).replace(/[\\u0080-\\uFFFF]/g, function(u) {\n\t\t\treturn \"_u\" + u.charCodeAt(0).toString(16) + \"_\";\n\t\t});\n\n\t\t/* Extract content as binary string */\n\t\tvar ca = fi.content;\n\t\t// $FlowIgnore\n\t\tvar cstr = has_buf && Buffer.isBuffer(ca) ? ca.toString(\"binary\") : a2s(ca);\n\n\t\t/* 4/5 of first 1024 chars ascii -> quoted printable, else base64 */\n\t\tvar dispcnt = 0, L = Math.min(1024, cstr.length), cc = 0;\n\t\tfor(var csl = 0; csl <= L; ++csl) if((cc=cstr.charCodeAt(csl)) >= 0x20 && cc < 0x80) ++dispcnt;\n\t\tvar qp = dispcnt >= L * 4 / 5;\n\n\t\tout.push(boundary);\n\t\tout.push('Content-Location: ' + (opts.root || 'file:///C:/SheetJS/') + fp);\n\t\tout.push('Content-Transfer-Encoding: ' + (qp ? 'quoted-printable' : 'base64'));\n\t\tout.push('Content-Type: ' + get_content_type(fi, fp));\n\t\tout.push('');\n\n\t\tout.push(qp ? write_quoted_printable(cstr) : write_base64_76(cstr));\n\t}\n\tout.push(boundary + '--\\r\\n');\n\treturn out.join(\"\\r\\n\");\n}\nfunction cfb_new(opts) {\n\tvar o = ({});\n\tinit_cfb(o, opts);\n\treturn o;\n}\n\nfunction cfb_add(cfb, name, content, opts) {\n\tvar unsafe = opts && opts.unsafe;\n\tif(!unsafe) init_cfb(cfb);\n\tvar file = !unsafe && CFB.find(cfb, name);\n\tif(!file) {\n\t\tvar fpath = cfb.FullPaths[0];\n\t\tif(name.slice(0, fpath.length) == fpath) fpath = name;\n\t\telse {\n\t\t\tif(fpath.slice(-1) != \"/\") fpath += \"/\";\n\t\t\tfpath = (fpath + name).replace(\"//\",\"/\");\n\t\t}\n\t\tfile = ({name: filename(name), type: 2});\n\t\tcfb.FileIndex.push(file);\n\t\tcfb.FullPaths.push(fpath);\n\t\tif(!unsafe) CFB.utils.cfb_gc(cfb);\n\t}\nfile.content = (content);\n\tfile.size = content ? content.length : 0;\n\tif(opts) {\n\t\tif(opts.CLSID) file.clsid = opts.CLSID;\n\t\tif(opts.mt) file.mt = opts.mt;\n\t\tif(opts.ct) file.ct = opts.ct;\n\t}\n\treturn file;\n}\n\nfunction cfb_del(cfb, name) {\n\tinit_cfb(cfb);\n\tvar file = CFB.find(cfb, name);\n\tif(file) for(var j = 0; j < cfb.FileIndex.length; ++j) if(cfb.FileIndex[j] == file) {\n\t\tcfb.FileIndex.splice(j, 1);\n\t\tcfb.FullPaths.splice(j, 1);\n\t\treturn true;\n\t}\n\treturn false;\n}\n\nfunction cfb_mov(cfb, old_name, new_name) {\n\tinit_cfb(cfb);\n\tvar file = CFB.find(cfb, old_name);\n\tif(file) for(var j = 0; j < cfb.FileIndex.length; ++j) if(cfb.FileIndex[j] == file) {\n\t\tcfb.FileIndex[j].name = filename(new_name);\n\t\tcfb.FullPaths[j] = new_name;\n\t\treturn true;\n\t}\n\treturn false;\n}\n\nfunction cfb_gc(cfb) { rebuild_cfb(cfb, true); }\n\nexports.find = find;\nexports.read = read;\nexports.parse = parse;\nexports.write = write;\nexports.writeFile = write_file;\nexports.utils = {\n\tcfb_new: cfb_new,\n\tcfb_add: cfb_add,\n\tcfb_del: cfb_del,\n\tcfb_mov: cfb_mov,\n\tcfb_gc: cfb_gc,\n\tReadShift: ReadShift,\n\tCheckField: CheckField,\n\tprep_blob: prep_blob,\n\tbconcat: bconcat,\n\tuse_zlib: use_zlib,\n\t_deflateRaw: _deflate,\n\t_inflateRaw: _inflate,\n\tconsts: consts\n};\n\nreturn exports;\n})();\n\nif(typeof require !== 'undefined' && typeof module !== 'undefined' && typeof DO_NOT_EXPORT_CFB === 'undefined') { module.exports = CFB; }\n","import { IOBuffer } from 'iobuffer';\n/**\n * Parses a single `PageTextsN` stream from a UVProbe OLE file.\n * @param content - raw stream bytes.\n * @returns The section title and its key/value properties.\n */\nexport function parsePageText(content) {\n    const buffer = new IOBuffer(content);\n    buffer.readUint32(); // unknown flag (always 1 in observed files)\n    buffer.readUint32(); // page index\n    const title = readDotNetString(buffer).replace(/^\\[(?<inner>.*)\\]$/, '$<inner>');\n    const count = buffer.readUint32();\n    const properties = {};\n    for (let i = 0; i < count; i++) {\n        const key = readDotNetString(buffer).replace(/:\\s*$/, '');\n        properties[key] = readDotNetString(buffer);\n    }\n    return { title, properties };\n}\n/**\n * Reads a .NET `BinaryWriter` string: a 7-bit-encoded length prefix followed by\n * that many latin1 bytes.\n * @param buffer - the buffer positioned at the length prefix.\n * @returns The decoded string.\n */\nfunction readDotNetString(buffer) {\n    return buffer.decodeText(read7BitLength(buffer), 'latin1');\n}\n/**\n * Reads a .NET 7-bit-encoded (LEB128-style) length prefix.\n * @param buffer - the buffer positioned at the length prefix.\n * @returns The decoded length.\n */\nfunction read7BitLength(buffer) {\n    let result = 0;\n    let shift = 0;\n    let byte;\n    do {\n        byte = buffer.readUint8();\n        result |= (byte & 0x7f) << shift;\n        shift += 7;\n    } while ((byte & 0x80) !== 0);\n    return result;\n}\n//# sourceMappingURL=pageTexts.js.map","import * as CFB from 'cfb';\nimport { buildVariables } from \"./buildVariables.js\";\nimport { parsePageText } from \"./pageTexts.js\";\n/** Days between the OLE automation epoch (1899-12-30) and the Unix epoch. */\nconst oleDateEpochOffset = 25569;\nconst millisecondsPerDay = 86400000;\n/**\n * Parses the OLE2 compound-document Shimadzu UVProbe `.spc` variant.\n *\n * Wavelength and absorbance are stored as `float64` arrays in the `X Data.1`\n * and `Y Data.1` streams; metadata lives in the `PageTextsN` and\n * `DataSetHistory` streams.\n * @param bytes - the whole file as bytes.\n * @returns The spectrum and its metadata.\n */\nexport function parseUVProbeOle(bytes) {\n    const container = CFB.read(bytes, { type: 'buffer' });\n    const x = readDoubles(findStream(container, 'X Data.1'));\n    const y = readDoubles(findStream(container, 'Y Data.1'));\n    if (x.length !== y.length) {\n        throw new Error('UVProbe OLE: X and Y streams have different lengths');\n    }\n    const history = tryStream(container, 'DataSetHistory');\n    const meta = {\n        kind: 'ole',\n        numberPoints: x.length,\n        title: history && readTitle(history),\n        date: history && readDate(history),\n        properties: readProperties(container),\n    };\n    return { meta, spectra: [{ meta, variables: buildVariables(x, y) }] };\n}\n/**\n * Reads a stream as a `Float64Array` of little-endian doubles.\n * @param content - raw stream bytes.\n * @returns The decoded values.\n */\nfunction readDoubles(content) {\n    const count = Math.floor(content.length / 8);\n    const view = new DataView(content.buffer, content.byteOffset, content.byteLength);\n    const values = new Float64Array(count);\n    for (let i = 0; i < count; i++) {\n        values[i] = view.getFloat64(i * 8, true);\n    }\n    return values;\n}\n/**\n * Collects every `PageTextsN` stream into property sections keyed by title.\n * @param container - the parsed OLE container.\n * @returns Sections of key/value properties.\n */\nfunction readProperties(container) {\n    const properties = {};\n    for (const entry of container.FileIndex) {\n        if (/^PageTexts\\d+$/.test(entry.name) && entry.content) {\n            const { title, properties: sectionProperties } = parsePageText(toUint8Array(entry.content));\n            properties[title] = sectionProperties;\n        }\n    }\n    return properties;\n}\n/**\n * Extracts the sample title from the history stream.\n * @param history - raw `DataSetHistory` bytes.\n * @returns The sample title, or undefined.\n */\nfunction readTitle(history) {\n    let text = '';\n    for (const byte of history)\n        text += String.fromCodePoint(byte);\n    const match = /Created new data set:\\s*(?<name>.*?)\\s*-\\s*RawData/.exec(text);\n    return match?.groups?.name;\n}\n/**\n * Reads the acquisition date stored as an OLE automation date in the history stream.\n * @param history - raw `DataSetHistory` bytes.\n * @returns ISO date string, or undefined.\n */\nfunction readDate(history) {\n    if (history.length < 16)\n        return undefined;\n    const view = new DataView(history.buffer, history.byteOffset, history.byteLength);\n    const serial = view.getFloat64(8, true);\n    if (!Number.isFinite(serial) || serial <= 0)\n        return undefined;\n    const milliseconds = Math.round((serial - oleDateEpochOffset) * millisecondsPerDay);\n    return new Date(milliseconds).toISOString();\n}\n/**\n * Finds a required stream by name.\n * @param container - the parsed OLE container.\n * @param name - stream name.\n * @returns The stream bytes.\n */\nfunction findStream(container, name) {\n    const content = tryStream(container, name);\n    if (!content)\n        throw new Error(`UVProbe OLE: missing stream \"${name}\"`);\n    return content;\n}\n/**\n * Finds an optional stream by name.\n * @param container - the parsed OLE container.\n * @param name - stream name.\n * @returns The stream bytes, or undefined when absent.\n */\nfunction tryStream(container, name) {\n    const entry = CFB.find(container, name);\n    return entry?.content ? toUint8Array(entry.content) : undefined;\n}\n/**\n * Normalizes cfb stream content to a `Uint8Array`.\n * @param content - cfb stream content.\n * @returns The content as a `Uint8Array`.\n */\nfunction toUint8Array(content) {\n    return content instanceof Uint8Array ? content : Uint8Array.from(content);\n}\n//# sourceMappingURL=parseOle.js.map","import { IOBuffer } from 'iobuffer';\nimport { parseGalactic } from \"./galactic/parse.js\";\nimport { isUVProbeFlat, parseUVProbeFlat } from \"./uvProbe/parseFlat.js\";\nimport { parseUVProbeOle } from \"./uvProbe/parseOle.js\";\n/** OLE2 / Microsoft Compound File Binary magic number. */\nconst oleMagic = [0xd0, 0xcf, 0x11, 0xe0, 0xa1, 0xb1, 0x1a, 0xe1];\nconst galacticVersions = new Set([0x4b, 0x4c, 0x4d]);\n/**\n * Parses an SPC file, auto-detecting the format:\n * Thermo Galactic GRAMS SPC, or Shimadzu UVProbe (OLE2 or flat) `.spc`.\n * @param buffer - SPC file buffer.\n * @returns JSON-like object with the spectra and metadata of the file.\n */\nexport function parse(buffer) {\n    const bytes = toBytes(buffer);\n    if (isOle(bytes)) {\n        return parseUVProbeOle(bytes);\n    }\n    if (galacticVersions.has(bytes[1])) {\n        return parseGalactic(new IOBuffer(bytes));\n    }\n    if (isUVProbeFlat(bytes)) {\n        return parseUVProbeFlat(bytes);\n    }\n    throw new Error('Unsupported SPC file: not an OLE2 compound document, a Thermo Galactic SPC, or a Shimadzu UVProbe flat file');\n}\n/**\n * Checks for the OLE2 compound-file magic number.\n * @param bytes - file bytes.\n * @returns True when the file is an OLE2 compound document.\n */\nfunction isOle(bytes) {\n    if (bytes.length < oleMagic.length)\n        return false;\n    for (let i = 0; i < oleMagic.length; i++) {\n        if (bytes[i] !== oleMagic[i])\n            return false;\n    }\n    return true;\n}\n/**\n * Normalizes any accepted input into a `Uint8Array` view over its bytes.\n * @param buffer - the input data.\n * @returns A `Uint8Array` over the same bytes.\n */\nfunction toBytes(buffer) {\n    if (buffer instanceof IOBuffer) {\n        return new Uint8Array(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    }\n    if (ArrayBuffer.isView(buffer)) {\n        return new Uint8Array(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    }\n    return new Uint8Array(buffer);\n}\n//# sourceMappingURL=parse.js.map"],"names":["getDataShape","multiFile","xy","xyxy","guessSpectraType","meta","kind","experimentType","startsWith","id","split","xUnitsType","uvOrIR","includes","yUnitsType","xUnit","dataShape","parameters","analyze","sX","startingX","eX","endingX","unitToNano","lowerBound","Math","min","getRegion","lb","x","from","decode","bytes","encoding","decoder","TextDecoder","encoder","TextEncoder","encode","str","defaultByteLength","hostBigEndian","array","Uint8Array","view","Uint32Array","buffer","typedArrays","int8","globalThis","Int8Array","uint8","int16","Int16Array","uint16","Uint16Array","int32","Int32Array","uint32","uint64","BigUint64Array","int64","BigInt64Array","float32","Float32Array","float64","Float64Array","IOBuffer","byteLength","byteOffset","length","offset","lastWrittenByte","littleEndian","_data","_mark","_marks","constructor","data","options","dataIsGiven","ArrayBuffer","dvOffset","isView","DataView","available","isLittleEndian","setLittleEndian","isBigEndian","setBigEndian","skip","n","back","seek","mark","reset","pushMark","push","popMark","pop","undefined","Error","rewind","ensureAvailable","lengthNeeded","newLength","newArray","set","readBoolean","readUint8","readInt8","getInt8","getUint8","readByte","readBytes","readArray","size","type","BYTES_PER_ELEMENT","slice","reverse","returnArray","readInt16","value","getInt16","readUint16","getUint16","readInt32","getInt32","readUint32","getUint32","readFloat32","getFloat32","readFloat64","getFloat64","readBigInt64","getBigInt64","readBigUint64","getBigUint64","readChar","String","fromCharCode","readChars","result","i","readUtf8","decodeText","writeBoolean","writeUint8","writeInt8","setInt8","_updateLastWrittenByte","setUint8","writeByte","writeBytes","writeInt16","setInt16","writeUint16","setUint16","writeInt32","setInt32","writeUint32","setUint32","writeFloat32","setFloat32","writeFloat64","setFloat64","writeBigInt64","setBigInt64","writeBigUint64","setBigUint64","writeChar","charCodeAt","writeChars","writeUtf8","toArray","getWrittenByteLength","createFromToArray","to","includeFrom","includeTo","distribution","div","delta","index","base","firstExponent","log","xIsMonotonic","at","xySortX","y","floatX","floatY","xyObject","Array","val","sort","a","b","response","parseSubFlagParameters","flag","changed","noPeakTable","modifiedArithmetic","parseSubHeader","exponentY","indexNumber","startingZ","endingZ","noiseValue","numberPoints","numberCoAddedScans","wAxisValue","reserved","replaceAll","trim","setXYAxis","fileHeader","xAxis","exec","yAxis","oX","oY","variables","symbol","label","groups","units","isDependent","newDataBlock","spectra","subFileHeader","j","getNewY","subHeader","y16BitPrecision","yFactor","oldDataBlock","getOldY","fileVersion","xzwTypes","xzwType","yTypes","yType","experimentSettings","code","parseFlagParameters","useExperimentExtension","zValuesRandom","zValuesUneven","customAxisLabels","longToDate","long","date","Date","setUTCFullYear","setUTCMonth","setUTCDate","setUTCHours","setUTCMinutes","setUTCSeconds","setUTCMilliseconds","toISOString","parseOldHeader","prev","zTypeYear","max","resolutionDescription","peakPointNumber","scans","spare","memo","xyzLabels","parseNewHeader","zUnitsType","postingDisposition","sourceInstrumentDescription","toReversed","logOffset","modifiedFlag","processingCode","calibrationLevel","subMethodSampleInjectionNumber","concentrationFactor","methodFile","zSubIncrement","wPlanes","wPlaneIncrement","wAxisUnits","headerOpts","readLogBlock","logHeader","memorySize","textOffset","binarySize","diskArea","logData","logASCII","text","parseGalactic","ioBuffer","logs","buildVariables","startingXOffset","endingXOffset","parseUVProbeFlat","located","findData","dataStart","rawX","readDate","properties","isUVProbeFlat","fileLength","header","byte","subarray","fromCodePoint","time","month","day","year","t","hour","minute","second","Base64_map","Base64_encode","input","o","c1","c2","c3","e1","e2","e3","e4","isNaN","charAt","Base64_decode","replace","indexOf","has_buf","Buffer","process","versions","node","Buffer_from","nbfs","e","buf","enc","bind","new_raw_buf","len","alloc","fill","new_unsafe_buf","allocUnsafe","s2a","s","map","chr0","chr1","__toBuffer","bufs","apply","___toBuffer","__utf16le","ss","__readUInt16LE","join","___utf16le","__hexlify","l","toString","___hexlify","__bconcat","isArray","concat","maxlen","bconcat","isBuffer","__readUInt8","idx","__readInt16LE","u","__readUInt32LE","__readInt32LE","ReadShift","oI","oS","__writeUInt32LE","__writeInt32LE","WriteShift","f","parseInt","end","cc","CheckField","hexstr","fld","m","prep_blob","blob","pos","read_shift","chk","write_shift","new_buf","sz","CRC32","version","signed_crc_table","c","table","T0","slice_by_16_tables","T","v","out","TT","T1","T2","T3","T4","T5","T6","T7","T8","T9","Ta","Tb","Tc","Td","Te","Tf","crc32_bstr","bstr","seed","C","L","crc32_buf","B","crc32_str","d","CFB","_CFB","exports","namecmp","r","R","Z","dirname","p","lastIndexOf","filename","write_dos_date","hms","getHours","getMinutes","getSeconds","ymd","getFullYear","getMonth","getDate","parse_dos_date","setMilliseconds","setFullYear","setMonth","setDate","S","M","setHours","setMinutes","setSeconds","parse_extra_field","flags","tgt","mtime","atime","ctime","mt","fs","get_fs","require$$0","parse","file","parse_zip","parse_mad","mver","ssz","nmfs","difat_sec_cnt","dir_start","minifat_start","difat_start","fat_addrs","mv","check_get_mver","check_shifts","dir_cnt","q","sectors","sectorify","sleuth_fat","sector_list","make_sector_list","name","ENDOFCHAIN","files","Paths","FileIndex","FullPaths","read_directory","build_full_paths","shift","raw","HEADER_SIGNATURE","nsectors","ceil","FI","FP","pl","dad","get_mfat_entry","entry","payload","mini","start","MSSZ","cnt","sector","get_sector_list","chkd","buf_chain","modulus","jj","addr","floor","nodes","sl","k","seen","minifat_store","namelen","color","clsid","state","ct","read_date","storage","content","pow","read_file","readFileSync","read","init_cfb","cfb","opts","root","CLSID","seed_cfb","nm","find","rebuild_cfb","gc","_file","now","fullPaths","Object","create","HEADER_CLSID","elt","_write","_opts","fileType","write_mad","write_zip","mini_size","fat_size","flen","mini_cnt","mfat_cnt","fat_base","fat_cnt","difat_cnt","HEADER_SIG","chainit","w","consts","DIFSECT","FATSECT","_nm","console","error","copy","path","UCFullPaths","toUpperCase","UCPaths","UCPath","match","MAXREGSECT","FREESECT","HEADER_MINOR_VERSION","MAXREGSID","NOSTREAM","EntryTypes","write_file","writeFileSync","a2s","write","_zlib","use_zlib","zlib","InflateRaw","InflRaw","_processChunk","_finishFlushFlag","bytesRead","message","_inflateRawSync","usz","_inflate","_deflateRawSync","deflateRawSync","_deflate","CLEN_ORDER","LEN_LN","DST_LN","bit_swap_8","use_typed_arrays","bitswap8","bit_swap_n","rev","read_bits_2","bl","h","read_bits_3","read_bits_4","read_bits_5","read_bits_7","read_bits_n","write_bits_3","write_bits_1","write_bits_8","write_bits_16","realloc","zero_fill_array","build_tree","clens","cmap","MAX","ccode","bl_count","ctree","cleni","fix_lmap","fix_dmap","dlens","_deflateRaw","_deflateRawIIFE","DST_LN_RE","LEN_LN_RE","write_stored","boff","write_huff_fixed","addrs","hash","mlen","len_eb","dst_eb","off","dyn_lmap","dyn_dmap","dyn_cmap","dyn_len_1","dyn_len_2","dyn","_HLIT","_HDIST","_HCLEN","next_code","hcodes","h1","h2","inflate","outbuf","woff","OL","max_len_1","max_len_2","bits","dst","warn_or_throw","wrn","msg","fcnt","start_cd","csz","efsz","fcsz","EF","parse_local_file","meth","crc32","_csz","_usz","ef","_crc32","cfb_add","unsafe","cdirs","method","compression","fp","fi","crcs","sz_cd","namebuf","ContentTypeMap","get_content_type","ctype","ext","write_base64_76","write_quoted_printable","encoded","si","tmp","parse_quoted_printable","di","line","oi","$$","parse_mime","fname","cte","fdata","toLowerCase","row","test","mboundary","boundary","start_di","ca","cstr","dispcnt","csl","qp","cfb_new","fpath","utils","cfb_gc","cfb_del","splice","cfb_mov","old_name","new_name","writeFile","_inflateRaw","require","DO_NOT_EXPORT_CFB","module","parsePageText","title","readDotNetString","count","key","read7BitLength","oleDateEpochOffset","millisecondsPerDay","parseUVProbeOle","container","readDoubles","findStream","history","tryStream","readTitle","readProperties","values","sectionProperties","toUint8Array","serial","Number","isFinite","milliseconds","round","oleMagic","galacticVersions","Set","toBytes","isOle","has"],"mappings":"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","x_google_ignoreList":[2,3,4,5,6,17]}