{"version":3,"file":"a43cfaf1-dd8829c419116ed7f2fe.js","mappings":"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","sources":["webpack://phmsa-enforcement-data/./node_modules/csv-stringify/dist/esm/index.js"],"sourcesContent":["var domain;\n\n// This constructor is used to store event handlers. Instantiating this is\n// faster than explicitly calling `Object.create(null)` to get a \"clean\" empty\n// object (tested with v8 v4.9).\nfunction EventHandlers() {}\nEventHandlers.prototype = Object.create(null);\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\n\n// nodejs oddity\n// require('events') === require('events').EventEmitter\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.usingDomains = false;\n\nEventEmitter.prototype.domain = undefined;\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nEventEmitter.defaultMaxListeners = 10;\n\nEventEmitter.init = function() {\n this.domain = null;\n if (EventEmitter.usingDomains) {\n // if there is an active domain, then attach to it.\n if (domain.active) ;\n }\n\n if (!this._events || this._events === Object.getPrototypeOf(this)._events) {\n this._events = new EventHandlers();\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || isNaN(n))\n throw new TypeError('\"n\" argument must be a positive number');\n this._maxListeners = n;\n return this;\n};\n\nfunction $getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return $getMaxListeners(this);\n};\n\n// These standalone emit* functions are used to optimize calling of event\n// handlers for fast cases because emit() itself often has a variable number of\n// arguments and can be deoptimized because of that. These functions always have\n// the same number of arguments and thus do not get deoptimized, so the code\n// inside them can execute faster.\nfunction emitNone(handler, isFn, self) {\n if (isFn)\n handler.call(self);\n else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n listeners[i].call(self);\n }\n}\nfunction emitOne(handler, isFn, self, arg1) {\n if (isFn)\n handler.call(self, arg1);\n else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n listeners[i].call(self, arg1);\n }\n}\nfunction emitTwo(handler, isFn, self, arg1, arg2) {\n if (isFn)\n handler.call(self, arg1, arg2);\n else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n listeners[i].call(self, arg1, arg2);\n }\n}\nfunction emitThree(handler, isFn, self, arg1, arg2, arg3) {\n if (isFn)\n handler.call(self, arg1, arg2, arg3);\n else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n listeners[i].call(self, arg1, arg2, arg3);\n }\n}\n\nfunction emitMany(handler, isFn, self, args) {\n if (isFn)\n handler.apply(self, args);\n else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n listeners[i].apply(self, args);\n }\n}\n\nEventEmitter.prototype.emit = function emit(type) {\n var er, handler, len, args, i, events, domain;\n var doError = (type === 'error');\n\n events = this._events;\n if (events)\n doError = (doError && events.error == null);\n else if (!doError)\n return false;\n\n domain = this.domain;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n er = arguments[1];\n if (domain) {\n if (!er)\n er = new Error('Uncaught, unspecified \"error\" event');\n er.domainEmitter = this;\n er.domain = domain;\n er.domainThrown = false;\n domain.emit('error', er);\n } else if (er instanceof Error) {\n throw er; // Unhandled 'error' event\n } else {\n // At least give some kind of context to the user\n var err = new Error('Uncaught, unspecified \"error\" event. (' + er + ')');\n err.context = er;\n throw err;\n }\n return false;\n }\n\n handler = events[type];\n\n if (!handler)\n return false;\n\n var isFn = typeof handler === 'function';\n len = arguments.length;\n switch (len) {\n // fast cases\n case 1:\n emitNone(handler, isFn, this);\n break;\n case 2:\n emitOne(handler, isFn, this, arguments[1]);\n break;\n case 3:\n emitTwo(handler, isFn, this, arguments[1], arguments[2]);\n break;\n case 4:\n emitThree(handler, isFn, this, arguments[1], arguments[2], arguments[3]);\n break;\n // slower\n default:\n args = new Array(len - 1);\n for (i = 1; i < len; i++)\n args[i - 1] = arguments[i];\n emitMany(handler, isFn, this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n if (typeof listener !== 'function')\n throw new TypeError('\"listener\" argument must be a function');\n\n events = target._events;\n if (!events) {\n events = target._events = new EventHandlers();\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (!existing) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] = prepend ? [listener, existing] :\n [existing, listener];\n } else {\n // If we've already got an array, just append.\n if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n }\n\n // Check for listener leak\n if (!existing.warned) {\n m = $getMaxListeners(target);\n if (m && m > 0 && existing.length > m) {\n existing.warned = true;\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + type + ' listeners added. ' +\n 'Use emitter.setMaxListeners() to increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n emitWarning(w);\n }\n }\n }\n\n return target;\n}\nfunction emitWarning(e) {\n typeof console.warn === 'function' ? console.warn(e) : console.log(e);\n}\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction _onceWrap(target, type, listener) {\n var fired = false;\n function g() {\n target.removeListener(type, g);\n if (!fired) {\n fired = true;\n listener.apply(target, arguments);\n }\n }\n g.listener = listener;\n return g;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n if (typeof listener !== 'function')\n throw new TypeError('\"listener\" argument must be a function');\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n if (typeof listener !== 'function')\n throw new TypeError('\"listener\" argument must be a function');\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// emits a 'removeListener' event iff the listener was removed\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n if (typeof listener !== 'function')\n throw new TypeError('\"listener\" argument must be a function');\n\n events = this._events;\n if (!events)\n return this;\n\n list = events[type];\n if (!list)\n return this;\n\n if (list === listener || (list.listener && list.listener === listener)) {\n if (--this._eventsCount === 0)\n this._events = new EventHandlers();\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length; i-- > 0;) {\n if (list[i] === listener ||\n (list[i].listener && list[i].listener === listener)) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (list.length === 1) {\n list[0] = undefined;\n if (--this._eventsCount === 0) {\n this._events = new EventHandlers();\n return this;\n } else {\n delete events[type];\n }\n } else {\n spliceOne(list, position);\n }\n\n if (events.removeListener)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events;\n\n events = this._events;\n if (!events)\n return this;\n\n // not listening for removeListener, no need to emit\n if (!events.removeListener) {\n if (arguments.length === 0) {\n this._events = new EventHandlers();\n this._eventsCount = 0;\n } else if (events[type]) {\n if (--this._eventsCount === 0)\n this._events = new EventHandlers();\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n for (var i = 0, key; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = new EventHandlers();\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners) {\n // LIFO order\n do {\n this.removeListener(type, listeners[listeners.length - 1]);\n } while (listeners[0]);\n }\n\n return this;\n };\n\nEventEmitter.prototype.listeners = function listeners(type) {\n var evlistener;\n var ret;\n var events = this._events;\n\n if (!events)\n ret = [];\n else {\n evlistener = events[type];\n if (!evlistener)\n ret = [];\n else if (typeof evlistener === 'function')\n ret = [evlistener.listener || evlistener];\n else\n ret = unwrapListeners(evlistener);\n }\n\n return ret;\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount$1.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount$1;\nfunction listenerCount$1(type) {\n var events = this._events;\n\n if (events) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? Reflect.ownKeys(this._events) : [];\n};\n\n// About 1.5x faster than the two-arg version of Array#splice().\nfunction spliceOne(list, index) {\n for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1)\n list[i] = list[k];\n list.pop();\n}\n\nfunction arrayClone(arr, i) {\n var copy = new Array(i);\n while (i--)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\nvar global$1 = (typeof global !== \"undefined\" ? global :\n typeof self !== \"undefined\" ? self :\n typeof window !== \"undefined\" ? window : {});\n\nvar lookup = [];\nvar revLookup = [];\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array;\nvar inited = false;\nfunction init () {\n inited = true;\n var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n for (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i];\n revLookup[code.charCodeAt(i)] = i;\n }\n\n revLookup['-'.charCodeAt(0)] = 62;\n revLookup['_'.charCodeAt(0)] = 63;\n}\n\nfunction toByteArray (b64) {\n if (!inited) {\n init();\n }\n var i, j, l, tmp, placeHolders, arr;\n var len = b64.length;\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // the number of equal signs (place holders)\n // if there are two placeholders, than the two characters before it\n // represent one byte\n // if there is only one, then the three characters before it represent 2 bytes\n // this is just a cheap hack to not do indexOf twice\n placeHolders = b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0;\n\n // base64 is 4/3 + up to two characters of the original data\n arr = new Arr(len * 3 / 4 - placeHolders);\n\n // if there are placeholders, only get up to the last complete 4 chars\n l = placeHolders > 0 ? len - 4 : len;\n\n var L = 0;\n\n for (i = 0, j = 0; i < l; i += 4, j += 3) {\n tmp = (revLookup[b64.charCodeAt(i)] << 18) | (revLookup[b64.charCodeAt(i + 1)] << 12) | (revLookup[b64.charCodeAt(i + 2)] << 6) | revLookup[b64.charCodeAt(i + 3)];\n arr[L++] = (tmp >> 16) & 0xFF;\n arr[L++] = (tmp >> 8) & 0xFF;\n arr[L++] = tmp & 0xFF;\n }\n\n if (placeHolders === 2) {\n tmp = (revLookup[b64.charCodeAt(i)] << 2) | (revLookup[b64.charCodeAt(i + 1)] >> 4);\n arr[L++] = tmp & 0xFF;\n } else if (placeHolders === 1) {\n tmp = (revLookup[b64.charCodeAt(i)] << 10) | (revLookup[b64.charCodeAt(i + 1)] << 4) | (revLookup[b64.charCodeAt(i + 2)] >> 2);\n arr[L++] = (tmp >> 8) & 0xFF;\n arr[L++] = tmp & 0xFF;\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp;\n var output = [];\n for (var i = start; i < end; i += 3) {\n tmp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2]);\n output.push(tripletToBase64(tmp));\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n if (!inited) {\n init();\n }\n var tmp;\n var len = uint8.length;\n var extraBytes = len % 3; // if we have 1 byte left, pad 2 bytes\n var output = '';\n var parts = [];\n var maxChunkLength = 16383; // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)));\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1];\n output += lookup[tmp >> 2];\n output += lookup[(tmp << 4) & 0x3F];\n output += '==';\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + (uint8[len - 1]);\n output += lookup[tmp >> 10];\n output += lookup[(tmp >> 4) & 0x3F];\n output += lookup[(tmp << 2) & 0x3F];\n output += '=';\n }\n\n parts.push(output);\n\n return parts.join('')\n}\n\nfunction read (buffer, offset, isLE, mLen, nBytes) {\n var e, m;\n var eLen = nBytes * 8 - mLen - 1;\n var eMax = (1 << eLen) - 1;\n var eBias = eMax >> 1;\n var nBits = -7;\n var i = isLE ? (nBytes - 1) : 0;\n var d = isLE ? -1 : 1;\n var s = buffer[offset + i];\n\n i += d;\n\n e = s & ((1 << (-nBits)) - 1);\n s >>= (-nBits);\n nBits += eLen;\n for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1);\n e >>= (-nBits);\n nBits += mLen;\n for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias;\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen);\n e = e - eBias;\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nfunction write (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c;\n var eLen = nBytes * 8 - mLen - 1;\n var eMax = (1 << eLen) - 1;\n var eBias = eMax >> 1;\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0);\n var i = isLE ? 0 : (nBytes - 1);\n var d = isLE ? 1 : -1;\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0;\n\n value = Math.abs(value);\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0;\n e = eMax;\n } else {\n e = Math.floor(Math.log(value) / Math.LN2);\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--;\n c *= 2;\n }\n if (e + eBias >= 1) {\n value += rt / c;\n } else {\n value += rt * Math.pow(2, 1 - eBias);\n }\n if (value * c >= 2) {\n e++;\n c /= 2;\n }\n\n if (e + eBias >= eMax) {\n m = 0;\n e = eMax;\n } else if (e + eBias >= 1) {\n m = (value * c - 1) * Math.pow(2, mLen);\n e = e + eBias;\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen);\n e = 0;\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m;\n eLen += mLen;\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128;\n}\n\nvar toString = {}.toString;\n\nvar isArray$1 = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n\nvar INSPECT_MAX_BYTES = 50;\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global$1.TYPED_ARRAY_SUPPORT !== undefined\n ? global$1.TYPED_ARRAY_SUPPORT\n : true;\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nkMaxLength();\n\nfunction kMaxLength () {\n return Buffer.TYPED_ARRAY_SUPPORT\n ? 0x7fffffff\n : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n if (kMaxLength() < length) {\n throw new RangeError('Invalid typed array length')\n }\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = new Uint8Array(length);\n that.__proto__ = Buffer.prototype;\n } else {\n // Fallback: Return an object instance of the Buffer class\n if (that === null) {\n that = new Buffer(length);\n }\n that.length = length;\n }\n\n return that\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, encodingOrOffset, length)\n }\n\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new Error(\n 'If encoding is specified then the first argument must be a string'\n )\n }\n return allocUnsafe(this, arg)\n }\n return from(this, arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192; // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n arr.__proto__ = Buffer.prototype;\n return arr\n};\n\nfunction from (that, value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number')\n }\n\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, encodingOrOffset, length)\n }\n\n if (typeof value === 'string') {\n return fromString(that, value, encodingOrOffset)\n }\n\n return fromObject(that, value)\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(null, value, encodingOrOffset, length)\n};\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype;\n Buffer.__proto__ = Uint8Array;\n if (typeof Symbol !== 'undefined' && Symbol.species &&\n Buffer[Symbol.species] === Buffer) ;\n}\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number')\n } else if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative')\n }\n}\n\nfunction alloc (that, size, fill, encoding) {\n assertSize(size);\n if (size <= 0) {\n return createBuffer(that, size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(that, size).fill(fill, encoding)\n : createBuffer(that, size).fill(fill)\n }\n return createBuffer(that, size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(null, size, fill, encoding)\n};\n\nfunction allocUnsafe (that, size) {\n assertSize(size);\n that = createBuffer(that, size < 0 ? 0 : checked(size) | 0);\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n that[i] = 0;\n }\n }\n return that\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(null, size)\n};\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(null, size)\n};\n\nfunction fromString (that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8';\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding')\n }\n\n var length = byteLength(string, encoding) | 0;\n that = createBuffer(that, length);\n\n var actual = that.write(string, encoding);\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n that = that.slice(0, actual);\n }\n\n return that\n}\n\nfunction fromArrayLike (that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0;\n that = createBuffer(that, length);\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255;\n }\n return that\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n array.byteLength; // this throws if `array` is not a valid ArrayBuffer\n\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds')\n }\n\n if (byteOffset === undefined && length === undefined) {\n array = new Uint8Array(array);\n } else if (length === undefined) {\n array = new Uint8Array(array, byteOffset);\n } else {\n array = new Uint8Array(array, byteOffset, length);\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = array;\n that.__proto__ = Buffer.prototype;\n } else {\n // Fallback: Return an object instance of the Buffer class\n that = fromArrayLike(that, array);\n }\n return that\n}\n\nfunction fromObject (that, obj) {\n if (internalIsBuffer(obj)) {\n var len = checked(obj.length) | 0;\n that = createBuffer(that, len);\n\n if (that.length === 0) {\n return that\n }\n\n obj.copy(that, 0, 0, len);\n return that\n }\n\n if (obj) {\n if ((typeof ArrayBuffer !== 'undefined' &&\n obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n if (typeof obj.length !== 'number' || isnan(obj.length)) {\n return createBuffer(that, 0)\n }\n return fromArrayLike(that, obj)\n }\n\n if (obj.type === 'Buffer' && isArray$1(obj.data)) {\n return fromArrayLike(that, obj.data)\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n // Note: cannot use `length < kMaxLength()` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + kMaxLength().toString(16) + ' bytes')\n }\n return length | 0\n}\nBuffer.isBuffer = isBuffer;\nfunction internalIsBuffer (b) {\n return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n if (!internalIsBuffer(a) || !internalIsBuffer(b)) {\n throw new TypeError('Arguments must be Buffers')\n }\n\n if (a === b) return 0\n\n var x = a.length;\n var y = b.length;\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i];\n y = b[i];\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n};\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n};\n\nBuffer.concat = function concat (list, length) {\n if (!isArray$1(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i;\n if (length === undefined) {\n length = 0;\n for (i = 0; i < list.length; ++i) {\n length += list[i].length;\n }\n }\n\n var buffer = Buffer.allocUnsafe(length);\n var pos = 0;\n for (i = 0; i < list.length; ++i) {\n var buf = list[i];\n if (!internalIsBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n buf.copy(buffer, pos);\n pos += buf.length;\n }\n return buffer\n};\n\nfunction byteLength (string, encoding) {\n if (internalIsBuffer(string)) {\n return string.length\n }\n if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n string = '' + string;\n }\n\n var len = string.length;\n if (len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false;\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n case undefined:\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) return utf8ToBytes(string).length // assume utf8\n encoding = ('' + encoding).toLowerCase();\n loweredCase = true;\n }\n }\n}\nBuffer.byteLength = byteLength;\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false;\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0;\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length;\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0;\n start >>>= 0;\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8';\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase();\n loweredCase = true;\n }\n }\n}\n\n// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\nBuffer.prototype._isBuffer = true;\n\nfunction swap (b, n, m) {\n var i = b[n];\n b[n] = b[m];\n b[m] = i;\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length;\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1);\n }\n return this\n};\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length;\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3);\n swap(this, i + 1, i + 2);\n }\n return this\n};\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length;\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7);\n swap(this, i + 1, i + 6);\n swap(this, i + 2, i + 5);\n swap(this, i + 3, i + 4);\n }\n return this\n};\n\nBuffer.prototype.toString = function toString () {\n var length = this.length | 0;\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n};\n\nBuffer.prototype.equals = function equals (b) {\n if (!internalIsBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n};\n\nBuffer.prototype.inspect = function inspect () {\n var str = '';\n var max = INSPECT_MAX_BYTES;\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ');\n if (this.length > max) str += ' ... ';\n }\n return '<Buffer ' + str + '>'\n};\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (!internalIsBuffer(target)) {\n throw new TypeError('Argument must be a Buffer')\n }\n\n if (start === undefined) {\n start = 0;\n }\n if (end === undefined) {\n end = target ? target.length : 0;\n }\n if (thisStart === undefined) {\n thisStart = 0;\n }\n if (thisEnd === undefined) {\n thisEnd = this.length;\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0;\n end >>>= 0;\n thisStart >>>= 0;\n thisEnd >>>= 0;\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart;\n var y = end - start;\n var len = Math.min(x, y);\n\n var thisCopy = this.slice(thisStart, thisEnd);\n var targetCopy = target.slice(start, end);\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i];\n y = targetCopy[i];\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n};\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset;\n byteOffset = 0;\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff;\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000;\n }\n byteOffset = +byteOffset; // Coerce to Number.\n if (isNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1);\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset;\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1;\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0;\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding);\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (internalIsBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF; // Search for a byte value [0-255]\n if (Buffer.TYPED_ARRAY_SUPPORT &&\n typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1;\n var arrLength = arr.length;\n var valLength = val.length;\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase();\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2;\n arrLength /= 2;\n valLength /= 2;\n byteOffset /= 2;\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i;\n if (dir) {\n var foundIndex = -1;\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i;\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex;\n foundIndex = -1;\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength;\n for (i = byteOffset; i >= 0; i--) {\n var found = true;\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false;\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n};\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n};\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n};\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0;\n var remaining = buf.length - offset;\n if (!length) {\n length = remaining;\n } else {\n length = Number(length);\n if (length > remaining) {\n length = remaining;\n }\n }\n\n // must be an even number of digits\n var strLen = string.length;\n if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\n\n if (length > strLen / 2) {\n length = strLen / 2;\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16);\n if (isNaN(parsed)) return i\n buf[offset + i] = parsed;\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8';\n length = this.length;\n offset = 0;\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset;\n length = this.length;\n offset = 0;\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset | 0;\n if (isFinite(length)) {\n length = length | 0;\n if (encoding === undefined) encoding = 'utf8';\n } else {\n encoding = length;\n length = undefined;\n }\n // legacy write(string, encoding, offset, length) - remove in v0.13\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset;\n if (length === undefined || length > remaining) length = remaining;\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8';\n\n var loweredCase = false;\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n return asciiWrite(this, string, offset, length)\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase();\n loweredCase = true;\n }\n }\n};\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n};\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return fromByteArray(buf)\n } else {\n return fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end);\n var res = [];\n\n var i = start;\n while (i < end) {\n var firstByte = buf[i];\n var codePoint = null;\n var bytesPerSequence = (firstByte > 0xEF) ? 4\n : (firstByte > 0xDF) ? 3\n : (firstByte > 0xBF) ? 2\n : 1;\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint;\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte;\n }\n break\n case 2:\n secondByte = buf[i + 1];\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F);\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint;\n }\n }\n break\n case 3:\n secondByte = buf[i + 1];\n thirdByte = buf[i + 2];\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F);\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint;\n }\n }\n break\n case 4:\n secondByte = buf[i + 1];\n thirdByte = buf[i + 2];\n fourthByte = buf[i + 3];\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F);\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint;\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD;\n bytesPerSequence = 1;\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000;\n res.push(codePoint >>> 10 & 0x3FF | 0xD800);\n codePoint = 0xDC00 | codePoint & 0x3FF;\n }\n\n res.push(codePoint);\n i += bytesPerSequence;\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000;\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length;\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = '';\n var i = 0;\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n );\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = '';\n end = Math.min(buf.length, end);\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F);\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = '';\n end = Math.min(buf.length, end);\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i]);\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length;\n\n if (!start || start < 0) start = 0;\n if (!end || end < 0 || end > len) end = len;\n\n var out = '';\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i]);\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end);\n var res = '';\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256);\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length;\n start = ~~start;\n end = end === undefined ? len : ~~end;\n\n if (start < 0) {\n start += len;\n if (start < 0) start = 0;\n } else if (start > len) {\n start = len;\n }\n\n if (end < 0) {\n end += len;\n if (end < 0) end = 0;\n } else if (end > len) {\n end = len;\n }\n\n if (end < start) end = start;\n\n var newBuf;\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = this.subarray(start, end);\n newBuf.__proto__ = Buffer.prototype;\n } else {\n var sliceLen = end - start;\n newBuf = new Buffer(sliceLen, undefined);\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start];\n }\n }\n\n return newBuf\n};\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset | 0;\n byteLength = byteLength | 0;\n if (!noAssert) checkOffset(offset, byteLength, this.length);\n\n var val = this[offset];\n var mul = 1;\n var i = 0;\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul;\n }\n\n return val\n};\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset | 0;\n byteLength = byteLength | 0;\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length);\n }\n\n var val = this[offset + --byteLength];\n var mul = 1;\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul;\n }\n\n return val\n};\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length);\n return this[offset]\n};\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length);\n return this[offset] | (this[offset + 1] << 8)\n};\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length);\n return (this[offset] << 8) | this[offset + 1]\n};\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n};\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n};\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset | 0;\n byteLength = byteLength | 0;\n if (!noAssert) checkOffset(offset, byteLength, this.length);\n\n var val = this[offset];\n var mul = 1;\n var i = 0;\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul;\n }\n mul *= 0x80;\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength);\n\n return val\n};\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset | 0;\n byteLength = byteLength | 0;\n if (!noAssert) checkOffset(offset, byteLength, this.length);\n\n var i = byteLength;\n var mul = 1;\n var val = this[offset + --i];\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul;\n }\n mul *= 0x80;\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength);\n\n return val\n};\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length);\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n};\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length);\n var val = this[offset] | (this[offset + 1] << 8);\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n};\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length);\n var val = this[offset + 1] | (this[offset] << 8);\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n};\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n};\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n};\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n return read(this, offset, true, 23, 4)\n};\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n return read(this, offset, false, 23, 4)\n};\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length);\n return read(this, offset, true, 52, 8)\n};\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length);\n return read(this, offset, false, 52, 8)\n};\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!internalIsBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset | 0;\n byteLength = byteLength | 0;\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1;\n checkInt(this, value, offset, byteLength, maxBytes, 0);\n }\n\n var mul = 1;\n var i = 0;\n this[offset] = value & 0xFF;\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF;\n }\n\n return offset + byteLength\n};\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset | 0;\n byteLength = byteLength | 0;\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1;\n checkInt(this, value, offset, byteLength, maxBytes, 0);\n }\n\n var i = byteLength - 1;\n var mul = 1;\n this[offset + i] = value & 0xFF;\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF;\n }\n\n return offset + byteLength\n};\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0);\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value);\n this[offset] = (value & 0xff);\n return offset + 1\n};\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1;\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n (littleEndian ? i : 1 - i) * 8;\n }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0);\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff);\n this[offset + 1] = (value >>> 8);\n } else {\n objectWriteUInt16(this, value, offset, true);\n }\n return offset + 2\n};\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0);\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8);\n this[offset + 1] = (value & 0xff);\n } else {\n objectWriteUInt16(this, value, offset, false);\n }\n return offset + 2\n};\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1;\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff;\n }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0);\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = (value >>> 24);\n this[offset + 2] = (value >>> 16);\n this[offset + 1] = (value >>> 8);\n this[offset] = (value & 0xff);\n } else {\n objectWriteUInt32(this, value, offset, true);\n }\n return offset + 4\n};\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0);\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24);\n this[offset + 1] = (value >>> 16);\n this[offset + 2] = (value >>> 8);\n this[offset + 3] = (value & 0xff);\n } else {\n objectWriteUInt32(this, value, offset, false);\n }\n return offset + 4\n};\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1);\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit);\n }\n\n var i = 0;\n var mul = 1;\n var sub = 0;\n this[offset] = value & 0xFF;\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1;\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF;\n }\n\n return offset + byteLength\n};\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1);\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit);\n }\n\n var i = byteLength - 1;\n var mul = 1;\n var sub = 0;\n this[offset + i] = value & 0xFF;\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1;\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF;\n }\n\n return offset + byteLength\n};\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80);\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value);\n if (value < 0) value = 0xff + value + 1;\n this[offset] = (value & 0xff);\n return offset + 1\n};\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000);\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff);\n this[offset + 1] = (value >>> 8);\n } else {\n objectWriteUInt16(this, value, offset, true);\n }\n return offset + 2\n};\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000);\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8);\n this[offset + 1] = (value & 0xff);\n } else {\n objectWriteUInt16(this, value, offset, false);\n }\n return offset + 2\n};\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000);\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff);\n this[offset + 1] = (value >>> 8);\n this[offset + 2] = (value >>> 16);\n this[offset + 3] = (value >>> 24);\n } else {\n objectWriteUInt32(this, value, offset, true);\n }\n return offset + 4\n};\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000);\n if (value < 0) value = 0xffffffff + value + 1;\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24);\n this[offset + 1] = (value >>> 16);\n this[offset + 2] = (value >>> 8);\n this[offset + 3] = (value & 0xff);\n } else {\n objectWriteUInt32(this, value, offset, false);\n }\n return offset + 4\n};\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4);\n }\n write(buf, value, offset, littleEndian, 23, 4);\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n};\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n};\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8);\n }\n write(buf, value, offset, littleEndian, 52, 8);\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n};\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n};\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!start) start = 0;\n if (!end && end !== 0) end = this.length;\n if (targetStart >= target.length) targetStart = target.length;\n if (!targetStart) targetStart = 0;\n if (end > 0 && end < start) end = start;\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length;\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start;\n }\n\n var len = end - start;\n var i;\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start];\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start];\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, start + len),\n targetStart\n );\n }\n\n return len\n};\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start;\n start = 0;\n end = this.length;\n } else if (typeof end === 'string') {\n encoding = end;\n end = this.length;\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0);\n if (code < 256) {\n val = code;\n }\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n } else if (typeof val === 'number') {\n val = val & 255;\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0;\n end = end === undefined ? this.length : end >>> 0;\n\n if (!val) val = 0;\n\n var i;\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val;\n }\n } else {\n var bytes = internalIsBuffer(val)\n ? val\n : utf8ToBytes(new Buffer(val, encoding).toString());\n var len = bytes.length;\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len];\n }\n }\n\n return this\n};\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g;\n\nfunction base64clean (str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).replace(INVALID_BASE64_RE, '');\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '=';\n }\n return str\n}\n\nfunction stringtrim (str) {\n if (str.trim) return str.trim()\n return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity;\n var codePoint;\n var length = string.length;\n var leadSurrogate = null;\n var bytes = [];\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i);\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint;\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n leadSurrogate = codePoint;\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000;\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n }\n\n leadSurrogate = null;\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint);\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n );\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n );\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n );\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = [];\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF);\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo;\n var byteArray = [];\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i);\n hi = c >> 8;\n lo = c % 256;\n byteArray.push(lo);\n byteArray.push(hi);\n }\n\n return byteArray\n}\n\n\nfunction base64ToBytes (str) {\n return toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i];\n }\n return i\n}\n\nfunction isnan (val) {\n return val !== val // eslint-disable-line no-self-compare\n}\n\n\n// the following is from is-buffer, also by Feross Aboukhadijeh and with same lisence\n// The _isBuffer check is for Safari 5-7 support, because it's missing\n// Object.prototype.constructor. Remove this eventually\nfunction isBuffer(obj) {\n return obj != null && (!!obj._isBuffer || isFastBuffer(obj) || isSlowBuffer(obj))\n}\n\nfunction isFastBuffer (obj) {\n return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)\n}\n\n// For Node v0.10 support. Remove this eventually.\nfunction isSlowBuffer (obj) {\n return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isFastBuffer(obj.slice(0, 0))\n}\n\n// shim for using process in browser\n// based off https://github.com/defunctzombie/node-process/blob/master/browser.js\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\nvar cachedSetTimeout = defaultSetTimout;\nvar cachedClearTimeout = defaultClearTimeout;\nif (typeof global$1.setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n}\nif (typeof global$1.clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n}\n\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\nfunction nextTick(fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n}\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nvar title = 'browser';\nvar platform = 'browser';\nvar browser = true;\nvar env = {};\nvar argv = [];\nvar version = ''; // empty string to avoid regexp issues\nvar versions = {};\nvar release = {};\nvar config = {};\n\nfunction noop() {}\n\nvar on = noop;\nvar addListener = noop;\nvar once = noop;\nvar off = noop;\nvar removeListener = noop;\nvar removeAllListeners = noop;\nvar emit = noop;\n\nfunction binding(name) {\n throw new Error('process.binding is not supported');\n}\n\nfunction cwd () { return '/' }\nfunction chdir (dir) {\n throw new Error('process.chdir is not supported');\n}function umask() { return 0; }\n\n// from https://github.com/kumavis/browser-process-hrtime/blob/master/index.js\nvar performance = global$1.performance || {};\nvar performanceNow =\n performance.now ||\n performance.mozNow ||\n performance.msNow ||\n performance.oNow ||\n performance.webkitNow ||\n function(){ return (new Date()).getTime() };\n\n// generate timestamp or delta\n// see http://nodejs.org/api/process.html#process_process_hrtime\nfunction hrtime(previousTimestamp){\n var clocktime = performanceNow.call(performance)*1e-3;\n var seconds = Math.floor(clocktime);\n var nanoseconds = Math.floor((clocktime%1)*1e9);\n if (previousTimestamp) {\n seconds = seconds - previousTimestamp[0];\n nanoseconds = nanoseconds - previousTimestamp[1];\n if (nanoseconds<0) {\n seconds--;\n nanoseconds += 1e9;\n }\n }\n return [seconds,nanoseconds]\n}\n\nvar startTime = new Date();\nfunction uptime() {\n var currentTime = new Date();\n var dif = currentTime - startTime;\n return dif / 1000;\n}\n\nvar process = {\n nextTick: nextTick,\n title: title,\n browser: browser,\n env: env,\n argv: argv,\n version: version,\n versions: versions,\n on: on,\n addListener: addListener,\n once: once,\n off: off,\n removeListener: removeListener,\n removeAllListeners: removeAllListeners,\n emit: emit,\n binding: binding,\n cwd: cwd,\n chdir: chdir,\n umask: umask,\n hrtime: hrtime,\n platform: platform,\n release: release,\n config: config,\n uptime: uptime\n};\n\nvar inherits;\nif (typeof Object.create === 'function'){\n inherits = function inherits(ctor, superCtor) {\n // implementation from standard node.js 'util' module\n ctor.super_ = superCtor;\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n };\n} else {\n inherits = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n };\n}\nvar inherits$1 = inherits;\n\nvar formatRegExp = /%[sdj%]/g;\nfunction format(f) {\n if (!isString(f)) {\n var objects = [];\n for (var i = 0; i < arguments.length; i++) {\n objects.push(inspect(arguments[i]));\n }\n return objects.join(' ');\n }\n\n var i = 1;\n var args = arguments;\n var len = args.length;\n var str = String(f).replace(formatRegExp, function(x) {\n if (x === '%%') return '%';\n if (i >= len) return x;\n switch (x) {\n case '%s': return String(args[i++]);\n case '%d': return Number(args[i++]);\n case '%j':\n try {\n return JSON.stringify(args[i++]);\n } catch (_) {\n return '[Circular]';\n }\n default:\n return x;\n }\n });\n for (var x = args[i]; i < len; x = args[++i]) {\n if (isNull(x) || !isObject(x)) {\n str += ' ' + x;\n } else {\n str += ' ' + inspect(x);\n }\n }\n return str;\n}\n\n// Mark that a method should not be used.\n// Returns a modified function which warns once by default.\n// If --no-deprecation is set, then it is a no-op.\nfunction deprecate(fn, msg) {\n // Allow for deprecating things in the process of starting up.\n if (isUndefined(global$1.process)) {\n return function() {\n return deprecate(fn, msg).apply(this, arguments);\n };\n }\n\n if (process.noDeprecation === true) {\n return fn;\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (process.throwDeprecation) {\n throw new Error(msg);\n } else if (process.traceDeprecation) {\n console.trace(msg);\n } else {\n console.error(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n}\n\nvar debugs = {};\nvar debugEnviron;\nfunction debuglog(set) {\n if (isUndefined(debugEnviron))\n debugEnviron = process.env.NODE_DEBUG || '';\n set = set.toUpperCase();\n if (!debugs[set]) {\n if (new RegExp('\\\\b' + set + '\\\\b', 'i').test(debugEnviron)) {\n var pid = 0;\n debugs[set] = function() {\n var msg = format.apply(null, arguments);\n console.error('%s %d: %s', set, pid, msg);\n };\n } else {\n debugs[set] = function() {};\n }\n }\n return debugs[set];\n}\n\n/**\n * Echos the value of a value. Trys to print the value out\n * in the best way possible given the different types.\n *\n * @param {Object} obj The object to print out.\n * @param {Object} opts Optional options object that alters the output.\n */\n/* legacy: obj, showHidden, depth, colors*/\nfunction inspect(obj, opts) {\n // default options\n var ctx = {\n seen: [],\n stylize: stylizeNoColor\n };\n // legacy...\n if (arguments.length >= 3) ctx.depth = arguments[2];\n if (arguments.length >= 4) ctx.colors = arguments[3];\n if (isBoolean(opts)) {\n // legacy...\n ctx.showHidden = opts;\n } else if (opts) {\n // got an \"options\" object\n _extend(ctx, opts);\n }\n // set default options\n if (isUndefined(ctx.showHidden)) ctx.showHidden = false;\n if (isUndefined(ctx.depth)) ctx.depth = 2;\n if (isUndefined(ctx.colors)) ctx.colors = false;\n if (isUndefined(ctx.customInspect)) ctx.customInspect = true;\n if (ctx.colors) ctx.stylize = stylizeWithColor;\n return formatValue(ctx, obj, ctx.depth);\n}\n\n// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics\ninspect.colors = {\n 'bold' : [1, 22],\n 'italic' : [3, 23],\n 'underline' : [4, 24],\n 'inverse' : [7, 27],\n 'white' : [37, 39],\n 'grey' : [90, 39],\n 'black' : [30, 39],\n 'blue' : [34, 39],\n 'cyan' : [36, 39],\n 'green' : [32, 39],\n 'magenta' : [35, 39],\n 'red' : [31, 39],\n 'yellow' : [33, 39]\n};\n\n// Don't use 'blue' not visible on cmd.exe\ninspect.styles = {\n 'special': 'cyan',\n 'number': 'yellow',\n 'boolean': 'yellow',\n 'undefined': 'grey',\n 'null': 'bold',\n 'string': 'green',\n 'date': 'magenta',\n // \"name\": intentionally not styling\n 'regexp': 'red'\n};\n\n\nfunction stylizeWithColor(str, styleType) {\n var style = inspect.styles[styleType];\n\n if (style) {\n return '\\u001b[' + inspect.colors[style][0] + 'm' + str +\n '\\u001b[' + inspect.colors[style][1] + 'm';\n } else {\n return str;\n }\n}\n\n\nfunction stylizeNoColor(str, styleType) {\n return str;\n}\n\n\nfunction arrayToHash(array) {\n var hash = {};\n\n array.forEach(function(val, idx) {\n hash[val] = true;\n });\n\n return hash;\n}\n\n\nfunction formatValue(ctx, value, recurseTimes) {\n // Provide a hook for user-specified inspect functions.\n // Check that value is an object with an inspect function on it\n if (ctx.customInspect &&\n value &&\n isFunction(value.inspect) &&\n // Filter out the util module, it's inspect function is special\n value.inspect !== inspect &&\n // Also filter out any prototype objects using the circular check.\n !(value.constructor && value.constructor.prototype === value)) {\n var ret = value.inspect(recurseTimes, ctx);\n if (!isString(ret)) {\n ret = formatValue(ctx, ret, recurseTimes);\n }\n return ret;\n }\n\n // Primitive types cannot have properties\n var primitive = formatPrimitive(ctx, value);\n if (primitive) {\n return primitive;\n }\n\n // Look up the keys of the object.\n var keys = Object.keys(value);\n var visibleKeys = arrayToHash(keys);\n\n if (ctx.showHidden) {\n keys = Object.getOwnPropertyNames(value);\n }\n\n // IE doesn't make error fields non-enumerable\n // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx\n if (isError(value)\n && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {\n return formatError(value);\n }\n\n // Some type of object without properties can be shortcutted.\n if (keys.length === 0) {\n if (isFunction(value)) {\n var name = value.name ? ': ' + value.name : '';\n return ctx.stylize('[Function' + name + ']', 'special');\n }\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n }\n if (isDate(value)) {\n return ctx.stylize(Date.prototype.toString.call(value), 'date');\n }\n if (isError(value)) {\n return formatError(value);\n }\n }\n\n var base = '', array = false, braces = ['{', '}'];\n\n // Make Array say that they are Array\n if (isArray(value)) {\n array = true;\n braces = ['[', ']'];\n }\n\n // Make functions say that they are functions\n if (isFunction(value)) {\n var n = value.name ? ': ' + value.name : '';\n base = ' [Function' + n + ']';\n }\n\n // Make RegExps say that they are RegExps\n if (isRegExp(value)) {\n base = ' ' + RegExp.prototype.toString.call(value);\n }\n\n // Make dates with properties first say the date\n if (isDate(value)) {\n base = ' ' + Date.prototype.toUTCString.call(value);\n }\n\n // Make error with message first say the error\n if (isError(value)) {\n base = ' ' + formatError(value);\n }\n\n if (keys.length === 0 && (!array || value.length == 0)) {\n return braces[0] + base + braces[1];\n }\n\n if (recurseTimes < 0) {\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n } else {\n return ctx.stylize('[Object]', 'special');\n }\n }\n\n ctx.seen.push(value);\n\n var output;\n if (array) {\n output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n } else {\n output = keys.map(function(key) {\n return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n });\n }\n\n ctx.seen.pop();\n\n return reduceToSingleString(output, base, braces);\n}\n\n\nfunction formatPrimitive(ctx, value) {\n if (isUndefined(value))\n return ctx.stylize('undefined', 'undefined');\n if (isString(value)) {\n var simple = '\\'' + JSON.stringify(value).replace(/^\"|\"$/g, '')\n .replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"') + '\\'';\n return ctx.stylize(simple, 'string');\n }\n if (isNumber(value))\n return ctx.stylize('' + value, 'number');\n if (isBoolean(value))\n return ctx.stylize('' + value, 'boolean');\n // For some reason typeof null is \"object\", so special case here.\n if (isNull(value))\n return ctx.stylize('null', 'null');\n}\n\n\nfunction formatError(value) {\n return '[' + Error.prototype.toString.call(value) + ']';\n}\n\n\nfunction formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n var output = [];\n for (var i = 0, l = value.length; i < l; ++i) {\n if (hasOwnProperty(value, String(i))) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n String(i), true));\n } else {\n output.push('');\n }\n }\n keys.forEach(function(key) {\n if (!key.match(/^\\d+$/)) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n key, true));\n }\n });\n return output;\n}\n\n\nfunction formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n var name, str, desc;\n desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };\n if (desc.get) {\n if (desc.set) {\n str = ctx.stylize('[Getter/Setter]', 'special');\n } else {\n str = ctx.stylize('[Getter]', 'special');\n }\n } else {\n if (desc.set) {\n str = ctx.stylize('[Setter]', 'special');\n }\n }\n if (!hasOwnProperty(visibleKeys, key)) {\n name = '[' + key + ']';\n }\n if (!str) {\n if (ctx.seen.indexOf(desc.value) < 0) {\n if (isNull(recurseTimes)) {\n str = formatValue(ctx, desc.value, null);\n } else {\n str = formatValue(ctx, desc.value, recurseTimes - 1);\n }\n if (str.indexOf('\\n') > -1) {\n if (array) {\n str = str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n').substr(2);\n } else {\n str = '\\n' + str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n');\n }\n }\n } else {\n str = ctx.stylize('[Circular]', 'special');\n }\n }\n if (isUndefined(name)) {\n if (array && key.match(/^\\d+$/)) {\n return str;\n }\n name = JSON.stringify('' + key);\n if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n name = name.substr(1, name.length - 2);\n name = ctx.stylize(name, 'name');\n } else {\n name = name.replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"')\n .replace(/(^\"|\"$)/g, \"'\");\n name = ctx.stylize(name, 'string');\n }\n }\n\n return name + ': ' + str;\n}\n\n\nfunction reduceToSingleString(output, base, braces) {\n var length = output.reduce(function(prev, cur) {\n if (cur.indexOf('\\n') >= 0) ;\n return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n }, 0);\n\n if (length > 60) {\n return braces[0] +\n (base === '' ? '' : base + '\\n ') +\n ' ' +\n output.join(',\\n ') +\n ' ' +\n braces[1];\n }\n\n return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n}\n\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\nfunction isArray(ar) {\n return Array.isArray(ar);\n}\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\n\nfunction isNull(arg) {\n return arg === null;\n}\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\n\nfunction isRegExp(re) {\n return isObject(re) && objectToString(re) === '[object RegExp]';\n}\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\n\nfunction isDate(d) {\n return isObject(d) && objectToString(d) === '[object Date]';\n}\n\nfunction isError(e) {\n return isObject(e) &&\n (objectToString(e) === '[object Error]' || e instanceof Error);\n}\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n\nfunction _extend(origin, add) {\n // Don't do anything if add isn't an object\n if (!add || !isObject(add)) return origin;\n\n var keys = Object.keys(add);\n var i = keys.length;\n while (i--) {\n origin[keys[i]] = add[keys[i]];\n }\n return origin;\n}\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nfunction BufferList() {\n this.head = null;\n this.tail = null;\n this.length = 0;\n}\n\nBufferList.prototype.push = function (v) {\n var entry = { data: v, next: null };\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\n this.tail = entry;\n ++this.length;\n};\n\nBufferList.prototype.unshift = function (v) {\n var entry = { data: v, next: this.head };\n if (this.length === 0) this.tail = entry;\n this.head = entry;\n ++this.length;\n};\n\nBufferList.prototype.shift = function () {\n if (this.length === 0) return;\n var ret = this.head.data;\n if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n --this.length;\n return ret;\n};\n\nBufferList.prototype.clear = function () {\n this.head = this.tail = null;\n this.length = 0;\n};\n\nBufferList.prototype.join = function (s) {\n if (this.length === 0) return '';\n var p = this.head;\n var ret = '' + p.data;\n while (p = p.next) {\n ret += s + p.data;\n }return ret;\n};\n\nBufferList.prototype.concat = function (n) {\n if (this.length === 0) return Buffer.alloc(0);\n if (this.length === 1) return this.head.data;\n var ret = Buffer.allocUnsafe(n >>> 0);\n var p = this.head;\n var i = 0;\n while (p) {\n p.data.copy(ret, i);\n i += p.data.length;\n p = p.next;\n }\n return ret;\n};\n\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar isBufferEncoding = Buffer.isEncoding\n || function(encoding) {\n switch (encoding && encoding.toLowerCase()) {\n case 'hex': case 'utf8': case 'utf-8': case 'ascii': case 'binary': case 'base64': case 'ucs2': case 'ucs-2': case 'utf16le': case 'utf-16le': case 'raw': return true;\n default: return false;\n }\n };\n\n\nfunction assertEncoding(encoding) {\n if (encoding && !isBufferEncoding(encoding)) {\n throw new Error('Unknown encoding: ' + encoding);\n }\n}\n\n// StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters. CESU-8 is handled as part of the UTF-8 encoding.\n//\n// @TODO Handling all encodings inside a single object makes it very difficult\n// to reason about this code, so it should be split up in the future.\n// @TODO There should be a utf8-strict encoding that rejects invalid UTF-8 code\n// points as used by CESU-8.\nfunction StringDecoder(encoding) {\n this.encoding = (encoding || 'utf8').toLowerCase().replace(/[-_]/, '');\n assertEncoding(encoding);\n switch (this.encoding) {\n case 'utf8':\n // CESU-8 represents each of Surrogate Pair by 3-bytes\n this.surrogateSize = 3;\n break;\n case 'ucs2':\n case 'utf16le':\n // UTF-16 represents each of Surrogate Pair by 2-bytes\n this.surrogateSize = 2;\n this.detectIncompleteChar = utf16DetectIncompleteChar;\n break;\n case 'base64':\n // Base-64 stores 3 bytes in 4 chars, and pads the remainder.\n this.surrogateSize = 3;\n this.detectIncompleteChar = base64DetectIncompleteChar;\n break;\n default:\n this.write = passThroughWrite;\n return;\n }\n\n // Enough space to store all bytes of a single character. UTF-8 needs 4\n // bytes, but CESU-8 may require up to 6 (3 bytes per surrogate).\n this.charBuffer = new Buffer(6);\n // Number of bytes received for the current incomplete multi-byte character.\n this.charReceived = 0;\n // Number of bytes expected for the current incomplete multi-byte character.\n this.charLength = 0;\n}\n\n// write decodes the given buffer and returns it as JS string that is\n// guaranteed to not contain any partial multi-byte characters. Any partial\n// character found at the end of the buffer is buffered up, and will be\n// returned when calling write again with the remaining bytes.\n//\n// Note: Converting a Buffer containing an orphan surrogate to a String\n// currently works, but converting a String to a Buffer (via `new Buffer`, or\n// Buffer#write) will replace incomplete surrogates with the unicode\n// replacement character. See https://codereview.chromium.org/121173009/ .\nStringDecoder.prototype.write = function(buffer) {\n var charStr = '';\n // if our last write ended with an incomplete multibyte character\n while (this.charLength) {\n // determine how many remaining bytes this buffer has to offer for this char\n var available = (buffer.length >= this.charLength - this.charReceived) ?\n this.charLength - this.charReceived :\n buffer.length;\n\n // add the new bytes to the char buffer\n buffer.copy(this.charBuffer, this.charReceived, 0, available);\n this.charReceived += available;\n\n if (this.charReceived < this.charLength) {\n // still not enough chars in this buffer? wait for more ...\n return '';\n }\n\n // remove bytes belonging to the current character from the buffer\n buffer = buffer.slice(available, buffer.length);\n\n // get the character that was split\n charStr = this.charBuffer.slice(0, this.charLength).toString(this.encoding);\n\n // CESU-8: lead surrogate (D800-DBFF) is also the incomplete character\n var charCode = charStr.charCodeAt(charStr.length - 1);\n if (charCode >= 0xD800 && charCode <= 0xDBFF) {\n this.charLength += this.surrogateSize;\n charStr = '';\n continue;\n }\n this.charReceived = this.charLength = 0;\n\n // if there are no more bytes in this buffer, just emit our char\n if (buffer.length === 0) {\n return charStr;\n }\n break;\n }\n\n // determine and set charLength / charReceived\n this.detectIncompleteChar(buffer);\n\n var end = buffer.length;\n if (this.charLength) {\n // buffer the incomplete character bytes we got\n buffer.copy(this.charBuffer, 0, buffer.length - this.charReceived, end);\n end -= this.charReceived;\n }\n\n charStr += buffer.toString(this.encoding, 0, end);\n\n var end = charStr.length - 1;\n var charCode = charStr.charCodeAt(end);\n // CESU-8: lead surrogate (D800-DBFF) is also the incomplete character\n if (charCode >= 0xD800 && charCode <= 0xDBFF) {\n var size = this.surrogateSize;\n this.charLength += size;\n this.charReceived += size;\n this.charBuffer.copy(this.charBuffer, size, 0, size);\n buffer.copy(this.charBuffer, 0, 0, size);\n return charStr.substring(0, end);\n }\n\n // or just emit the charStr\n return charStr;\n};\n\n// detectIncompleteChar determines if there is an incomplete UTF-8 character at\n// the end of the given buffer. If so, it sets this.charLength to the byte\n// length that character, and sets this.charReceived to the number of bytes\n// that are available for this character.\nStringDecoder.prototype.detectIncompleteChar = function(buffer) {\n // determine how many bytes we have to check at the end of this buffer\n var i = (buffer.length >= 3) ? 3 : buffer.length;\n\n // Figure out if one of the last i bytes of our buffer announces an\n // incomplete char.\n for (; i > 0; i--) {\n var c = buffer[buffer.length - i];\n\n // See http://en.wikipedia.org/wiki/UTF-8#Description\n\n // 110XXXXX\n if (i == 1 && c >> 5 == 0x06) {\n this.charLength = 2;\n break;\n }\n\n // 1110XXXX\n if (i <= 2 && c >> 4 == 0x0E) {\n this.charLength = 3;\n break;\n }\n\n // 11110XXX\n if (i <= 3 && c >> 3 == 0x1E) {\n this.charLength = 4;\n break;\n }\n }\n this.charReceived = i;\n};\n\nStringDecoder.prototype.end = function(buffer) {\n var res = '';\n if (buffer && buffer.length)\n res = this.write(buffer);\n\n if (this.charReceived) {\n var cr = this.charReceived;\n var buf = this.charBuffer;\n var enc = this.encoding;\n res += buf.slice(0, cr).toString(enc);\n }\n\n return res;\n};\n\nfunction passThroughWrite(buffer) {\n return buffer.toString(this.encoding);\n}\n\nfunction utf16DetectIncompleteChar(buffer) {\n this.charReceived = buffer.length % 2;\n this.charLength = this.charReceived ? 2 : 0;\n}\n\nfunction base64DetectIncompleteChar(buffer) {\n this.charReceived = buffer.length % 3;\n this.charLength = this.charReceived ? 3 : 0;\n}\n\nReadable.ReadableState = ReadableState;\n\nvar debug = debuglog('stream');\ninherits$1(Readable, EventEmitter);\n\nfunction prependListener(emitter, event, fn) {\n // Sadly this is not cacheable as some libraries bundle their own\n // event emitter implementation with them.\n if (typeof emitter.prependListener === 'function') {\n return emitter.prependListener(event, fn);\n } else {\n // This is a hack to make sure that our error handler is attached before any\n // userland ones. NEVER DO THIS. This is here only because this code needs\n // to continue to work with older versions of Node.js that do not include\n // the prependListener() method. The goal is to eventually remove this hack.\n if (!emitter._events || !emitter._events[event])\n emitter.on(event, fn);\n else if (Array.isArray(emitter._events[event]))\n emitter._events[event].unshift(fn);\n else\n emitter._events[event] = [fn, emitter._events[event]];\n }\n}\nfunction listenerCount (emitter, type) {\n return emitter.listeners(type).length;\n}\nfunction ReadableState(options, stream) {\n\n options = options || {};\n\n // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n this.objectMode = !!options.objectMode;\n\n if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.readableObjectMode;\n\n // the point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n var hwm = options.highWaterMark;\n var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm;\n\n // cast to ints.\n this.highWaterMark = ~ ~this.highWaterMark;\n\n // A linked list is used to store data chunks instead of an array because the\n // linked list can remove elements from the beginning faster than\n // array.shift()\n this.buffer = new BufferList();\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = null;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false;\n\n // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n this.sync = true;\n\n // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.resumeScheduled = false;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // when piping, we only care about 'readable' events that happen\n // after read()ing all the bytes and not getting any pushback.\n this.ranOut = false;\n\n // the number of writers that are awaiting a drain event in .pipe()s\n this.awaitDrain = 0;\n\n // if true, a maybeReadMore has been scheduled\n this.readingMore = false;\n\n this.decoder = null;\n this.encoding = null;\n if (options.encoding) {\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\nfunction Readable(options) {\n\n if (!(this instanceof Readable)) return new Readable(options);\n\n this._readableState = new ReadableState(options, this);\n\n // legacy\n this.readable = true;\n\n if (options && typeof options.read === 'function') this._read = options.read;\n\n EventEmitter.call(this);\n}\n\n// Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\nReadable.prototype.push = function (chunk, encoding) {\n var state = this._readableState;\n\n if (!state.objectMode && typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding;\n if (encoding !== state.encoding) {\n chunk = Buffer.from(chunk, encoding);\n encoding = '';\n }\n }\n\n return readableAddChunk(this, state, chunk, encoding, false);\n};\n\n// Unshift should *always* be something directly out of read()\nReadable.prototype.unshift = function (chunk) {\n var state = this._readableState;\n return readableAddChunk(this, state, chunk, '', true);\n};\n\nReadable.prototype.isPaused = function () {\n return this._readableState.flowing === false;\n};\n\nfunction readableAddChunk(stream, state, chunk, encoding, addToFront) {\n var er = chunkInvalid(state, chunk);\n if (er) {\n stream.emit('error', er);\n } else if (chunk === null) {\n state.reading = false;\n onEofChunk(stream, state);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (state.ended && !addToFront) {\n var e = new Error('stream.push() after EOF');\n stream.emit('error', e);\n } else if (state.endEmitted && addToFront) {\n var _e = new Error('stream.unshift() after end event');\n stream.emit('error', _e);\n } else {\n var skipAdd;\n if (state.decoder && !addToFront && !encoding) {\n chunk = state.decoder.write(chunk);\n skipAdd = !state.objectMode && chunk.length === 0;\n }\n\n if (!addToFront) state.reading = false;\n\n // Don't add to the buffer if we've decoded to an empty string chunk and\n // we're not in object mode\n if (!skipAdd) {\n // if we want the data now, just emit it.\n if (state.flowing && state.length === 0 && !state.sync) {\n stream.emit('data', chunk);\n stream.read(0);\n } else {\n // update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n\n if (state.needReadable) emitReadable(stream);\n }\n }\n\n maybeReadMore(stream, state);\n }\n } else if (!addToFront) {\n state.reading = false;\n }\n\n return needMoreData(state);\n}\n\n// if it's past the high water mark, we can push in some more.\n// Also, if we have no data yet, we can stand some\n// more bytes. This is to work around cases where hwm=0,\n// such as the repl. Also, if the push() triggered a\n// readable event, and the user called read(largeNumber) such that\n// needReadable was set, then we ought to push more, so that another\n// 'readable' event will be triggered.\nfunction needMoreData(state) {\n return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0);\n}\n\n// backwards compatibility.\nReadable.prototype.setEncoding = function (enc) {\n this._readableState.decoder = new StringDecoder(enc);\n this._readableState.encoding = enc;\n return this;\n};\n\n// Don't raise the hwm > 8MB\nvar MAX_HWM = 0x800000;\nfunction computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2 to prevent increasing hwm excessively in\n // tiny amounts\n n--;\n n |= n >>> 1;\n n |= n >>> 2;\n n |= n >>> 4;\n n |= n >>> 8;\n n |= n >>> 16;\n n++;\n }\n return n;\n}\n\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction howMuchToRead(n, state) {\n if (n <= 0 || state.length === 0 && state.ended) return 0;\n if (state.objectMode) return 1;\n if (n !== n) {\n // Only flow one buffer at a time\n if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n }\n // If we're asking for more than the current hwm, then raise the hwm.\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n if (n <= state.length) return n;\n // Don't have enough\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n }\n return state.length;\n}\n\n// you can override either this method, or the async _read(n) below.\nReadable.prototype.read = function (n) {\n debug('read', n);\n n = parseInt(n, 10);\n var state = this._readableState;\n var nOrig = n;\n\n if (n !== 0) state.emittedReadable = false;\n\n // if we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) {\n debug('read: emitReadable', state.length, state.ended);\n if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n return null;\n }\n\n n = howMuchToRead(n, state);\n\n // if we've ended, and we're now clear, then finish it up.\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this);\n return null;\n }\n\n // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n\n // if we need a readable event, then we need to do some reading.\n var doRead = state.needReadable;\n debug('need readable', doRead);\n\n // if we currently have less than the highWaterMark, then also read some\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n }\n\n // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n if (state.ended || state.reading) {\n doRead = false;\n debug('reading or ended', doRead);\n } else if (doRead) {\n debug('do read');\n state.reading = true;\n state.sync = true;\n // if the length is currently zero, then we *need* a readable event.\n if (state.length === 0) state.needReadable = true;\n // call internal read method\n this._read(state.highWaterMark);\n state.sync = false;\n // If _read pushed data synchronously, then `reading` will be false,\n // and we need to re-evaluate how much data we can return to the user.\n if (!state.reading) n = howMuchToRead(nOrig, state);\n }\n\n var ret;\n if (n > 0) ret = fromList(n, state);else ret = null;\n\n if (ret === null) {\n state.needReadable = true;\n n = 0;\n } else {\n state.length -= n;\n }\n\n if (state.length === 0) {\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (!state.ended) state.needReadable = true;\n\n // If we tried to read() past the EOF, then emit end on the next tick.\n if (nOrig !== n && state.ended) endReadable(this);\n }\n\n if (ret !== null) this.emit('data', ret);\n\n return ret;\n};\n\nfunction chunkInvalid(state, chunk) {\n var er = null;\n if (!isBuffer(chunk) && typeof chunk !== 'string' && chunk !== null && chunk !== undefined && !state.objectMode) {\n er = new TypeError('Invalid non-string/buffer chunk');\n }\n return er;\n}\n\nfunction onEofChunk(stream, state) {\n if (state.ended) return;\n if (state.decoder) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n state.ended = true;\n\n // emit 'readable' now to make sure it gets picked up.\n emitReadable(stream);\n}\n\n// Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\nfunction emitReadable(stream) {\n var state = stream._readableState;\n state.needReadable = false;\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n if (state.sync) nextTick(emitReadable_, stream);else emitReadable_(stream);\n }\n}\n\nfunction emitReadable_(stream) {\n debug('emit readable');\n stream.emit('readable');\n flow(stream);\n}\n\n// at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n nextTick(maybeReadMore_, stream, state);\n }\n}\n\nfunction maybeReadMore_(stream, state) {\n var len = state.length;\n while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) {\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length)\n // didn't get any data, stop spinning.\n break;else len = state.length;\n }\n state.readingMore = false;\n}\n\n// abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\nReadable.prototype._read = function (n) {\n this.emit('error', new Error('not implemented'));\n};\n\nReadable.prototype.pipe = function (dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n default:\n state.pipes.push(dest);\n break;\n }\n state.pipesCount += 1;\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n\n var doEnd = (!pipeOpts || pipeOpts.end !== false);\n\n var endFn = doEnd ? onend : cleanup;\n if (state.endEmitted) nextTick(endFn);else src.once('end', endFn);\n\n dest.on('unpipe', onunpipe);\n function onunpipe(readable) {\n debug('onunpipe');\n if (readable === src) {\n cleanup();\n }\n }\n\n function onend() {\n debug('onend');\n dest.end();\n }\n\n // when the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n\n var cleanedUp = false;\n function cleanup() {\n debug('cleanup');\n // cleanup event handlers once the pipe is broken\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', cleanup);\n src.removeListener('data', ondata);\n\n cleanedUp = true;\n\n // if the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n }\n\n // If the user pushes more data while we're writing to dest then we'll end up\n // in ondata again. However, we only want to increase awaitDrain once because\n // dest will only emit one 'drain' event for the multiple writes.\n // => Introduce a guard on increasing awaitDrain.\n var increasedAwaitDrain = false;\n src.on('data', ondata);\n function ondata(chunk) {\n debug('ondata');\n increasedAwaitDrain = false;\n var ret = dest.write(chunk);\n if (false === ret && !increasedAwaitDrain) {\n // If the user unpiped during `dest.write()`, it is possible\n // to get stuck in a permanently paused state if that write\n // also returned false.\n // => Check whether `dest` is still a piping destination.\n if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n debug('false write response, pause', src._readableState.awaitDrain);\n src._readableState.awaitDrain++;\n increasedAwaitDrain = true;\n }\n src.pause();\n }\n }\n\n // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (listenerCount(dest, 'error') === 0) dest.emit('error', er);\n }\n\n // Make sure our error handler is attached before userland ones.\n prependListener(dest, 'error', onerror);\n\n // Both close and finish should trigger unpipe, but only once.\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n dest.once('close', onclose);\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n dest.once('finish', onfinish);\n\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n }\n\n // tell the dest that it's being piped to\n dest.emit('pipe', src);\n\n // start the flow if it hasn't been started already.\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n\n return dest;\n};\n\nfunction pipeOnDrain(src) {\n return function () {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain) state.awaitDrain--;\n if (state.awaitDrain === 0 && src.listeners('data').length) {\n state.flowing = true;\n flow(src);\n }\n };\n}\n\nReadable.prototype.unpipe = function (dest) {\n var state = this._readableState;\n\n // if we're not piping anywhere, then do nothing.\n if (state.pipesCount === 0) return this;\n\n // just one destination. most common case.\n if (state.pipesCount === 1) {\n // passed in one, but it's not the right one.\n if (dest && dest !== state.pipes) return this;\n\n if (!dest) dest = state.pipes;\n\n // got a match.\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest) dest.emit('unpipe', this);\n return this;\n }\n\n // slow case. multiple pipe destinations.\n\n if (!dest) {\n // remove all.\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n\n for (var _i = 0; _i < len; _i++) {\n dests[_i].emit('unpipe', this);\n }return this;\n }\n\n // try to find the right one.\n var i = indexOf(state.pipes, dest);\n if (i === -1) return this;\n\n state.pipes.splice(i, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\n\n dest.emit('unpipe', this);\n\n return this;\n};\n\n// set up data events if they are asked for\n// Ensure readable listeners eventually get something\nReadable.prototype.on = function (ev, fn) {\n var res = EventEmitter.prototype.on.call(this, ev, fn);\n\n if (ev === 'data') {\n // Start flowing on next tick if stream isn't explicitly paused\n if (this._readableState.flowing !== false) this.resume();\n } else if (ev === 'readable') {\n var state = this._readableState;\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.emittedReadable = false;\n if (!state.reading) {\n nextTick(nReadingNextTick, this);\n } else if (state.length) {\n emitReadable(this);\n }\n }\n }\n\n return res;\n};\nReadable.prototype.addListener = Readable.prototype.on;\n\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0');\n self.read(0);\n}\n\n// pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\nReadable.prototype.resume = function () {\n var state = this._readableState;\n if (!state.flowing) {\n debug('resume');\n state.flowing = true;\n resume(this, state);\n }\n return this;\n};\n\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n nextTick(resume_, stream, state);\n }\n}\n\nfunction resume_(stream, state) {\n if (!state.reading) {\n debug('resume read 0');\n stream.read(0);\n }\n\n state.resumeScheduled = false;\n state.awaitDrain = 0;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading) stream.read(0);\n}\n\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing);\n if (false !== this._readableState.flowing) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n return this;\n};\n\nfunction flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n while (state.flowing && stream.read() !== null) {}\n}\n\n// wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\nReadable.prototype.wrap = function (stream) {\n var state = this._readableState;\n var paused = false;\n\n var self = this;\n stream.on('end', function () {\n debug('wrapped end');\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) self.push(chunk);\n }\n\n self.push(null);\n });\n\n stream.on('data', function (chunk) {\n debug('wrapped data');\n if (state.decoder) chunk = state.decoder.write(chunk);\n\n // don't skip over falsy values in objectMode\n if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n\n var ret = self.push(chunk);\n if (!ret) {\n paused = true;\n stream.pause();\n }\n });\n\n // proxy all the other methods.\n // important when wrapping filters and duplexes.\n for (var i in stream) {\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = function (method) {\n return function () {\n return stream[method].apply(stream, arguments);\n };\n }(i);\n }\n }\n\n // proxy certain important events.\n var events = ['error', 'close', 'destroy', 'pause', 'resume'];\n forEach(events, function (ev) {\n stream.on(ev, self.emit.bind(self, ev));\n });\n\n // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n self._read = function (n) {\n debug('wrapped _read', n);\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n\n return self;\n};\n\n// exposed for testing purposes only.\nReadable._fromList = fromList;\n\n// Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromList(n, state) {\n // nothing buffered\n if (state.length === 0) return null;\n\n var ret;\n if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n // read it all, truncate the list\n if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.head.data;else ret = state.buffer.concat(state.length);\n state.buffer.clear();\n } else {\n // read part of list\n ret = fromListPartial(n, state.buffer, state.decoder);\n }\n\n return ret;\n}\n\n// Extracts only enough buffered data to satisfy the amount requested.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromListPartial(n, list, hasStrings) {\n var ret;\n if (n < list.head.data.length) {\n // slice is the same for buffers and strings\n ret = list.head.data.slice(0, n);\n list.head.data = list.head.data.slice(n);\n } else if (n === list.head.data.length) {\n // first chunk is a perfect match\n ret = list.shift();\n } else {\n // result spans more than one buffer\n ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list);\n }\n return ret;\n}\n\n// Copies a specified amount of characters from the list of buffered data\n// chunks.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction copyFromBufferString(n, list) {\n var p = list.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n while (p = p.next) {\n var str = p.data;\n var nb = n > str.length ? str.length : n;\n if (nb === str.length) ret += str;else ret += str.slice(0, n);\n n -= nb;\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) list.head = p.next;else list.head = list.tail = null;\n } else {\n list.head = p;\n p.data = str.slice(nb);\n }\n break;\n }\n ++c;\n }\n list.length -= c;\n return ret;\n}\n\n// Copies a specified amount of bytes from the list of buffered data chunks.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction copyFromBuffer(n, list) {\n var ret = Buffer.allocUnsafe(n);\n var p = list.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n while (p = p.next) {\n var buf = p.data;\n var nb = n > buf.length ? buf.length : n;\n buf.copy(ret, ret.length - n, 0, nb);\n n -= nb;\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) list.head = p.next;else list.head = list.tail = null;\n } else {\n list.head = p;\n p.data = buf.slice(nb);\n }\n break;\n }\n ++c;\n }\n list.length -= c;\n return ret;\n}\n\nfunction endReadable(stream) {\n var state = stream._readableState;\n\n // If we get here before consuming all the bytes, then that is a\n // bug in node. Should never happen.\n if (state.length > 0) throw new Error('\"endReadable()\" called on non-empty stream');\n\n if (!state.endEmitted) {\n state.ended = true;\n nextTick(endReadableNT, state, stream);\n }\n}\n\nfunction endReadableNT(state, stream) {\n // Check that we didn't get one last unshift.\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n }\n}\n\nfunction forEach(xs, f) {\n for (var i = 0, l = xs.length; i < l; i++) {\n f(xs[i], i);\n }\n}\n\nfunction indexOf(xs, x) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) return i;\n }\n return -1;\n}\n\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n\nWritable.WritableState = WritableState;\ninherits$1(Writable, EventEmitter);\n\nfunction nop() {}\n\nfunction WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n this.next = null;\n}\n\nfunction WritableState(options, stream) {\n Object.defineProperty(this, 'buffer', {\n get: deprecate(function () {\n return this.getBuffer();\n }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.')\n });\n options = options || {};\n\n // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n this.objectMode = !!options.objectMode;\n\n if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.writableObjectMode;\n\n // the point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write()\n var hwm = options.highWaterMark;\n var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm;\n\n // cast to ints.\n this.highWaterMark = ~ ~this.highWaterMark;\n\n this.needDrain = false;\n // at the start of calling end()\n this.ending = false;\n // when end() has been called, and returned\n this.ended = false;\n // when 'finish' is emitted\n this.finished = false;\n\n // should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n this.length = 0;\n\n // a flag to see when we're in the middle of a write.\n this.writing = false;\n\n // when true all writes will be buffered until .uncork() call\n this.corked = 0;\n\n // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n this.sync = true;\n\n // a flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n this.bufferProcessing = false;\n\n // the callback that's passed to _write(chunk,cb)\n this.onwrite = function (er) {\n onwrite(stream, er);\n };\n\n // the callback that the user supplies to write(chunk,encoding,cb)\n this.writecb = null;\n\n // the amount that is being written when _write is called.\n this.writelen = 0;\n\n this.bufferedRequest = null;\n this.lastBufferedRequest = null;\n\n // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n this.pendingcb = 0;\n\n // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n this.prefinished = false;\n\n // True if the error was already emitted and should not be thrown again\n this.errorEmitted = false;\n\n // count buffered requests\n this.bufferedRequestCount = 0;\n\n // allocate the first CorkedRequest, there is always\n // one allocated and free to use, and we maintain at most two\n this.corkedRequestsFree = new CorkedRequest(this);\n}\n\nWritableState.prototype.getBuffer = function writableStateGetBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n while (current) {\n out.push(current);\n current = current.next;\n }\n return out;\n};\nfunction Writable(options) {\n\n // Writable ctor is applied to Duplexes, though they're not\n // instanceof Writable, they're instanceof Readable.\n if (!(this instanceof Writable) && !(this instanceof Duplex)) return new Writable(options);\n\n this._writableState = new WritableState(options, this);\n\n // legacy.\n this.writable = true;\n\n if (options) {\n if (typeof options.write === 'function') this._write = options.write;\n\n if (typeof options.writev === 'function') this._writev = options.writev;\n }\n\n EventEmitter.call(this);\n}\n\n// Otherwise people can pipe Writable streams, which is just wrong.\nWritable.prototype.pipe = function () {\n this.emit('error', new Error('Cannot pipe, not readable'));\n};\n\nfunction writeAfterEnd(stream, cb) {\n var er = new Error('write after end');\n // TODO: defer error events consistently everywhere, not just the cb\n stream.emit('error', er);\n nextTick(cb, er);\n}\n\n// If we get something that is not a buffer, string, null, or undefined,\n// and we're not in objectMode, then that's an error.\n// Otherwise stream chunks are all considered to be of length=1, and the\n// watermarks determine how many objects to keep in the buffer, rather than\n// how many bytes or characters.\nfunction validChunk(stream, state, chunk, cb) {\n var valid = true;\n var er = false;\n // Always throw error if a null is written\n // if we are not in object mode then throw\n // if it is not a buffer, string, or undefined.\n if (chunk === null) {\n er = new TypeError('May not write null values to stream');\n } else if (!Buffer.isBuffer(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new TypeError('Invalid non-string/buffer chunk');\n }\n if (er) {\n stream.emit('error', er);\n nextTick(cb, er);\n valid = false;\n }\n return valid;\n}\n\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (Buffer.isBuffer(chunk)) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n\n if (typeof cb !== 'function') cb = nop;\n\n if (state.ended) writeAfterEnd(this, cb);else if (validChunk(this, state, chunk, cb)) {\n state.pendingcb++;\n ret = writeOrBuffer(this, state, chunk, encoding, cb);\n }\n\n return ret;\n};\n\nWritable.prototype.cork = function () {\n var state = this._writableState;\n\n state.corked++;\n};\n\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n\n if (state.corked) {\n state.corked--;\n\n if (!state.writing && !state.corked && !state.finished && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n }\n};\n\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n // node::ParseEncoding() requires lower case.\n if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new TypeError('Unknown encoding: ' + encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n};\n\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n chunk = Buffer.from(chunk, encoding);\n }\n return chunk;\n}\n\n// if we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\nfunction writeOrBuffer(stream, state, chunk, encoding, cb) {\n chunk = decodeChunk(state, chunk, encoding);\n\n if (Buffer.isBuffer(chunk)) encoding = 'buffer';\n var len = state.objectMode ? 1 : chunk.length;\n\n state.length += len;\n\n var ret = state.length < state.highWaterMark;\n // we must ensure that previous needDrain will not be reset to false.\n if (!ret) state.needDrain = true;\n\n if (state.writing || state.corked) {\n var last = state.lastBufferedRequest;\n state.lastBufferedRequest = new WriteReq(chunk, encoding, cb);\n if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\n }\n state.bufferedRequestCount += 1;\n } else {\n doWrite(stream, state, false, len, chunk, encoding, cb);\n }\n\n return ret;\n}\n\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\n\nfunction onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n if (sync) nextTick(cb, er);else cb(er);\n\n stream._writableState.errorEmitted = true;\n stream.emit('error', er);\n}\n\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\n\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n\n onwriteStateUpdate(state);\n\n if (er) onwriteError(stream, state, sync, er, cb);else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(state);\n\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n\n if (sync) {\n /*<replacement>*/\n nextTick(afterWrite, stream, state, finished, cb);\n /*</replacement>*/\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n}\n\nfunction afterWrite(stream, state, finished, cb) {\n if (!finished) onwriteDrain(stream, state);\n state.pendingcb--;\n cb();\n finishMaybe(stream, state);\n}\n\n// Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n}\n\n// if there's something in the buffer waiting, then process it\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n var entry = state.bufferedRequest;\n\n if (stream._writev && entry && entry.next) {\n // Fast case, write everything using _writev()\n var l = state.bufferedRequestCount;\n var buffer = new Array(l);\n var holder = state.corkedRequestsFree;\n holder.entry = entry;\n\n var count = 0;\n while (entry) {\n buffer[count] = entry;\n entry = entry.next;\n count += 1;\n }\n\n doWrite(stream, state, true, state.length, buffer, '', holder.finish);\n\n // doWrite is almost always async, defer these to save a bit of time\n // as the hot path ends with doWrite\n state.pendingcb++;\n state.lastBufferedRequest = null;\n if (holder.next) {\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n state.corkedRequestsFree = new CorkedRequest(state);\n }\n } else {\n // Slow case, write chunks one-by-one\n while (entry) {\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n\n doWrite(stream, state, false, len, chunk, encoding, cb);\n entry = entry.next;\n // if we didn't call the onwrite immediately, then\n // it means that we need to wait until it does.\n // also, that means that the chunk and cb are currently\n // being processed, so move the buffer counter past them.\n if (state.writing) {\n break;\n }\n }\n\n if (entry === null) state.lastBufferedRequest = null;\n }\n\n state.bufferedRequestCount = 0;\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n}\n\nWritable.prototype._write = function (chunk, encoding, cb) {\n cb(new Error('not implemented'));\n};\n\nWritable.prototype._writev = null;\n\nWritable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\n\n if (typeof chunk === 'function') {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);\n\n // .end() fully uncorks\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n }\n\n // ignore unnecessary end() calls.\n if (!state.ending && !state.finished) endWritable(this, state, cb);\n};\n\nfunction needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\n\nfunction prefinish(stream, state) {\n if (!state.prefinished) {\n state.prefinished = true;\n stream.emit('prefinish');\n }\n}\n\nfunction finishMaybe(stream, state) {\n var need = needFinish(state);\n if (need) {\n if (state.pendingcb === 0) {\n prefinish(stream, state);\n state.finished = true;\n stream.emit('finish');\n } else {\n prefinish(stream, state);\n }\n }\n return need;\n}\n\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n if (cb) {\n if (state.finished) nextTick(cb);else stream.once('finish', cb);\n }\n state.ended = true;\n stream.writable = false;\n}\n\n// It seems a linked list but it is not\n// there will be only 2 of these for each stream\nfunction CorkedRequest(state) {\n var _this = this;\n\n this.next = null;\n this.entry = null;\n\n this.finish = function (err) {\n var entry = _this.entry;\n _this.entry = null;\n while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n }\n if (state.corkedRequestsFree) {\n state.corkedRequestsFree.next = _this;\n } else {\n state.corkedRequestsFree = _this;\n }\n };\n}\n\ninherits$1(Duplex, Readable);\n\nvar keys = Object.keys(Writable.prototype);\nfor (var v = 0; v < keys.length; v++) {\n var method = keys[v];\n if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n}\nfunction Duplex(options) {\n if (!(this instanceof Duplex)) return new Duplex(options);\n\n Readable.call(this, options);\n Writable.call(this, options);\n\n if (options && options.readable === false) this.readable = false;\n\n if (options && options.writable === false) this.writable = false;\n\n this.allowHalfOpen = true;\n if (options && options.allowHalfOpen === false) this.allowHalfOpen = false;\n\n this.once('end', onend);\n}\n\n// the no-half-open enforcer\nfunction onend() {\n // if we allow half-open state, or if the writable side ended,\n // then we're ok.\n if (this.allowHalfOpen || this._writableState.ended) return;\n\n // no more data can be written.\n // But allow more writes to happen in this tick.\n nextTick(onEndNT, this);\n}\n\nfunction onEndNT(self) {\n self.end();\n}\n\n// a transform stream is a readable/writable stream where you do\n// something with the data. Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored. (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation. For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up. When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer. When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks. If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk. However,\n// a pathological inflate type of transform can cause excessive buffering\n// here. For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output. In this case, you could write a very small\n// amount of input, and end up with a very large amount of output. In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform. A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n\ninherits$1(Transform, Duplex);\n\nfunction TransformState(stream) {\n this.afterTransform = function (er, data) {\n return afterTransform(stream, er, data);\n };\n\n this.needTransform = false;\n this.transforming = false;\n this.writecb = null;\n this.writechunk = null;\n this.writeencoding = null;\n}\n\nfunction afterTransform(stream, er, data) {\n var ts = stream._transformState;\n ts.transforming = false;\n\n var cb = ts.writecb;\n\n if (!cb) return stream.emit('error', new Error('no writecb in Transform class'));\n\n ts.writechunk = null;\n ts.writecb = null;\n\n if (data !== null && data !== undefined) stream.push(data);\n\n cb(er);\n\n var rs = stream._readableState;\n rs.reading = false;\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n stream._read(rs.highWaterMark);\n }\n}\nfunction Transform(options) {\n if (!(this instanceof Transform)) return new Transform(options);\n\n Duplex.call(this, options);\n\n this._transformState = new TransformState(this);\n\n // when the writable side finishes, then flush out anything remaining.\n var stream = this;\n\n // start out asking for a readable event once data is transformed.\n this._readableState.needReadable = true;\n\n // we have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n this._readableState.sync = false;\n\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform;\n\n if (typeof options.flush === 'function') this._flush = options.flush;\n }\n\n this.once('prefinish', function () {\n if (typeof this._flush === 'function') this._flush(function (er) {\n done(stream, er);\n });else done(stream);\n });\n}\n\nTransform.prototype.push = function (chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\n};\n\n// This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side. You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk. If you pass\n// an error, then that'll put the hurt on the whole operation. If you\n// never call cb(), then you'll never get another chunk.\nTransform.prototype._transform = function (chunk, encoding, cb) {\n throw new Error('Not implemented');\n};\n\nTransform.prototype._write = function (chunk, encoding, cb) {\n var ts = this._transformState;\n ts.writecb = cb;\n ts.writechunk = chunk;\n ts.writeencoding = encoding;\n if (!ts.transforming) {\n var rs = this._readableState;\n if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n }\n};\n\n// Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\nTransform.prototype._read = function (n) {\n var ts = this._transformState;\n\n if (ts.writechunk !== null && ts.writecb && !ts.transforming) {\n ts.transforming = true;\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n } else {\n // mark that we need a transform, so that any data that comes in\n // will get processed, now that we've asked for it.\n ts.needTransform = true;\n }\n};\n\nfunction done(stream, er) {\n if (er) return stream.emit('error', er);\n\n // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n var ws = stream._writableState;\n var ts = stream._transformState;\n\n if (ws.length) throw new Error('Calling transform done when ws.length != 0');\n\n if (ts.transforming) throw new Error('Calling transform done when still transforming');\n\n return stream.push(null);\n}\n\ninherits$1(PassThrough, Transform);\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough)) return new PassThrough(options);\n\n Transform.call(this, options);\n}\n\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n cb(null, chunk);\n};\n\ninherits$1(Stream, EventEmitter);\nStream.Readable = Readable;\nStream.Writable = Writable;\nStream.Duplex = Duplex;\nStream.Transform = Transform;\nStream.PassThrough = PassThrough;\n\n// Backwards-compat with node 0.4.x\nStream.Stream = Stream;\n\n// old-style streams. Note that the pipe method (the only relevant\n// part of this class) is overridden in the Readable class.\n\nfunction Stream() {\n EventEmitter.call(this);\n}\n\nStream.prototype.pipe = function(dest, options) {\n var source = this;\n\n function ondata(chunk) {\n if (dest.writable) {\n if (false === dest.write(chunk) && source.pause) {\n source.pause();\n }\n }\n }\n\n source.on('data', ondata);\n\n function ondrain() {\n if (source.readable && source.resume) {\n source.resume();\n }\n }\n\n dest.on('drain', ondrain);\n\n // If the 'end' option is not supplied, dest.end() will be called when\n // source gets the 'end' or 'close' events. Only dest.end() once.\n if (!dest._isStdio && (!options || options.end !== false)) {\n source.on('end', onend);\n source.on('close', onclose);\n }\n\n var didOnEnd = false;\n function onend() {\n if (didOnEnd) return;\n didOnEnd = true;\n\n dest.end();\n }\n\n\n function onclose() {\n if (didOnEnd) return;\n didOnEnd = true;\n\n if (typeof dest.destroy === 'function') dest.destroy();\n }\n\n // don't leave dangling pipes when there are errors.\n function onerror(er) {\n cleanup();\n if (EventEmitter.listenerCount(this, 'error') === 0) {\n throw er; // Unhandled stream error in pipe.\n }\n }\n\n source.on('error', onerror);\n dest.on('error', onerror);\n\n // remove all the event listeners that were added.\n function cleanup() {\n source.removeListener('data', ondata);\n dest.removeListener('drain', ondrain);\n\n source.removeListener('end', onend);\n source.removeListener('close', onclose);\n\n source.removeListener('error', onerror);\n dest.removeListener('error', onerror);\n\n source.removeListener('end', cleanup);\n source.removeListener('close', cleanup);\n\n dest.removeListener('close', cleanup);\n }\n\n source.on('end', cleanup);\n source.on('close', cleanup);\n\n dest.on('close', cleanup);\n\n dest.emit('pipe', source);\n\n // Allow for unix-like usage: A.pipe(B).pipe(C)\n return dest;\n};\n\nclass CsvError extends Error {\n constructor(code, message, ...contexts) {\n if (Array.isArray(message)) message = message.join(\" \");\n super(message);\n if (Error.captureStackTrace !== undefined) {\n Error.captureStackTrace(this, CsvError);\n }\n this.code = code;\n for (const context of contexts) {\n for (const key in context) {\n const value = context[key];\n this[key] = isBuffer(value)\n ? value.toString()\n : value == null\n ? value\n : JSON.parse(JSON.stringify(value));\n }\n }\n }\n}\n\nconst is_object = function (obj) {\n return typeof obj === \"object\" && obj !== null && !Array.isArray(obj);\n};\n\n// Lodash implementation of `get`\n\nconst charCodeOfDot = \".\".charCodeAt(0);\nconst reEscapeChar = /\\\\(\\\\)?/g;\nconst rePropName = RegExp(\n // Match anything that isn't a dot or bracket.\n \"[^.[\\\\]]+\" +\n \"|\" +\n // Or match property names within brackets.\n \"\\\\[(?:\" +\n // Match a non-string expression.\n \"([^\\\"'][^[]*)\" +\n \"|\" +\n // Or match strings (supports escaping characters).\n \"([\\\"'])((?:(?!\\\\2)[^\\\\\\\\]|\\\\\\\\.)*?)\\\\2\" +\n \")\\\\]\" +\n \"|\" +\n // Or match \"\" as the space between consecutive dots or empty brackets.\n \"(?=(?:\\\\.|\\\\[\\\\])(?:\\\\.|\\\\[\\\\]|$))\",\n \"g\",\n);\nconst reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/;\nconst reIsPlainProp = /^\\w*$/;\n\nconst getTag = function (value) {\n return Object.prototype.toString.call(value);\n};\n\nconst isSymbol = function (value) {\n const type = typeof value;\n return (\n type === \"symbol\" ||\n (type === \"object\" && value && getTag(value) === \"[object Symbol]\")\n );\n};\n\nconst isKey = function (value, object) {\n if (Array.isArray(value)) {\n return false;\n }\n const type = typeof value;\n if (\n type === \"number\" ||\n type === \"symbol\" ||\n type === \"boolean\" ||\n !value ||\n isSymbol(value)\n ) {\n return true;\n }\n return (\n reIsPlainProp.test(value) ||\n !reIsDeepProp.test(value) ||\n (object != null && value in Object(object))\n );\n};\n\nconst stringToPath = function (string) {\n const result = [];\n if (string.charCodeAt(0) === charCodeOfDot) {\n result.push(\"\");\n }\n string.replace(rePropName, function (match, expression, quote, subString) {\n let key = match;\n if (quote) {\n key = subString.replace(reEscapeChar, \"$1\");\n } else if (expression) {\n key = expression.trim();\n }\n result.push(key);\n });\n return result;\n};\n\nconst castPath = function (value, object) {\n if (Array.isArray(value)) {\n return value;\n } else {\n return isKey(value, object) ? [value] : stringToPath(value);\n }\n};\n\nconst toKey = function (value) {\n if (typeof value === \"string\" || isSymbol(value)) return value;\n const result = `${value}`;\n // eslint-disable-next-line\n return result == \"0\" && 1 / value == -INFINITY ? \"-0\" : result;\n};\n\nconst get = function (object, path) {\n path = castPath(path, object);\n let index = 0;\n const length = path.length;\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return index && index === length ? object : undefined;\n};\n\nconst normalize_columns = function (columns) {\n if (columns === undefined || columns === null) {\n return [undefined, undefined];\n }\n if (typeof columns !== \"object\") {\n return [Error('Invalid option \"columns\": expect an array or an object')];\n }\n if (!Array.isArray(columns)) {\n const newcolumns = [];\n for (const k in columns) {\n newcolumns.push({\n key: k,\n header: columns[k],\n });\n }\n columns = newcolumns;\n } else {\n const newcolumns = [];\n for (const column of columns) {\n if (typeof column === \"string\") {\n newcolumns.push({\n key: column,\n header: column,\n });\n } else if (\n typeof column === \"object\" &&\n column !== null &&\n !Array.isArray(column)\n ) {\n if (!column.key) {\n return [\n Error('Invalid column definition: property \"key\" is required'),\n ];\n }\n if (column.header === undefined) {\n column.header = column.key;\n }\n newcolumns.push(column);\n } else {\n return [\n Error(\"Invalid column definition: expect a string or an object\"),\n ];\n }\n }\n columns = newcolumns;\n }\n return [undefined, columns];\n};\n\nconst underscore = function (str) {\n return str.replace(/([A-Z])/g, function (_, match) {\n return \"_\" + match.toLowerCase();\n });\n};\n\nconst normalize_options = function (opts) {\n const options = {};\n // Merge with user options\n for (const opt in opts) {\n options[underscore(opt)] = opts[opt];\n }\n // Normalize option `bom`\n if (\n options.bom === undefined ||\n options.bom === null ||\n options.bom === false\n ) {\n options.bom = false;\n } else if (options.bom !== true) {\n return [\n new CsvError(\"CSV_OPTION_BOOLEAN_INVALID_TYPE\", [\n \"option `bom` is optional and must be a boolean value,\",\n `got ${JSON.stringify(options.bom)}`,\n ]),\n ];\n }\n // Normalize option `delimiter`\n if (options.delimiter === undefined || options.delimiter === null) {\n options.delimiter = \",\";\n } else if (isBuffer(options.delimiter)) {\n options.delimiter = options.delimiter.toString();\n } else if (typeof options.delimiter !== \"string\") {\n return [\n new CsvError(\"CSV_OPTION_DELIMITER_INVALID_TYPE\", [\n \"option `delimiter` must be a buffer or a string,\",\n `got ${JSON.stringify(options.delimiter)}`,\n ]),\n ];\n }\n // Normalize option `quote`\n if (options.quote === undefined || options.quote === null) {\n options.quote = '\"';\n } else if (options.quote === true) {\n options.quote = '\"';\n } else if (options.quote === false) {\n options.quote = \"\";\n } else if (isBuffer(options.quote)) {\n options.quote = options.quote.toString();\n } else if (typeof options.quote !== \"string\") {\n return [\n new CsvError(\"CSV_OPTION_QUOTE_INVALID_TYPE\", [\n \"option `quote` must be a boolean, a buffer or a string,\",\n `got ${JSON.stringify(options.quote)}`,\n ]),\n ];\n }\n // Normalize option `quoted`\n if (options.quoted === undefined || options.quoted === null) {\n options.quoted = false;\n }\n // Normalize option `escape_formulas`\n if (\n options.escape_formulas === undefined ||\n options.escape_formulas === null\n ) {\n options.escape_formulas = false;\n } else if (typeof options.escape_formulas !== \"boolean\") {\n return [\n new CsvError(\"CSV_OPTION_ESCAPE_FORMULAS_INVALID_TYPE\", [\n \"option `escape_formulas` must be a boolean,\",\n `got ${JSON.stringify(options.escape_formulas)}`,\n ]),\n ];\n }\n // Normalize option `quoted_empty`\n if (options.quoted_empty === undefined || options.quoted_empty === null) {\n options.quoted_empty = undefined;\n }\n // Normalize option `quoted_match`\n if (\n options.quoted_match === undefined ||\n options.quoted_match === null ||\n options.quoted_match === false\n ) {\n options.quoted_match = null;\n } else if (!Array.isArray(options.quoted_match)) {\n options.quoted_match = [options.quoted_match];\n }\n if (options.quoted_match) {\n for (const quoted_match of options.quoted_match) {\n const isString = typeof quoted_match === \"string\";\n const isRegExp = quoted_match instanceof RegExp;\n if (!isString && !isRegExp) {\n return [\n Error(\n `Invalid Option: quoted_match must be a string or a regex, got ${JSON.stringify(quoted_match)}`,\n ),\n ];\n }\n }\n }\n // Normalize option `quoted_string`\n if (options.quoted_string === undefined || options.quoted_string === null) {\n options.quoted_string = false;\n }\n // Normalize option `eof`\n if (options.eof === undefined || options.eof === null) {\n options.eof = true;\n }\n // Normalize option `escape`\n if (options.escape === undefined || options.escape === null) {\n options.escape = '\"';\n } else if (isBuffer(options.escape)) {\n options.escape = options.escape.toString();\n } else if (typeof options.escape !== \"string\") {\n return [\n Error(\n `Invalid Option: escape must be a buffer or a string, got ${JSON.stringify(options.escape)}`,\n ),\n ];\n }\n if (options.escape.length > 1) {\n return [\n Error(\n `Invalid Option: escape must be one character, got ${options.escape.length} characters`,\n ),\n ];\n }\n // Normalize option `header`\n if (options.header === undefined || options.header === null) {\n options.header = false;\n }\n // Normalize option `columns`\n const [errColumns, columns] = normalize_columns(options.columns);\n if (errColumns !== undefined) return [errColumns];\n options.columns = columns;\n // Normalize option `quoted`\n if (options.quoted === undefined || options.quoted === null) {\n options.quoted = false;\n }\n // Normalize option `cast`\n if (options.cast === undefined || options.cast === null) {\n options.cast = {};\n }\n // Normalize option cast.bigint\n if (options.cast.bigint === undefined || options.cast.bigint === null) {\n // Cast boolean to string by default\n options.cast.bigint = (value) => \"\" + value;\n }\n // Normalize option cast.boolean\n if (options.cast.boolean === undefined || options.cast.boolean === null) {\n // Cast boolean to string by default\n options.cast.boolean = (value) => (value ? \"1\" : \"\");\n }\n // Normalize option cast.date\n if (options.cast.date === undefined || options.cast.date === null) {\n // Cast date to timestamp string by default\n options.cast.date = (value) => \"\" + value.getTime();\n }\n // Normalize option cast.number\n if (options.cast.number === undefined || options.cast.number === null) {\n // Cast number to string using native casting by default\n options.cast.number = (value) => \"\" + value;\n }\n // Normalize option cast.object\n if (options.cast.object === undefined || options.cast.object === null) {\n // Stringify object as JSON by default\n options.cast.object = (value) => JSON.stringify(value);\n }\n // Normalize option cast.string\n if (options.cast.string === undefined || options.cast.string === null) {\n // Leave string untouched\n options.cast.string = function (value) {\n return value;\n };\n }\n // Normalize option `on_record`\n if (\n options.on_record !== undefined &&\n typeof options.on_record !== \"function\"\n ) {\n return [Error(`Invalid Option: \"on_record\" must be a function.`)];\n }\n // Normalize option `record_delimiter`\n if (\n options.record_delimiter === undefined ||\n options.record_delimiter === null\n ) {\n options.record_delimiter = \"\\n\";\n } else if (isBuffer(options.record_delimiter)) {\n options.record_delimiter = options.record_delimiter.toString();\n } else if (typeof options.record_delimiter !== \"string\") {\n return [\n Error(\n `Invalid Option: record_delimiter must be a buffer or a string, got ${JSON.stringify(options.record_delimiter)}`,\n ),\n ];\n }\n switch (options.record_delimiter) {\n case \"unix\":\n options.record_delimiter = \"\\n\";\n break;\n case \"mac\":\n options.record_delimiter = \"\\r\";\n break;\n case \"windows\":\n options.record_delimiter = \"\\r\\n\";\n break;\n case \"ascii\":\n options.record_delimiter = \"\\u001e\";\n break;\n case \"unicode\":\n options.record_delimiter = \"\\u2028\";\n break;\n }\n return [undefined, options];\n};\n\nconst bom_utf8 = Buffer.from([239, 187, 191]);\n\nconst stringifier = function (options, state, info) {\n return {\n options: options,\n state: state,\n info: info,\n __transform: function (chunk, push) {\n // Chunk validation\n if (!Array.isArray(chunk) && typeof chunk !== \"object\") {\n return Error(\n `Invalid Record: expect an array or an object, got ${JSON.stringify(chunk)}`,\n );\n }\n // Detect columns from the first record\n if (this.info.records === 0) {\n if (Array.isArray(chunk)) {\n if (\n this.options.header === true &&\n this.options.columns === undefined\n ) {\n return Error(\n \"Undiscoverable Columns: header option requires column option or object records\",\n );\n }\n } else if (this.options.columns === undefined) {\n const [err, columns] = normalize_columns(Object.keys(chunk));\n if (err) return;\n this.options.columns = columns;\n }\n }\n // Emit the header\n if (this.info.records === 0) {\n this.bom(push);\n const err = this.headers(push);\n if (err) return err;\n }\n // Emit and stringify the record if an object or an array\n try {\n // this.emit('record', chunk, this.info.records);\n if (this.options.on_record) {\n this.options.on_record(chunk, this.info.records);\n }\n } catch (err) {\n return err;\n }\n // Convert the record into a string\n let err, chunk_string;\n if (this.options.eof) {\n [err, chunk_string] = this.stringify(chunk);\n if (err) return err;\n if (chunk_string === undefined) {\n return;\n } else {\n chunk_string = chunk_string + this.options.record_delimiter;\n }\n } else {\n [err, chunk_string] = this.stringify(chunk);\n if (err) return err;\n if (chunk_string === undefined) {\n return;\n } else {\n if (this.options.header || this.info.records) {\n chunk_string = this.options.record_delimiter + chunk_string;\n }\n }\n }\n // Emit the csv\n this.info.records++;\n push(chunk_string);\n },\n stringify: function (chunk, chunkIsHeader = false) {\n if (typeof chunk !== \"object\") {\n return [undefined, chunk];\n }\n const { columns } = this.options;\n const record = [];\n // Record is an array\n if (Array.isArray(chunk)) {\n // We are getting an array but the user has specified output columns. In\n // this case, we respect the columns indexes\n if (columns) {\n chunk.splice(columns.length);\n }\n // Cast record elements\n for (let i = 0; i < chunk.length; i++) {\n const field = chunk[i];\n const [err, value] = this.__cast(field, {\n index: i,\n column: i,\n records: this.info.records,\n header: chunkIsHeader,\n });\n if (err) return [err];\n record[i] = [value, field];\n }\n // Record is a literal object\n // `columns` is always defined: it is either provided or discovered.\n } else {\n for (let i = 0; i < columns.length; i++) {\n const field = get(chunk, columns[i].key);\n const [err, value] = this.__cast(field, {\n index: i,\n column: columns[i].key,\n records: this.info.records,\n header: chunkIsHeader,\n });\n if (err) return [err];\n record[i] = [value, field];\n }\n }\n let csvrecord = \"\";\n for (let i = 0; i < record.length; i++) {\n let options, err;\n\n let [value, field] = record[i];\n if (typeof value === \"string\") {\n options = this.options;\n } else if (is_object(value)) {\n options = value;\n value = options.value;\n delete options.value;\n if (\n typeof value !== \"string\" &&\n value !== undefined &&\n value !== null\n ) {\n if (err)\n return [\n Error(\n `Invalid Casting Value: returned value must return a string, null or undefined, got ${JSON.stringify(value)}`,\n ),\n ];\n }\n options = { ...this.options, ...options };\n [err, options] = normalize_options(options);\n if (err !== undefined) {\n return [err];\n }\n } else if (value === undefined || value === null) {\n options = this.options;\n } else {\n return [\n Error(\n `Invalid Casting Value: returned value must return a string, an object, null or undefined, got ${JSON.stringify(value)}`,\n ),\n ];\n }\n const {\n delimiter,\n escape,\n quote,\n quoted,\n quoted_empty,\n quoted_string,\n quoted_match,\n record_delimiter,\n escape_formulas,\n } = options;\n if (\"\" === value && \"\" === field) {\n let quotedMatch =\n quoted_match &&\n quoted_match.filter((quoted_match) => {\n if (typeof quoted_match === \"string\") {\n return value.indexOf(quoted_match) !== -1;\n } else {\n return quoted_match.test(value);\n }\n });\n quotedMatch = quotedMatch && quotedMatch.length > 0;\n const shouldQuote =\n quotedMatch ||\n true === quoted_empty ||\n (true === quoted_string && false !== quoted_empty);\n if (shouldQuote === true) {\n value = quote + value + quote;\n }\n csvrecord += value;\n } else if (value) {\n if (typeof value !== \"string\") {\n return [\n Error(\n `Formatter must return a string, null or undefined, got ${JSON.stringify(value)}`,\n ),\n ];\n }\n const containsdelimiter =\n delimiter.length && value.indexOf(delimiter) >= 0;\n const containsQuote = quote !== \"\" && value.indexOf(quote) >= 0;\n const containsEscape = value.indexOf(escape) >= 0 && escape !== quote;\n const containsRecordDelimiter = value.indexOf(record_delimiter) >= 0;\n const quotedString = quoted_string && typeof field === \"string\";\n let quotedMatch =\n quoted_match &&\n quoted_match.filter((quoted_match) => {\n if (typeof quoted_match === \"string\") {\n return value.indexOf(quoted_match) !== -1;\n } else {\n return quoted_match.test(value);\n }\n });\n quotedMatch = quotedMatch && quotedMatch.length > 0;\n // See https://github.com/adaltas/node-csv/pull/387\n // More about CSV injection or formula injection, when websites embed\n // untrusted input inside CSV files:\n // https://owasp.org/www-community/attacks/CSV_Injection\n // http://georgemauer.net/2017/10/07/csv-injection.html\n // Apple Numbers unicode normalization is empirical from testing\n if (escape_formulas) {\n switch (value[0]) {\n case \"=\":\n case \"+\":\n case \"-\":\n case \"@\":\n case \"\\t\":\n case \"\\r\":\n case \"\\uFF1D\": // Unicode '='\n case \"\\uFF0B\": // Unicode '+'\n case \"\\uFF0D\": // Unicode '-'\n case \"\\uFF20\": // Unicode '@'\n value = `'${value}`;\n break;\n }\n }\n const shouldQuote =\n containsQuote === true ||\n containsdelimiter ||\n containsRecordDelimiter ||\n quoted ||\n quotedString ||\n quotedMatch;\n if (shouldQuote === true && containsEscape === true) {\n const regexp =\n escape === \"\\\\\"\n ? new RegExp(escape + escape, \"g\")\n : new RegExp(escape, \"g\");\n value = value.replace(regexp, escape + escape);\n }\n if (containsQuote === true) {\n const regexp = new RegExp(quote, \"g\");\n value = value.replace(regexp, escape + quote);\n }\n if (shouldQuote === true) {\n value = quote + value + quote;\n }\n csvrecord += value;\n } else if (\n quoted_empty === true ||\n (field === \"\" && quoted_string === true && quoted_empty !== false)\n ) {\n csvrecord += quote + quote;\n }\n if (i !== record.length - 1) {\n csvrecord += delimiter;\n }\n }\n return [undefined, csvrecord];\n },\n bom: function (push) {\n if (this.options.bom !== true) {\n return;\n }\n push(bom_utf8);\n },\n headers: function (push) {\n if (this.options.header === false) {\n return;\n }\n if (this.options.columns === undefined) {\n return;\n }\n let err;\n let headers = this.options.columns.map((column) => column.header);\n if (this.options.eof) {\n [err, headers] = this.stringify(headers, true);\n headers += this.options.record_delimiter;\n } else {\n [err, headers] = this.stringify(headers);\n }\n if (err) return err;\n push(headers);\n },\n __cast: function (value, context) {\n const type = typeof value;\n try {\n if (type === \"string\") {\n // Fine for 99% of the cases\n return [undefined, this.options.cast.string(value, context)];\n } else if (type === \"bigint\") {\n return [undefined, this.options.cast.bigint(value, context)];\n } else if (type === \"number\") {\n return [undefined, this.options.cast.number(value, context)];\n } else if (type === \"boolean\") {\n return [undefined, this.options.cast.boolean(value, context)];\n } else if (value instanceof Date) {\n return [undefined, this.options.cast.date(value, context)];\n } else if (type === \"object\" && value !== null) {\n return [undefined, this.options.cast.object(value, context)];\n } else {\n return [undefined, value, value];\n }\n } catch (err) {\n return [err];\n }\n },\n };\n};\n\n/*\nCSV Stringify\n\nPlease look at the [project documentation](https://csv.js.org/stringify/) for\nadditional information.\n*/\n\n\nclass Stringifier extends Transform {\n constructor(opts = {}) {\n super({ ...{ writableObjectMode: true }, ...opts });\n const [err, options] = normalize_options(opts);\n if (err !== undefined) throw err;\n // Expose options\n this.options = options;\n // Internal state\n this.state = {\n stop: false,\n };\n // Information\n this.info = {\n records: 0,\n };\n this.api = stringifier(this.options, this.state, this.info);\n this.api.options.on_record = (...args) => {\n this.emit(\"record\", ...args);\n };\n }\n _transform(chunk, encoding, callback) {\n if (this.state.stop === true) {\n return;\n }\n const err = this.api.__transform(chunk, this.push.bind(this));\n if (err !== undefined) {\n this.state.stop = true;\n }\n callback(err);\n }\n _flush(callback) {\n if (this.state.stop === true) {\n // Note, Node.js 12 call flush even after an error, we must prevent\n // `callback` from being called in flush without any error.\n return;\n }\n if (this.info.records === 0) {\n this.api.bom(this.push.bind(this));\n const err = this.api.headers(this.push.bind(this));\n if (err) callback(err);\n }\n callback();\n }\n}\n\nconst stringify = function () {\n let data, options, callback;\n for (const i in arguments) {\n const argument = arguments[i];\n const type = typeof argument;\n if (data === undefined && Array.isArray(argument)) {\n data = argument;\n } else if (options === undefined && is_object(argument)) {\n options = argument;\n } else if (callback === undefined && type === \"function\") {\n callback = argument;\n } else {\n throw new CsvError(\"CSV_INVALID_ARGUMENT\", [\n \"Invalid argument:\",\n `got ${JSON.stringify(argument)} at index ${i}`,\n ]);\n }\n }\n const stringifier = new Stringifier(options);\n if (callback) {\n const chunks = [];\n stringifier.on(\"readable\", function () {\n let chunk;\n while ((chunk = this.read()) !== null) {\n chunks.push(chunk);\n }\n });\n stringifier.on(\"error\", function (err) {\n callback(err);\n });\n stringifier.on(\"end\", function () {\n try {\n callback(undefined, chunks.join(\"\"));\n } catch (err) {\n // This can happen if the `chunks` is extremely long; it may throw\n // \"Cannot create a string longer than 0x1fffffe8 characters\"\n // See [#386](https://github.com/adaltas/node-csv/pull/386)\n callback(err);\n return;\n }\n });\n }\n if (data !== undefined) {\n const writer = function () {\n for (const record of data) {\n stringifier.write(record);\n }\n stringifier.end();\n };\n // Support Deno, Rollup doesnt provide a shim for setImmediate\n if (typeof setImmediate === \"function\") {\n setImmediate(writer);\n } else {\n setTimeout(writer, 0);\n }\n }\n return stringifier;\n};\n\nexport { CsvError, Stringifier, stringify };\n"],"names":["EventHandlers","EventEmitter","init","call","this","$getMaxListeners","that","undefined","_maxListeners","defaultMaxListeners","_addListener","target","type","listener","prepend","m","events","existing","e","TypeError","_events","newListener","emit","_eventsCount","unshift","push","warned","length","w","Error","name","emitter","count","console","warn","log","_onceWrap","fired","g","removeListener","apply","arguments","listenerCount$1","evlistener","arrayClone","arr","i","copy","Array","prototype","Object","create","usingDomains","domain","active","getPrototypeOf","setMaxListeners","n","isNaN","getMaxListeners","er","handler","len","args","doError","error","err","context","domainEmitter","domainThrown","isFn","self","listeners","emitNone","arg1","emitOne","arg2","emitTwo","arg3","emitThree","emitMany","addListener","on","prependListener","once","prependOnceListener","list","position","originalListener","index","k","pop","spliceOne","removeAllListeners","key","keys","ret","unwrapListeners","listenerCount","eventNames","Reflect","ownKeys","global$1","global","window","lookup","revLookup","Arr","Uint8Array","inited","code","charCodeAt","encodeChunk","uint8","start","end","tmp","num","output","join","fromByteArray","extraBytes","parts","maxChunkLength","len2","read","buffer","offset","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","d","s","NaN","Infinity","Math","pow","write","value","c","rt","abs","floor","LN2","toString","isArray$1","isArray","kMaxLength","Buffer","TYPED_ARRAY_SUPPORT","createBuffer","RangeError","__proto__","arg","encodingOrOffset","allocUnsafe","from","ArrayBuffer","array","byteOffset","byteLength","fromArrayLike","fromArrayBuffer","string","encoding","isEncoding","actual","slice","fromString","obj","internalIsBuffer","checked","val","data","fromObject","assertSize","size","b","_isBuffer","isView","loweredCase","utf8ToBytes","base64ToBytes","toLowerCase","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","bidirectionalIndexOf","dir","arrayIndexOf","indexOf","lastIndexOf","indexSize","arrLength","valLength","String","buf","readUInt16BE","foundIndex","found","j","hexWrite","Number","remaining","strLen","parsed","parseInt","substr","utf8Write","blitBuffer","asciiWrite","str","byteArray","asciiToBytes","latin1Write","base64Write","ucs2Write","units","hi","lo","utf16leToBytes","min","res","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","codePoint","bytesPerSequence","codePoints","MAX_ARGUMENTS_LENGTH","fromCharCode","decodeCodePointsArray","poolSize","_augment","Symbol","species","alloc","fill","allocUnsafeSlow","isBuffer","compare","a","x","y","concat","pos","swap16","swap32","swap64","equals","inspect","match","thisStart","thisEnd","thisCopy","targetCopy","includes","isFinite","toJSON","_arr","out","toHex","bytes","checkOffset","ext","checkInt","max","objectWriteUInt16","littleEndian","objectWriteUInt32","checkIEEE754","writeFloat","noAssert","writeDouble","newBuf","subarray","sliceLen","readUIntLE","mul","readUIntBE","readUInt8","readUInt16LE","readUInt32LE","readUInt32BE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUIntLE","writeUIntBE","writeUInt8","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeIntLE","limit","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","set","INVALID_BASE64_RE","leadSurrogate","b64","l","placeHolders","L","toByteArray","trim","replace","stringtrim","base64clean","src","dst","isFastBuffer","isSlowBuffer","constructor","defaultSetTimout","defaultClearTimeout","cachedSetTimeout","cachedClearTimeout","runTimeout","fun","setTimeout","clearTimeout","currentQueue","queue","draining","queueIndex","cleanUpNextTick","drainQueue","timeout","run","marker","runClearTimeout","nextTick","Item","noop","off","performance","performanceNow","now","mozNow","msNow","oNow","webkitNow","Date","getTime","startTime","process","title","browser","env","argv","version","versions","binding","cwd","chdir","umask","hrtime","previousTimestamp","clocktime","seconds","nanoseconds","platform","release","config","uptime","inherits$1","ctor","superCtor","super_","enumerable","writable","configurable","TempCtor","formatRegExp","format","f","isString","objects","JSON","stringify","_","isNull","isObject","deprecate","fn","msg","isUndefined","noDeprecation","throwDeprecation","traceDeprecation","trace","debugEnviron","debugs","opts","ctx","seen","stylize","stylizeNoColor","depth","colors","isBoolean","showHidden","origin","add","_extend","customInspect","stylizeWithColor","formatValue","styleType","style","styles","recurseTimes","isFunction","primitive","simple","formatPrimitive","visibleKeys","hash","forEach","idx","arrayToHash","getOwnPropertyNames","isError","formatError","isRegExp","RegExp","isDate","ar","base","braces","toUTCString","hasOwnProperty","formatProperty","formatArray","map","reduce","prev","cur","reduceToSingleString","desc","getOwnPropertyDescriptor","get","split","line","re","objectToString","o","prop","BufferList","head","tail","v","entry","next","shift","clear","p","isBufferEncoding","StringDecoder","assertEncoding","surrogateSize","detectIncompleteChar","utf16DetectIncompleteChar","base64DetectIncompleteChar","passThroughWrite","charBuffer","charReceived","charLength","charStr","available","charCode","substring","cr","enc","Readable","ReadableState","debug","NODE_DEBUG","toUpperCase","test","debuglog","options","stream","objectMode","Duplex","readableObjectMode","hwm","highWaterMark","defaultHwm","pipes","pipesCount","flowing","ended","endEmitted","reading","sync","needReadable","emittedReadable","readableListening","resumeScheduled","defaultEncoding","ranOut","awaitDrain","readingMore","decoder","_readableState","readable","_read","readableAddChunk","state","chunk","addToFront","chunkInvalid","emitReadable","onEofChunk","_e","skipAdd","maybeReadMore_","maybeReadMore","needMoreData","isPaused","setEncoding","MAX_HWM","howMuchToRead","computeNewHighWaterMark","emitReadable_","flow","nReadingNextTick","resume_","fromList","hasStrings","nb","copyFromBufferString","copyFromBuffer","fromListPartial","endReadable","endReadableNT","xs","nop","WriteReq","cb","callback","WritableState","defineProperty","getBuffer","writableObjectMode","needDrain","ending","finished","noDecode","decodeStrings","writing","corked","bufferProcessing","onwrite","_writableState","writecb","writelen","onwriteStateUpdate","pendingcb","errorEmitted","onwriteError","needFinish","bufferedRequest","clearBuffer","afterWrite","lastBufferedRequest","prefinished","bufferedRequestCount","corkedRequestsFree","CorkedRequest","Writable","_write","writev","_writev","doWrite","onwriteDrain","finishMaybe","holder","finish","prefinish","need","_this","nOrig","doRead","pipe","dest","pipeOpts","endFn","onend","cleanup","onunpipe","ondrain","pipeOnDrain","cleanedUp","onclose","onfinish","onerror","ondata","increasedAwaitDrain","pause","unpipe","event","resume","dests","_i","splice","ev","wrap","paused","method","bind","_fromList","current","writeAfterEnd","valid","validChunk","decodeChunk","last","writeOrBuffer","cork","uncork","setDefaultEncoding","endWritable","allowHalfOpen","onEndNT","TransformState","afterTransform","ts","_transformState","transforming","writechunk","rs","needTransform","writeencoding","Transform","transform","_transform","flush","_flush","done","ws","PassThrough","Stream","source","_isStdio","didOnEnd","destroy","CsvError","message","contexts","super","captureStackTrace","parse","is_object","charCodeOfDot","reEscapeChar","rePropName","reIsDeepProp","reIsPlainProp","isSymbol","getTag","castPath","object","isKey","result","expression","quote","subString","stringToPath","toKey","INFINITY","path","normalize_columns","columns","newcolumns","column","header","normalize_options","opt","bom","delimiter","quoted","escape_formulas","quoted_empty","quoted_match","quoted_string","eof","escape","errColumns","cast","bigint","boolean","date","number","on_record","record_delimiter","bom_utf8","Stringifier","stop","info","records","api","__transform","headers","chunk_string","chunkIsHeader","record","field","__cast","csvrecord","quotedMatch","filter","containsdelimiter","containsQuote","containsEscape","containsRecordDelimiter","quotedString","shouldQuote","regexp","stringifier","argument","chunks","writer","setImmediate"],"sourceRoot":""}