{"version":3,"file":"node.cjs","sources":["../unpack.js","../pack.js","../stream.js","../iterators.js","../node-index.js"],"sourcesContent":["var decoder;\ntry {\n\tdecoder = new TextDecoder();\n} catch(error) {}\nvar src;\nvar srcEnd;\nvar position = 0;\nvar alreadySet;\nconst EMPTY_ARRAY = [];\nvar strings = EMPTY_ARRAY;\nvar stringPosition = 0;\nvar currentUnpackr = {};\nvar currentStructures;\nvar srcString;\nvar srcStringStart = 0;\nvar srcStringEnd = 0;\nvar bundledStrings;\nvar referenceMap;\nvar currentExtensions = [];\nvar dataView;\nvar defaultOptions = {\n\tuseRecords: false,\n\tmapsAsObjects: true\n};\nexport class C1Type {}\nexport const C1 = new C1Type();\nC1.name = 'MessagePack 0xC1';\nvar sequentialMode = false;\nvar inlineObjectReadThreshold = 2;\nvar BlockedFunction; // we use search and replace to change the next call to BlockedFunction to avoid CSP issues for\n\nexport class Unpackr {\n\tconstructor(options) {\n\t\tif (options) {\n\t\t\tif (options.useRecords === false && options.mapsAsObjects === undefined)\n\t\t\t\toptions.mapsAsObjects = true;\n\t\t\tif (options.sequential && options.trusted !== false) {\n\t\t\t\toptions.trusted = true;\n\t\t\t\tif (!options.structures && options.useRecords != false) {\n\t\t\t\t\toptions.structures = [];\n\t\t\t\t\tif (!options.maxSharedStructures)\n\t\t\t\t\t\toptions.maxSharedStructures = 0;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (options.structures)\n\t\t\t\toptions.structures.sharedLength = options.structures.length;\n\t\t\telse if (options.getStructures) {\n\t\t\t\t(options.structures = []).uninitialized = true; // this is what we use to denote an uninitialized structures\n\t\t\t\toptions.structures.sharedLength = 0;\n\t\t\t}\n\t\t\tif (options.int64AsNumber) {\n\t\t\t\toptions.int64AsType = 'number';\n\t\t\t}\n\t\t}\n\t\tObject.assign(this, options);\n\t}\n\tunpack(source, options) {\n\t\tif (src) {\n\t\t\t// re-entrant execution, save the state and restore it after we do this unpack\n\t\t\treturn saveState(() => {\n\t\t\t\tclearSource();\n\t\t\t\treturn this ? this.unpack(source, options) : Unpackr.prototype.unpack.call(defaultOptions, source, options);\n\t\t\t});\n\t\t}\n\t\tif (!source.buffer && source.constructor === ArrayBuffer)\n\t\t\tsource = typeof Buffer !== 'undefined' ? Buffer.from(source) : new Uint8Array(source);\n\t\tif (typeof options === 'object') {\n\t\t\tsrcEnd = options.end || source.length;\n\t\t\tposition = options.start || 0;\n\t\t} else {\n\t\t\tposition = 0;\n\t\t\tsrcEnd = options > -1 ? options : source.length;\n\t\t}\n\t\tstringPosition = 0;\n\t\tsrcStringEnd = 0;\n\t\tsrcString = null;\n\t\tstrings = EMPTY_ARRAY;\n\t\tbundledStrings = null;\n\t\tsrc = source;\n\t\t// this provides cached access to the data view for a buffer if it is getting reused, which is a recommend\n\t\t// technique for getting data from a database where it can be copied into an existing buffer instead of creating\n\t\t// new ones\n\t\ttry {\n\t\t\tdataView = source.dataView || (source.dataView = new DataView(source.buffer, source.byteOffset, source.byteLength));\n\t\t} catch(error) {\n\t\t\t// if it doesn't have a buffer, maybe it is the wrong type of object\n\t\t\tsrc = null;\n\t\t\tif (source instanceof Uint8Array)\n\t\t\t\tthrow error;\n\t\t\tthrow new Error('Source must be a Uint8Array or Buffer but was a ' + ((source && typeof source == 'object') ? source.constructor.name : typeof source));\n\t\t}\n\t\tif (this instanceof Unpackr) {\n\t\t\tcurrentUnpackr = this;\n\t\t\tif (this.structures) {\n\t\t\t\tcurrentStructures = this.structures;\n\t\t\t\treturn checkedRead(options);\n\t\t\t} else if (!currentStructures || currentStructures.length > 0) {\n\t\t\t\tcurrentStructures = [];\n\t\t\t}\n\t\t} else {\n\t\t\tcurrentUnpackr = defaultOptions;\n\t\t\tif (!currentStructures || currentStructures.length > 0)\n\t\t\t\tcurrentStructures = [];\n\t\t}\n\t\treturn checkedRead(options);\n\t}\n\tunpackMultiple(source, forEach) {\n\t\tlet values, lastPosition = 0;\n\t\ttry {\n\t\t\tsequentialMode = true;\n\t\t\tlet size = source.length;\n\t\t\tlet value = this ? this.unpack(source, size) : defaultUnpackr.unpack(source, size);\n\t\t\tif (forEach) {\n\t\t\t\tif (forEach(value, lastPosition, position) === false) return;\n\t\t\t\twhile(position < size) {\n\t\t\t\t\tlastPosition = position;\n\t\t\t\t\tif (forEach(checkedRead(), lastPosition, position) === false) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\tvalues = [ value ];\n\t\t\t\twhile(position < size) {\n\t\t\t\t\tlastPosition = position;\n\t\t\t\t\tvalues.push(checkedRead());\n\t\t\t\t}\n\t\t\t\treturn values;\n\t\t\t}\n\t\t} catch(error) {\n\t\t\terror.lastPosition = lastPosition;\n\t\t\terror.values = values;\n\t\t\tthrow error;\n\t\t} finally {\n\t\t\tsequentialMode = false;\n\t\t\tclearSource();\n\t\t}\n\t}\n\t_mergeStructures(loadedStructures, existingStructures) {\n\t\tif (this._onLoadedStructures)\n\t\t\tloadedStructures = this._onLoadedStructures(loadedStructures);\n\t\tloadedStructures = loadedStructures || [];\n\t\tif (Object.isFrozen(loadedStructures))\n\t\t\tloadedStructures = loadedStructures.map(structure => structure.slice(0));\n\t\tfor (let i = 0, l = loadedStructures.length; i < l; i++) {\n\t\t\tlet structure = loadedStructures[i];\n\t\t\tif (structure) {\n\t\t\t\tstructure.isShared = true;\n\t\t\t\tif (i >= 32)\n\t\t\t\t\tstructure.highByte = (i - 32) >> 5;\n\t\t\t}\n\t\t}\n\t\tloadedStructures.sharedLength = loadedStructures.length;\n\t\tfor (let id in existingStructures || []) {\n\t\t\tif (id >= 0) {\n\t\t\t\tlet structure = loadedStructures[id];\n\t\t\t\tlet existing = existingStructures[id];\n\t\t\t\tif (existing) {\n\t\t\t\t\tif (structure)\n\t\t\t\t\t\t(loadedStructures.restoreStructures || (loadedStructures.restoreStructures = []))[id] = structure;\n\t\t\t\t\tloadedStructures[id] = existing;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn this.structures = loadedStructures;\n\t}\n\tdecode(source, options) {\n\t\treturn this.unpack(source, options);\n\t}\n}\nexport function getPosition() {\n\treturn position;\n}\nexport function checkedRead(options) {\n\ttry {\n\t\tif (!currentUnpackr.trusted && !sequentialMode) {\n\t\t\tlet sharedLength = currentStructures.sharedLength || 0;\n\t\t\tif (sharedLength < currentStructures.length)\n\t\t\t\tcurrentStructures.length = sharedLength;\n\t\t}\n\t\tlet result;\n\t\tif (currentUnpackr._readStruct && src[position] < 0x40 && src[position] >= 0x20) {\n\t\t\tresult = currentUnpackr._readStruct(src, position, srcEnd);\n\t\t\tsrc = null; // dispose of this so that recursive unpack calls don't save state\n\t\t\tif (!(options && options.lazy) && result)\n\t\t\t\tresult = result.toJSON();\n\t\t\tposition = srcEnd;\n\t\t} else\n\t\t\tresult = read();\n\t\tif (bundledStrings) { // bundled strings to skip past\n\t\t\tposition = bundledStrings.postBundlePosition;\n\t\t\tbundledStrings = null;\n\t\t}\n\t\tif (sequentialMode)\n\t\t\t// we only need to restore the structures if there was an error, but if we completed a read,\n\t\t\t// we can clear this out and keep the structures we read\n\t\t\tcurrentStructures.restoreStructures = null;\n\n\t\tif (position == srcEnd) {\n\t\t\t// finished reading this source, cleanup references\n\t\t\tif (currentStructures && currentStructures.restoreStructures)\n\t\t\t\trestoreStructures();\n\t\t\tcurrentStructures = null;\n\t\t\tsrc = null;\n\t\t\tif (referenceMap)\n\t\t\t\treferenceMap = null;\n\t\t} else if (position > srcEnd) {\n\t\t\t// over read\n\t\t\tthrow new Error('Unexpected end of MessagePack data');\n\t\t} else if (!sequentialMode) {\n\t\t\tlet jsonView;\n\t\t\ttry {\n\t\t\t\tjsonView = JSON.stringify(result, (_, value) => typeof value === \"bigint\" ? `${value}n` : value).slice(0, 100);\n\t\t\t} catch(error) {\n\t\t\t\tjsonView = '(JSON view not available ' + error + ')';\n\t\t\t}\n\t\t\tthrow new Error('Data read, but end of buffer not reached ' + jsonView);\n\t\t}\n\t\t// else more to read, but we are reading sequentially, so don't clear source yet\n\t\treturn result;\n\t} catch(error) {\n\t\tif (currentStructures && currentStructures.restoreStructures)\n\t\t\trestoreStructures();\n\t\tclearSource();\n\t\tif (error instanceof RangeError || error.message.startsWith('Unexpected end of buffer') || position > srcEnd) {\n\t\t\terror.incomplete = true;\n\t\t}\n\t\tthrow error;\n\t}\n}\n\nfunction restoreStructures() {\n\tfor (let id in currentStructures.restoreStructures) {\n\t\tcurrentStructures[id] = currentStructures.restoreStructures[id];\n\t}\n\tcurrentStructures.restoreStructures = null;\n}\n\nexport function read() {\n\tlet token = src[position++];\n\tif (token < 0xa0) {\n\t\tif (token < 0x80) {\n\t\t\tif (token < 0x40)\n\t\t\t\treturn token;\n\t\t\telse {\n\t\t\t\tlet structure = currentStructures[token & 0x3f] ||\n\t\t\t\t\tcurrentUnpackr.getStructures && loadStructures()[token & 0x3f];\n\t\t\t\tif (structure) {\n\t\t\t\t\tif (!structure.read) {\n\t\t\t\t\t\tstructure.read = createStructureReader(structure, token & 0x3f);\n\t\t\t\t\t}\n\t\t\t\t\treturn structure.read();\n\t\t\t\t} else\n\t\t\t\t\treturn token;\n\t\t\t}\n\t\t} else if (token < 0x90) {\n\t\t\t// map\n\t\t\ttoken -= 0x80;\n\t\t\tif (currentUnpackr.mapsAsObjects) {\n\t\t\t\tlet object = {};\n\t\t\t\tfor (let i = 0; i < token; i++) {\n\t\t\t\t\tlet key = readKey();\n\t\t\t\t\tif (key === '__proto__')\n\t\t\t\t\t\tkey = '__proto_';\n\t\t\t\t\tobject[key] = read();\n\t\t\t\t}\n\t\t\t\treturn object;\n\t\t\t} else {\n\t\t\t\tlet map = new Map();\n\t\t\t\tfor (let i = 0; i < token; i++) {\n\t\t\t\t\tmap.set(read(), read());\n\t\t\t\t}\n\t\t\t\treturn map;\n\t\t\t}\n\t\t} else {\n\t\t\ttoken -= 0x90;\n\t\t\tlet array = new Array(token);\n\t\t\tfor (let i = 0; i < token; i++) {\n\t\t\t\tarray[i] = read();\n\t\t\t}\n\t\t\tif (currentUnpackr.freezeData)\n\t\t\t\treturn Object.freeze(array);\n\t\t\treturn array;\n\t\t}\n\t} else if (token < 0xc0) {\n\t\t// fixstr\n\t\tlet length = token - 0xa0;\n\t\tif (srcStringEnd >= position) {\n\t\t\treturn srcString.slice(position - srcStringStart, (position += length) - srcStringStart);\n\t\t}\n\t\tif (srcStringEnd == 0 && srcEnd < 140) {\n\t\t\t// for small blocks, avoiding the overhead of the extract call is helpful\n\t\t\tlet string = length < 16 ? shortStringInJS(length) : longStringInJS(length);\n\t\t\tif (string != null)\n\t\t\t\treturn string;\n\t\t}\n\t\treturn readFixedString(length);\n\t} else {\n\t\tlet value;\n\t\tswitch (token) {\n\t\t\tcase 0xc0: return null;\n\t\t\tcase 0xc1:\n\t\t\t\tif (bundledStrings) {\n\t\t\t\t\tvalue = read(); // followed by the length of the string in characters (not bytes!)\n\t\t\t\t\tif (value > 0)\n\t\t\t\t\t\treturn bundledStrings[1].slice(bundledStrings.position1, bundledStrings.position1 += value);\n\t\t\t\t\telse\n\t\t\t\t\t\treturn bundledStrings[0].slice(bundledStrings.position0, bundledStrings.position0 -= value);\n\t\t\t\t}\n\t\t\t\treturn C1; // \"never-used\", return special object to denote that\n\t\t\tcase 0xc2: return false;\n\t\t\tcase 0xc3: return true;\n\t\t\tcase 0xc4:\n\t\t\t\t// bin 8\n\t\t\t\tvalue = src[position++];\n\t\t\t\tif (value === undefined)\n\t\t\t\t\tthrow new Error('Unexpected end of buffer');\n\t\t\t\treturn readBin(value);\n\t\t\tcase 0xc5:\n\t\t\t\t// bin 16\n\t\t\t\tvalue = dataView.getUint16(position);\n\t\t\t\tposition += 2;\n\t\t\t\treturn readBin(value);\n\t\t\tcase 0xc6:\n\t\t\t\t// bin 32\n\t\t\t\tvalue = dataView.getUint32(position);\n\t\t\t\tposition += 4;\n\t\t\t\treturn readBin(value);\n\t\t\tcase 0xc7:\n\t\t\t\t// ext 8\n\t\t\t\treturn readExt(src[position++]);\n\t\t\tcase 0xc8:\n\t\t\t\t// ext 16\n\t\t\t\tvalue = dataView.getUint16(position);\n\t\t\t\tposition += 2;\n\t\t\t\treturn readExt(value);\n\t\t\tcase 0xc9:\n\t\t\t\t// ext 32\n\t\t\t\tvalue = dataView.getUint32(position);\n\t\t\t\tposition += 4;\n\t\t\t\treturn readExt(value);\n\t\t\tcase 0xca:\n\t\t\t\tvalue = dataView.getFloat32(position);\n\t\t\t\tif (currentUnpackr.useFloat32 > 2) {\n\t\t\t\t\t// this does rounding of numbers that were encoded in 32-bit float to nearest significant decimal digit that could be preserved\n\t\t\t\t\tlet multiplier = mult10[((src[position] & 0x7f) << 1) | (src[position + 1] >> 7)];\n\t\t\t\t\tposition += 4;\n\t\t\t\t\treturn ((multiplier * value + (value > 0 ? 0.5 : -0.5)) >> 0) / multiplier;\n\t\t\t\t}\n\t\t\t\tposition += 4;\n\t\t\t\treturn value;\n\t\t\tcase 0xcb:\n\t\t\t\tvalue = dataView.getFloat64(position);\n\t\t\t\tposition += 8;\n\t\t\t\treturn value;\n\t\t\t// uint handlers\n\t\t\tcase 0xcc:\n\t\t\t\treturn src[position++];\n\t\t\tcase 0xcd:\n\t\t\t\tvalue = dataView.getUint16(position);\n\t\t\t\tposition += 2;\n\t\t\t\treturn value;\n\t\t\tcase 0xce:\n\t\t\t\tvalue = dataView.getUint32(position);\n\t\t\t\tposition += 4;\n\t\t\t\treturn value;\n\t\t\tcase 0xcf:\n\t\t\t\tif (currentUnpackr.int64AsType === 'number') {\n\t\t\t\t\tvalue = dataView.getUint32(position) * 0x100000000;\n\t\t\t\t\tvalue += dataView.getUint32(position + 4);\n\t\t\t\t} else if (currentUnpackr.int64AsType === 'string') {\n\t\t\t\t\tvalue = dataView.getBigUint64(position).toString();\n\t\t\t\t} else if (currentUnpackr.int64AsType === 'auto') {\n\t\t\t\t\tvalue = dataView.getBigUint64(position);\n\t\t\t\t\tif (value<=BigInt(2)<<BigInt(52)) value=Number(value);\n\t\t\t\t} else\n\t\t\t\t\tvalue = dataView.getBigUint64(position);\n\t\t\t\tposition += 8;\n\t\t\t\treturn value;\n\n\t\t\t// int handlers\n\t\t\tcase 0xd0:\n\t\t\t\treturn dataView.getInt8(position++);\n\t\t\tcase 0xd1:\n\t\t\t\tvalue = dataView.getInt16(position);\n\t\t\t\tposition += 2;\n\t\t\t\treturn value;\n\t\t\tcase 0xd2:\n\t\t\t\tvalue = dataView.getInt32(position);\n\t\t\t\tposition += 4;\n\t\t\t\treturn value;\n\t\t\tcase 0xd3:\n\t\t\t\tif (currentUnpackr.int64AsType === 'number') {\n\t\t\t\t\tvalue = dataView.getInt32(position) * 0x100000000;\n\t\t\t\t\tvalue += dataView.getUint32(position + 4);\n\t\t\t\t} else if (currentUnpackr.int64AsType === 'string') {\n\t\t\t\t\tvalue = dataView.getBigInt64(position).toString();\n\t\t\t\t} else if (currentUnpackr.int64AsType === 'auto') {\n\t\t\t\t\tvalue = dataView.getBigInt64(position);\n\t\t\t\t\tif (value>=BigInt(-2)<<BigInt(52)&&value<=BigInt(2)<<BigInt(52)) value=Number(value);\n\t\t\t\t} else\n\t\t\t\t\tvalue = dataView.getBigInt64(position);\n\t\t\t\tposition += 8;\n\t\t\t\treturn value;\n\n\t\t\tcase 0xd4:\n\t\t\t\t// fixext 1\n\t\t\t\tvalue = src[position++];\n\t\t\t\tif (value == 0x72) {\n\t\t\t\t\treturn recordDefinition(src[position++] & 0x3f);\n\t\t\t\t} else {\n\t\t\t\t\tlet extension = currentExtensions[value];\n\t\t\t\t\tif (extension) {\n\t\t\t\t\t\tif (extension.read) {\n\t\t\t\t\t\t\tposition++; // skip filler byte\n\t\t\t\t\t\t\treturn extension.read(read());\n\t\t\t\t\t\t} else if (extension.noBuffer) {\n\t\t\t\t\t\t\tposition++; // skip filler byte\n\t\t\t\t\t\t\treturn extension();\n\t\t\t\t\t\t} else\n\t\t\t\t\t\t\treturn extension(src.subarray(position, ++position));\n\t\t\t\t\t} else\n\t\t\t\t\t\tthrow new Error('Unknown extension ' + value);\n\t\t\t\t}\n\t\t\tcase 0xd5:\n\t\t\t\t// fixext 2\n\t\t\t\tvalue = src[position];\n\t\t\t\tif (value == 0x72) {\n\t\t\t\t\tposition++;\n\t\t\t\t\treturn recordDefinition(src[position++] & 0x3f, src[position++]);\n\t\t\t\t} else\n\t\t\t\t\treturn readExt(2);\n\t\t\tcase 0xd6:\n\t\t\t\t// fixext 4\n\t\t\t\treturn readExt(4);\n\t\t\tcase 0xd7:\n\t\t\t\t// fixext 8\n\t\t\t\treturn readExt(8);\n\t\t\tcase 0xd8:\n\t\t\t\t// fixext 16\n\t\t\t\treturn readExt(16);\n\t\t\tcase 0xd9:\n\t\t\t// str 8\n\t\t\t\tvalue = src[position++];\n\t\t\t\tif (srcStringEnd >= position) {\n\t\t\t\t\treturn srcString.slice(position - srcStringStart, (position += value) - srcStringStart);\n\t\t\t\t}\n\t\t\t\treturn readString8(value);\n\t\t\tcase 0xda:\n\t\t\t// str 16\n\t\t\t\tvalue = dataView.getUint16(position);\n\t\t\t\tposition += 2;\n\t\t\t\tif (srcStringEnd >= position) {\n\t\t\t\t\treturn srcString.slice(position - srcStringStart, (position += value) - srcStringStart);\n\t\t\t\t}\n\t\t\t\treturn readString16(value);\n\t\t\tcase 0xdb:\n\t\t\t// str 32\n\t\t\t\tvalue = dataView.getUint32(position);\n\t\t\t\tposition += 4;\n\t\t\t\tif (srcStringEnd >= position) {\n\t\t\t\t\treturn srcString.slice(position - srcStringStart, (position += value) - srcStringStart);\n\t\t\t\t}\n\t\t\t\treturn readString32(value);\n\t\t\tcase 0xdc:\n\t\t\t// array 16\n\t\t\t\tvalue = dataView.getUint16(position);\n\t\t\t\tposition += 2;\n\t\t\t\treturn readArray(value);\n\t\t\tcase 0xdd:\n\t\t\t// array 32\n\t\t\t\tvalue = dataView.getUint32(position);\n\t\t\t\tposition += 4;\n\t\t\t\treturn readArray(value);\n\t\t\tcase 0xde:\n\t\t\t// map 16\n\t\t\t\tvalue = dataView.getUint16(position);\n\t\t\t\tposition += 2;\n\t\t\t\treturn readMap(value);\n\t\t\tcase 0xdf:\n\t\t\t// map 32\n\t\t\t\tvalue = dataView.getUint32(position);\n\t\t\t\tposition += 4;\n\t\t\t\treturn readMap(value);\n\t\t\tdefault: // negative int\n\t\t\t\tif (token >= 0xe0)\n\t\t\t\t\treturn token - 0x100;\n\t\t\t\tif (token === undefined) {\n\t\t\t\t\tlet error = new Error('Unexpected end of MessagePack data');\n\t\t\t\t\terror.incomplete = true;\n\t\t\t\t\tthrow error;\n\t\t\t\t}\n\t\t\t\tthrow new Error('Unknown MessagePack token ' + token);\n\n\t\t}\n\t}\n}\nconst validName = /^[a-zA-Z_$][a-zA-Z\\d_$]*$/;\nfunction createStructureReader(structure, firstId) {\n\tfunction readObject() {\n\t\t// This initial function is quick to instantiate, but runs slower. After several iterations pay the cost to build the faster function\n\t\tif (readObject.count++ > inlineObjectReadThreshold) {\n\t\t\tlet optimizedReadObject;\n\t\t\ttry {\n\t\t\t\toptimizedReadObject = structure.read = (new Function('r', 'return function(){return ' + (currentUnpackr.freezeData ? 'Object.freeze' : '') +\n\t\t\t\t\t'({' + structure.map(key => key === '__proto__' ? '__proto_:r()' : validName.test(key) ? key + ':r()' : ('[' + JSON.stringify(key) + ']:r()')).join(',') + '})}'))(read);\n\t\t\t} catch(error) {\n\t\t\t\t// in CF workers, the new Function call could begin to fail at any point in time\n\t\t\t\tinlineObjectReadThreshold = Infinity; // disable going forward\n\t\t\t\treturn readObject(); // recursively try again\n\t\t\t}\n\t\t\tif (structure.highByte === 0)\n\t\t\t\tstructure.read = createSecondByteReader(firstId, structure.read);\n\t\t\treturn optimizedReadObject(); // second byte is already read, if there is one so immediately read object\n\t\t}\n\t\tlet object = {};\n\t\tfor (let i = 0, l = structure.length; i < l; i++) {\n\t\t\tlet key = structure[i];\n\t\t\tif (key === '__proto__')\n\t\t\t\tkey = '__proto_';\n\t\t\tobject[key] = read();\n\t\t}\n\t\tif (currentUnpackr.freezeData)\n\t\t\treturn Object.freeze(object);\n\t\treturn object;\n\t}\n\treadObject.count = 0;\n\tif (structure.highByte === 0) {\n\t\treturn createSecondByteReader(firstId, readObject);\n\t}\n\treturn readObject;\n}\n\nconst createSecondByteReader = (firstId, read0) => {\n\treturn function() {\n\t\tlet highByte = src[position++];\n\t\tif (highByte === 0)\n\t\t\treturn read0();\n\t\tlet id = firstId < 32 ? -(firstId + (highByte << 5)) : firstId + (highByte << 5);\n\t\tlet structure = currentStructures[id] || loadStructures()[id];\n\t\tif (!structure) {\n\t\t\tthrow new Error('Record id is not defined for ' + id);\n\t\t}\n\t\tif (!structure.read)\n\t\t\tstructure.read = createStructureReader(structure, firstId);\n\t\treturn structure.read();\n\t};\n};\n\nexport function loadStructures() {\n\tlet loadedStructures = saveState(() => {\n\t\t// save the state in case getStructures modifies our buffer\n\t\tsrc = null;\n\t\treturn currentUnpackr.getStructures();\n\t});\n\treturn currentStructures = currentUnpackr._mergeStructures(loadedStructures, currentStructures);\n}\n\nvar readFixedString = readStringJS;\nvar readString8 = readStringJS;\nvar readString16 = readStringJS;\nvar readString32 = readStringJS;\nexport let isNativeAccelerationEnabled = false;\n\nexport function setExtractor(extractStrings) {\n\tisNativeAccelerationEnabled = true;\n\treadFixedString = readString(1);\n\treadString8 = readString(2);\n\treadString16 = readString(3);\n\treadString32 = readString(5);\n\tfunction readString(headerLength) {\n\t\treturn function readString(length) {\n\t\t\tlet string = strings[stringPosition++];\n\t\t\tif (string == null) {\n\t\t\t\tif (bundledStrings)\n\t\t\t\t\treturn readStringJS(length);\n\t\t\t\tlet byteOffset = src.byteOffset;\n\t\t\t\tlet extraction = extractStrings(position - headerLength + byteOffset, srcEnd + byteOffset, src.buffer);\n\t\t\t\tif (typeof extraction == 'string') {\n\t\t\t\t\tstring = extraction;\n\t\t\t\t\tstrings = EMPTY_ARRAY;\n\t\t\t\t} else {\n\t\t\t\t\tstrings = extraction;\n\t\t\t\t\tstringPosition = 1;\n\t\t\t\t\tsrcStringEnd = 1; // even if a utf-8 string was decoded, must indicate we are in the midst of extracted strings and can't skip strings\n\t\t\t\t\tstring = strings[0];\n\t\t\t\t\tif (string === undefined)\n\t\t\t\t\t\tthrow new Error('Unexpected end of buffer');\n\t\t\t\t}\n\t\t\t}\n\t\t\tlet srcStringLength = string.length;\n\t\t\tif (srcStringLength <= length) {\n\t\t\t\tposition += length;\n\t\t\t\treturn string;\n\t\t\t}\n\t\t\tsrcString = string;\n\t\t\tsrcStringStart = position;\n\t\t\tsrcStringEnd = position + srcStringLength;\n\t\t\tposition += length;\n\t\t\treturn string.slice(0, length); // we know we just want the beginning\n\t\t};\n\t}\n}\nfunction readStringJS(length) {\n\tlet result;\n\tif (length < 16) {\n\t\tif (result = shortStringInJS(length))\n\t\t\treturn result;\n\t}\n\tif (length > 64 && decoder)\n\t\treturn decoder.decode(src.subarray(position, position += length));\n\tconst end = position + length;\n\tconst units = [];\n\tresult = '';\n\twhile (position < end) {\n\t\tconst byte1 = src[position++];\n\t\tif ((byte1 & 0x80) === 0) {\n\t\t\t// 1 byte\n\t\t\tunits.push(byte1);\n\t\t} else if ((byte1 & 0xe0) === 0xc0) {\n\t\t\t// 2 bytes\n\t\t\tconst byte2 = src[position++] & 0x3f;\n\t\t\tconst codePoint = ((byte1 & 0x1f) << 6) | byte2;\n\t\t\t// Reject overlong encoding: 2-byte sequences must encode values >= 0x80\n\t\t\tif (codePoint < 0x80) {\n\t\t\t\tunits.push(0xFFFD); // replacement character\n\t\t\t} else {\n\t\t\t\tunits.push(codePoint);\n\t\t\t}\n\t\t} else if ((byte1 & 0xf0) === 0xe0) {\n\t\t\t// 3 bytes\n\t\t\tconst byte2 = src[position++] & 0x3f;\n\t\t\tconst byte3 = src[position++] & 0x3f;\n\t\t\tconst codePoint = ((byte1 & 0x1f) << 12) | (byte2 << 6) | byte3;\n\t\t\t// Reject overlong encoding: 3-byte sequences must encode values >= 0x800\n\t\t\t// Also reject surrogates (0xD800-0xDFFF)\n\t\t\tif (codePoint < 0x800 || (codePoint >= 0xD800 && codePoint <= 0xDFFF)) {\n\t\t\t\tunits.push(0xFFFD); // replacement character\n\t\t\t} else {\n\t\t\t\tunits.push(codePoint);\n\t\t\t}\n\t\t} else if ((byte1 & 0xf8) === 0xf0) {\n\t\t\t// 4 bytes\n\t\t\tconst byte2 = src[position++] & 0x3f;\n\t\t\tconst byte3 = src[position++] & 0x3f;\n\t\t\tconst byte4 = src[position++] & 0x3f;\n\t\t\tlet unit = ((byte1 & 0x07) << 0x12) | (byte2 << 0x0c) | (byte3 << 0x06) | byte4;\n\t\t\t// Reject overlong encoding: 4-byte sequences must encode values >= 0x10000\n\t\t\t// Also reject values > 0x10FFFF (maximum valid Unicode)\n\t\t\tif (unit < 0x10000 || unit > 0x10FFFF) {\n\t\t\t\tunits.push(0xFFFD); // replacement character\n\t\t\t} else if (unit > 0xffff) {\n\t\t\t\tunit -= 0x10000;\n\t\t\t\tunits.push(((unit >>> 10) & 0x3ff) | 0xd800);\n\t\t\t\tunit = 0xdc00 | (unit & 0x3ff);\n\t\t\t\tunits.push(unit);\n\t\t\t} else {\n\t\t\t\tunits.push(unit);\n\t\t\t}\n\t\t} else {\n\t\t\tunits.push(0xFFFD); // replacement character for invalid lead byte\n\t\t}\n\n\t\tif (units.length >= 0x1000) {\n\t\t\tresult += fromCharCode.apply(String, units);\n\t\t\tunits.length = 0;\n\t\t}\n\t}\n\n\tif (units.length > 0) {\n\t\tresult += fromCharCode.apply(String, units);\n\t}\n\n\treturn result;\n}\nexport function readString(source, start, length) {\n\tlet existingSrc = src;\n\tsrc = source;\n\tposition = start;\n\ttry {\n\t\treturn readStringJS(length);\n\t} finally {\n\t\tsrc = existingSrc;\n\t}\n}\n\nfunction readArray(length) {\n\tlet array = new Array(length);\n\tfor (let i = 0; i < length; i++) {\n\t\tarray[i] = read();\n\t}\n\tif (currentUnpackr.freezeData)\n\t\treturn Object.freeze(array);\n\treturn array;\n}\n\nfunction readMap(length) {\n\tif (currentUnpackr.mapsAsObjects) {\n\t\tlet object = {};\n\t\tfor (let i = 0; i < length; i++) {\n\t\t\tlet key = readKey();\n\t\t\tif (key === '__proto__')\n\t\t\t\tkey = '__proto_';\n\t\t\tobject[key] = read();\n\t\t}\n\t\treturn object;\n\t} else {\n\t\tlet map = new Map();\n\t\tfor (let i = 0; i < length; i++) {\n\t\t\tmap.set(read(), read());\n\t\t}\n\t\treturn map;\n\t}\n}\n\nvar fromCharCode = String.fromCharCode;\nfunction longStringInJS(length) {\n\tlet start = position;\n\tlet bytes = new Array(length);\n\tfor (let i = 0; i < length; i++) {\n\t\tconst byte = src[position++];\n\t\tif ((byte & 0x80) > 0) {\n\t\t\t\tposition = start;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tbytes[i] = byte;\n\t\t}\n\t\treturn fromCharCode.apply(String, bytes);\n}\nfunction shortStringInJS(length) {\n\tif (length < 4) {\n\t\tif (length < 2) {\n\t\t\tif (length === 0)\n\t\t\t\treturn '';\n\t\t\telse {\n\t\t\t\tlet a = src[position++];\n\t\t\t\tif ((a & 0x80) > 1) {\n\t\t\t\t\tposition -= 1;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\treturn fromCharCode(a);\n\t\t\t}\n\t\t} else {\n\t\t\tlet a = src[position++];\n\t\t\tlet b = src[position++];\n\t\t\tif ((a & 0x80) > 0 || (b & 0x80) > 0) {\n\t\t\t\tposition -= 2;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (length < 3)\n\t\t\t\treturn fromCharCode(a, b);\n\t\t\tlet c = src[position++];\n\t\t\tif ((c & 0x80) > 0) {\n\t\t\t\tposition -= 3;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\treturn fromCharCode(a, b, c);\n\t\t}\n\t} else {\n\t\tlet a = src[position++];\n\t\tlet b = src[position++];\n\t\tlet c = src[position++];\n\t\tlet d = src[position++];\n\t\tif ((a & 0x80) > 0 || (b & 0x80) > 0 || (c & 0x80) > 0 || (d & 0x80) > 0) {\n\t\t\tposition -= 4;\n\t\t\treturn;\n\t\t}\n\t\tif (length < 6) {\n\t\t\tif (length === 4)\n\t\t\t\treturn fromCharCode(a, b, c, d);\n\t\t\telse {\n\t\t\t\tlet e = src[position++];\n\t\t\t\tif ((e & 0x80) > 0) {\n\t\t\t\t\tposition -= 5;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\treturn fromCharCode(a, b, c, d, e);\n\t\t\t}\n\t\t} else if (length < 8) {\n\t\t\tlet e = src[position++];\n\t\t\tlet f = src[position++];\n\t\t\tif ((e & 0x80) > 0 || (f & 0x80) > 0) {\n\t\t\t\tposition -= 6;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (length < 7)\n\t\t\t\treturn fromCharCode(a, b, c, d, e, f);\n\t\t\tlet g = src[position++];\n\t\t\tif ((g & 0x80) > 0) {\n\t\t\t\tposition -= 7;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\treturn fromCharCode(a, b, c, d, e, f, g);\n\t\t} else {\n\t\t\tlet e = src[position++];\n\t\t\tlet f = src[position++];\n\t\t\tlet g = src[position++];\n\t\t\tlet h = src[position++];\n\t\t\tif ((e & 0x80) > 0 || (f & 0x80) > 0 || (g & 0x80) > 0 || (h & 0x80) > 0) {\n\t\t\t\tposition -= 8;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (length < 10) {\n\t\t\t\tif (length === 8)\n\t\t\t\t\treturn fromCharCode(a, b, c, d, e, f, g, h);\n\t\t\t\telse {\n\t\t\t\t\tlet i = src[position++];\n\t\t\t\t\tif ((i & 0x80) > 0) {\n\t\t\t\t\t\tposition -= 9;\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\treturn fromCharCode(a, b, c, d, e, f, g, h, i);\n\t\t\t\t}\n\t\t\t} else if (length < 12) {\n\t\t\t\tlet i = src[position++];\n\t\t\t\tlet j = src[position++];\n\t\t\t\tif ((i & 0x80) > 0 || (j & 0x80) > 0) {\n\t\t\t\t\tposition -= 10;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (length < 11)\n\t\t\t\t\treturn fromCharCode(a, b, c, d, e, f, g, h, i, j);\n\t\t\t\tlet k = src[position++];\n\t\t\t\tif ((k & 0x80) > 0) {\n\t\t\t\t\tposition -= 11;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\treturn fromCharCode(a, b, c, d, e, f, g, h, i, j, k);\n\t\t\t} else {\n\t\t\t\tlet i = src[position++];\n\t\t\t\tlet j = src[position++];\n\t\t\t\tlet k = src[position++];\n\t\t\t\tlet l = src[position++];\n\t\t\t\tif ((i & 0x80) > 0 || (j & 0x80) > 0 || (k & 0x80) > 0 || (l & 0x80) > 0) {\n\t\t\t\t\tposition -= 12;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (length < 14) {\n\t\t\t\t\tif (length === 12)\n\t\t\t\t\t\treturn fromCharCode(a, b, c, d, e, f, g, h, i, j, k, l);\n\t\t\t\t\telse {\n\t\t\t\t\t\tlet m = src[position++];\n\t\t\t\t\t\tif ((m & 0x80) > 0) {\n\t\t\t\t\t\t\tposition -= 13;\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn fromCharCode(a, b, c, d, e, f, g, h, i, j, k, l, m);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tlet m = src[position++];\n\t\t\t\t\tlet n = src[position++];\n\t\t\t\t\tif ((m & 0x80) > 0 || (n & 0x80) > 0) {\n\t\t\t\t\t\tposition -= 14;\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tif (length < 15)\n\t\t\t\t\t\treturn fromCharCode(a, b, c, d, e, f, g, h, i, j, k, l, m, n);\n\t\t\t\t\tlet o = src[position++];\n\t\t\t\t\tif ((o & 0x80) > 0) {\n\t\t\t\t\t\tposition -= 15;\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\treturn fromCharCode(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction readOnlyJSString() {\n\tlet token = src[position++];\n\tlet length;\n\tif (token < 0xc0) {\n\t\t// fixstr\n\t\tlength = token - 0xa0;\n\t} else {\n\t\tswitch(token) {\n\t\t\tcase 0xd9:\n\t\t\t// str 8\n\t\t\t\tlength = src[position++];\n\t\t\t\tbreak;\n\t\t\tcase 0xda:\n\t\t\t// str 16\n\t\t\t\tlength = dataView.getUint16(position);\n\t\t\t\tposition += 2;\n\t\t\t\tbreak;\n\t\t\tcase 0xdb:\n\t\t\t// str 32\n\t\t\t\tlength = dataView.getUint32(position);\n\t\t\t\tposition += 4;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tthrow new Error('Expected string');\n\t\t}\n\t}\n\treturn readStringJS(length);\n}\n\n\nfunction readBin(length) {\n\treturn currentUnpackr.copyBuffers ?\n\t\t// specifically use the copying slice (not the node one)\n\t\tUint8Array.prototype.slice.call(src, position, position += length) :\n\t\tsrc.subarray(position, position += length);\n}\nfunction readExt(length) {\n\tlet type = src[position++];\n\tif (currentExtensions[type]) {\n\t\tlet end;\n\t\treturn currentExtensions[type](src.subarray(position, end = (position += length)), (readPosition) => {\n\t\t\tposition = readPosition;\n\t\t\ttry {\n\t\t\t\treturn read();\n\t\t\t} finally {\n\t\t\t\tposition = end;\n\t\t\t}\n\t\t});\n\t}\n\telse\n\t\tthrow new Error('Unknown extension type ' + type);\n}\n\nvar keyCache = new Array(4096);\nfunction readKey() {\n\tlet length = src[position++];\n\tif (length >= 0xa0 && length < 0xc0) {\n\t\t// fixstr, potentially use key cache\n\t\tlength = length - 0xa0;\n\t\tif (srcStringEnd >= position) // if it has been extracted, must use it (and faster anyway)\n\t\t\treturn srcString.slice(position - srcStringStart, (position += length) - srcStringStart);\n\t\telse if (!(srcStringEnd == 0 && srcEnd < 180))\n\t\t\treturn readFixedString(length);\n\t} else { // not cacheable, go back and do a standard read\n\t\tposition--;\n\t\treturn asSafeString(read());\n\t}\n\tlet key = ((length << 5) ^ (length > 1 ? dataView.getUint16(position) : length > 0 ? src[position] : 0)) & 0xfff;\n\tlet entry = keyCache[key];\n\tlet checkPosition = position;\n\tlet end = position + length - 3;\n\tlet chunk;\n\tlet i = 0;\n\tif (entry && entry.bytes == length) {\n\t\twhile (checkPosition < end) {\n\t\t\tchunk = dataView.getUint32(checkPosition);\n\t\t\tif (chunk != entry[i++]) {\n\t\t\t\tcheckPosition = 0x70000000;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcheckPosition += 4;\n\t\t}\n\t\tend += 3;\n\t\twhile (checkPosition < end) {\n\t\t\tchunk = src[checkPosition++];\n\t\t\tif (chunk != entry[i++]) {\n\t\t\t\tcheckPosition = 0x70000000;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif (checkPosition === end) {\n\t\t\tposition = checkPosition;\n\t\t\treturn entry.string;\n\t\t}\n\t\tend -= 3;\n\t\tcheckPosition = position;\n\t}\n\tentry = [];\n\tkeyCache[key] = entry;\n\tentry.bytes = length;\n\twhile (checkPosition < end) {\n\t\tchunk = dataView.getUint32(checkPosition);\n\t\tentry.push(chunk);\n\t\tcheckPosition += 4;\n\t}\n\tend += 3;\n\twhile (checkPosition < end) {\n\t\tchunk = src[checkPosition++];\n\t\tentry.push(chunk);\n\t}\n\t// for small blocks, avoiding the overhead of the extract call is helpful\n\tlet string = length < 16 ? shortStringInJS(length) : longStringInJS(length);\n\tif (string != null)\n\t\treturn entry.string = string;\n\treturn entry.string = readFixedString(length);\n}\n\nfunction asSafeString(property) {\n\t// protect against expensive (DoS) string conversions\n\tif (typeof property === 'string') return property;\n\tif (typeof property === 'number' || typeof property === 'boolean' || typeof property === 'bigint') return property.toString();\n\tif (property == null) return property + '';\n\tif (currentUnpackr.allowArraysInMapKeys && Array.isArray(property) && property.flat().every(item => ['string', 'number', 'boolean', 'bigint'].includes(typeof item))) {\n\t\treturn property.flat().toString();\n\t}\n\tthrow new Error(`Invalid property type for record: ${typeof property}`);\n}\n// the registration of the record definition extension (as \"r\")\nconst recordDefinition = (id, highByte) => {\n\tlet structure = read().map(asSafeString); // ensure that all keys are strings and\n\t// that the array is mutable\n\tlet firstByte = id;\n\tif (highByte !== undefined) {\n\t\tid = id < 32 ? -((highByte << 5) + id) : ((highByte << 5) + id);\n\t\tstructure.highByte = highByte;\n\t}\n\tlet existingStructure = currentStructures[id];\n\t// If it is a shared structure, we need to restore any changes after reading.\n\t// Also in sequential mode, we may get incomplete reads and thus errors, and we need to restore\n\t// to the state prior to an incomplete read in order to properly resume.\n\tif (existingStructure && (existingStructure.isShared || sequentialMode)) {\n\t\t(currentStructures.restoreStructures || (currentStructures.restoreStructures = []))[id] = existingStructure;\n\t}\n\tcurrentStructures[id] = structure;\n\tstructure.read = createStructureReader(structure, firstByte);\n\treturn structure.read();\n};\ncurrentExtensions[0] = () => {}; // notepack defines extension 0 to mean undefined, so use that as the default here\ncurrentExtensions[0].noBuffer = true;\n\ncurrentExtensions[0x42] = data => {\n\tlet headLength = (data.byteLength % 8) || 8;\n\tlet head = BigInt(data[0] & 0x80 ? data[0] - 0x100 : data[0]);\n\tfor (let i = 1; i < headLength; i++) {\n\t\thead <<= BigInt(8);\n\t\thead += BigInt(data[i]);\n\t}\n\tif (data.byteLength !== headLength) {\n\t\tlet view = new DataView(data.buffer, data.byteOffset, data.byteLength);\n\t\tlet decode = (start, end) => {\n\t\t\tlet length = end - start;\n\t\t\tif (length <= 40) {\n\t\t\t\tlet out = view.getBigUint64(start);\n\t\t\t\tfor (let i = start + 8; i < end; i += 8) {\n\t\t\t\t\tout <<= BigInt(64);\n\t\t\t\t\tout |= view.getBigUint64(i);\n\t\t\t\t}\n\t\t\t\treturn out;\n\t\t\t}\n\t\t\t// if (length === 8) return view.getBigUint64(start)\n\t\t\tlet middle = start + (length >> 4 << 3);\n\t\t\tlet left = decode(start, middle);\n\t\t\tlet right = decode(middle, end);\n\t\t\treturn (left << BigInt((end - middle) * 8)) | right;\n\t\t};\n\t\thead = (head << BigInt((view.byteLength - headLength) * 8)) | decode(headLength, view.byteLength);\n\t}\n\treturn head;\n};\n\nlet errors = {\n\tError, EvalError, RangeError, ReferenceError, SyntaxError, TypeError, URIError, AggregateError: typeof AggregateError === 'function' ? AggregateError : null,\n};\ncurrentExtensions[0x65] = () => {\n\tlet data = read();\n\tif (!errors[data[0]]) {\n\t\tlet error = Error(data[1], { cause: data[2] });\n\t\terror.name = data[0];\n\t\treturn error;\n\t}\n\treturn errors[data[0]](data[1], { cause: data[2] });\n};\n\ncurrentExtensions[0x69] = (data) => {\n\t// id extension (for structured clones)\n\tif (currentUnpackr.structuredClone === false) throw new Error('Structured clone extension is disabled');\n\tlet id = dataView.getUint32(position - 4);\n\tif (!referenceMap)\n\t\treferenceMap = new Map();\n\tlet token = src[position];\n\tlet target;\n\t// TODO: handle any other types that can cycle and make the code more robust if there are other extensions\n\tif (token >= 0x90 && token < 0xa0 || token == 0xdc || token == 0xdd)\n\t\ttarget = [];\n\telse if (token >= 0x80 && token < 0x90 || token == 0xde || token == 0xdf)\n\t\ttarget = new Map();\n\telse if ((token >= 0xc7 && token <= 0xc9 || token >= 0xd4 && token <= 0xd8) && src[position + 1] === 0x73)\n\t\ttarget = new Set();\n\telse\n\t\ttarget = {};\n\n\tlet refEntry = { target }; // a placeholder object\n\treferenceMap.set(id, refEntry);\n\tlet targetProperties = read(); // read the next value as the target object to id\n\tif (!refEntry.used) {\n\t\t// no cycle, can just use the returned read object\n\t\treturn refEntry.target = targetProperties; // replace the placeholder with the real one\n\t} else {\n\t\t// there is a cycle, so we have to assign properties to original target\n\t\tObject.assign(target, targetProperties);\n\t}\n\n\t// copy over map/set entries if we're able to\n\tif (target instanceof Map)\n\t\tfor (let [k, v] of targetProperties.entries()) target.set(k, v);\n\tif (target instanceof Set)\n\t\tfor (let i of Array.from(targetProperties)) target.add(i);\n\treturn target;\n};\n\ncurrentExtensions[0x70] = (data) => {\n\t// pointer extension (for structured clones)\n\tif (currentUnpackr.structuredClone === false) throw new Error('Structured clone extension is disabled');\n\tlet id = dataView.getUint32(position - 4);\n\tlet refEntry = referenceMap.get(id);\n\trefEntry.used = true;\n\treturn refEntry.target;\n};\n\ncurrentExtensions[0x73] = () => new Set(read());\n\nexport const typedArrays = ['Int8','Uint8','Uint8Clamped','Int16','Uint16','Int32','Uint32','Float32','Float64','BigInt64','BigUint64'].map(type => type + 'Array');\n\nlet glbl = typeof globalThis === 'object' ? globalThis : window;\ncurrentExtensions[0x74] = (data) => {\n\tlet typeCode = data[0];\n\t// we always have to slice to get a new ArrayBuffer that is aligned\n\tlet buffer = Uint8Array.prototype.slice.call(data, 1).buffer;\n\n\tlet typedArrayName = typedArrays[typeCode];\n\tif (!typedArrayName) {\n\t\tif (typeCode === 16) return buffer;\n\t\tif (typeCode === 17) return new DataView(buffer);\n\t\tthrow new Error('Could not find typed array for code ' + typeCode);\n\t}\n\treturn new glbl[typedArrayName](buffer);\n};\ncurrentExtensions[0x78] = () => {\n\tlet data = read();\n\treturn new RegExp(data[0], data[1]);\n};\nconst TEMP_BUNDLE = [];\ncurrentExtensions[0x62] = (data) => {\n\tlet dataSize = (data[0] << 24) + (data[1] << 16) + (data[2] << 8) + data[3];\n\tlet dataPosition = position;\n\tposition += dataSize - data.length;\n\tbundledStrings = TEMP_BUNDLE;\n\tbundledStrings = [readOnlyJSString(), readOnlyJSString()];\n\tbundledStrings.position0 = 0;\n\tbundledStrings.position1 = 0;\n\tbundledStrings.postBundlePosition = position;\n\tposition = dataPosition;\n\treturn read();\n};\n\ncurrentExtensions[0xff] = (data) => {\n\t// 32-bit date extension\n\tif (data.length == 4)\n\t\treturn new Date((data[0] * 0x1000000 + (data[1] << 16) + (data[2] << 8) + data[3]) * 1000);\n\telse if (data.length == 8)\n\t\treturn new Date(\n\t\t\t((data[0] << 22) + (data[1] << 14) + (data[2] << 6) + (data[3] >> 2)) / 1000000 +\n\t\t\t((data[3] & 0x3) * 0x100000000 + data[4] * 0x1000000 + (data[5] << 16) + (data[6] << 8) + data[7]) * 1000);\n\telse if (data.length == 12)\n\t\treturn new Date(\n\t\t\t((data[0] << 24) + (data[1] << 16) + (data[2] << 8) + data[3]) / 1000000 +\n\t\t\t(((data[4] & 0x80) ? -0x1000000000000 : 0) + data[6] * 0x10000000000 + data[7] * 0x100000000 + data[8] * 0x1000000 + (data[9] << 16) + (data[10] << 8) + data[11]) * 1000);\n\telse\n\t\treturn new Date('invalid');\n};\n// registration of bulk record definition?\n// currentExtensions[0x52] = () =>\n\nfunction saveState(callback) {\n\tif (currentUnpackr && currentUnpackr._onSaveState)\n\t\tcurrentUnpackr._onSaveState();\n\tlet savedSrcEnd = srcEnd;\n\tlet savedPosition = position;\n\tlet savedStringPosition = stringPosition;\n\tlet savedSrcStringStart = srcStringStart;\n\tlet savedSrcStringEnd = srcStringEnd;\n\tlet savedSrcString = srcString;\n\tlet savedStrings = strings;\n\tlet savedReferenceMap = referenceMap;\n\tlet savedBundledStrings = bundledStrings;\n\n\t// TODO: We may need to revisit this if we do more external calls to user code (since it could be slow)\n\tlet savedSrc = new Uint8Array(src.slice(0, srcEnd)); // we copy the data in case it changes while external data is processed\n\tlet savedStructures = currentStructures;\n\tlet savedStructuresContents = currentStructures.slice(0, currentStructures.length);\n\tlet savedPackr = currentUnpackr;\n\tlet savedSequentialMode = sequentialMode;\n\tlet value = callback();\n\tsrcEnd = savedSrcEnd;\n\tposition = savedPosition;\n\tstringPosition = savedStringPosition;\n\tsrcStringStart = savedSrcStringStart;\n\tsrcStringEnd = savedSrcStringEnd;\n\tsrcString = savedSrcString;\n\tstrings = savedStrings;\n\treferenceMap = savedReferenceMap;\n\tbundledStrings = savedBundledStrings;\n\tsrc = savedSrc;\n\tsequentialMode = savedSequentialMode;\n\tcurrentStructures = savedStructures;\n\tcurrentStructures.splice(0, currentStructures.length, ...savedStructuresContents);\n\tcurrentUnpackr = savedPackr;\n\tdataView = new DataView(src.buffer, src.byteOffset, src.byteLength);\n\treturn value;\n}\nexport function clearSource() {\n\tsrc = null;\n\treferenceMap = null;\n\tcurrentStructures = null;\n}\n\nexport function addExtension(extension) {\n\tif (extension.unpack)\n\t\tcurrentExtensions[extension.type] = extension.unpack;\n\telse\n\t\tcurrentExtensions[extension.type] = extension;\n}\n\nexport const mult10 = new Array(147); // this is a table matching binary exponents to the multiplier to determine significant digit rounding\nfor (let i = 0; i < 256; i++) {\n\tmult10[i] = +('1e' + Math.floor(45.15 - i * 0.30103));\n}\nexport const Decoder = Unpackr;\nvar defaultUnpackr = new Unpackr({ useRecords: false });\nexport const unpack = defaultUnpackr.unpack;\nexport const unpackMultiple = defaultUnpackr.unpackMultiple;\nexport const decode = defaultUnpackr.unpack;\nexport const FLOAT32_OPTIONS = {\n\tNEVER: 0,\n\tALWAYS: 1,\n\tDECIMAL_ROUND: 3,\n\tDECIMAL_FIT: 4\n};\nlet f32Array = new Float32Array(1);\nlet u8Array = new Uint8Array(f32Array.buffer, 0, 4);\nexport function roundFloat32(float32Number) {\n\tf32Array[0] = float32Number;\n\tlet multiplier = mult10[((u8Array[3] & 0x7f) << 1) | (u8Array[2] >> 7)];\n\treturn ((multiplier * float32Number + (float32Number > 0 ? 0.5 : -0.5)) >> 0) / multiplier;\n}\n// Marker for downstream libraries (e.g. structon) to detect per-instance\n// struct-decoding hooks (this._readStruct, this._onLoadedStructures,\n// this._onSaveState).  See `checkedRead` for the dispatch.\nUnpackr.SUPPORTS_STRUCT_HOOKS = true;\n","import { Unpackr, mult10, C1Type, typedArrays, addExtension as unpackAddExtension } from './unpack.js';\nlet textEncoder;\ntry {\n\ttextEncoder = new TextEncoder();\n} catch (error) {}\nlet extensions, extensionClasses;\nconst hasNodeBuffer = typeof Buffer !== 'undefined';\nconst ByteArrayAllocate = hasNodeBuffer ?\n\tfunction(length) { return Buffer.allocUnsafeSlow(length); } : Uint8Array;\nconst ByteArray = hasNodeBuffer ? Buffer : Uint8Array;\nconst MAX_BUFFER_SIZE = hasNodeBuffer ? 0x100000000 : 0x7fd00000;\nlet target, keysTarget;\nlet targetView;\nlet position = 0;\nlet safeEnd;\nlet bundledStrings = null;\nconst MAX_BUNDLE_SIZE = 0x5500; // maximum characters such that the encoded bytes fits in 16 bits.\nconst hasNonLatin = /[\\u0080-\\uFFFF]/;\nexport const RECORD_SYMBOL = Symbol('record-id');\nexport class Packr extends Unpackr {\n\tconstructor(options) {\n\t\tsuper(options);\n\t\tthis.offset = 0;\n\t\tlet typeBuffer;\n\t\tlet start;\n\t\tlet hasSharedUpdate;\n\t\tlet structures;\n\t\tlet referenceMap;\n\t\tlet encodeUtf8 = ByteArray.prototype.utf8Write ? function(string, position) {\n\t\t\treturn target.utf8Write(string, position, target.byteLength - position);\n\t\t} : (textEncoder && textEncoder.encodeInto) ?\n\t\t\tfunction(string, position) {\n\t\t\t\treturn textEncoder.encodeInto(string, target.subarray(position)).written;\n\t\t\t} : false;\n\n\t\tlet packr = this;\n\t\tif (!options)\n\t\t\toptions = {};\n\t\tlet isSequential = options && options.sequential;\n\t\tlet hasSharedStructures = options.structures || options.saveStructures;\n\t\tlet maxSharedStructures = options.maxSharedStructures;\n\t\tif (maxSharedStructures == null)\n\t\t\tmaxSharedStructures = hasSharedStructures ? 32 : 0;\n\t\tif (maxSharedStructures > 8160)\n\t\t\tthrow new Error('Maximum maxSharedStructure is 8160');\n\t\tif (options.structuredClone && options.moreTypes == undefined) {\n\t\t\tthis.moreTypes = true;\n\t\t}\n\t\tlet maxOwnStructures = options.maxOwnStructures;\n\t\tif (maxOwnStructures == null)\n\t\t\tmaxOwnStructures = hasSharedStructures ? 32 : 64;\n\t\tif (!this.structures && options.useRecords != false)\n\t\t\tthis.structures = [];\n\t\t// two byte record ids for shared structures\n\t\tlet useTwoByteRecords = maxSharedStructures > 32 || (maxOwnStructures + maxSharedStructures > 64);\n\t\tlet sharedLimitId = maxSharedStructures + 0x40;\n\t\tlet maxStructureId = maxSharedStructures + maxOwnStructures + 0x40;\n\t\tif (maxStructureId > 8256) {\n\t\t\tthrow new Error('Maximum maxSharedStructure + maxOwnStructure is 8192');\n\t\t}\n\t\tlet recordIdsToRemove = [];\n\t\tlet transitionsCount = 0;\n\t\tlet serializationsSinceTransitionRebuild = 0;\n\n\t\tthis.pack = this.encode = function(value, encodeOptions) {\n\t\t\tif (!target) {\n\t\t\t\ttarget = new ByteArrayAllocate(8192);\n\t\t\t\ttargetView = target.dataView || (target.dataView = new DataView(target.buffer, 0, 8192));\n\t\t\t\tposition = 0;\n\t\t\t}\n\t\t\tsafeEnd = target.length - 10;\n\t\t\tif (safeEnd - position < 0x800) {\n\t\t\t\t// don't start too close to the end,\n\t\t\t\ttarget = new ByteArrayAllocate(target.length);\n\t\t\t\ttargetView = target.dataView || (target.dataView = new DataView(target.buffer, 0, target.length));\n\t\t\t\tsafeEnd = target.length - 10;\n\t\t\t\tposition = 0;\n\t\t\t} else\n\t\t\t\tposition = (position + 7) & 0x7ffffff8; // Word align to make any future copying of this buffer faster\n\t\t\tstart = position;\n\t\t\tif (encodeOptions & RESERVE_START_SPACE) position += (encodeOptions & 0xff);\n\t\t\treferenceMap = packr.structuredClone ? new Map() : null;\n\t\t\tif (packr.bundleStrings && typeof value !== 'string') {\n\t\t\t\tbundledStrings = [];\n\t\t\t\tbundledStrings.size = Infinity; // force a new bundle start on first string\n\t\t\t} else\n\t\t\t\tbundledStrings = null;\n\t\t\tstructures = packr.structures;\n\t\t\tif (structures) {\n\t\t\t\tif (structures.uninitialized)\n\t\t\t\t\tstructures = packr._mergeStructures(packr.getStructures());\n\t\t\t\tlet sharedLength = structures.sharedLength || 0;\n\t\t\t\tif (sharedLength > maxSharedStructures) {\n\t\t\t\t\t//if (maxSharedStructures <= 32 && structures.sharedLength > 32) // TODO: could support this, but would need to update the limit ids\n\t\t\t\t\tthrow new Error('Shared structures is larger than maximum shared structures, try increasing maxSharedStructures to ' + structures.sharedLength);\n\t\t\t\t}\n\t\t\t\tif (!structures.transitions) {\n\t\t\t\t\t// rebuild our structure transitions\n\t\t\t\t\tstructures.transitions = Object.create(null);\n\t\t\t\t\tfor (let i = 0; i < sharedLength; i++) {\n\t\t\t\t\t\tlet keys = structures[i];\n\t\t\t\t\t\tif (!keys)\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\tlet nextTransition, transition = structures.transitions;\n\t\t\t\t\t\tfor (let j = 0, l = keys.length; j < l; j++) {\n\t\t\t\t\t\t\tlet key = keys[j];\n\t\t\t\t\t\t\tnextTransition = transition[key];\n\t\t\t\t\t\t\tif (!nextTransition) {\n\t\t\t\t\t\t\t\tnextTransition = transition[key] = Object.create(null);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\ttransition = nextTransition;\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttransition[RECORD_SYMBOL] = i + 0x40;\n\t\t\t\t\t}\n\t\t\t\t\tthis.lastNamedStructuresLength = sharedLength;\n\t\t\t\t}\n\t\t\t\tif (!isSequential) {\n\t\t\t\t\tstructures.nextId = sharedLength + 0x40;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (hasSharedUpdate)\n\t\t\t\thasSharedUpdate = false;\n\t\t\tlet encodingError;\n\t\t\ttry {\n\t\t\t\tif (packr._writeStruct && value && typeof value === 'object') {\n\t\t\t\t\tif (value.constructor === Object) writeStruct(value); // simple object\n\t\t\t\t\telse if (value.constructor !== Map && !Array.isArray(value) && !extensionClasses.some(extClass => value instanceof extClass)) {\n\t\t\t\t\t\t// allow user classes, if they don't need special handling (but do use toJSON if available)\n\t\t\t\t\t\twriteStruct(value.toJSON ? value.toJSON() : value);\n\t\t\t\t\t} else pack(value);\n\t\t\t\t} else\n\t\t\t\t\tpack(value);\n\t\t\t\tlet lastBundle = bundledStrings;\n\t\t\t\tif (bundledStrings)\n\t\t\t\t\twriteBundles(start, pack, 0);\n\t\t\t\tif (referenceMap && referenceMap.idsToInsert) {\n\t\t\t\t\tlet idsToInsert = referenceMap.idsToInsert.sort((a, b) => a.offset > b.offset ? 1 : -1);\n\t\t\t\t\tlet i = idsToInsert.length;\n\t\t\t\t\tlet incrementPosition = -1;\n\t\t\t\t\twhile (lastBundle && i > 0) {\n\t\t\t\t\t\tlet insertionPoint = idsToInsert[--i].offset + start;\n\t\t\t\t\t\tif (insertionPoint < (lastBundle.stringsPosition + start) && incrementPosition === -1)\n\t\t\t\t\t\t\tincrementPosition = 0;\n\t\t\t\t\t\tif (insertionPoint > (lastBundle.position + start)) {\n\t\t\t\t\t\t\tif (incrementPosition >= 0)\n\t\t\t\t\t\t\t\tincrementPosition += 6;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tif (incrementPosition >= 0) {\n\t\t\t\t\t\t\t\t// update the bundle reference now\n\t\t\t\t\t\t\t\ttargetView.setUint32(lastBundle.position + start,\n\t\t\t\t\t\t\t\t\ttargetView.getUint32(lastBundle.position + start) + incrementPosition);\n\t\t\t\t\t\t\t\tincrementPosition = -1; // reset\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tlastBundle = lastBundle.previous;\n\t\t\t\t\t\t\ti++;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (incrementPosition >= 0 && lastBundle) {\n\t\t\t\t\t\t// update the bundle reference now\n\t\t\t\t\t\ttargetView.setUint32(lastBundle.position + start,\n\t\t\t\t\t\t\ttargetView.getUint32(lastBundle.position + start) + incrementPosition);\n\t\t\t\t\t}\n\t\t\t\t\tposition += idsToInsert.length * 6;\n\t\t\t\t\tif (position > safeEnd)\n\t\t\t\t\t\tmakeRoom(position);\n\t\t\t\t\tpackr.offset = position;\n\t\t\t\t\tlet serialized = insertIds(target.subarray(start, position), idsToInsert);\n\t\t\t\t\treferenceMap = null;\n\t\t\t\t\treturn serialized;\n\t\t\t\t}\n\t\t\t\tpackr.offset = position; // update the offset so next serialization doesn't write over our buffer, but can continue writing to same buffer sequentially\n\t\t\t\tif (encodeOptions & REUSE_BUFFER_MODE) {\n\t\t\t\t\ttarget.start = start;\n\t\t\t\t\ttarget.end = position;\n\t\t\t\t\treturn target;\n\t\t\t\t}\n\t\t\t\treturn target.subarray(start, position); // position can change if we call pack again in saveStructures, so we get the buffer now\n\t\t\t} catch(error) {\n\t\t\t\tencodingError = error;\n\t\t\t\tthrow error;\n\t\t\t} finally {\n\t\t\t\tif (structures) {\n\t\t\t\t\tresetStructures();\n\t\t\t\t\tif (hasSharedUpdate && packr.saveStructures) {\n\t\t\t\t\t\tlet sharedLength = structures.sharedLength || 0;\n\t\t\t\t\t\t// we can't rely on start/end with REUSE_BUFFER_MODE since they will (probably) change when we save\n\t\t\t\t\t\tlet returnBuffer = target.subarray(start, position);\n\t\t\t\t\t\tlet newSharedData = (packr._prepareStructures || prepareStructures)(structures, packr);\n\t\t\t\t\t\tif (!encodingError) { // TODO: If there is an encoding error, should make the structures as uninitialized so they get rebuilt next time\n\t\t\t\t\t\t\tif (packr.saveStructures(newSharedData, newSharedData.isCompatible) === false) {\n\t\t\t\t\t\t\t\t// get updated structures and try again if the update failed\n\t\t\t\t\t\t\t\treturn packr.pack(value, encodeOptions);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tpackr.lastNamedStructuresLength = sharedLength;\n\t\t\t\t\t\t\t// don't keep large buffers around\n\t\t\t\t\t\t\tif (target.length > 0x40000000) target = null;\n\t\t\t\t\t\t\treturn returnBuffer;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// don't keep large buffers around, they take too much memory and cause problems (limit at 1GB)\n\t\t\t\tif (target.length > 0x40000000) target = null;\n\t\t\t\tif (encodeOptions & RESET_BUFFER_MODE)\n\t\t\t\t\tposition = start;\n\t\t\t}\n\t\t};\n\t\tconst resetStructures = () => {\n\t\t\tif (serializationsSinceTransitionRebuild < 10)\n\t\t\t\tserializationsSinceTransitionRebuild++;\n\t\t\tlet sharedLength = structures.sharedLength || 0;\n\t\t\tif (structures.length > sharedLength && !isSequential)\n\t\t\t\tstructures.length = sharedLength;\n\t\t\tif (transitionsCount > 10000) {\n\t\t\t\t// force a rebuild occasionally after a lot of transitions so it can get cleaned up\n\t\t\t\tstructures.transitions = null;\n\t\t\t\tserializationsSinceTransitionRebuild = 0;\n\t\t\t\ttransitionsCount = 0;\n\t\t\t\tif (recordIdsToRemove.length > 0)\n\t\t\t\t\trecordIdsToRemove = [];\n\t\t\t} else if (recordIdsToRemove.length > 0 && !isSequential) {\n\t\t\t\tfor (let i = 0, l = recordIdsToRemove.length; i < l; i++) {\n\t\t\t\t\trecordIdsToRemove[i][RECORD_SYMBOL] = 0;\n\t\t\t\t}\n\t\t\t\trecordIdsToRemove = [];\n\t\t\t}\n\t\t};\n\t\tconst packArray = (value) => {\n\t\t\tvar length = value.length;\n\t\t\tif (length < 0x10) {\n\t\t\t\ttarget[position++] = 0x90 | length;\n\t\t\t} else if (length < 0x10000) {\n\t\t\t\ttarget[position++] = 0xdc;\n\t\t\t\ttarget[position++] = length >> 8;\n\t\t\t\ttarget[position++] = length & 0xff;\n\t\t\t} else {\n\t\t\t\ttarget[position++] = 0xdd;\n\t\t\t\ttargetView.setUint32(position, length);\n\t\t\t\tposition += 4;\n\t\t\t}\n\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\tpack(value[i]);\n\t\t\t}\n\t\t};\n\t\tconst pack = (value) => {\n\t\t\tif (position > safeEnd)\n\t\t\t\ttarget = makeRoom(position);\n\n\t\t\tvar type = typeof value;\n\t\t\tvar length;\n\t\t\tif (type === 'string') {\n\t\t\t\tlet strLength = value.length;\n\t\t\t\tif (bundledStrings && strLength >= 4 && strLength < 0x1000) {\n\t\t\t\t\tif ((bundledStrings.size += strLength) > MAX_BUNDLE_SIZE) {\n\t\t\t\t\t\tlet extStart;\n\t\t\t\t\t\tlet maxBytes = (bundledStrings[0] ? bundledStrings[0].length * 3 + bundledStrings[1].length : 0) + 10;\n\t\t\t\t\t\tif (position + maxBytes > safeEnd)\n\t\t\t\t\t\t\ttarget = makeRoom(position + maxBytes);\n\t\t\t\t\t\tlet lastBundle;\n\t\t\t\t\t\tif (bundledStrings.position) { // here we use the 0x62 extension to write the last bundle and reserve space for the reference pointer to the next/current bundle\n\t\t\t\t\t\t\tlastBundle = bundledStrings;\n\t\t\t\t\t\t\ttarget[position] = 0xc8; // ext 16\n\t\t\t\t\t\t\tposition += 3; // reserve for the writing bundle size\n\t\t\t\t\t\t\ttarget[position++] = 0x62; // 'b'\n\t\t\t\t\t\t\textStart = position - start;\n\t\t\t\t\t\t\tposition += 4; // reserve for writing bundle reference\n\t\t\t\t\t\t\twriteBundles(start, pack, 0); // write the last bundles\n\t\t\t\t\t\t\ttargetView.setUint16(extStart + start - 3, position - start - extStart);\n\t\t\t\t\t\t} else { // here we use the 0x62 extension just to reserve the space for the reference pointer to the bundle (will be updated once the bundle is written)\n\t\t\t\t\t\t\ttarget[position++] = 0xd6; // fixext 4\n\t\t\t\t\t\t\ttarget[position++] = 0x62; // 'b'\n\t\t\t\t\t\t\textStart = position - start;\n\t\t\t\t\t\t\tposition += 4; // reserve for writing bundle reference\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbundledStrings = ['', '']; // create new ones\n\t\t\t\t\t\tbundledStrings.previous = lastBundle;\n\t\t\t\t\t\tbundledStrings.size = 0;\n\t\t\t\t\t\tbundledStrings.position = extStart;\n\t\t\t\t\t}\n\t\t\t\t\tlet twoByte = hasNonLatin.test(value);\n\t\t\t\t\tbundledStrings[twoByte ? 0 : 1] += value;\n\t\t\t\t\ttarget[position++] = 0xc1;\n\t\t\t\t\tpack(twoByte ? -strLength : strLength);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tlet headerSize;\n\t\t\t\t// first we estimate the header size, so we can write to the correct location\n\t\t\t\tif (strLength < 0x20) {\n\t\t\t\t\theaderSize = 1;\n\t\t\t\t} else if (strLength < 0x100) {\n\t\t\t\t\theaderSize = 2;\n\t\t\t\t} else if (strLength < 0x10000) {\n\t\t\t\t\theaderSize = 3;\n\t\t\t\t} else {\n\t\t\t\t\theaderSize = 5;\n\t\t\t\t}\n\t\t\t\tlet maxBytes = strLength * 3;\n\t\t\t\tif (position + maxBytes > safeEnd)\n\t\t\t\t\ttarget = makeRoom(position + maxBytes);\n\n\t\t\t\tif (strLength < 0x40 || !encodeUtf8) {\n\t\t\t\t\tlet i, c1, c2, strPosition = position + headerSize;\n\t\t\t\t\tfor (i = 0; i < strLength; i++) {\n\t\t\t\t\t\tc1 = value.charCodeAt(i);\n\t\t\t\t\t\tif (c1 < 0x80) {\n\t\t\t\t\t\t\ttarget[strPosition++] = c1;\n\t\t\t\t\t\t} else if (c1 < 0x800) {\n\t\t\t\t\t\t\ttarget[strPosition++] = c1 >> 6 | 0xc0;\n\t\t\t\t\t\t\ttarget[strPosition++] = c1 & 0x3f | 0x80;\n\t\t\t\t\t\t} else if (\n\t\t\t\t\t\t\t(c1 & 0xfc00) === 0xd800 &&\n\t\t\t\t\t\t\t((c2 = value.charCodeAt(i + 1)) & 0xfc00) === 0xdc00\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tc1 = 0x10000 + ((c1 & 0x03ff) << 10) + (c2 & 0x03ff);\n\t\t\t\t\t\t\ti++;\n\t\t\t\t\t\t\ttarget[strPosition++] = c1 >> 18 | 0xf0;\n\t\t\t\t\t\t\ttarget[strPosition++] = c1 >> 12 & 0x3f | 0x80;\n\t\t\t\t\t\t\ttarget[strPosition++] = c1 >> 6 & 0x3f | 0x80;\n\t\t\t\t\t\t\ttarget[strPosition++] = c1 & 0x3f | 0x80;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\ttarget[strPosition++] = c1 >> 12 | 0xe0;\n\t\t\t\t\t\t\ttarget[strPosition++] = c1 >> 6 & 0x3f | 0x80;\n\t\t\t\t\t\t\ttarget[strPosition++] = c1 & 0x3f | 0x80;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tlength = strPosition - position - headerSize;\n\t\t\t\t} else {\n\t\t\t\t\tlength = encodeUtf8(value, position + headerSize);\n\t\t\t\t}\n\n\t\t\t\tif (length < 0x20) {\n\t\t\t\t\ttarget[position++] = 0xa0 | length;\n\t\t\t\t} else if (length < 0x100) {\n\t\t\t\t\tif (headerSize < 2) {\n\t\t\t\t\t\ttarget.copyWithin(position + 2, position + 1, position + 1 + length);\n\t\t\t\t\t}\n\t\t\t\t\ttarget[position++] = 0xd9;\n\t\t\t\t\ttarget[position++] = length;\n\t\t\t\t} else if (length < 0x10000) {\n\t\t\t\t\tif (headerSize < 3) {\n\t\t\t\t\t\ttarget.copyWithin(position + 3, position + 2, position + 2 + length);\n\t\t\t\t\t}\n\t\t\t\t\ttarget[position++] = 0xda;\n\t\t\t\t\ttarget[position++] = length >> 8;\n\t\t\t\t\ttarget[position++] = length & 0xff;\n\t\t\t\t} else {\n\t\t\t\t\tif (headerSize < 5) {\n\t\t\t\t\t\ttarget.copyWithin(position + 5, position + 3, position + 3 + length);\n\t\t\t\t\t}\n\t\t\t\t\ttarget[position++] = 0xdb;\n\t\t\t\t\ttargetView.setUint32(position, length);\n\t\t\t\t\tposition += 4;\n\t\t\t\t}\n\t\t\t\tposition += length;\n\t\t\t} else if (type === 'number') {\n\t\t\t\tif (value >>> 0 === value) {// positive integer, 32-bit or less\n\t\t\t\t\t// positive uint\n\t\t\t\t\tif (value < 0x20 || (value < 0x80 && this.useRecords === false) || (value < 0x40 && !this._writeStruct)) {\n\t\t\t\t\t\ttarget[position++] = value;\n\t\t\t\t\t} else if (value < 0x100) {\n\t\t\t\t\t\ttarget[position++] = 0xcc;\n\t\t\t\t\t\ttarget[position++] = value;\n\t\t\t\t\t} else if (value < 0x10000) {\n\t\t\t\t\t\ttarget[position++] = 0xcd;\n\t\t\t\t\t\ttarget[position++] = value >> 8;\n\t\t\t\t\t\ttarget[position++] = value & 0xff;\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttarget[position++] = 0xce;\n\t\t\t\t\t\ttargetView.setUint32(position, value);\n\t\t\t\t\t\tposition += 4;\n\t\t\t\t\t}\n\t\t\t\t} else if (value >> 0 === value) { // negative integer\n\t\t\t\t\tif (value >= -0x20) {\n\t\t\t\t\t\ttarget[position++] = 0x100 + value;\n\t\t\t\t\t} else if (value >= -0x80) {\n\t\t\t\t\t\ttarget[position++] = 0xd0;\n\t\t\t\t\t\ttarget[position++] = value + 0x100;\n\t\t\t\t\t} else if (value >= -0x8000) {\n\t\t\t\t\t\ttarget[position++] = 0xd1;\n\t\t\t\t\t\ttargetView.setInt16(position, value);\n\t\t\t\t\t\tposition += 2;\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttarget[position++] = 0xd2;\n\t\t\t\t\t\ttargetView.setInt32(position, value);\n\t\t\t\t\t\tposition += 4;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tlet useFloat32;\n\t\t\t\t\tif ((useFloat32 = this.useFloat32) > 0 && value < 0x100000000 && value >= -0x80000000) {\n\t\t\t\t\t\ttarget[position++] = 0xca;\n\t\t\t\t\t\ttargetView.setFloat32(position, value);\n\t\t\t\t\t\tlet xShifted;\n\t\t\t\t\t\tif (useFloat32 < 4 ||\n\t\t\t\t\t\t\t\t// this checks for rounding of numbers that were encoded in 32-bit float to nearest significant decimal digit that could be preserved\n\t\t\t\t\t\t\t\t((xShifted = value * mult10[((target[position] & 0x7f) << 1) | (target[position + 1] >> 7)]) >> 0) === xShifted) {\n\t\t\t\t\t\t\tposition += 4;\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t} else\n\t\t\t\t\t\t\tposition--; // move back into position for writing a double\n\t\t\t\t\t}\n\t\t\t\t\ttarget[position++] = 0xcb;\n\t\t\t\t\ttargetView.setFloat64(position, value);\n\t\t\t\t\tposition += 8;\n\t\t\t\t}\n\t\t\t} else if (type === 'object' || type === 'function') {\n\t\t\t\tif (!value)\n\t\t\t\t\ttarget[position++] = 0xc0;\n\t\t\t\telse {\n\t\t\t\t\tif (referenceMap) {\n\t\t\t\t\t\tlet referee = referenceMap.get(value);\n\t\t\t\t\t\tif (referee) {\n\t\t\t\t\t\t\tif (!referee.id) {\n\t\t\t\t\t\t\t\tlet idsToInsert = referenceMap.idsToInsert || (referenceMap.idsToInsert = []);\n\t\t\t\t\t\t\t\treferee.id = idsToInsert.push(referee);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\ttarget[position++] = 0xd6; // fixext 4\n\t\t\t\t\t\t\ttarget[position++] = 0x70; // \"p\" for pointer\n\t\t\t\t\t\t\ttargetView.setUint32(position, referee.id);\n\t\t\t\t\t\t\tposition += 4;\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t} else\n\t\t\t\t\t\t\treferenceMap.set(value, { offset: position - start });\n\t\t\t\t\t}\n\t\t\t\t\tlet constructor = value.constructor;\n\t\t\t\t\tif (constructor === Object) {\n\t\t\t\t\t\twriteObject(value);\n\t\t\t\t\t} else if (constructor === Array) {\n\t\t\t\t\t\tpackArray(value);\n\t\t\t\t\t} else if (constructor === Map) {\n\t\t\t\t\t\tif (this.mapAsEmptyObject) target[position++] = 0x80;\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tlength = value.size;\n\t\t\t\t\t\t\tif (length < 0x10) {\n\t\t\t\t\t\t\t\ttarget[position++] = 0x80 | length;\n\t\t\t\t\t\t\t} else if (length < 0x10000) {\n\t\t\t\t\t\t\t\ttarget[position++] = 0xde;\n\t\t\t\t\t\t\t\ttarget[position++] = length >> 8;\n\t\t\t\t\t\t\t\ttarget[position++] = length & 0xff;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\ttarget[position++] = 0xdf;\n\t\t\t\t\t\t\t\ttargetView.setUint32(position, length);\n\t\t\t\t\t\t\t\tposition += 4;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tfor (let [key, entryValue] of value) {\n\t\t\t\t\t\t\t\tpack(key);\n\t\t\t\t\t\t\t\tpack(entryValue);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tfor (let i = 0, l = extensions.length; i < l; i++) {\n\t\t\t\t\t\t\tlet extensionClass = extensionClasses[i];\n\t\t\t\t\t\t\tif (value instanceof extensionClass) {\n\t\t\t\t\t\t\t\tlet extension = extensions[i];\n\t\t\t\t\t\t\t\tif (extension.write) {\n\t\t\t\t\t\t\t\t\tif (extension.type) {\n\t\t\t\t\t\t\t\t\t\ttarget[position++] = 0xd4; // one byte \"tag\" extension\n\t\t\t\t\t\t\t\t\t\ttarget[position++] = extension.type;\n\t\t\t\t\t\t\t\t\t\ttarget[position++] = 0;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tlet writeResult = extension.write.call(this, value);\n\t\t\t\t\t\t\t\t\tif (writeResult === value) { // avoid infinite recursion\n\t\t\t\t\t\t\t\t\t\tif (Array.isArray(value)) {\n\t\t\t\t\t\t\t\t\t\t\tpackArray(value);\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\twriteObject(value);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tpack(writeResult);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tlet currentTarget = target;\n\t\t\t\t\t\t\t\tlet currentTargetView = targetView;\n\t\t\t\t\t\t\t\tlet currentPosition = position;\n\t\t\t\t\t\t\t\ttarget = null;\n\t\t\t\t\t\t\t\tlet result;\n\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\tresult = extension.pack.call(this, value, (size) => {\n\t\t\t\t\t\t\t\t\t\t// restore target and use it\n\t\t\t\t\t\t\t\t\t\ttarget = currentTarget;\n\t\t\t\t\t\t\t\t\t\tcurrentTarget = null;\n\t\t\t\t\t\t\t\t\t\tposition += size;\n\t\t\t\t\t\t\t\t\t\tif (position > safeEnd)\n\t\t\t\t\t\t\t\t\t\t\tmakeRoom(position);\n\t\t\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\t\t\ttarget, targetView, position: position - size\n\t\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t\t}, pack);\n\t\t\t\t\t\t\t\t} finally {\n\t\t\t\t\t\t\t\t\t// restore current target information (unless already restored)\n\t\t\t\t\t\t\t\t\tif (currentTarget) {\n\t\t\t\t\t\t\t\t\t\ttarget = currentTarget;\n\t\t\t\t\t\t\t\t\t\ttargetView = currentTargetView;\n\t\t\t\t\t\t\t\t\t\tposition = currentPosition;\n\t\t\t\t\t\t\t\t\t\tsafeEnd = target.length - 10;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (result) {\n\t\t\t\t\t\t\t\t\tif (result.length + position > safeEnd)\n\t\t\t\t\t\t\t\t\t\tmakeRoom(result.length + position);\n\t\t\t\t\t\t\t\t\tposition = writeExtensionData(result, target, position, extension.type);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// check isArray after extensions, because extensions can extend Array\n\t\t\t\t\t\tif (Array.isArray(value)) {\n\t\t\t\t\t\t\tpackArray(value);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// use this as an alternate mechanism for expressing how to serialize\n\t\t\t\t\t\t\tif (value.toJSON) {\n\t\t\t\t\t\t\t\tconst json = value.toJSON();\n\t\t\t\t\t\t\t\t// if for some reason value.toJSON returns itself it'll loop forever\n\t\t\t\t\t\t\t\tif (json !== value)\n\t\t\t\t\t\t\t\t\treturn pack(json);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// if there is a writeFunction, use it, otherwise just encode as undefined\n\t\t\t\t\t\t\tif (type === 'function')\n\t\t\t\t\t\t\t\treturn pack(this.writeFunction && this.writeFunction(value));\n\n\t\t\t\t\t\t\t// no extension found, write as plain object\n\t\t\t\t\t\t\twriteObject(value);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (type === 'boolean') {\n\t\t\t\ttarget[position++] = value ? 0xc3 : 0xc2;\n\t\t\t} else if (type === 'bigint') {\n\t\t\t\tif (value < 0x8000000000000000 && value >= -0x8000000000000000) {\n\t\t\t\t\t// use a signed int as long as it fits\n\t\t\t\t\ttarget[position++] = 0xd3;\n\t\t\t\t\ttargetView.setBigInt64(position, value);\n\t\t\t\t} else if (value < 0x10000000000000000 && value > 0) {\n\t\t\t\t\t// if we can fit an unsigned int, use that\n\t\t\t\t\ttarget[position++] = 0xcf;\n\t\t\t\t\ttargetView.setBigUint64(position, value);\n\t\t\t\t} else {\n\t\t\t\t\t// overflow\n\t\t\t\t\tif (this.largeBigIntToFloat) {\n\t\t\t\t\t\ttarget[position++] = 0xcb;\n\t\t\t\t\t\ttargetView.setFloat64(position, Number(value));\n\t\t\t\t\t} else if (this.largeBigIntToString) {\n\t\t\t\t\t\treturn pack(value.toString());\n\t\t\t\t\t} else if (this.useBigIntExtension || this.moreTypes) {\n\t\t\t\t\t\tlet empty = value < 0 ? BigInt(-1) : BigInt(0);\n\n\t\t\t\t\t\tlet array;\n\t\t\t\t\t\tif (value >> BigInt(0x10000) === empty) {\n\t\t\t\t\t\t\tlet mask = BigInt(0x10000000000000000) - BigInt(1); // literal would overflow\n\t\t\t\t\t\t\tlet chunks = [];\n\t\t\t\t\t\t\twhile (true) {\n\t\t\t\t\t\t\t\tchunks.push(value & mask);\n\t\t\t\t\t\t\t\tif ((value >> BigInt(63)) === empty) break;\n\t\t\t\t\t\t\t\tvalue >>= BigInt(64);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tarray = new Uint8Array(new BigUint64Array(chunks).buffer);\n\t\t\t\t\t\t\tarray.reverse();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tlet invert = value < 0;\n\t\t\t\t\t\t\tlet string = (invert ? ~value : value).toString(16);\n\t\t\t\t\t\t\tif (string.length % 2) {\n\t\t\t\t\t\t\t\tstring = '0' + string;\n\t\t\t\t\t\t\t} else if (parseInt(string.charAt(0), 16) >= 8) {\n\t\t\t\t\t\t\t\tstring = '00' + string;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (hasNodeBuffer) {\n\t\t\t\t\t\t\t\tarray = Buffer.from(string, 'hex');\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tarray = new Uint8Array(string.length / 2);\n\t\t\t\t\t\t\t\tfor (let i = 0; i < array.length; i++) {\n\t\t\t\t\t\t\t\t\tarray[i] = parseInt(string.slice(i * 2, i * 2 + 2), 16);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (invert) {\n\t\t\t\t\t\t\t\tfor (let i = 0; i < array.length; i++) array[i] = ~array[i];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (array.length + position > safeEnd)\n\t\t\t\t\t\t\tmakeRoom(array.length + position);\n\t\t\t\t\t\tposition = writeExtensionData(array, target, position, 0x42);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthrow new RangeError(value + ' was too large to fit in MessagePack 64-bit integer format, use' +\n\t\t\t\t\t\t\t' useBigIntExtension, or set largeBigIntToFloat to convert to float-64, or set' +\n\t\t\t\t\t\t\t' largeBigIntToString to convert to string');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tposition += 8;\n\t\t\t} else if (type === 'undefined') {\n\t\t\t\tif (this.encodeUndefinedAsNil)\n\t\t\t\t\ttarget[position++] = 0xc0;\n\t\t\t\telse {\n\t\t\t\t\ttarget[position++] = 0xd4; // a number of implementations use fixext1 with type 0, data 0 to denote undefined, so we follow suite\n\t\t\t\t\ttarget[position++] = 0;\n\t\t\t\t\ttarget[position++] = 0;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthrow new Error('Unknown type: ' + type);\n\t\t\t}\n\t\t};\n\n\t\tconst writePlainObject = (this.variableMapSize || this.coercibleKeyAsNumber || this.skipValues) ? (object) => {\n\t\t\t// this method is slightly slower, but generates \"preferred serialization\" (optimally small for smaller objects)\n\t\t\tlet keys;\n\t\t\tif (this.skipValues) {\n\t\t\t\tkeys = [];\n\t\t\t\tfor (let key in object) {\n\t\t\t\t\tif ((typeof object.hasOwnProperty !== 'function' || object.hasOwnProperty(key)) &&\n\t\t\t\t\t\t!this.skipValues.includes(object[key]))\n\t\t\t\t\t\tkeys.push(key);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tkeys = Object.keys(object);\n\t\t\t}\n\t\t\tlet length = keys.length;\n\t\t\tif (length < 0x10) {\n\t\t\t\ttarget[position++] = 0x80 | length;\n\t\t\t} else if (length < 0x10000) {\n\t\t\t\ttarget[position++] = 0xde;\n\t\t\t\ttarget[position++] = length >> 8;\n\t\t\t\ttarget[position++] = length & 0xff;\n\t\t\t} else {\n\t\t\t\ttarget[position++] = 0xdf;\n\t\t\t\ttargetView.setUint32(position, length);\n\t\t\t\tposition += 4;\n\t\t\t}\n\t\t\tlet key;\n\t\t\tif (this.coercibleKeyAsNumber) {\n\t\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\t\tkey = keys[i];\n\t\t\t\t\tlet num = Number(key);\n\t\t\t\t\tpack(isNaN(num) ? key : num);\n\t\t\t\t\tpack(object[key]);\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\t\tpack(key = keys[i]);\n\t\t\t\t\tpack(object[key]);\n\t\t\t\t}\n\t\t\t}\n\t\t} :\n\t\t(object) => {\n\t\t\ttarget[position++] = 0xde; // always using map 16, so we can preallocate and set the length afterwards\n\t\t\tlet objectOffset = position - start;\n\t\t\tposition += 2;\n\t\t\tlet size = 0;\n\t\t\tfor (let key in object) {\n\t\t\t\tif (typeof object.hasOwnProperty !== 'function' || object.hasOwnProperty(key)) {\n\t\t\t\t\tpack(key);\n\t\t\t\t\tpack(object[key]);\n\t\t\t\t\tsize++;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (size > 0xffff) {\n\t\t\t\tthrow new Error('Object is too large to serialize with fast 16-bit map size,' +\n\t\t\t\t' use the \"variableMapSize\" option to serialize this object');\n\t\t\t}\n\t\t\ttarget[objectOffset++ + start] = size >> 8;\n\t\t\ttarget[objectOffset + start] = size & 0xff;\n\t\t};\n\n\t\tconst writeRecord = this.useRecords === false ? writePlainObject :\n\t\t(options.progressiveRecords && !useTwoByteRecords) ?  // this is about 2% faster for highly stable structures, since it only requires one for-in loop (but much more expensive when new structure needs to be written)\n\t\t(object) => {\n\t\t\tlet nextTransition, transition = structures.transitions || (structures.transitions = Object.create(null));\n\t\t\tlet objectOffset = position++ - start;\n\t\t\tlet wroteKeys;\n\t\t\tfor (let key in object) {\n\t\t\t\tif (typeof object.hasOwnProperty !== 'function' || object.hasOwnProperty(key)) {\n\t\t\t\t\tnextTransition = transition[key];\n\t\t\t\t\tif (nextTransition)\n\t\t\t\t\t\ttransition = nextTransition;\n\t\t\t\t\telse {\n\t\t\t\t\t\t// record doesn't exist, create full new record and insert it\n\t\t\t\t\t\tlet keys = Object.keys(object);\n\t\t\t\t\t\tlet lastTransition = transition;\n\t\t\t\t\t\ttransition = structures.transitions;\n\t\t\t\t\t\tlet newTransitions = 0;\n\t\t\t\t\t\tfor (let i = 0, l = keys.length; i < l; i++) {\n\t\t\t\t\t\t\tlet key = keys[i];\n\t\t\t\t\t\t\tnextTransition = transition[key];\n\t\t\t\t\t\t\tif (!nextTransition) {\n\t\t\t\t\t\t\t\tnextTransition = transition[key] = Object.create(null);\n\t\t\t\t\t\t\t\tnewTransitions++;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\ttransition = nextTransition;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (objectOffset + start + 1 == position) {\n\t\t\t\t\t\t\t// first key, so we don't need to insert, we can just write record directly\n\t\t\t\t\t\t\tposition--;\n\t\t\t\t\t\t\tnewRecord(transition, keys, newTransitions);\n\t\t\t\t\t\t} else // otherwise we need to insert the record, moving existing data after the record\n\t\t\t\t\t\t\tinsertNewRecord(transition, keys, objectOffset, newTransitions);\n\t\t\t\t\t\twroteKeys = true;\n\t\t\t\t\t\ttransition = lastTransition[key];\n\t\t\t\t\t}\n\t\t\t\t\tpack(object[key]);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!wroteKeys) {\n\t\t\t\tlet recordId = transition[RECORD_SYMBOL];\n\t\t\t\tif (recordId)\n\t\t\t\t\ttarget[objectOffset + start] = recordId;\n\t\t\t\telse\n\t\t\t\t\tinsertNewRecord(transition, Object.keys(object), objectOffset, 0);\n\t\t\t}\n\t\t} :\n\t\t(object) => {\n\t\t\tlet nextTransition, transition = structures.transitions || (structures.transitions = Object.create(null));\n\t\t\tlet newTransitions = 0;\n\t\t\tfor (let key in object) if (typeof object.hasOwnProperty !== 'function' || object.hasOwnProperty(key)) {\n\t\t\t\tnextTransition = transition[key];\n\t\t\t\tif (!nextTransition) {\n\t\t\t\t\tnextTransition = transition[key] = Object.create(null);\n\t\t\t\t\tnewTransitions++;\n\t\t\t\t}\n\t\t\t\ttransition = nextTransition;\n\t\t\t}\n\t\t\tlet recordId = transition[RECORD_SYMBOL];\n\t\t\tif (recordId) {\n\t\t\t\tif (recordId >= 0x60 && useTwoByteRecords) {\n\t\t\t\t\ttarget[position++] = ((recordId -= 0x60) & 0x1f) + 0x60;\n\t\t\t\t\ttarget[position++] = recordId >> 5;\n\t\t\t\t} else\n\t\t\t\t\ttarget[position++] = recordId;\n\t\t\t} else {\n\t\t\t\tnewRecord(transition, transition.__keys__ || Object.keys(object), newTransitions);\n\t\t\t}\n\t\t\t// now write the values\n\t\t\tfor (let key in object)\n\t\t\t\tif (typeof object.hasOwnProperty !== 'function' || object.hasOwnProperty(key)) {\n\t\t\t\t\tpack(object[key]);\n\t\t\t\t}\n\t\t};\n\n\t\t// create reference to useRecords if useRecords is a function\n\t\tconst checkUseRecords = typeof this.useRecords == 'function' && this.useRecords;\n\n\t\tconst writeObject = checkUseRecords ? (object) => {\n\t\t\tcheckUseRecords(object) ? writeRecord(object) : writePlainObject(object);\n\t\t} : writeRecord;\n\n\t\tconst writeStruct = (object) => {\n\t\t\tlet newPosition = packr._writeStruct(object, target, start, position, structures, makeRoom, (value, newPosition, notifySharedUpdate) => {\n\t\t\t\tif (notifySharedUpdate)\n\t\t\t\t\treturn hasSharedUpdate = true;\n\t\t\t\tposition = newPosition;\n\t\t\t\tlet startTarget = target;\n\t\t\t\tpack(value);\n\t\t\t\tresetStructures();\n\t\t\t\tif (startTarget !== target) {\n\t\t\t\t\treturn { position, targetView, target }; // indicate the buffer was re-allocated\n\t\t\t\t}\n\t\t\t\treturn position;\n\t\t\t});\n\t\t\tif (newPosition === 0) // bail and go to a msgpack object\n\t\t\t\treturn writeObject(object);\n\t\t\tposition = newPosition;\n\t\t};\n\n\t\tconst makeRoom = (end) => {\n\t\t\tlet newSize;\n\t\t\tif (end > 0x1000000) {\n\t\t\t\t// special handling for really large buffers\n\t\t\t\tif ((end - start) > MAX_BUFFER_SIZE)\n\t\t\t\t\tthrow new Error('Packed buffer would be larger than maximum buffer size');\n\t\t\t\tnewSize = Math.min(MAX_BUFFER_SIZE,\n\t\t\t\t\tMath.round(Math.max((end - start) * (end > 0x4000000 ? 1.25 : 2), 0x400000) / 0x1000) * 0x1000);\n\t\t\t} else // faster handling for smaller buffers\n\t\t\t\tnewSize = ((Math.max((end - start) << 2, target.length - 1) >> 12) + 1) << 12;\n\t\t\tlet newBuffer = new ByteArrayAllocate(newSize);\n\t\t\ttargetView = newBuffer.dataView || (newBuffer.dataView = new DataView(newBuffer.buffer, 0, newSize));\n\t\t\tend = Math.min(end, target.length);\n\t\t\tif (target.copy)\n\t\t\t\ttarget.copy(newBuffer, 0, start, end);\n\t\t\telse\n\t\t\t\tnewBuffer.set(target.slice(start, end));\n\t\t\tposition -= start;\n\t\t\tstart = 0;\n\t\t\tsafeEnd = newBuffer.length - 10;\n\t\t\treturn target = newBuffer;\n\t\t};\n\t\tconst newRecord = (transition, keys, newTransitions) => {\n\t\t\tlet recordId = structures.nextId;\n\t\t\tif (!recordId)\n\t\t\t\trecordId = 0x40;\n\t\t\tif (recordId < sharedLimitId && this.shouldShareStructure && !this.shouldShareStructure(keys)) {\n\t\t\t\trecordId = structures.nextOwnId;\n\t\t\t\tif (!(recordId < maxStructureId))\n\t\t\t\t\trecordId = sharedLimitId;\n\t\t\t\tstructures.nextOwnId = recordId + 1;\n\t\t\t} else {\n\t\t\t\tif (recordId >= maxStructureId)// cycle back around\n\t\t\t\t\trecordId = sharedLimitId;\n\t\t\t\tstructures.nextId = recordId + 1;\n\t\t\t}\n\t\t\tlet highByte = keys.highByte = recordId >= 0x60 && useTwoByteRecords ? (recordId - 0x60) >> 5 : -1;\n\t\t\ttransition[RECORD_SYMBOL] = recordId;\n\t\t\ttransition.__keys__ = keys;\n\t\t\tstructures[recordId - 0x40] = keys;\n\n\t\t\tif (recordId < sharedLimitId) {\n\t\t\t\tkeys.isShared = true;\n\t\t\t\tstructures.sharedLength = recordId - 0x3f;\n\t\t\t\thasSharedUpdate = true;\n\t\t\t\tif (highByte >= 0) {\n\t\t\t\t\ttarget[position++] = (recordId & 0x1f) + 0x60;\n\t\t\t\t\ttarget[position++] = highByte;\n\t\t\t\t} else {\n\t\t\t\t\ttarget[position++] = recordId;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (highByte >= 0) {\n\t\t\t\t\ttarget[position++] = 0xd5; // fixext 2\n\t\t\t\t\ttarget[position++] = 0x72; // \"r\" record defintion extension type\n\t\t\t\t\ttarget[position++] = (recordId & 0x1f) + 0x60;\n\t\t\t\t\ttarget[position++] = highByte;\n\t\t\t\t} else {\n\t\t\t\t\ttarget[position++] = 0xd4; // fixext 1\n\t\t\t\t\ttarget[position++] = 0x72; // \"r\" record defintion extension type\n\t\t\t\t\ttarget[position++] = recordId;\n\t\t\t\t}\n\n\t\t\t\tif (newTransitions)\n\t\t\t\t\ttransitionsCount += serializationsSinceTransitionRebuild * newTransitions;\n\t\t\t\t// record the removal of the id, we can maintain our shared structure\n\t\t\t\tif (recordIdsToRemove.length >= maxOwnStructures)\n\t\t\t\t\trecordIdsToRemove.shift()[RECORD_SYMBOL] = 0; // we are cycling back through, and have to remove old ones\n\t\t\t\trecordIdsToRemove.push(transition);\n\t\t\t\tpack(keys);\n\t\t\t}\n\t\t};\n\t\tconst insertNewRecord = (transition, keys, insertionOffset, newTransitions) => {\n\t\t\tlet mainTarget = target;\n\t\t\tlet mainPosition = position;\n\t\t\tlet mainSafeEnd = safeEnd;\n\t\t\tlet mainStart = start;\n\t\t\ttarget = keysTarget;\n\t\t\tposition = 0;\n\t\t\tstart = 0;\n\t\t\tif (!target)\n\t\t\t\tkeysTarget = target = new ByteArrayAllocate(8192);\n\t\t\tsafeEnd = target.length - 10;\n\t\t\tnewRecord(transition, keys, newTransitions);\n\t\t\tkeysTarget = target;\n\t\t\tlet keysPosition = position;\n\t\t\ttarget = mainTarget;\n\t\t\tposition = mainPosition;\n\t\t\tsafeEnd = mainSafeEnd;\n\t\t\tstart = mainStart;\n\t\t\tif (keysPosition > 1) {\n\t\t\t\tlet newEnd = position + keysPosition - 1;\n\t\t\t\tif (newEnd > safeEnd)\n\t\t\t\t\tmakeRoom(newEnd);\n\t\t\t\tlet insertionPosition = insertionOffset + start;\n\t\t\t\ttarget.copyWithin(insertionPosition + keysPosition, insertionPosition + 1, position);\n\t\t\t\ttarget.set(keysTarget.slice(0, keysPosition), insertionPosition);\n\t\t\t\tposition = newEnd;\n\t\t\t} else {\n\t\t\t\ttarget[insertionOffset + start] = keysTarget[0];\n\t\t\t}\n\t\t};\n\t}\n\tuseBuffer(buffer) {\n\t\t// this means we are finished using our own buffer and we can write over it safely\n\t\ttarget = buffer;\n\t\ttarget.dataView || (target.dataView = new DataView(target.buffer, target.byteOffset, target.byteLength));\n\t\ttargetView = target.dataView;\n\t\tposition = 0;\n\t}\n\tset position (value) {\n\t\tposition = value;\n\t}\n\tget position() {\n\t\treturn position;\n\t}\n\tclearSharedData() {\n\t\tif (this.structures)\n\t\t\tthis.structures = [];\n\t\tif (this.typedStructs)\n\t\t\tthis.typedStructs = [];\n\t}\n}\n\nextensionClasses = [ Date, Set, Error, RegExp, ArrayBuffer, Object.getPrototypeOf(Uint8Array.prototype).constructor /*TypedArray*/, DataView, C1Type ];\nextensions = [{\n\tpack(date, allocateForWrite, pack) {\n\t\tlet seconds = date.getTime() / 1000;\n\t\tif ((this.useTimestamp32 || date.getMilliseconds() === 0) && seconds >= 0 && seconds < 0x100000000) {\n\t\t\t// Timestamp 32\n\t\t\tlet { target, targetView, position} = allocateForWrite(6);\n\t\t\ttarget[position++] = 0xd6;\n\t\t\ttarget[position++] = 0xff;\n\t\t\ttargetView.setUint32(position, seconds);\n\t\t} else if (seconds > 0 && seconds < 0x100000000) {\n\t\t\t// Timestamp 64\n\t\t\tlet { target, targetView, position} = allocateForWrite(10);\n\t\t\ttarget[position++] = 0xd7;\n\t\t\ttarget[position++] = 0xff;\n\t\t\ttargetView.setUint32(position, date.getMilliseconds() * 4000000 + ((seconds / 1000 / 0x100000000) >> 0));\n\t\t\ttargetView.setUint32(position + 4, seconds);\n\t\t} else if (isNaN(seconds)) {\n\t\t\tif (this.onInvalidDate) {\n\t\t\t\tallocateForWrite(0);\n\t\t\t\treturn pack(this.onInvalidDate());\n\t\t\t}\n\t\t\t// Intentionally invalid timestamp\n\t\t\tlet { target, targetView, position} = allocateForWrite(3);\n\t\t\ttarget[position++] = 0xd4;\n\t\t\ttarget[position++] = 0xff;\n\t\t\ttarget[position++] = 0xff;\n\t\t} else {\n\t\t\t// Timestamp 96\n\t\t\tlet { target, targetView, position} = allocateForWrite(15);\n\t\t\ttarget[position++] = 0xc7;\n\t\t\ttarget[position++] = 12;\n\t\t\ttarget[position++] = 0xff;\n\t\t\ttargetView.setUint32(position, date.getMilliseconds() * 1000000);\n\t\t\ttargetView.setBigInt64(position + 4, BigInt(Math.floor(seconds)));\n\t\t}\n\t}\n}, {\n\tpack(set, allocateForWrite, pack) {\n\t\tif (this.setAsEmptyObject) {\n\t\t\tallocateForWrite(0);\n\t\t\treturn pack({});\n\t\t}\n\t\tlet array = Array.from(set);\n\t\tlet { target, position} = allocateForWrite(this.moreTypes ? 3 : 0);\n\t\tif (this.moreTypes) {\n\t\t\ttarget[position++] = 0xd4;\n\t\t\ttarget[position++] = 0x73; // 's' for Set\n\t\t\ttarget[position++] = 0;\n\t\t}\n\t\tpack(array);\n\t}\n}, {\n\tpack(error, allocateForWrite, pack) {\n\t\tlet { target, position} = allocateForWrite(this.moreTypes ? 3 : 0);\n\t\tif (this.moreTypes) {\n\t\t\ttarget[position++] = 0xd4;\n\t\t\ttarget[position++] = 0x65; // 'e' for error\n\t\t\ttarget[position++] = 0;\n\t\t}\n\t\tpack([ error.name, error.message, error.cause ]);\n\t}\n}, {\n\tpack(regex, allocateForWrite, pack) {\n\t\tlet { target, position} = allocateForWrite(this.moreTypes ? 3 : 0);\n\t\tif (this.moreTypes) {\n\t\t\ttarget[position++] = 0xd4;\n\t\t\ttarget[position++] = 0x78; // 'x' for regeXp\n\t\t\ttarget[position++] = 0;\n\t\t}\n\t\tpack([ regex.source, regex.flags ]);\n\t}\n}, {\n\tpack(arrayBuffer, allocateForWrite) {\n\t\tif (this.moreTypes)\n\t\t\twriteExtBuffer(arrayBuffer, 0x10, allocateForWrite);\n\t\telse\n\t\t\twriteBuffer(hasNodeBuffer ? Buffer.from(arrayBuffer) : new Uint8Array(arrayBuffer), allocateForWrite);\n\t}\n}, {\n\tpack(typedArray, allocateForWrite) {\n\t\tlet constructor = typedArray.constructor;\n\t\tif (constructor !== ByteArray && this.moreTypes)\n\t\t\twriteExtBuffer(typedArray, typedArrays.indexOf(constructor.name), allocateForWrite);\n\t\telse\n\t\t\twriteBuffer(typedArray, allocateForWrite);\n\t}\n}, {\n\tpack(arrayBuffer, allocateForWrite) {\n\t\tif (this.moreTypes)\n\t\t\twriteExtBuffer(arrayBuffer, 0x11, allocateForWrite);\n\t\telse\n\t\t\twriteBuffer(hasNodeBuffer ? Buffer.from(arrayBuffer) : new Uint8Array(arrayBuffer), allocateForWrite);\n\t}\n}, {\n\tpack(c1, allocateForWrite) { // specific 0xC1 object\n\t\tlet { target, position} = allocateForWrite(1);\n\t\ttarget[position] = 0xc1;\n\t}\n}];\n\nfunction writeExtBuffer(typedArray, type, allocateForWrite, encode) {\n\tlet length = typedArray.byteLength;\n\tif (length + 1 < 0x100) {\n\t\tvar { target, position } = allocateForWrite(4 + length);\n\t\ttarget[position++] = 0xc7;\n\t\ttarget[position++] = length + 1;\n\t} else if (length + 1 < 0x10000) {\n\t\tvar { target, position } = allocateForWrite(5 + length);\n\t\ttarget[position++] = 0xc8;\n\t\ttarget[position++] = (length + 1) >> 8;\n\t\ttarget[position++] = (length + 1) & 0xff;\n\t} else {\n\t\tvar { target, position, targetView } = allocateForWrite(7 + length);\n\t\ttarget[position++] = 0xc9;\n\t\ttargetView.setUint32(position, length + 1); // plus one for the type byte\n\t\tposition += 4;\n\t}\n\ttarget[position++] = 0x74; // \"t\" for typed array\n\ttarget[position++] = type;\n\tif (!typedArray.buffer) typedArray = new Uint8Array(typedArray);\n\ttarget.set(new Uint8Array(typedArray.buffer, typedArray.byteOffset, typedArray.byteLength), position);\n}\nfunction writeBuffer(buffer, allocateForWrite) {\n\tlet length = buffer.byteLength;\n\tvar target, position;\n\tif (length < 0x100) {\n\t\tvar { target, position } = allocateForWrite(length + 2);\n\t\ttarget[position++] = 0xc4;\n\t\ttarget[position++] = length;\n\t} else if (length < 0x10000) {\n\t\tvar { target, position } = allocateForWrite(length + 3);\n\t\ttarget[position++] = 0xc5;\n\t\ttarget[position++] = length >> 8;\n\t\ttarget[position++] = length & 0xff;\n\t} else {\n\t\tvar { target, position, targetView } = allocateForWrite(length + 5);\n\t\ttarget[position++] = 0xc6;\n\t\ttargetView.setUint32(position, length);\n\t\tposition += 4;\n\t}\n\ttarget.set(buffer, position);\n}\n\nfunction writeExtensionData(result, target, position, type) {\n\tlet length = result.length;\n\tswitch (length) {\n\t\tcase 1:\n\t\t\ttarget[position++] = 0xd4;\n\t\t\tbreak;\n\t\tcase 2:\n\t\t\ttarget[position++] = 0xd5;\n\t\t\tbreak;\n\t\tcase 4:\n\t\t\ttarget[position++] = 0xd6;\n\t\t\tbreak;\n\t\tcase 8:\n\t\t\ttarget[position++] = 0xd7;\n\t\t\tbreak;\n\t\tcase 16:\n\t\t\ttarget[position++] = 0xd8;\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tif (length < 0x100) {\n\t\t\t\ttarget[position++] = 0xc7;\n\t\t\t\ttarget[position++] = length;\n\t\t\t} else if (length < 0x10000) {\n\t\t\t\ttarget[position++] = 0xc8;\n\t\t\t\ttarget[position++] = length >> 8;\n\t\t\t\ttarget[position++] = length & 0xff;\n\t\t\t} else {\n\t\t\t\ttarget[position++] = 0xc9;\n\t\t\t\ttarget[position++] = length >> 24;\n\t\t\t\ttarget[position++] = (length >> 16) & 0xff;\n\t\t\t\ttarget[position++] = (length >> 8) & 0xff;\n\t\t\t\ttarget[position++] = length & 0xff;\n\t\t\t}\n\t}\n\ttarget[position++] = type;\n\ttarget.set(result, position);\n\tposition += length;\n\treturn position;\n}\n\nfunction insertIds(serialized, idsToInsert) {\n\t// insert the ids that need to be referenced for structured clones\n\tlet nextId;\n\tlet distanceToMove = idsToInsert.length * 6;\n\tlet lastEnd = serialized.length - distanceToMove;\n\twhile (nextId = idsToInsert.pop()) {\n\t\tlet offset = nextId.offset;\n\t\tlet id = nextId.id;\n\t\tserialized.copyWithin(offset + distanceToMove, offset, lastEnd);\n\t\tdistanceToMove -= 6;\n\t\tlet position = offset + distanceToMove;\n\t\tserialized[position++] = 0xd6;\n\t\tserialized[position++] = 0x69; // 'i'\n\t\tserialized[position++] = id >> 24;\n\t\tserialized[position++] = (id >> 16) & 0xff;\n\t\tserialized[position++] = (id >> 8) & 0xff;\n\t\tserialized[position++] = id & 0xff;\n\t\tlastEnd = offset;\n\t}\n\treturn serialized;\n}\n\nfunction writeBundles(start, pack, incrementPosition) {\n\tif (bundledStrings.length > 0) {\n\t\ttargetView.setUint32(bundledStrings.position + start, position + incrementPosition - bundledStrings.position - start);\n\t\tbundledStrings.stringsPosition = position - start;\n\t\tlet writeStrings = bundledStrings;\n\t\tbundledStrings = null;\n\t\tpack(writeStrings[0]);\n\t\tpack(writeStrings[1]);\n\t}\n}\n\nexport function addExtension(extension) {\n\tif (extension.Class) {\n\t\tif (!extension.pack && !extension.write)\n\t\t\tthrow new Error('Extension has no pack or write function');\n\t\tif (extension.pack && !extension.type)\n\t\t\tthrow new Error('Extension has no type (numeric code to identify the extension)');\n\t\textensionClasses.unshift(extension.Class);\n\t\textensions.unshift(extension);\n\t}\n\tunpackAddExtension(extension);\n}\nfunction prepareStructures(structures, packr) {\n\tstructures.isCompatible = (existingStructures) => {\n\t\tlet compatible = !existingStructures || ((packr.lastNamedStructuresLength || 0) === existingStructures.length);\n\t\tif (!compatible) // we want to merge these existing structures immediately since we already have it and we are in the right transaction\n\t\t\tpackr._mergeStructures(existingStructures);\n\t\treturn compatible;\n\t};\n\treturn structures;\n}\n\n// Marker for downstream libraries (e.g. structon) to detect that this Packr\n// supports per-instance struct-encoding hooks (this._writeStruct,\n// this._prepareStructures).  See `pack` for the dispatch.\nPackr.SUPPORTS_STRUCT_HOOKS = true;\n\nlet defaultPackr = new Packr({ useRecords: false });\nexport const pack = defaultPackr.pack;\nexport const encode = defaultPackr.pack;\nexport const Encoder = Packr;\nexport { FLOAT32_OPTIONS } from './unpack.js';\nimport { FLOAT32_OPTIONS } from './unpack.js';\nexport const { NEVER, ALWAYS, DECIMAL_ROUND, DECIMAL_FIT } = FLOAT32_OPTIONS;\nexport const REUSE_BUFFER_MODE = 512;\nexport const RESET_BUFFER_MODE = 1024;\nexport const RESERVE_START_SPACE = 2048;\n","import { Transform } from 'stream';\nimport { Packr } from './pack.js';\nimport { Unpackr } from './unpack.js';\nvar DEFAULT_OPTIONS = {objectMode: true};\n\nexport class PackrStream extends Transform {\n\tconstructor(options) {\n\t\tif (!options)\n\t\t\toptions = {};\n\t\toptions.writableObjectMode = true;\n\t\tsuper(options);\n\t\toptions.sequential = true;\n\t\tthis.packr = options.packr || new Packr(options);\n\t}\n\t_transform(value, encoding, callback) {\n\t\tthis.push(this.packr.pack(value));\n\t\tcallback();\n\t}\n}\n\nexport class UnpackrStream extends Transform {\n\tconstructor(options) {\n\t\tif (!options)\n\t\t\toptions = {};\n\t\toptions.objectMode = true;\n\t\tsuper(options);\n\t\toptions.structures = [];\n\t\tthis.maxIncompleteBufferSize = options.maxIncompleteBufferSize !== undefined ? options.maxIncompleteBufferSize : 0x4000000;\n\t\tthis.unpackr = options.unpackr || new Unpackr(options);\n\t}\n\t_transform(chunk, encoding, callback) {\n\t\tif (this.incompleteBuffer) {\n\t\t\tchunk = Buffer.concat([this.incompleteBuffer, chunk]);\n\t\t\tthis.incompleteBuffer = null;\n\t\t}\n\t\tlet values;\n\t\ttry {\n\t\t\tvalues = this.unpackr.unpackMultiple(chunk);\n\t\t} catch(error) {\n\t\t\tif (error.incomplete) {\n\t\t\t\tlet incompleteBuffer = chunk.slice(error.lastPosition);\n\t\t\t\tif (incompleteBuffer.length > this.maxIncompleteBufferSize) {\n\t\t\t\t\tthis.incompleteBuffer = null;\n\t\t\t\t\treturn callback(new Error('Maximum incomplete buffer size exceeded'));\n\t\t\t\t}\n\t\t\t\tthis.incompleteBuffer = incompleteBuffer;\n\t\t\t\tvalues = error.values;\n\t\t\t} else {\n\t\t\t\treturn callback(error);\n\t\t\t}\n\t\t}\n\t\tfor (let value of values || []) {\n\t\t\tif (value === null)\n\t\t\t\tvalue = this.getNullValue();\n\t\t\tthis.push(value);\n\t\t}\n\t\tcallback();\n\t}\n\tgetNullValue() {\n\t\treturn Symbol.for(null);\n\t}\n}\n","import { Packr } from './pack.js';\nimport { Unpackr } from './unpack.js';\n\n/**\n * Given an Iterable first argument, returns an Iterable where each value is packed as a Buffer\n * If the argument is only Async Iterable, the return value will be an Async Iterable.\n * @param {Iterable|Iterator|AsyncIterable|AsyncIterator} objectIterator - iterable source, like a Readable object stream, an array, Set, or custom object\n * @param {options} [options] - msgpackr pack options\n * @returns {IterableIterator|Promise.<AsyncIterableIterator>}\n */\nexport function packIter (objectIterator, options = {}) {\n  if (!objectIterator || typeof objectIterator !== 'object') {\n    throw new Error('first argument must be an Iterable, Async Iterable, or a Promise for an Async Iterable');\n  } else if (typeof objectIterator[Symbol.iterator] === 'function') {\n    return packIterSync(objectIterator, options);\n  } else if (typeof objectIterator.then === 'function' || typeof objectIterator[Symbol.asyncIterator] === 'function') {\n    return packIterAsync(objectIterator, options);\n  } else {\n    throw new Error('first argument must be an Iterable, Async Iterable, Iterator, Async Iterator, or a Promise');\n  }\n}\n\nfunction * packIterSync (objectIterator, options) {\n  const packr = new Packr(options);\n  for (const value of objectIterator) {\n    yield packr.pack(value);\n  }\n}\n\nasync function * packIterAsync (objectIterator, options) {\n  const packr = new Packr(options);\n  for await (const value of objectIterator) {\n    yield packr.pack(value);\n  }\n}\n\n/**\n * Given an Iterable/Iterator input which yields buffers, returns an IterableIterator which yields sync decoded objects\n * Or, given an Async Iterable/Iterator which yields promises resolving in buffers, returns an AsyncIterableIterator.\n * @param {Iterable|Iterator|AsyncIterable|AsyncIterableIterator} bufferIterator\n * @param {object} [options] - unpackr options\n * @returns {IterableIterator|Promise.<AsyncIterableIterator}\n */\nexport function unpackIter (bufferIterator, options = {}) {\n  if (!bufferIterator || typeof bufferIterator !== 'object') {\n    throw new Error('first argument must be an Iterable, Async Iterable, Iterator, Async Iterator, or a promise');\n  }\n\n  const unpackr = new Unpackr(options);\n  let incomplete;\n  const parser = (chunk) => {\n    let yields;\n    // if there's incomplete data from previous chunk, concatinate and try again\n    if (incomplete) {\n      chunk = Buffer.concat([incomplete, chunk]);\n      incomplete = undefined;\n    }\n\n    try {\n      yields = unpackr.unpackMultiple(chunk);\n    } catch (err) {\n      if (err.incomplete) {\n        incomplete = chunk.slice(err.lastPosition);\n        yields = err.values;\n      } else {\n        throw err;\n      }\n    }\n    return yields;\n  };\n\n  if (typeof bufferIterator[Symbol.iterator] === 'function') {\n    return (function * iter () {\n      for (const value of bufferIterator) {\n        yield * parser(value);\n      }\n    })();\n  } else if (typeof bufferIterator[Symbol.asyncIterator] === 'function') {\n    return (async function * iter () {\n      for await (const value of bufferIterator) {\n        yield * parser(value);\n      }\n    })();\n  }\n}\nexport const decodeIter = unpackIter;\nexport const encodeIter = packIter;","export { Packr, Encoder, addExtension, pack, encode, NEVER, ALWAYS, DECIMAL_ROUND, DECIMAL_FIT, REUSE_BUFFER_MODE, RESET_BUFFER_MODE, RESERVE_START_SPACE } from './pack.js';\nexport { Unpackr, Decoder, C1, unpack, unpackMultiple, decode, FLOAT32_OPTIONS, clearSource, roundFloat32, isNativeAccelerationEnabled } from './unpack.js';\nexport { PackrStream, UnpackrStream, PackrStream as EncoderStream, UnpackrStream as DecoderStream } from './stream.js';\nexport { decodeIter, encodeIter } from './iterators.js';\nexport const useRecords = false;\nexport const mapsAsObjects = true;\nimport { setExtractor } from './unpack.js';\nimport { createRequire } from 'module';\n\nconst nativeAccelerationDisabled = process.env.MSGPACKR_NATIVE_ACCELERATION_DISABLED !== undefined && process.env.MSGPACKR_NATIVE_ACCELERATION_DISABLED.toLowerCase() === 'true';\n\nif (!nativeAccelerationDisabled) {\n\tlet extractor;\n\ttry {\n\t\tif (typeof require == 'function')\n\t\t\textractor = require('msgpackr-extract');\n\t\telse\n\t\t\textractor = createRequire(import.meta.url)('msgpackr-extract');\n\t\tif (extractor)\n\t\t\tsetExtractor(extractor.extractStrings);\n\t} catch (error) {\n\t\t// native module is optional\n\t}\n}"],"names":["position","bundledStrings","isNativeAccelerationEnabled","addExtension","unpackAddExtension","Transform","createRequire"],"mappings":"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"}