@dxos/vendor-hypercore 0.8.4-main.406dc2a → 0.8.4-main.59c2e9b
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/browser/chunk-WLEV7IVZ.mjs +6336 -0
- package/dist/lib/browser/chunk-WLEV7IVZ.mjs.map +7 -0
- package/dist/lib/browser/hypercore-crypto.mjs +1 -1
- package/dist/lib/browser/hypercore.mjs +1022 -1128
- package/dist/lib/browser/hypercore.mjs.map +4 -4
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/node-esm/chunk-H7LBQLKP.mjs +5779 -0
- package/dist/lib/node-esm/chunk-H7LBQLKP.mjs.map +7 -0
- package/dist/lib/node-esm/hypercore-crypto.mjs +1 -1
- package/dist/lib/node-esm/hypercore.mjs +1050 -203
- package/dist/lib/node-esm/hypercore.mjs.map +4 -4
- package/dist/lib/node-esm/meta.json +1 -1
- package/package.json +7 -2
- package/dist/lib/browser/chunk-XAJ5RWMK.mjs +0 -223
- package/dist/lib/browser/chunk-XAJ5RWMK.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-IEADO42Y.mjs +0 -222
- package/dist/lib/node-esm/chunk-IEADO42Y.mjs.map +0 -7
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../../../../../node_modules/.pnpm/last-one-wins@1.0.4/node_modules/last-one-wins/index.js", "../../../../../node_modules/.pnpm/unordered-array-remove@1.0.2/node_modules/unordered-array-remove/index.js", "../../../../../node_modules/.pnpm/unordered-set@2.0.1/node_modules/unordered-set/index.js", "../../../../../node_modules/.pnpm/flat-tree@1.9.0/node_modules/flat-tree/index.js", "../../../../../node_modules/.pnpm/merkle-tree-stream@4.0.0/node_modules/merkle-tree-stream/generator.js", "../../../../../node_modules/.pnpm/codecs@2.2.0/node_modules/codecs/index.js", "../../../../../node_modules/.pnpm/atomic-batcher@1.0.2/node_modules/atomic-batcher/index.js", "../../../../../node_modules/.pnpm/inherits@2.0.4/node_modules/inherits/inherits_browser.js", "../../../../../node_modules/.pnpm/inherits@2.0.4/node_modules/inherits/inherits.js", "../../../../../node_modules/.pnpm/varint@4.0.1/node_modules/varint/encode.js", "../../../../../node_modules/.pnpm/varint@4.0.1/node_modules/varint/decode.js", "../../../../../node_modules/.pnpm/varint@4.0.1/node_modules/varint/length.js", "../../../../../node_modules/.pnpm/varint@4.0.1/node_modules/varint/index.js", "../../../../../node_modules/.pnpm/buffer-alloc-unsafe@1.1.0/node_modules/buffer-alloc-unsafe/index.js", "../../../../../node_modules/.pnpm/bitfield-rle@2.2.1/node_modules/bitfield-rle/index.js", "../../../../../node_modules/.pnpm/memory-pager@1.5.0/node_modules/memory-pager/index.js", "../../../../../node_modules/.pnpm/sparse-bitfield@3.0.3/node_modules/sparse-bitfield/index.js", "../../../../../node_modules/.pnpm/hypercore@9.12.0/node_modules/hypercore/lib/bitfield.js", "../../../../../node_modules/.pnpm/hypercore@9.12.0/node_modules/hypercore/lib/tree-index.js", "../../../../../node_modules/.pnpm/buffer-fill@1.0.0/node_modules/buffer-fill/index.js", "../../../../../node_modules/.pnpm/buffer-alloc@1.2.0/node_modules/buffer-alloc/index.js", "../../../../../node_modules/.pnpm/uint64be@2.0.2/node_modules/uint64be/index.js", "../../../../../node_modules/.pnpm/hypercore-cache@1.0.2/node_modules/hypercore-cache/index.js", "../../../../../node_modules/.pnpm/hypercore@9.12.0/node_modules/hypercore/lib/cache.js", "../../../../../node_modules/.pnpm/hypercore@9.12.0/node_modules/hypercore/lib/storage.js", "../../../../../node_modules/.pnpm/inspect-custom-symbol@1.1.1/node_modules/inspect-custom-symbol/index.js", "../../../../../node_modules/.pnpm/pretty-hash@1.0.1/node_modules/pretty-hash/index.js", "../../../../../node_modules/.pnpm/nanoguard@1.3.0/node_modules/nanoguard/index.js", "../../../../../node_modules/.pnpm/hypercore@9.12.0/node_modules/hypercore/lib/safe-buffer-equals.js", "../../../../../node_modules/.pnpm/
|
|
4
|
-
"sourcesContent": ["module.exports = function (work) {\n var pending = null\n var callback = null\n var callbacks = null\n var next = null\n\n return function (val, cb) {\n next = val\n update(cb || noop)\n }\n\n function update (cb) {\n if (callback) {\n if (!pending) pending = []\n pending.push(cb)\n return\n }\n\n var val = next\n next = null\n callback = cb\n work(val, done)\n }\n\n function done (err) {\n var cb = callback\n var cbs = callbacks\n callbacks = null\n callback = null\n\n if (pending) {\n callbacks = pending\n pending = null\n update(noop)\n }\n\n if (cbs) {\n for (var i = 0; i < cbs.length; i++) cbs[i](err)\n }\n cb(err)\n }\n}\n\nfunction noop (_) {}\n", "module.exports = remove\n\nfunction remove (arr, i) {\n if (i >= arr.length || i < 0) return\n var last = arr.pop()\n if (i < arr.length) {\n var tmp = arr[i]\n arr[i] = last\n return tmp\n }\n return last\n}\n", "exports.add = add\nexports.has = has\nexports.remove = remove\nexports.swap = swap\n\nfunction add (list, item) {\n if (has(list, item)) return item\n item._index = list.length\n list.push(item)\n return item\n}\n\nfunction has (list, item) {\n return item._index < list.length && list[item._index] === item\n}\n\nfunction remove (list, item) {\n if (!has(list, item)) return null\n\n var last = list.pop()\n if (last !== item) {\n list[item._index] = last\n last._index = item._index\n }\n\n return item\n}\n\nfunction swap (list, a, b) {\n if (!has(list, a) || !has(list, b)) return\n var tmp = a._index\n a._index = b._index\n list[a._index] = a\n b._index = tmp\n list[b._index] = b\n}\n", "exports.fullRoots = function (index, result) {\n if (index & 1) throw new Error('You can only look up roots for depth(0) blocks')\n if (!result) result = []\n\n index /= 2\n\n var offset = 0\n var factor = 1\n\n while (true) {\n if (!index) return result\n while (factor * 2 <= index) factor *= 2\n result.push(offset + factor - 1)\n offset = offset + 2 * factor\n index -= factor\n factor = 1\n }\n}\n\nexports.depth = function (index) {\n var depth = 0\n\n index += 1\n while (!(index & 1)) {\n depth++\n index = rightShift(index)\n }\n\n return depth\n}\n\nexports.sibling = function (index, depth) {\n if (!depth) depth = exports.depth(index)\n var offset = exports.offset(index, depth)\n\n return exports.index(depth, offset & 1 ? offset - 1 : offset + 1)\n}\n\nexports.parent = function (index, depth) {\n if (!depth) depth = exports.depth(index)\n var offset = exports.offset(index, depth)\n\n return exports.index(depth + 1, rightShift(offset))\n}\n\nexports.leftChild = function (index, depth) {\n if (!(index & 1)) return -1\n if (!depth) depth = exports.depth(index)\n return exports.index(depth - 1, exports.offset(index, depth) * 2)\n}\n\nexports.rightChild = function (index, depth) {\n if (!(index & 1)) return -1\n if (!depth) depth = exports.depth(index)\n return exports.index(depth - 1, 1 + (exports.offset(index, depth) * 2))\n}\n\nexports.children = function (index, depth) {\n if (!(index & 1)) return null\n\n if (!depth) depth = exports.depth(index)\n var offset = exports.offset(index, depth) * 2\n\n return [\n exports.index(depth - 1, offset),\n exports.index(depth - 1, offset + 1)\n ]\n}\n\nexports.leftSpan = function (index, depth) {\n if (!(index & 1)) return index\n if (!depth) depth = exports.depth(index)\n return exports.offset(index, depth) * twoPow(depth + 1)\n}\n\nexports.rightSpan = function (index, depth) {\n if (!(index & 1)) return index\n if (!depth) depth = exports.depth(index)\n return (exports.offset(index, depth) + 1) * twoPow(depth + 1) - 2\n}\n\nexports.count = function (index, depth) {\n if (!(index & 1)) return 1\n if (!depth) depth = exports.depth(index)\n return twoPow(depth + 1) - 1\n}\n\nexports.countLeaves = function (index) {\n return (exports.count(index) + 1) / 2\n}\n\nexports.spans = function (index, depth) {\n if (!(index & 1)) return [index, index]\n if (!depth) depth = exports.depth(index)\n\n var offset = exports.offset(index, depth)\n var width = twoPow(depth + 1)\n\n return [offset * width, (offset + 1) * width - 2]\n}\n\nexports.index = function (depth, offset) {\n return (1 + 2 * offset) * twoPow(depth) - 1\n}\n\nexports.offset = function (index, depth) {\n if (!(index & 1)) return index / 2\n if (!depth) depth = exports.depth(index)\n\n return ((index + 1) / twoPow(depth) - 1) / 2\n}\n\nexports.iterator = function (index) {\n var ite = new Iterator()\n ite.seek(index || 0)\n return ite\n}\n\nfunction twoPow (n) {\n return n < 31 ? 1 << n : ((1 << 30) * (1 << (n - 30)))\n}\n\nfunction rightShift (n) {\n return (n - (n & 1)) / 2\n}\n\nfunction Iterator () {\n this.index = 0\n this.offset = 0\n this.factor = 0\n}\n\nIterator.prototype.seek = function (index) {\n this.index = index\n if (this.index & 1) {\n this.offset = exports.offset(index)\n this.factor = twoPow(exports.depth(index) + 1)\n } else {\n this.offset = index / 2\n this.factor = 2\n }\n}\n\nIterator.prototype.isLeft = function () {\n return (this.offset & 1) === 0\n}\n\nIterator.prototype.isRight = function () {\n return (this.offset & 1) === 1\n}\n\nIterator.prototype.contains = function (index) {\n return index > this.index\n ? index < (this.index + this.factor / 2)\n : index < this.index\n ? index > (this.index - this.factor / 2)\n : true\n}\n\nIterator.prototype.prev = function () {\n if (!this.offset) return this.index\n this.offset--\n this.index -= this.factor\n return this.index\n}\n\nIterator.prototype.next = function () {\n this.offset++\n this.index += this.factor\n return this.index\n}\n\nIterator.prototype.count = function () {\n if (!(this.index & 1)) return 1\n return this.factor - 1\n}\n\nIterator.prototype.countLeaves = function () {\n return (this.count() + 1) / 2\n}\n\nIterator.prototype.sibling = function () {\n return this.isLeft() ? this.next() : this.prev()\n}\n\nIterator.prototype.parent = function () {\n if (this.offset & 1) {\n this.index -= this.factor / 2\n this.offset = (this.offset - 1) / 2\n } else {\n this.index += this.factor / 2\n this.offset /= 2\n }\n this.factor *= 2\n return this.index\n}\n\nIterator.prototype.leftSpan = function () {\n this.index = this.index - this.factor / 2 + 1\n this.offset = this.index / 2\n this.factor = 2\n return this.index\n}\n\nIterator.prototype.rightSpan = function () {\n this.index = this.index + this.factor / 2 - 1\n this.offset = this.index / 2\n this.factor = 2\n return this.index\n}\n\nIterator.prototype.leftChild = function () {\n if (this.factor === 2) return this.index\n this.factor /= 2\n this.index -= this.factor / 2\n this.offset *= 2\n return this.index\n}\n\nIterator.prototype.rightChild = function () {\n if (this.factor === 2) return this.index\n this.factor /= 2\n this.index += this.factor / 2\n this.offset = 2 * this.offset + 1\n return this.index\n}\n\nIterator.prototype.nextTree = function () {\n this.index = this.index + this.factor / 2 + 1\n this.offset = this.index / 2\n this.factor = 2\n return this.index\n}\n\nIterator.prototype.prevTree = function () {\n if (!this.offset) {\n this.index = 0\n this.factor = 2\n } else {\n this.index = this.index - this.factor / 2 - 1\n this.offset = this.index / 2\n this.factor = 2\n }\n return this.index\n}\n\nIterator.prototype.fullRoot = function (index) {\n if (index <= this.index || (this.index & 1) > 0) return false\n while (index > this.index + this.factor + this.factor / 2) {\n this.index += this.factor / 2\n this.factor *= 2\n this.offset /= 2\n }\n return true\n}\n", "// a more low level interface to the merkle tree stream.\n// useful for certain applications the require non-streamy access to the algos.\n// versioned by the same semver as the stream interface.\n\nconst flat = require('flat-tree')\n\nmodule.exports = class MerkleGenerator {\n constructor (opts, roots) {\n if (!opts || !opts.leaf || !opts.parent) throw new Error('opts.leaf and opts.parent required')\n\n this.roots = roots || opts.roots || []\n this.blocks = this.roots.length ? 1 + flat.rightSpan(this.roots[this.roots.length - 1].index) / 2 : 0\n\n for (var i = 0; i < this.roots.length; i++) {\n var r = this.roots[i]\n if (r && !r.parent) r.parent = flat.parent(r.index)\n }\n\n this._leaf = opts.leaf\n this._parent = opts.parent\n }\n\n next (data, nodes) {\n if (!Buffer.isBuffer(data)) data = Buffer.from(data)\n if (!nodes) nodes = []\n\n var index = 2 * this.blocks++\n\n var leaf = {\n index: index,\n parent: flat.parent(index),\n hash: null,\n size: data.length,\n data: data\n }\n\n leaf.hash = this._leaf(leaf, this.roots)\n this.roots.push(leaf)\n nodes.push(leaf)\n\n while (this.roots.length > 1) {\n var left = this.roots[this.roots.length - 2]\n var right = this.roots[this.roots.length - 1]\n\n if (left.parent !== right.parent) break\n\n this.roots.pop()\n this.roots[this.roots.length - 1] = leaf = {\n index: left.parent,\n parent: flat.parent(left.parent),\n hash: this._parent(left, right),\n size: left.size + right.size,\n data: null\n }\n nodes.push(leaf)\n }\n\n return nodes\n }\n}\n", "module.exports = codecs\n\ncodecs.ascii = createString('ascii')\ncodecs.utf8 = createString('utf-8')\ncodecs.hex = createString('hex')\ncodecs.base64 = createString('base64')\ncodecs.ucs2 = createString('ucs2')\ncodecs.utf16le = createString('utf16le')\ncodecs.ndjson = createJSON(true)\ncodecs.json = createJSON(false)\ncodecs.binary = {\n name: 'binary',\n encode: function encodeBinary (obj) {\n return typeof obj === 'string'\n ? Buffer.from(obj, 'utf-8')\n : Buffer.isBuffer(obj)\n ? obj\n : Buffer.from(obj.buffer, obj.byteOffset, obj.byteLength)\n },\n decode: function decodeBinary (buf) {\n return Buffer.isBuffer(buf)\n ? buf\n : Buffer.from(buf.buffer, buf.byteOffset, buf.byteLength)\n }\n}\n\nfunction codecs (fmt, fallback) {\n if (typeof fmt === 'object' && fmt && fmt.encode && fmt.decode) return fmt\n\n switch (fmt) {\n case 'ndjson': return codecs.ndjson\n case 'json': return codecs.json\n case 'ascii': return codecs.ascii\n case 'utf-8':\n case 'utf8': return codecs.utf8\n case 'hex': return codecs.hex\n case 'base64': return codecs.base64\n case 'ucs-2':\n case 'ucs2': return codecs.ucs2\n case 'utf16-le':\n case 'utf16le': return codecs.utf16le\n }\n\n return fallback !== undefined ? fallback : codecs.binary\n}\n\nfunction createJSON (newline) {\n return {\n name: newline ? 'ndjson' : 'json',\n encode: newline ? encodeNDJSON : encodeJSON,\n decode: function decodeJSON (buf) {\n return JSON.parse(buf.toString())\n }\n }\n\n function encodeJSON (val) {\n return Buffer.from(JSON.stringify(val))\n }\n\n function encodeNDJSON (val) {\n return Buffer.from(JSON.stringify(val) + '\\n')\n }\n}\n\nfunction createString (type) {\n return {\n name: type,\n encode: function encodeString (val) {\n if (typeof val !== 'string') val = val.toString()\n return Buffer.from(val, type)\n },\n decode: function decodeString (buf) {\n return buf.toString(type)\n }\n }\n}\n", "module.exports = batcher\n\nfunction batcher (run) {\n var running = false\n var pendingBatch = null\n var pendingCallbacks = null\n var callbacks = null\n\n return append\n\n function done (err) {\n if (callbacks) callAll(callbacks, err)\n\n running = false\n callbacks = pendingCallbacks\n var nextBatch = pendingBatch\n\n pendingBatch = null\n pendingCallbacks = null\n\n if (!nextBatch || !nextBatch.length) {\n if (!callbacks || !callbacks.length) {\n callbacks = null\n return\n }\n if (!nextBatch) nextBatch = []\n }\n\n running = true\n run(nextBatch, done)\n }\n\n function append (val, cb) {\n if (running) {\n if (!pendingBatch) {\n pendingBatch = []\n pendingCallbacks = []\n }\n pushAll(pendingBatch, val)\n if (cb) pendingCallbacks.push(cb)\n } else {\n if (cb) callbacks = [cb]\n running = true\n run(Array.isArray(val) ? val : [val], done)\n }\n }\n}\n\nfunction pushAll (list, val) {\n if (Array.isArray(val)) pushArray(list, val)\n else list.push(val)\n}\n\nfunction pushArray (list, val) {\n for (var i = 0; i < val.length; i++) list.push(val[i])\n}\n\nfunction callAll (list, err) {\n for (var i = 0; i < list.length; i++) list[i](err)\n}\n", "if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\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 };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (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 }\n}\n", "try {\n var util = require('util');\n /* istanbul ignore next */\n if (typeof util.inherits !== 'function') throw '';\n module.exports = util.inherits;\n} catch (e) {\n /* istanbul ignore next */\n module.exports = require('./inherits_browser.js');\n}\n", "module.exports = encode\n\nvar MSB = 0x80\n , REST = 0x7F\n , MSBALL = ~REST\n , INT = Math.pow(2, 31)\n\nfunction encode(num, out, offset) {\n out = out || []\n offset = offset || 0\n var oldOffset = offset\n\n while(num >= INT) {\n out[offset++] = (num & 0xFF) | MSB\n num /= 128\n }\n while(num & MSBALL) {\n out[offset++] = (num & 0xFF) | MSB\n num >>>= 7\n }\n out[offset] = num | 0\n \n encode.bytes = offset - oldOffset + 1\n \n return out\n}\n", "module.exports = read\n\nvar MSB = 0x80\n , REST = 0x7F\n\nfunction read(buf, offset) {\n var res = 0\n , offset = offset || 0\n , shift = 0\n , counter = offset\n , b\n , l = buf.length\n\n do {\n if(counter >= l) {\n read.bytes = 0\n read.bytesRead = 0 // DEPRECATED\n return undefined\n }\n b = buf[counter++]\n res += shift < 28\n ? (b & REST) << shift\n : (b & REST) * Math.pow(2, shift)\n shift += 7\n } while (b >= MSB)\n\n read.bytes = counter - offset\n\n return res\n}\n", "\nvar N1 = Math.pow(2, 7)\nvar N2 = Math.pow(2, 14)\nvar N3 = Math.pow(2, 21)\nvar N4 = Math.pow(2, 28)\nvar N5 = Math.pow(2, 35)\nvar N6 = Math.pow(2, 42)\nvar N7 = Math.pow(2, 49)\nvar N8 = Math.pow(2, 56)\nvar N9 = Math.pow(2, 63)\n\nmodule.exports = function (value) {\n return (\n value < N1 ? 1\n : value < N2 ? 2\n : value < N3 ? 3\n : value < N4 ? 4\n : value < N5 ? 5\n : value < N6 ? 6\n : value < N7 ? 7\n : value < N8 ? 8\n : value < N9 ? 9\n : 10\n )\n}\n", "module.exports = {\n encode: require('./encode.js')\n , decode: require('./decode.js')\n , encodingLength: require('./length.js')\n}\n", "function allocUnsafe (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number')\n }\n\n if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative')\n }\n\n if (Buffer.allocUnsafe) {\n return Buffer.allocUnsafe(size)\n } else {\n return new Buffer(size)\n }\n}\n\nmodule.exports = allocUnsafe\n", "var varint = require('varint')\nvar alloc = require('buffer-alloc-unsafe')\n\nmodule.exports = align(1)\n\nfunction align (n) {\n var exports = {}\n\n exports.align = align\n\n exports.encode = encode\n exports.encode.bytes = 0\n exports.encodingLength = encodingLength\n\n exports.decode = decode\n exports.decode.bytes = 0\n exports.decodingLength = decodingLength\n\n return exports\n\n function State (input, output, offset) {\n this.inputOffset = 0\n this.inputLength = input.length\n this.input = input\n this.outputOffset = offset\n this.output = output\n }\n\n function encode (bitfield, buffer, offset) {\n if (!offset) offset = 0\n if (!buffer) buffer = alloc(encodingLength(bitfield))\n var state = new State(bitfield, buffer, offset)\n rle(state)\n encode.bytes = state.outputOffset - offset\n return buffer\n }\n\n function encodingLength (bitfield) {\n var state = new State(bitfield, null, 0)\n rle(state)\n return state.outputOffset\n }\n\n function decode (buffer, offset) {\n if (!offset) offset = 0\n\n var bitfield = alloc(decodingLength(buffer, offset))\n var ptr = 0\n\n while (offset < buffer.length) {\n var next = varint.decode(buffer, offset)\n var repeat = next & 1\n var len = repeat ? (next - (next & 3)) / 4 : next / 2\n\n offset += varint.decode.bytes\n\n if (repeat) {\n bitfield.fill(next & 2 ? 255 : 0, ptr, ptr + len)\n } else {\n buffer.copy(bitfield, ptr, offset, offset + len)\n offset += len\n }\n\n ptr += len\n }\n\n bitfield.fill(0, ptr)\n decode.bytes = buffer.length - offset\n\n return bitfield\n }\n\n function decodingLength (buffer, offset) {\n if (!offset) offset = 0\n\n var len = 0\n\n while (offset < buffer.length) {\n var next = varint.decode(buffer, offset)\n offset += varint.decode.bytes\n\n var repeat = next & 1\n var slice = repeat ? (next - (next & 3)) / 4 : next / 2\n\n len += slice\n if (!repeat) offset += slice\n }\n\n if (offset > buffer.length) throw new Error('Invalid RLE bitfield')\n\n if (len & (n - 1)) return len + (n - (len & (n - 1)))\n\n return len\n }\n\n function rle (state) {\n var len = 0\n var bits = 0\n var input = state.input\n\n while (state.inputLength > 0 && !input[state.inputLength - 1]) state.inputLength--\n\n for (var i = 0; i < state.inputLength; i++) {\n if (input[i] === bits) {\n len++\n continue\n }\n\n if (len) encodeUpdate(state, i, len, bits)\n\n if (input[i] === 0 || input[i] === 255) {\n bits = input[i]\n len = 1\n } else {\n len = 0\n }\n }\n\n if (len) encodeUpdate(state, state.inputLength, len, bits)\n encodeFinal(state)\n }\n\n function encodeHead (state, end) {\n var headLength = end - state.inputOffset\n varint.encode(2 * headLength, state.output, state.outputOffset)\n state.outputOffset += varint.encode.bytes\n state.input.copy(state.output, state.outputOffset, state.inputOffset, end)\n state.outputOffset += headLength\n }\n\n function encodeFinal (state) {\n var headLength = state.inputLength - state.inputOffset\n if (!headLength) return\n\n if (!state.output) {\n state.outputOffset += (headLength + varint.encodingLength(2 * headLength))\n } else {\n encodeHead(state, state.inputLength)\n }\n\n state.inputOffset = state.inputLength\n }\n\n function encodeUpdate (state, i, len, bit) {\n var headLength = i - len - state.inputOffset\n var headCost = (headLength ? varint.encodingLength(2 * headLength) + headLength : 0)\n var enc = 4 * len + (bit ? 2 : 0) + 1 // len << 2 | bit << 1 | 1\n var encCost = headCost + varint.encodingLength(enc)\n var baseCost = varint.encodingLength(2 * (i - state.inputOffset)) + i - state.inputOffset\n\n if (encCost >= baseCost) return\n\n if (!state.output) {\n state.outputOffset += encCost\n state.inputOffset = i\n return\n }\n\n if (headLength) encodeHead(state, i - len)\n\n varint.encode(enc, state.output, state.outputOffset)\n state.outputOffset += varint.encode.bytes\n state.inputOffset = i\n }\n}\n", "module.exports = Pager\n\nfunction Pager (pageSize, opts) {\n if (!(this instanceof Pager)) return new Pager(pageSize, opts)\n\n this.length = 0\n this.updates = []\n this.path = new Uint16Array(4)\n this.pages = new Array(32768)\n this.maxPages = this.pages.length\n this.level = 0\n this.pageSize = pageSize || 1024\n this.deduplicate = opts ? opts.deduplicate : null\n this.zeros = this.deduplicate ? alloc(this.deduplicate.length) : null\n}\n\nPager.prototype.updated = function (page) {\n while (this.deduplicate && page.buffer[page.deduplicate] === this.deduplicate[page.deduplicate]) {\n page.deduplicate++\n if (page.deduplicate === this.deduplicate.length) {\n page.deduplicate = 0\n if (page.buffer.equals && page.buffer.equals(this.deduplicate)) page.buffer = this.deduplicate\n break\n }\n }\n if (page.updated || !this.updates) return\n page.updated = true\n this.updates.push(page)\n}\n\nPager.prototype.lastUpdate = function () {\n if (!this.updates || !this.updates.length) return null\n var page = this.updates.pop()\n page.updated = false\n return page\n}\n\nPager.prototype._array = function (i, noAllocate) {\n if (i >= this.maxPages) {\n if (noAllocate) return\n grow(this, i)\n }\n\n factor(i, this.path)\n\n var arr = this.pages\n\n for (var j = this.level; j > 0; j--) {\n var p = this.path[j]\n var next = arr[p]\n\n if (!next) {\n if (noAllocate) return\n next = arr[p] = new Array(32768)\n }\n\n arr = next\n }\n\n return arr\n}\n\nPager.prototype.get = function (i, noAllocate) {\n var arr = this._array(i, noAllocate)\n var first = this.path[0]\n var page = arr && arr[first]\n\n if (!page && !noAllocate) {\n page = arr[first] = new Page(i, alloc(this.pageSize))\n if (i >= this.length) this.length = i + 1\n }\n\n if (page && page.buffer === this.deduplicate && this.deduplicate && !noAllocate) {\n page.buffer = copy(page.buffer)\n page.deduplicate = 0\n }\n\n return page\n}\n\nPager.prototype.set = function (i, buf) {\n var arr = this._array(i, false)\n var first = this.path[0]\n\n if (i >= this.length) this.length = i + 1\n\n if (!buf || (this.zeros && buf.equals && buf.equals(this.zeros))) {\n arr[first] = undefined\n return\n }\n\n if (this.deduplicate && buf.equals && buf.equals(this.deduplicate)) {\n buf = this.deduplicate\n }\n\n var page = arr[first]\n var b = truncate(buf, this.pageSize)\n\n if (page) page.buffer = b\n else arr[first] = new Page(i, b)\n}\n\nPager.prototype.toBuffer = function () {\n var list = new Array(this.length)\n var empty = alloc(this.pageSize)\n var ptr = 0\n\n while (ptr < list.length) {\n var arr = this._array(ptr, true)\n for (var i = 0; i < 32768 && ptr < list.length; i++) {\n list[ptr++] = (arr && arr[i]) ? arr[i].buffer : empty\n }\n }\n\n return Buffer.concat(list)\n}\n\nfunction grow (pager, index) {\n while (pager.maxPages < index) {\n var old = pager.pages\n pager.pages = new Array(32768)\n pager.pages[0] = old\n pager.level++\n pager.maxPages *= 32768\n }\n}\n\nfunction truncate (buf, len) {\n if (buf.length === len) return buf\n if (buf.length > len) return buf.slice(0, len)\n var cpy = alloc(len)\n buf.copy(cpy)\n return cpy\n}\n\nfunction alloc (size) {\n if (Buffer.alloc) return Buffer.alloc(size)\n var buf = new Buffer(size)\n buf.fill(0)\n return buf\n}\n\nfunction copy (buf) {\n var cpy = Buffer.allocUnsafe ? Buffer.allocUnsafe(buf.length) : new Buffer(buf.length)\n buf.copy(cpy)\n return cpy\n}\n\nfunction Page (i, buf) {\n this.offset = i * buf.length\n this.buffer = buf\n this.updated = false\n this.deduplicate = 0\n}\n\nfunction factor (n, out) {\n n = (n - (out[0] = (n & 32767))) / 32768\n n = (n - (out[1] = (n & 32767))) / 32768\n out[3] = ((n - (out[2] = (n & 32767))) / 32768) & 32767\n}\n", "var pager = require('memory-pager')\n\nmodule.exports = Bitfield\n\nfunction Bitfield (opts) {\n if (!(this instanceof Bitfield)) return new Bitfield(opts)\n if (!opts) opts = {}\n if (Buffer.isBuffer(opts)) opts = {buffer: opts}\n\n this.pageOffset = opts.pageOffset || 0\n this.pageSize = opts.pageSize || 1024\n this.pages = opts.pages || pager(this.pageSize)\n\n this.byteLength = this.pages.length * this.pageSize\n this.length = 8 * this.byteLength\n\n if (!powerOfTwo(this.pageSize)) throw new Error('The page size should be a power of two')\n\n this._trackUpdates = !!opts.trackUpdates\n this._pageMask = this.pageSize - 1\n\n if (opts.buffer) {\n for (var i = 0; i < opts.buffer.length; i += this.pageSize) {\n this.pages.set(i / this.pageSize, opts.buffer.slice(i, i + this.pageSize))\n }\n this.byteLength = opts.buffer.length\n this.length = 8 * this.byteLength\n }\n}\n\nBitfield.prototype.get = function (i) {\n var o = i & 7\n var j = (i - o) / 8\n\n return !!(this.getByte(j) & (128 >> o))\n}\n\nBitfield.prototype.getByte = function (i) {\n var o = i & this._pageMask\n var j = (i - o) / this.pageSize\n var page = this.pages.get(j, true)\n\n return page ? page.buffer[o + this.pageOffset] : 0\n}\n\nBitfield.prototype.set = function (i, v) {\n var o = i & 7\n var j = (i - o) / 8\n var b = this.getByte(j)\n\n return this.setByte(j, v ? b | (128 >> o) : b & (255 ^ (128 >> o)))\n}\n\nBitfield.prototype.toBuffer = function () {\n var all = alloc(this.pages.length * this.pageSize)\n\n for (var i = 0; i < this.pages.length; i++) {\n var next = this.pages.get(i, true)\n var allOffset = i * this.pageSize\n if (next) next.buffer.copy(all, allOffset, this.pageOffset, this.pageOffset + this.pageSize)\n }\n\n return all\n}\n\nBitfield.prototype.setByte = function (i, b) {\n var o = i & this._pageMask\n var j = (i - o) / this.pageSize\n var page = this.pages.get(j, false)\n\n o += this.pageOffset\n\n if (page.buffer[o] === b) return false\n page.buffer[o] = b\n\n if (i >= this.byteLength) {\n this.byteLength = i + 1\n this.length = this.byteLength * 8\n }\n\n if (this._trackUpdates) this.pages.updated(page)\n\n return true\n}\n\nfunction alloc (n) {\n if (Buffer.alloc) return Buffer.alloc(n)\n var b = new Buffer(n)\n b.fill(0)\n return b\n}\n\nfunction powerOfTwo (x) {\n return !(x & (x - 1))\n}\n", "var flat = require('flat-tree')\nvar rle = require('bitfield-rle')\nvar pager = require('memory-pager')\nvar bitfield = require('sparse-bitfield')\n\nvar INDEX_UPDATE_MASK = [63, 207, 243, 252]\nvar INDEX_ITERATE_MASK = [0, 192, 240, 252]\nvar DATA_ITERATE_MASK = [128, 192, 224, 240, 248, 252, 254, 255]\nvar DATA_UPDATE_MASK = [127, 191, 223, 239, 247, 251, 253, 254]\nvar MAP_PARENT_RIGHT = new Array(256)\nvar MAP_PARENT_LEFT = new Array(256)\nvar NEXT_DATA_0_BIT = new Array(256)\nvar NEXT_INDEX_0_BIT = new Array(256)\nvar TOTAL_1_BITS = new Array(256)\n\nfor (var i = 0; i < 256; i++) {\n var a = (i & (15 << 4)) >> 4\n var b = i & 15\n var nibble = [0, 1, 1, 2, 1, 2, 2, 3, 1, 2, 2, 3, 2, 3, 3, 4]\n MAP_PARENT_RIGHT[i] = ((a === 15 ? 3 : a === 0 ? 0 : 1) << 2) | (b === 15 ? 3 : b === 0 ? 0 : 1)\n MAP_PARENT_LEFT[i] = MAP_PARENT_RIGHT[i] << 4\n NEXT_DATA_0_BIT[i] = i === 255 ? -1 : (8 - Math.ceil(Math.log(256 - i) / Math.log(2)))\n NEXT_INDEX_0_BIT[i] = i === 255 ? -1 : Math.floor(NEXT_DATA_0_BIT[i] / 2)\n TOTAL_1_BITS[i] = nibble[i >> 4] + nibble[i & 0x0F]\n}\n\nmodule.exports = Bitfield\n\nfunction Bitfield (pageSize, pages) {\n if (!(this instanceof Bitfield)) return new Bitfield(pageSize, pages)\n if (!pageSize) pageSize = 2048 + 1024 + 512\n\n var deduplicate = Buffer.allocUnsafe(pageSize)\n deduplicate.fill(255)\n\n this.indexSize = pageSize - 2048 - 1024\n this.pages = pager(pageSize, { deduplicate })\n\n if (pages) {\n for (var i = 0; i < pages.length; i++) {\n this.pages.set(i, pages[i])\n }\n }\n\n this.data = bitfield({\n pageSize: 1024,\n pageOffset: 0,\n pages: this.pages,\n trackUpdates: true\n })\n\n this.tree = bitfield({\n pageSize: 2048,\n pageOffset: 1024,\n pages: this.pages,\n trackUpdates: true\n })\n\n this.index = bitfield({\n pageSize: this.indexSize,\n pageOffset: 1024 + 2048,\n pages: this.pages,\n trackUpdates: true\n })\n\n this.length = this.data.length\n this._iterator = flat.iterator(0)\n}\n\nBitfield.prototype.set = function (i, value) {\n var o = i & 7\n i = (i - o) / 8\n var v = value ? this.data.getByte(i) | (128 >> o) : this.data.getByte(i) & DATA_UPDATE_MASK[o]\n\n if (!this.data.setByte(i, v)) return false\n this.length = this.data.length\n this._setIndex(i, v)\n return true\n}\n\nBitfield.prototype.get = function (i) {\n return this.data.get(i)\n}\n\nBitfield.prototype.total = function (start, end) {\n if (!start || start < 0) start = 0\n if (!end) end = this.data.length\n if (end < start) return 0\n if (end > this.data.length) {\n this._expand(end)\n }\n var o = start & 7\n var e = end & 7\n var pos = (start - o) / 8\n var last = (end - e) / 8\n var leftMask = (255 - (o ? DATA_ITERATE_MASK[o - 1] : 0))\n var rightMask = (e ? DATA_ITERATE_MASK[e - 1] : 0)\n var byte = this.data.getByte(pos)\n if (pos === last) {\n return TOTAL_1_BITS[byte & leftMask & rightMask]\n }\n var total = TOTAL_1_BITS[byte & leftMask]\n for (var i = pos + 1; i < last; i++) {\n total += TOTAL_1_BITS[this.data.getByte(i)]\n }\n total += TOTAL_1_BITS[this.data.getByte(last) & rightMask]\n return total\n}\n\n// TODO: use the index to speed this up *a lot*\nBitfield.prototype.compress = function (start, length) {\n if (!start && !length) return rle.encode(this.data.toBuffer())\n\n if (start + length > this.length) length = Math.max(1, this.length - start)\n var buf = Buffer.alloc(Math.ceil(length / 8))\n\n var p = start / this.data.pageSize / 8\n var end = p + length / this.data.pageSize / 8\n var offset = p * this.data.pageSize\n\n for (; p < end; p++) {\n var page = this.data.pages.get(p, true)\n if (!page || !page.buffer) continue\n page.buffer.copy(buf, p * this.data.pageSize - offset, this.data.pageOffset, this.data.pageOffset + this.data.pageSize)\n }\n\n return rle.encode(buf)\n}\n\nBitfield.prototype._setIndex = function (i, value) {\n // (a + b | c + d | e + f | g + h)\n // -> (a | b | c | d) (e | f | g | h)\n //\n\n var o = i & 3\n i = (i - o) / 4\n\n var bitfield = this.index\n var ite = this._iterator\n var start = 2 * i\n var byte = (bitfield.getByte(start) & INDEX_UPDATE_MASK[o]) | (getIndexValue(value) >> (2 * o))\n var len = bitfield.length\n var maxLength = this.pages.length * this.indexSize\n\n ite.seek(start)\n\n while (ite.index < maxLength && bitfield.setByte(ite.index, byte)) {\n if (ite.isLeft()) {\n byte = MAP_PARENT_LEFT[byte] | MAP_PARENT_RIGHT[bitfield.getByte(ite.sibling())]\n } else {\n byte = MAP_PARENT_RIGHT[byte] | MAP_PARENT_LEFT[bitfield.getByte(ite.sibling())]\n }\n ite.parent()\n }\n\n if (len !== bitfield.length) this._expand(len)\n\n return ite.index !== start\n}\n\nBitfield.prototype._expand = function (len) {\n var roots = flat.fullRoots(2 * len)\n var bitfield = this.index\n var ite = this._iterator\n var byte = 0\n\n for (var i = 0; i < roots.length; i++) {\n ite.seek(roots[i])\n byte = bitfield.getByte(ite.index)\n\n do {\n if (ite.isLeft()) {\n byte = MAP_PARENT_LEFT[byte] | MAP_PARENT_RIGHT[bitfield.getByte(ite.sibling())]\n } else {\n byte = MAP_PARENT_RIGHT[byte] | MAP_PARENT_LEFT[bitfield.getByte(ite.sibling())]\n }\n } while (setByteNoAlloc(bitfield, ite.parent(), byte))\n }\n}\n\nfunction setByteNoAlloc (bitfield, i, b) {\n if (8 * i >= bitfield.length) return false\n return bitfield.setByte(i, b)\n}\n\nBitfield.prototype.iterator = function (start, end) {\n var ite = new Iterator(this)\n\n ite.range(start || 0, end || this.length)\n ite.seek(0)\n\n return ite\n}\n\nfunction Iterator (bitfield) {\n this.start = 0\n this.end = 0\n\n this._indexEnd = 0\n this._pos = 0\n this._byte = 0\n this._bitfield = bitfield\n}\n\nIterator.prototype.range = function (start, end) {\n this.start = start\n this.end = end\n this._indexEnd = 2 * Math.ceil(end / 32)\n\n if (this.end > this._bitfield.length) {\n this._bitfield._expand(this.end)\n }\n\n return this\n}\n\nIterator.prototype.seek = function (offset) {\n offset += this.start\n if (offset < this.start) offset = this.start\n\n if (offset >= this.end) {\n this._pos = -1\n return this\n }\n\n var o = offset & 7\n\n this._pos = (offset - o) / 8\n this._byte = this._bitfield.data.getByte(this._pos) | (o ? DATA_ITERATE_MASK[o - 1] : 0)\n\n return this\n}\n\nIterator.prototype.random = function () {\n var i = this.seek(Math.floor(Math.random() * (this.end - this.start))).next()\n return i === -1 ? this.seek(0).next() : i\n}\n\nIterator.prototype.next = function () {\n if (this._pos === -1) return -1\n\n var dataBitfield = this._bitfield.data\n var free = NEXT_DATA_0_BIT[this._byte]\n\n while (free === -1) {\n this._byte = dataBitfield.getByte(++this._pos)\n free = NEXT_DATA_0_BIT[this._byte]\n\n if (free === -1) {\n this._pos = this._skipAhead(this._pos)\n if (this._pos === -1) return -1\n\n this._byte = dataBitfield.getByte(this._pos)\n free = NEXT_DATA_0_BIT[this._byte]\n }\n }\n\n this._byte |= DATA_ITERATE_MASK[free]\n\n var n = 8 * this._pos + free\n return n < this.end ? n : -1\n}\n\nIterator.prototype.peek = function () {\n if (this._pos === -1) return -1\n\n var free = NEXT_DATA_0_BIT[this._byte]\n var n = 8 * this._pos + free\n return n < this.end ? n : -1\n}\n\nIterator.prototype._skipAhead = function (start) {\n var indexBitfield = this._bitfield.index\n var treeEnd = this._indexEnd\n var ite = this._bitfield._iterator\n var o = start & 3\n\n ite.seek(2 * ((start - o) / 4))\n\n var treeByte = indexBitfield.getByte(ite.index) | INDEX_ITERATE_MASK[o]\n\n while (NEXT_INDEX_0_BIT[treeByte] === -1) {\n if (ite.isLeft()) {\n ite.next()\n } else {\n ite.next()\n ite.parent()\n }\n\n if (rightSpan(ite) >= treeEnd) {\n while (rightSpan(ite) >= treeEnd && isParent(ite)) ite.leftChild()\n if (rightSpan(ite) >= treeEnd) return -1\n }\n\n treeByte = indexBitfield.getByte(ite.index)\n }\n\n while (ite.factor > 2) {\n if (NEXT_INDEX_0_BIT[treeByte] < 2) ite.leftChild()\n else ite.rightChild()\n\n treeByte = indexBitfield.getByte(ite.index)\n }\n\n var free = NEXT_INDEX_0_BIT[treeByte]\n if (free === -1) free = 4\n\n var next = ite.index * 2 + free\n\n return next <= start ? start + 1 : next\n}\n\nfunction rightSpan (ite) {\n return ite.index + ite.factor / 2 - 1\n}\n\nfunction isParent (ite) {\n return ite.index & 1\n}\n\nfunction getIndexValue (n) {\n switch (n) {\n case 255: return 192\n case 0: return 0\n default: return 64\n }\n}\n", "var flat = require('flat-tree')\nvar bitfield = require('sparse-bitfield')\n\nmodule.exports = TreeIndex\n\nfunction TreeIndex (bits) {\n if (!(this instanceof TreeIndex)) return new TreeIndex(bits)\n this.bitfield = bits || bitfield()\n}\n\nTreeIndex.prototype.proof = function (index, opts) {\n if (!opts) opts = {}\n\n var nodes = []\n var remoteTree = opts.tree || new TreeIndex()\n var digest = opts.digest || 0\n\n if (!this.get(index)) return null\n if (opts.hash) nodes.push(index) // always return hash - no matter what the digest says\n if (digest === 1) return { nodes: nodes, verifiedBy: 0 }\n\n var roots = null\n var sibling = index\n var next = index\n var hasRoot = digest & 1\n digest = rightShift(digest)\n\n while (digest) {\n if (digest === 1 && hasRoot) {\n if (this.get(next)) remoteTree.set(next)\n\n // having a root implies having prev roots as well\n // TODO: this can be optimized away be only sending \"newer\" roots,\n // when sending roots\n if (flat.sibling(next) < next) next = flat.sibling(next)\n roots = flat.fullRoots(flat.rightSpan(next) + 2)\n for (var i = 0; i < roots.length; i++) {\n if (this.get(roots[i])) remoteTree.set(roots[i])\n }\n break\n }\n\n sibling = flat.sibling(next)\n if (digest & 1) {\n if (this.get(sibling)) remoteTree.set(sibling)\n }\n next = flat.parent(next)\n digest = rightShift(digest)\n }\n\n next = index\n\n while (!remoteTree.get(next)) {\n sibling = flat.sibling(next)\n if (!this.get(sibling)) {\n // next is a local root\n var verifiedBy = this.verifiedBy(next)\n addFullRoots(verifiedBy, nodes, next, remoteTree)\n return { nodes: nodes, verifiedBy: verifiedBy }\n } else {\n if (!remoteTree.get(sibling)) nodes.push(sibling)\n }\n\n next = flat.parent(next)\n }\n\n return { nodes: nodes, verifiedBy: 0 }\n}\n\nTreeIndex.prototype.digest = function (index) {\n if (this.get(index)) return 1\n\n var digest = 0\n var next = flat.sibling(index)\n var max = Math.max(next + 2, this.bitfield.length) // TODO: make this less ... hacky\n\n var bit = 2\n var depth = flat.depth(index)\n var parent = flat.parent(next, depth++)\n\n while (flat.rightSpan(next) < max || flat.leftSpan(parent) > 0) {\n if (this.get(next)) {\n digest += bit // + cause in this case it's the same as | but works for large nums\n }\n if (this.get(parent)) {\n digest += 2 * bit\n if (!(digest & 1)) digest += 1\n if (digest + 1 === 4 * bit) return 1\n return digest\n }\n next = flat.sibling(parent)\n parent = flat.parent(next, depth++)\n bit *= 2\n }\n\n return digest\n}\n\nTreeIndex.prototype.blocks = function () {\n var top = 0\n var next = 0\n var max = this.bitfield.length\n\n while (flat.rightSpan(next) < max) {\n next = flat.parent(next)\n if (this.get(next)) top = next\n }\n\n return (this.get(top) ? this.verifiedBy(top) : 0) / 2\n}\n\nTreeIndex.prototype.roots = function () {\n return flat.fullRoots(2 * this.blocks())\n}\n\nTreeIndex.prototype.verifiedBy = function (index, nodes) {\n var hasIndex = this.get(index)\n if (!hasIndex) return 0\n\n // find root of current tree\n\n var depth = flat.depth(index)\n var top = index\n var parent = flat.parent(top, depth++)\n while (this.get(parent) && this.get(flat.sibling(top))) {\n top = parent\n parent = flat.parent(top, depth++)\n }\n\n // expand right down\n\n depth--\n while (depth) {\n top = flat.leftChild(flat.index(depth, flat.offset(top, depth) + 1), depth)\n depth--\n\n while (!this.get(top) && depth) top = flat.leftChild(top, depth--)\n if (nodes && this.get(top)) nodes.push(top)\n }\n\n return this.get(top) ? top + 2 : top\n}\n\nTreeIndex.prototype.get = function (index) {\n return this.bitfield.get(index)\n}\n\nTreeIndex.prototype.truncate = function (len) {\n const currentLen = 2 * this.blocks()\n const roots = flat.fullRoots(len)\n\n for (let i = len; i < currentLen; i++) {\n this.bitfield.set(i, false)\n }\n\n for (const root of roots) {\n let p = flat.parent(root)\n while (p < len) {\n this.bitfield.set(p, false)\n p = flat.parent(p)\n }\n }\n}\n\nTreeIndex.prototype.set = function (index) {\n if (!this.bitfield.set(index, true)) return false\n while (this.bitfield.get(flat.sibling(index))) {\n index = flat.parent(index)\n if (!this.bitfield.set(index, true)) break\n }\n return true\n}\n\nfunction rightShift (n) {\n return (n - (n & 1)) / 2\n}\n\nfunction addFullRoots (verifiedBy, nodes, root, remoteTree) {\n var roots = flat.fullRoots(verifiedBy)\n for (var i = 0; i < roots.length; i++) {\n if (roots[i] !== root && !remoteTree.get(roots[i])) nodes.push(roots[i])\n }\n}\n", "/* Node.js 6.4.0 and up has full support */\nvar hasFullSupport = (function () {\n try {\n if (!Buffer.isEncoding('latin1')) {\n return false\n }\n\n var buf = Buffer.alloc ? Buffer.alloc(4) : new Buffer(4)\n\n buf.fill('ab', 'ucs2')\n\n return (buf.toString('hex') === '61006200')\n } catch (_) {\n return false\n }\n}())\n\nfunction isSingleByte (val) {\n return (val.length === 1 && val.charCodeAt(0) < 256)\n}\n\nfunction fillWithNumber (buffer, val, start, end) {\n if (start < 0 || end > buffer.length) {\n throw new RangeError('Out of range index')\n }\n\n start = start >>> 0\n end = end === undefined ? buffer.length : end >>> 0\n\n if (end > start) {\n buffer.fill(val, start, end)\n }\n\n return buffer\n}\n\nfunction fillWithBuffer (buffer, val, start, end) {\n if (start < 0 || end > buffer.length) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return buffer\n }\n\n start = start >>> 0\n end = end === undefined ? buffer.length : end >>> 0\n\n var pos = start\n var len = val.length\n while (pos <= (end - len)) {\n val.copy(buffer, pos)\n pos += len\n }\n\n if (pos !== end) {\n val.copy(buffer, pos, 0, end - pos)\n }\n\n return buffer\n}\n\nfunction fill (buffer, val, start, end, encoding) {\n if (hasFullSupport) {\n return buffer.fill(val, start, end, encoding)\n }\n\n if (typeof val === 'number') {\n return fillWithNumber(buffer, val, start, end)\n }\n\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = buffer.length\n } else if (typeof end === 'string') {\n encoding = end\n end = buffer.length\n }\n\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n\n if (encoding === 'latin1') {\n encoding = 'binary'\n }\n\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n if (val === '') {\n return fillWithNumber(buffer, 0, start, end)\n }\n\n if (isSingleByte(val)) {\n return fillWithNumber(buffer, val.charCodeAt(0), start, end)\n }\n\n val = new Buffer(val, encoding)\n }\n\n if (Buffer.isBuffer(val)) {\n return fillWithBuffer(buffer, val, start, end)\n }\n\n // Other values (e.g. undefined, boolean, object) results in zero-fill\n return fillWithNumber(buffer, 0, start, end)\n}\n\nmodule.exports = fill\n", "var bufferFill = require('buffer-fill')\nvar allocUnsafe = require('buffer-alloc-unsafe')\n\nmodule.exports = function alloc (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number')\n }\n\n if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative')\n }\n\n if (Buffer.alloc) {\n return Buffer.alloc(size, fill, encoding)\n }\n\n var buffer = allocUnsafe(size)\n\n if (size === 0) {\n return buffer\n }\n\n if (fill === undefined) {\n return bufferFill(buffer, 0)\n }\n\n if (typeof encoding !== 'string') {\n encoding = undefined\n }\n\n return bufferFill(buffer, fill, encoding)\n}\n", "var bufferAlloc = require('buffer-alloc')\n\nvar UINT_32_MAX = Math.pow(2, 32)\n\nexports.encodingLength = function () {\n return 8\n}\n\nexports.encode = function (num, buf, offset) {\n if (!buf) buf = bufferAlloc(8)\n if (!offset) offset = 0\n\n var top = Math.floor(num / UINT_32_MAX)\n var rem = num - top * UINT_32_MAX\n\n buf.writeUInt32BE(top, offset)\n buf.writeUInt32BE(rem, offset + 4)\n return buf\n}\n\nexports.decode = function (buf, offset) {\n if (!offset) offset = 0\n\n var top = buf.readUInt32BE(offset)\n var rem = buf.readUInt32BE(offset + 4)\n\n return top * UINT_32_MAX + rem\n}\n\nexports.encode.bytes = 8\nexports.decode.bytes = 8\n", "const DEFAULT_MAX_BYTE_SIZE = 1024 * 1024 * 16\n\nclass NamespacedCache {\n constructor (parent, name) {\n this.name = name\n this.parent = parent\n }\n\n get _info () {\n return this.parent._info\n }\n\n set (key, value) {\n return this.parent._set(this.name, key, value)\n }\n\n del (key) {\n return this.parent._del(this.name, key)\n }\n\n get (key) {\n return this.parent._get(this.name, key)\n }\n}\n\nmodule.exports = class HypercoreCache {\n constructor (opts = {}) {\n this.maxByteSize = opts.maxByteSize || DEFAULT_MAX_BYTE_SIZE\n this.onEvict = opts.onEvict\n this.estimateSize = opts.estimateSize || defaultSize\n\n this._nextNamespace = 0\n this.defaultCache = new NamespacedCache(this, this._nextNamespace++)\n\n this._stale = null\n this._fresh = new Map()\n this._freshByteSize = 0\n this._staleByteSize = 0\n }\n\n get _info () {\n return {\n freshByteSize: this._freshByteSize,\n staleByteSize: this._staleByteSize,\n staleEntries: this._stale ? this._stale.size : 0,\n freshEntries: this._fresh.size,\n byteSize: this.byteSize\n }\n }\n\n _prefix (namespace, key) {\n return namespace + ':' + key\n }\n\n _gc () {\n if (this.onEvict && this._staleByteSize > 0) this.onEvict(this._stale)\n this._stale = this._fresh\n this._fresh = new Map()\n this._staleByteSize = this._freshByteSize\n this._freshByteSize = 0\n }\n\n _get (namespace, key, prefixedKey) {\n if (!prefixedKey) prefixedKey = this._prefix(namespace, key)\n return this._fresh.get(prefixedKey) || (this._stale && this._stale.get(prefixedKey))\n }\n\n _set (namespace, key, value) {\n const valueSize = this.estimateSize(value)\n const prefixedKey = this._prefix(namespace, key)\n if (this._freshByteSize + valueSize > this.maxByteSize) {\n this._gc()\n }\n this._fresh.set(prefixedKey, value)\n this._freshByteSize += valueSize\n }\n\n _del (namespace, key) {\n const prefixedKey = this._prefix(namespace, key)\n let val = this._stale && this._stale.get(prefixedKey)\n if (val) {\n this._stale.delete(prefixedKey)\n this._staleByteSize -= this.estimateSize(val)\n }\n val = this._fresh.get(prefixedKey)\n if (val) {\n this._fresh.delete(prefixedKey)\n this._freshByteSize -= this.estimateSize(val)\n }\n }\n\n get byteSize () {\n return this._freshByteSize + this._staleByteSize\n }\n\n namespace () {\n const cache = new NamespacedCache(this, this._nextNamespace++)\n return cache\n }\n\n set (key, value) {\n return this.defaultCache.set(key, value)\n }\n\n del (key) {\n return this.defaultCache.del(key)\n }\n\n get (key) {\n return this.defaultCache.get(key)\n }\n}\n\nfunction defaultSize () {\n // Return an estimate of the object overhead, without being clever here.\n // (You should pass in a size estimator)\n return 1024\n}\n", "const HypercoreCache = require('hypercore-cache')\n\nconst DEFAULT_TREE_CACHE_SIZE = 65536 * 40\n\nfunction createCache (opts) {\n if (opts.cache === false) return {}\n\n const cacheOpts = opts.cache || {}\n if (cacheOpts.tree === undefined || typeof cacheOpts.tree === 'number') {\n const cacheSize = cacheOpts.tree || opts.storageCacheSize\n cacheOpts.tree = new HypercoreCache({\n maxByteSize: cacheSize !== undefined ? cacheSize : DEFAULT_TREE_CACHE_SIZE,\n estimateSize: () => 40\n })\n }\n if (cacheOpts.data === undefined) return cacheOpts\n if (typeof cacheOpts.data === 'number') {\n cacheOpts.data = new HypercoreCache({\n maxByteSize: cacheOpts.data,\n estimateSize: buf => buf.length\n })\n }\n return cacheOpts\n}\n\nmodule.exports = createCache\n", "var uint64be = require('uint64be')\nvar flat = require('flat-tree')\nvar createCache = require('./cache')\n\nmodule.exports = Storage\n\nvar noarr = []\n\nfunction Storage (create, opts) {\n if (!(this instanceof Storage)) return new Storage(create, opts)\n\n const cache = createCache(opts)\n\n this.treeCache = cache.tree || null\n this.dataCache = cache.data || null\n this.key = null\n this.secretKey = null\n this.tree = null\n this.data = null\n this.bitfield = null\n this.signatures = null\n this.create = create\n}\n\nStorage.prototype.putData = function (index, data, nodes, cb) {\n if (!cb) cb = noop\n var self = this\n if (!data.length) return cb(null)\n this.dataOffset(index, nodes, function (err, offset, size) {\n if (err) return cb(err)\n if (size !== data.length) return cb(new Error('Unexpected data size'))\n self.data.write(offset, data, cb)\n })\n}\n\nStorage.prototype.getData = function (index, cb) {\n var self = this\n var cached = this.dataCache && this.dataCache.get(index)\n if (cached) return process.nextTick(cb, null, cached)\n this.dataOffset(index, noarr, function (err, offset, size) {\n if (err) return cb(err)\n self.data.read(offset, size, (err, data) => {\n if (err) return cb(err)\n if (self.dataCache) self.dataCache.set(index, data)\n return cb(null, data)\n })\n })\n}\n\nStorage.prototype.nextSignature = function (index, cb) {\n var self = this\n\n this._getSignature(index, function (err, signature) {\n if (err) return cb(err)\n if (isBlank(signature)) return self.nextSignature(index + 1, cb)\n cb(null, { index: index, signature: signature })\n })\n}\n\nStorage.prototype.getSignature = function (index, cb) {\n this._getSignature(index, function (err, signature) {\n if (err) return cb(err)\n if (isBlank(signature)) return cb(new Error('No signature found'))\n cb(null, signature)\n })\n}\n\n// Caching not enabled for signatures because they are rarely reused.\nStorage.prototype._getSignature = function (index, cb) {\n this.signatures.read(32 + 64 * index, 64, cb)\n}\n\nStorage.prototype.putSignature = function (index, signature, cb) {\n this.signatures.write(32 + 64 * index, signature, cb)\n}\n\nStorage.prototype.deleteSignatures = function (start, end, cb) {\n this.signatures.del(32 + 64 * start, (end - start) * 64, cb)\n}\n\nStorage.prototype.dataOffset = function (index, cachedNodes, cb) {\n var roots = flat.fullRoots(2 * index)\n var self = this\n var offset = 0\n var pending = roots.length\n var error = null\n var blk = 2 * index\n\n if (!pending) {\n pending = 1\n onnode(null, null)\n return\n }\n\n for (var i = 0; i < roots.length; i++) {\n var node = findNode(cachedNodes, roots[i])\n if (node) onnode(null, node)\n else this.getNode(roots[i], onnode)\n }\n\n function onlast (err, node) {\n if (err) return cb(err)\n cb(null, offset, node.size)\n }\n\n function onnode (err, node) {\n if (err) error = err\n if (node) offset += node.size\n if (--pending) return\n\n if (error) return cb(error)\n\n var last = findNode(cachedNodes, blk)\n if (last) onlast(null, last)\n else self.getNode(blk, onlast)\n }\n}\n\n// Caching not enabled for batch reads because they'd be complicated to batch and they're rarely used.\nStorage.prototype.getDataBatch = function (start, n, cb) {\n var result = new Array(n)\n var sizes = new Array(n)\n var self = this\n\n this.dataOffset(start, noarr, function (err, offset, size) {\n if (err) return cb(err)\n\n start++\n n--\n\n if (n <= 0) return ontree(null, null)\n self.tree.read(32 + 80 * start, 80 * n - 40, ontree)\n\n function ontree (err, buf) {\n if (err) return cb(err)\n\n var total = sizes[0] = size\n\n if (buf) {\n for (var i = 1; i < sizes.length; i++) {\n sizes[i] = uint64be.decode(buf, 32 + (i - 1) * 80)\n total += sizes[i]\n }\n }\n\n self.data.read(offset, total, ondata)\n }\n\n function ondata (err, buf) {\n if (err) return cb(err)\n var total = 0\n for (var i = 0; i < result.length; i++) {\n result[i] = buf.slice(total, total += sizes[i])\n }\n\n cb(null, result)\n }\n })\n}\n\nStorage.prototype.getNode = function (index, cb) {\n if (this.treeCache) {\n var cached = this.treeCache.get(index)\n if (cached) return cb(null, cached)\n }\n\n var self = this\n\n this.tree.read(32 + 40 * index, 40, function (err, buf) {\n if (err) return cb(err)\n\n var hash = buf.slice(0, 32)\n var size = uint64be.decode(buf, 32)\n\n if (!size && isBlank(hash)) return cb(new Error('No node found'))\n\n var val = new Node(index, self.treeCache ? copyMaybe(hash, 40) : hash, size, null)\n if (self.treeCache) self.treeCache.set(index, val)\n cb(null, val)\n })\n}\n\nStorage.prototype.putNodeBatch = function (index, nodes, cb) {\n if (!cb) cb = noop\n\n var buf = Buffer.alloc(nodes.length * 40)\n\n for (var i = 0; i < nodes.length; i++) {\n var offset = i * 40\n var node = nodes[i]\n if (!node) continue\n node.hash.copy(buf, offset)\n uint64be.encode(node.size, buf, 32 + offset)\n }\n\n this.tree.write(32 + 40 * index, buf, cb)\n}\n\nStorage.prototype.putNode = function (index, node, cb) {\n if (!cb) cb = noop\n\n // TODO: re-enable put cache. currently this causes a memleak\n // because node.hash is a slice of the big data buffer on replicate\n // if (this.cache) this.cache.set(index, node)\n\n var buf = Buffer.allocUnsafe(40)\n\n node.hash.copy(buf, 0)\n uint64be.encode(node.size, buf, 32)\n this.tree.write(32 + 40 * index, buf, cb)\n}\n\nStorage.prototype.putBitfield = function (offset, data, cb) {\n this.bitfield.write(32 + offset, data, cb)\n}\n\nStorage.prototype.close = function (cb) {\n if (!cb) cb = noop\n var missing = 6\n var error = null\n\n close(this.bitfield, done)\n close(this.tree, done)\n close(this.data, done)\n close(this.key, done)\n close(this.secretKey, done)\n close(this.signatures, done)\n\n function done (err) {\n if (err) error = err\n if (--missing) return\n cb(error)\n }\n}\n\nStorage.prototype.destroy = function (cb) {\n if (!cb) cb = noop\n var missing = 6\n var error = null\n\n destroy(this.bitfield, done)\n destroy(this.tree, done)\n destroy(this.data, done)\n destroy(this.key, done)\n destroy(this.secretKey, done)\n destroy(this.signatures, done)\n\n function done (err) {\n if (err) error = err\n if (--missing) return\n cb(error)\n }\n}\n\nStorage.prototype.openKey = function (opts, cb) {\n if (typeof opts === 'function') return this.openKey({}, opts)\n if (!this.key) this.key = this.create('key', opts)\n this.key.read(0, 32, cb)\n}\n\nStorage.prototype.open = function (opts, cb) {\n if (typeof opts === 'function') return this.open({}, opts)\n\n var self = this\n var error = null\n var missing = 5\n\n if (!this.key) this.key = this.create('key', opts)\n if (!this.secretKey) this.secretKey = this.create('secret_key', opts)\n if (!this.tree) this.tree = this.create('tree', opts)\n if (!this.data) this.data = this.create('data', opts)\n if (!this.bitfield) this.bitfield = this.create('bitfield', opts)\n if (!this.signatures) this.signatures = this.create('signatures', opts)\n\n var result = {\n bitfield: [],\n bitfieldPageSize: 3584, // we upgraded the page size to fix a bug\n secretKey: null,\n key: null\n }\n\n this.bitfield.read(0, 32, function (err, h) {\n if (err && err.code === 'ELOCKED') return cb(err)\n if (h) result.bitfieldPageSize = h.readUInt16BE(5)\n self.bitfield.write(0, header(0, result.bitfieldPageSize, null), function (err) {\n if (err) return cb(err)\n readAll(self.bitfield, 32, result.bitfieldPageSize, function (err, pages) {\n if (pages) result.bitfield = pages\n done(err)\n })\n })\n })\n\n this.signatures.write(0, header(1, 64, 'Ed25519'), done)\n this.tree.write(0, header(2, 40, 'BLAKE2b'), done)\n\n // TODO: Improve the error handling here.\n // I.e. if secretKey length === 64 and it fails, error\n\n this.secretKey.read(0, 64, function (_, data) {\n if (data) result.secretKey = data\n done(null)\n })\n\n this.key.read(0, 32, function (_, data) {\n if (data) result.key = data\n done(null)\n })\n\n function done (err) {\n if (err) error = err\n if (--missing) return\n if (error) cb(error)\n else cb(null, result)\n }\n}\n\nStorage.Node = Node\n\nfunction noop () {}\n\nfunction copyMaybe (buf, maxSize) {\n if (buf.buffer.byteLength <= maxSize) return buf\n const cpy = Buffer.alloc(buf.byteLength)\n buf.copy(cpy)\n return cpy\n}\n\nfunction header (type, size, name) {\n var buf = Buffer.alloc(32)\n\n // magic number\n buf[0] = 5\n buf[1] = 2\n buf[2] = 87\n buf[3] = type\n\n // version\n buf[4] = 0\n\n // block size\n buf.writeUInt16BE(size, 5)\n\n if (name) {\n // algo name\n buf[7] = name.length\n buf.write(name, 8)\n }\n\n return buf\n}\n\nfunction Node (index, hash, size) {\n this.index = index\n this.hash = hash\n this.size = size\n}\n\nfunction findNode (nodes, index) {\n for (var i = 0; i < nodes.length; i++) {\n if (nodes[i].index === index) return nodes[i]\n }\n return null\n}\n\nfunction isBlank (buf) {\n for (var i = 0; i < buf.length; i++) {\n if (buf[i]) return false\n }\n return true\n}\n\nfunction close (st, cb) {\n if (st.close) st.close(cb)\n else cb()\n}\n\nfunction destroy (st, cb) {\n if (st.destroy) st.destroy(cb)\n else cb()\n}\n\nfunction statAndReadAll (st, offset, pageSize, cb) {\n st.stat(function (err, stat) {\n if (err) return cb(null, [])\n\n var result = []\n\n loop(null, null)\n\n function loop (err, batch) {\n if (err) return cb(err)\n\n if (batch) {\n offset += batch.length\n for (var i = 0; i < batch.length; i += pageSize) {\n result.push(batch.slice(i, i + pageSize))\n }\n }\n\n var next = Math.min(stat.size - offset, 32 * pageSize)\n if (!next) return cb(null, result)\n\n st.read(offset, next, loop)\n }\n })\n}\n\nfunction readAll (st, offset, pageSize, cb) {\n if (st.statable === true) return statAndReadAll(st, offset, pageSize, cb)\n\n var bufs = []\n\n st.read(offset, pageSize, loop)\n\n function loop (err, buf) {\n if (err) return cb(null, bufs)\n bufs.push(buf)\n st.read(offset + bufs.length * pageSize, pageSize, loop)\n }\n}\n", "var util = require('util')\nvar custom = util.inspect.custom\n\nmodule.exports = custom || Symbol.for('nodejs.util.inspect.custom')\n", "\nmodule.exports = function prettyHash (buf) {\n if (Buffer.isBuffer(buf)) buf = buf.toString('hex')\n if (typeof buf === 'string' && buf.length > 8) {\n return buf.slice(0, 6) + '..' + buf.slice(-2)\n }\n return buf\n}", "module.exports = class Nanoguard {\n constructor () {\n this._tick = 0\n this._fns = []\n this._dep = null\n }\n\n get waiting () {\n return this._tick > 0\n }\n\n depend (dep) {\n if (this._dep !== null) throw new Error('Can only depend on one other guard currently')\n this._dep = dep\n }\n\n wait () {\n this._tick++\n }\n\n continue (cb, err, val) {\n if (this._tick === 1) process.nextTick(continueNT, this)\n else this._tick--\n if (cb) cb(err, val)\n }\n\n waitAndContinue () {\n let once = false\n this.wait()\n return () => {\n if (once) return false\n once = true\n this.continue()\n return true\n }\n }\n\n continueSync (cb, err, val) {\n if (--this._tick) return\n while (this._fns !== null && this._fns.length) this._ready(this._fns.pop())\n if (cb) cb(err, val)\n }\n\n destroy () {\n const fns = this._fns\n if (fns) return\n this._fns = null\n while (fns.length) fns.pop()()\n }\n\n ready (fn) {\n if (this._fns === null || this._tick === 0) this._ready(fn)\n else this._fns.push(fn)\n }\n\n _ready (fn) {\n if (this._dep === null) fn()\n else this._dep.ready(fn)\n }\n}\n\nfunction continueNT (guard) {\n guard.continueSync()\n}\n", "// buffer-equals, but handle 'null' buffer parameters.\nmodule.exports = function safeBufferEquals (a, b) {\n if (!a) return !b\n if (!b) return !a\n return Buffer.compare(a, b) === 0\n}\n", "module.exports = assert\n\nclass AssertionError extends Error {}\nAssertionError.prototype.name = 'AssertionError'\n\n/**\n * Minimal assert function\n * @param {any} t Value to check if falsy\n * @param {string=} m Optional assertion error message\n * @throws {AssertionError}\n */\nfunction assert (t, m) {\n if (!t) {\n var err = new AssertionError(m)\n if (Error.captureStackTrace) Error.captureStackTrace(err, assert)\n throw err\n }\n}\n", "var clone = (function() {\n'use strict';\n\nfunction _instanceof(obj, type) {\n return type != null && obj instanceof type;\n}\n\nvar nativeMap;\ntry {\n nativeMap = Map;\n} catch(_) {\n // maybe a reference error because no `Map`. Give it a dummy value that no\n // value will ever be an instanceof.\n nativeMap = function() {};\n}\n\nvar nativeSet;\ntry {\n nativeSet = Set;\n} catch(_) {\n nativeSet = function() {};\n}\n\nvar nativePromise;\ntry {\n nativePromise = Promise;\n} catch(_) {\n nativePromise = function() {};\n}\n\n/**\n * Clones (copies) an Object using deep copying.\n *\n * This function supports circular references by default, but if you are certain\n * there are no circular references in your object, you can save some CPU time\n * by calling clone(obj, false).\n *\n * Caution: if `circular` is false and `parent` contains circular references,\n * your program may enter an infinite loop and crash.\n *\n * @param `parent` - the object to be cloned\n * @param `circular` - set to true if the object to be cloned may contain\n * circular references. (optional - true by default)\n * @param `depth` - set to a number if the object is only to be cloned to\n * a particular depth. (optional - defaults to Infinity)\n * @param `prototype` - sets the prototype to be used when cloning an object.\n * (optional - defaults to parent prototype).\n * @param `includeNonEnumerable` - set to true if the non-enumerable properties\n * should be cloned as well. Non-enumerable properties on the prototype\n * chain will be ignored. (optional - false by default)\n*/\nfunction clone(parent, circular, depth, prototype, includeNonEnumerable) {\n if (typeof circular === 'object') {\n depth = circular.depth;\n prototype = circular.prototype;\n includeNonEnumerable = circular.includeNonEnumerable;\n circular = circular.circular;\n }\n // maintain two arrays for circular references, where corresponding parents\n // and children have the same index\n var allParents = [];\n var allChildren = [];\n\n var useBuffer = typeof Buffer != 'undefined';\n\n if (typeof circular == 'undefined')\n circular = true;\n\n if (typeof depth == 'undefined')\n depth = Infinity;\n\n // recurse this function so we don't reset allParents and allChildren\n function _clone(parent, depth) {\n // cloning null always returns null\n if (parent === null)\n return null;\n\n if (depth === 0)\n return parent;\n\n var child;\n var proto;\n if (typeof parent != 'object') {\n return parent;\n }\n\n if (_instanceof(parent, nativeMap)) {\n child = new nativeMap();\n } else if (_instanceof(parent, nativeSet)) {\n child = new nativeSet();\n } else if (_instanceof(parent, nativePromise)) {\n child = new nativePromise(function (resolve, reject) {\n parent.then(function(value) {\n resolve(_clone(value, depth - 1));\n }, function(err) {\n reject(_clone(err, depth - 1));\n });\n });\n } else if (clone.__isArray(parent)) {\n child = [];\n } else if (clone.__isRegExp(parent)) {\n child = new RegExp(parent.source, __getRegExpFlags(parent));\n if (parent.lastIndex) child.lastIndex = parent.lastIndex;\n } else if (clone.__isDate(parent)) {\n child = new Date(parent.getTime());\n } else if (useBuffer && Buffer.isBuffer(parent)) {\n if (Buffer.allocUnsafe) {\n // Node.js >= 4.5.0\n child = Buffer.allocUnsafe(parent.length);\n } else {\n // Older Node.js versions\n child = new Buffer(parent.length);\n }\n parent.copy(child);\n return child;\n } else if (_instanceof(parent, Error)) {\n child = Object.create(parent);\n } else {\n if (typeof prototype == 'undefined') {\n proto = Object.getPrototypeOf(parent);\n child = Object.create(proto);\n }\n else {\n child = Object.create(prototype);\n proto = prototype;\n }\n }\n\n if (circular) {\n var index = allParents.indexOf(parent);\n\n if (index != -1) {\n return allChildren[index];\n }\n allParents.push(parent);\n allChildren.push(child);\n }\n\n if (_instanceof(parent, nativeMap)) {\n parent.forEach(function(value, key) {\n var keyChild = _clone(key, depth - 1);\n var valueChild = _clone(value, depth - 1);\n child.set(keyChild, valueChild);\n });\n }\n if (_instanceof(parent, nativeSet)) {\n parent.forEach(function(value) {\n var entryChild = _clone(value, depth - 1);\n child.add(entryChild);\n });\n }\n\n for (var i in parent) {\n var attrs;\n if (proto) {\n attrs = Object.getOwnPropertyDescriptor(proto, i);\n }\n\n if (attrs && attrs.set == null) {\n continue;\n }\n child[i] = _clone(parent[i], depth - 1);\n }\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(parent);\n for (var i = 0; i < symbols.length; i++) {\n // Don't need to worry about cloning a symbol because it is a primitive,\n // like a number or string.\n var symbol = symbols[i];\n var descriptor = Object.getOwnPropertyDescriptor(parent, symbol);\n if (descriptor && !descriptor.enumerable && !includeNonEnumerable) {\n continue;\n }\n child[symbol] = _clone(parent[symbol], depth - 1);\n if (!descriptor.enumerable) {\n Object.defineProperty(child, symbol, {\n enumerable: false\n });\n }\n }\n }\n\n if (includeNonEnumerable) {\n var allPropertyNames = Object.getOwnPropertyNames(parent);\n for (var i = 0; i < allPropertyNames.length; i++) {\n var propertyName = allPropertyNames[i];\n var descriptor = Object.getOwnPropertyDescriptor(parent, propertyName);\n if (descriptor && descriptor.enumerable) {\n continue;\n }\n child[propertyName] = _clone(parent[propertyName], depth - 1);\n Object.defineProperty(child, propertyName, {\n enumerable: false\n });\n }\n }\n\n return child;\n }\n\n return _clone(parent, depth);\n}\n\n/**\n * Simple flat clone using prototype, accepts only objects, usefull for property\n * override on FLAT configuration object (no nested props).\n *\n * USE WITH CAUTION! This may not behave as you wish if you do not know how this\n * works.\n */\nclone.clonePrototype = function clonePrototype(parent) {\n if (parent === null)\n return null;\n\n var c = function () {};\n c.prototype = parent;\n return new c();\n};\n\n// private utility functions\n\nfunction __objToStr(o) {\n return Object.prototype.toString.call(o);\n}\nclone.__objToStr = __objToStr;\n\nfunction __isDate(o) {\n return typeof o === 'object' && __objToStr(o) === '[object Date]';\n}\nclone.__isDate = __isDate;\n\nfunction __isArray(o) {\n return typeof o === 'object' && __objToStr(o) === '[object Array]';\n}\nclone.__isArray = __isArray;\n\nfunction __isRegExp(o) {\n return typeof o === 'object' && __objToStr(o) === '[object RegExp]';\n}\nclone.__isRegExp = __isRegExp;\n\nfunction __getRegExpFlags(re) {\n var flags = '';\n if (re.global) flags += 'g';\n if (re.ignoreCase) flags += 'i';\n if (re.multiline) flags += 'm';\n return flags;\n}\nclone.__getRegExpFlags = __getRegExpFlags;\n\nreturn clone;\n})();\n\nif (typeof module === 'object' && module.exports) {\n module.exports = clone;\n}\n", "/* eslint-disable camelcase */\nconst { sodium_malloc, sodium_memzero } = require('sodium-universal/memory')\nconst {\n crypto_aead_chacha20poly1305_ietf_KEYBYTES,\n crypto_aead_chacha20poly1305_ietf_NPUBBYTES,\n crypto_aead_chacha20poly1305_ietf_ABYTES,\n crypto_aead_chacha20poly1305_ietf_encrypt,\n crypto_aead_chacha20poly1305_ietf_decrypt\n} = require('sodium-universal/crypto_aead')\n\nvar assert = require('nanoassert')\n\nvar KEYLEN = 32\nvar NONCELEN = 8\nvar MACLEN = 16\n\nassert(crypto_aead_chacha20poly1305_ietf_KEYBYTES === KEYLEN)\n// 16 bytes are cut off in the following functions\nassert(crypto_aead_chacha20poly1305_ietf_NPUBBYTES === 4 + NONCELEN)\nassert(crypto_aead_chacha20poly1305_ietf_ABYTES === MACLEN)\n\nmodule.exports = {\n KEYLEN,\n NONCELEN,\n MACLEN,\n encrypt,\n decrypt,\n rekey\n}\n\nvar ElongatedNonce = sodium_malloc(crypto_aead_chacha20poly1305_ietf_NPUBBYTES)\nfunction encrypt (out, k, n, ad, plaintext) {\n assert(out.byteLength >= plaintext.byteLength + MACLEN, 'output buffer must be at least plaintext plus MACLEN bytes long')\n assert(k.byteLength === KEYLEN)\n assert(n.byteLength === NONCELEN)\n assert(ad == null ? true : ad.byteLength != null)\n sodium_memzero(ElongatedNonce)\n\n ElongatedNonce.set(n, 4)\n\n encrypt.bytesWritten = crypto_aead_chacha20poly1305_ietf_encrypt(out.subarray(0, plaintext.byteLength + MACLEN), plaintext, ad, null, ElongatedNonce, k)\n encrypt.bytesRead = encrypt.bytesWritten - MACLEN\n\n sodium_memzero(ElongatedNonce)\n}\nencrypt.bytesWritten = 0\nencrypt.bytesRead = 0\n\nfunction decrypt (out, k, n, ad, ciphertext) {\n assert(out.byteLength >= ciphertext.byteLength - MACLEN)\n assert(k.byteLength === KEYLEN)\n assert(n.byteLength === NONCELEN)\n assert(ad == null ? true : ad.byteLength != null)\n sodium_memzero(ElongatedNonce)\n\n ElongatedNonce.set(n, 4)\n\n decrypt.bytesWritten = crypto_aead_chacha20poly1305_ietf_decrypt(out.subarray(0, ciphertext.byteLength - MACLEN), null, ciphertext, ad, ElongatedNonce, k)\n decrypt.bytesRead = decrypt.bytesWritten + MACLEN\n\n sodium_memzero(ElongatedNonce)\n}\ndecrypt.bytesWritten = 0\ndecrypt.bytesRead = 0\n\nvar maxnonce = new Uint8Array(8).fill(0xff)\nvar zerolen = new Uint8Array(0)\nvar zeros = new Uint8Array(32)\n\nvar IntermediateKey = sodium_malloc(KEYLEN + MACLEN)\nsodium_memzero(IntermediateKey)\nfunction rekey (out, k) {\n assert(out.byteLength === KEYLEN)\n assert(k.byteLength === KEYLEN)\n sodium_memzero(IntermediateKey)\n\n IntermediateKey.set(k)\n encrypt(IntermediateKey, k, maxnonce, zerolen, zeros)\n rekey.bytesWritten = encrypt.bytesWritten\n rekey.bytesRead = encrypt.bytesRead\n out.set(IntermediateKey.subarray(0, KEYLEN))\n sodium_memzero(IntermediateKey)\n}\nrekey.bytesWritten = 0\nrekey.bytesRead = 0\n", "/* eslint-disable camelcase */\nconst { sodium_memzero } = require('sodium-universal/memory')\nconst { sodium_increment, sodium_memcmp, sodium_is_zero } = require('sodium-universal/helpers')\n\nvar assert = require('nanoassert')\nvar cipher = require('./cipher')\n\nvar STATELEN = cipher.KEYLEN + cipher.NONCELEN\nvar NONCELEN = cipher.NONCELEN\nvar MACLEN = cipher.MACLEN\n\nmodule.exports = {\n STATELEN,\n NONCELEN,\n MACLEN,\n initializeKey,\n hasKey,\n setNonce,\n encryptWithAd,\n decryptWithAd,\n rekey\n}\n\nvar KEY_BEGIN = 0\nvar KEY_END = cipher.KEYLEN\nvar NONCE_BEGIN = KEY_END\nvar NONCE_END = NONCE_BEGIN + cipher.NONCELEN\n\nfunction initializeKey (state, key) {\n assert(state.byteLength === STATELEN)\n assert(key == null ? true : key.byteLength === cipher.KEYLEN)\n\n if (key == null) {\n sodium_memzero(state.subarray(KEY_BEGIN, KEY_END))\n return\n }\n\n state.set(key)\n sodium_memzero(state.subarray(NONCE_BEGIN, NONCE_END))\n}\n\nfunction hasKey (state) {\n assert(state.byteLength === STATELEN)\n var k = state.subarray(KEY_BEGIN, KEY_END)\n return sodium_is_zero(k) === false\n}\n\nfunction setNonce (state, nonce) {\n assert(state.byteLength === STATELEN)\n assert(nonce.byteLength === NONCELEN)\n\n state.set(nonce, NONCE_BEGIN)\n}\n\nvar maxnonce = new Uint8Array(8).fill(0xff)\nfunction encryptWithAd (state, out, ad, plaintext) {\n assert(state.byteLength === STATELEN)\n assert(out.byteLength != null)\n assert(plaintext.byteLength != null)\n\n var n = state.subarray(NONCE_BEGIN, NONCE_END)\n if (sodium_memcmp(n, maxnonce)) throw new Error('Nonce overflow')\n\n if (hasKey(state) === false) {\n out.set(plaintext)\n encryptWithAd.bytesRead = plaintext.byteLength\n encryptWithAd.bytesWritten = encryptWithAd.bytesRead\n return\n }\n\n var k = state.subarray(KEY_BEGIN, KEY_END)\n\n cipher.encrypt(\n out,\n k,\n n,\n ad,\n plaintext\n )\n encryptWithAd.bytesRead = cipher.encrypt.bytesRead\n encryptWithAd.bytesWritten = cipher.encrypt.bytesWritten\n\n sodium_increment(n)\n}\nencryptWithAd.bytesRead = 0\nencryptWithAd.bytesWritten = 0\n\nfunction decryptWithAd (state, out, ad, ciphertext) {\n assert(state.byteLength === STATELEN)\n assert(out.byteLength != null)\n assert(ciphertext.byteLength != null)\n\n var n = state.subarray(NONCE_BEGIN, NONCE_END)\n if (sodium_memcmp(n, maxnonce)) throw new Error('Nonce overflow')\n\n if (hasKey(state) === false) {\n out.set(ciphertext)\n decryptWithAd.bytesRead = ciphertext.byteLength\n decryptWithAd.bytesWritten = decryptWithAd.bytesRead\n return\n }\n\n var k = state.subarray(KEY_BEGIN, KEY_END)\n\n cipher.decrypt(\n out,\n k,\n n,\n ad,\n ciphertext\n )\n decryptWithAd.bytesRead = cipher.decrypt.bytesRead\n decryptWithAd.bytesWritten = cipher.decrypt.bytesWritten\n\n sodium_increment(n)\n}\ndecryptWithAd.bytesRead = 0\ndecryptWithAd.bytesWritten = 0\n\nfunction rekey (state) {\n assert(state.byteLength === STATELEN)\n\n var k = state.subarray(KEY_BEGIN, KEY_END)\n cipher.rekey(k, k)\n rekey.bytesRead = cipher.rekey.bytesRead\n rekey.bytesWritten = cipher.rekey.bytesWritten\n}\nrekey.bytesRead = 0\nrekey.bytesWritten = 0\n", "assert.notEqual = notEqual\nassert.notOk = notOk\nassert.equal = equal\nassert.ok = assert\n\nmodule.exports = assert\n\nfunction equal (a, b, m) {\n assert(a == b, m) // eslint-disable-line eqeqeq\n}\n\nfunction notEqual (a, b, m) {\n assert(a != b, m) // eslint-disable-line eqeqeq\n}\n\nfunction notOk (t, m) {\n assert(!t, m)\n}\n\nfunction assert (t, m) {\n if (!t) throw new Error(m || 'AssertionError')\n}\n", "/* eslint-disable camelcase */\nvar { sodium_malloc, sodium_memzero } = require('sodium-universal/memory')\nvar { crypto_generichash, crypto_generichash_batch } = require('sodium-universal/crypto_generichash')\nvar assert = require('nanoassert')\n\nvar HASHLEN = 64\nvar BLOCKLEN = 128\nvar scratch = sodium_malloc(BLOCKLEN * 3)\nvar HMACKey = scratch.subarray(BLOCKLEN * 0, BLOCKLEN * 1)\nvar OuterKeyPad = scratch.subarray(BLOCKLEN * 1, BLOCKLEN * 2)\nvar InnerKeyPad = scratch.subarray(BLOCKLEN * 2, BLOCKLEN * 3)\n\n// Post-fill is done in the cases where someone caught an exception that\n// happened before we were able to clear data at the end\nmodule.exports = function hmac (out, data, key) {\n assert(out.byteLength === HASHLEN)\n assert(key.byteLength != null)\n assert(Array.isArray(data) ? data.every(d => d.byteLength != null) : data.byteLength != null)\n\n if (key.byteLength > BLOCKLEN) {\n crypto_generichash(HMACKey.subarray(0, HASHLEN), key)\n sodium_memzero(HMACKey.subarray(HASHLEN))\n } else {\n // Covers key <= BLOCKLEN\n HMACKey.set(key)\n sodium_memzero(HMACKey.subarray(key.byteLength))\n }\n\n for (var i = 0; i < HMACKey.byteLength; i++) {\n OuterKeyPad[i] = 0x5c ^ HMACKey[i]\n InnerKeyPad[i] = 0x36 ^ HMACKey[i]\n }\n sodium_memzero(HMACKey)\n\n crypto_generichash_batch(out, [InnerKeyPad].concat(data))\n sodium_memzero(InnerKeyPad)\n crypto_generichash_batch(out, [OuterKeyPad].concat(out))\n sodium_memzero(OuterKeyPad)\n}\n\nmodule.exports.BYTES = HASHLEN\nmodule.exports.KEYBYTES = BLOCKLEN\n", "/* eslint-disable camelcase */\nconst { crypto_kx_SEEDBYTES, crypto_kx_keypair, crypto_kx_seed_keypair } = require('sodium-universal/crypto_kx')\nconst { crypto_scalarmult_BYTES, crypto_scalarmult_SCALARBYTES, crypto_scalarmult } = require('sodium-universal/crypto_scalarmult')\n\nvar assert = require('nanoassert')\n\nvar DHLEN = crypto_scalarmult_BYTES\nvar PKLEN = crypto_scalarmult_BYTES\nvar SKLEN = crypto_scalarmult_SCALARBYTES\nvar SEEDLEN = crypto_kx_SEEDBYTES\n\nmodule.exports = {\n DHLEN,\n PKLEN,\n SKLEN,\n SEEDLEN,\n generateKeypair,\n generateSeedKeypair,\n dh\n}\n\nfunction generateKeypair (pk, sk) {\n assert(pk.byteLength === PKLEN)\n assert(sk.byteLength === SKLEN)\n crypto_kx_keypair(pk, sk)\n}\n\nfunction generateSeedKeypair (pk, sk, seed) {\n assert(pk.byteLength === PKLEN)\n assert(sk.byteLength === SKLEN)\n assert(seed.byteLength === SKLEN)\n\n crypto_kx_seed_keypair(pk, sk, seed)\n}\n\nfunction dh (output, lsk, pk) {\n assert(output.byteLength === DHLEN)\n assert(lsk.byteLength === SKLEN)\n assert(pk.byteLength === PKLEN)\n\n crypto_scalarmult(\n output,\n lsk,\n pk\n )\n}\n", "/* eslint-disable camelcase */\nconst { sodium_malloc, sodium_memzero } = require('sodium-universal/memory')\nconst { crypto_generichash_batch } = require('sodium-universal/crypto_generichash')\n\nconst assert = require('nanoassert')\nconst hmacBlake2b = require('hmac-blake2b')\nconst dh = require('./dh')\n\nconst HASHLEN = 64\nconst BLOCKLEN = 128\n\nassert(hmacBlake2b.KEYBYTES === BLOCKLEN, 'mismatching hmac BLOCKLEN')\nassert(hmacBlake2b.BYTES === HASHLEN, 'mismatching hmac HASHLEN')\n\nmodule.exports = {\n HASHLEN,\n BLOCKLEN,\n hash,\n hkdf\n}\n\nfunction hash (out, data) {\n assert(out.byteLength === HASHLEN)\n assert(Array.isArray(data))\n\n crypto_generichash_batch(out, data)\n}\n\nfunction hmac (out, key, data) {\n return hmacBlake2b(out, data, key)\n}\n\nconst TempKey = sodium_malloc(HASHLEN)\nconst Byte0x01 = new Uint8Array([0x01])\nconst Byte0x02 = new Uint8Array([0x02])\nconst Byte0x03 = new Uint8Array([0x03])\n\nfunction hkdf (out1, out2, out3, chainingKey, inputKeyMaterial) {\n assert(out1.byteLength === HASHLEN)\n assert(out2.byteLength === HASHLEN)\n assert(out3 == null ? true : out3.byteLength === HASHLEN)\n assert(chainingKey.byteLength === HASHLEN)\n assert([0, 32, dh.DHLEN, dh.PKLEN].includes(inputKeyMaterial.byteLength))\n\n sodium_memzero(TempKey)\n hmac(TempKey, chainingKey, [inputKeyMaterial])\n hmac(out1, TempKey, [Byte0x01])\n hmac(out2, TempKey, [out1, Byte0x02])\n\n if (out3 != null) {\n hmac(out3, TempKey, [out2, Byte0x03])\n }\n\n sodium_memzero(TempKey)\n}\n", "/* eslint-disable camelcase */\nconst { sodium_malloc, sodium_memzero } = require('sodium-universal/memory')\nvar assert = require('nanoassert')\nvar cipherState = require('./cipher-state')\nvar hash = require('./hash')\n\nvar STATELEN = hash.HASHLEN + hash.HASHLEN + cipherState.STATELEN\nvar HASHLEN = hash.HASHLEN\n\nmodule.exports = {\n STATELEN,\n initializeSymmetric,\n mixKey,\n mixHash,\n mixKeyAndHash,\n getHandshakeHash,\n encryptAndHash,\n decryptAndHash,\n split,\n _hasKey\n}\n\nvar CHAINING_KEY_BEGIN = 0\nvar CHAINING_KEY_END = hash.HASHLEN\nvar HASH_BEGIN = CHAINING_KEY_END\nvar HASH_END = HASH_BEGIN + hash.HASHLEN\nvar CIPHER_BEGIN = HASH_END\nvar CIPHER_END = CIPHER_BEGIN + cipherState.STATELEN\n\nfunction initializeSymmetric (state, protocolName) {\n assert(state.byteLength === STATELEN)\n assert(protocolName.byteLength != null)\n\n sodium_memzero(state)\n if (protocolName.byteLength <= HASHLEN) state.set(protocolName, HASH_BEGIN)\n else hash.hash(state.subarray(HASH_BEGIN, HASH_END), [protocolName])\n\n state.subarray(CHAINING_KEY_BEGIN, CHAINING_KEY_END).set(state.subarray(HASH_BEGIN, HASH_END))\n\n cipherState.initializeKey(state.subarray(CIPHER_BEGIN, CIPHER_END), null)\n}\n\nvar TempKey = sodium_malloc(HASHLEN)\nfunction mixKey (state, inputKeyMaterial) {\n assert(state.byteLength === STATELEN)\n assert(inputKeyMaterial.byteLength != null)\n\n hash.hkdf(\n state.subarray(CHAINING_KEY_BEGIN, CHAINING_KEY_END),\n TempKey,\n null,\n state.subarray(CHAINING_KEY_BEGIN, CHAINING_KEY_END),\n inputKeyMaterial\n )\n\n // HASHLEN is always 64 here, so we truncate to 32 bytes per the spec\n cipherState.initializeKey(state.subarray(CIPHER_BEGIN, CIPHER_END), TempKey.subarray(0, 32))\n sodium_memzero(TempKey)\n}\n\nfunction mixHash (state, data) {\n assert(state.byteLength === STATELEN)\n\n var h = state.subarray(HASH_BEGIN, HASH_END)\n\n hash.hash(h, [h, data])\n}\n\nvar TempHash = sodium_malloc(HASHLEN)\nfunction mixKeyAndHash (state, inputKeyMaterial) {\n assert(state.byteLength === STATELEN)\n assert(inputKeyMaterial.byteLength != null)\n\n hash.hkdf(\n state.subarray(CHAINING_KEY_BEGIN, CHAINING_KEY_END),\n TempHash,\n TempKey,\n state.subarray(CHAINING_KEY_BEGIN, CHAINING_KEY_END),\n inputKeyMaterial\n )\n\n mixHash(state, TempHash)\n sodium_memzero(TempHash)\n\n // HASHLEN is always 64 here, so we truncate to 32 bytes per the spec\n cipherState.initializeKey(state.subarray(CIPHER_BEGIN, CIPHER_END), TempKey.subarray(0, 32))\n sodium_memzero(TempKey)\n}\n\nfunction getHandshakeHash (state, out) {\n assert(state.byteLength === STATELEN)\n assert(out.byteLength === HASHLEN)\n\n out.set(state.subarray(HASH_BEGIN, HASH_END))\n}\n\n// ciphertext is the output here\nfunction encryptAndHash (state, ciphertext, plaintext) {\n assert(state.byteLength === STATELEN)\n assert(ciphertext.byteLength != null)\n assert(plaintext.byteLength != null)\n\n var cstate = state.subarray(CIPHER_BEGIN, CIPHER_END)\n var h = state.subarray(HASH_BEGIN, HASH_END)\n\n cipherState.encryptWithAd(cstate, ciphertext, h, plaintext)\n encryptAndHash.bytesRead = cipherState.encryptWithAd.bytesRead\n encryptAndHash.bytesWritten = cipherState.encryptWithAd.bytesWritten\n mixHash(state, ciphertext.subarray(0, encryptAndHash.bytesWritten))\n}\nencryptAndHash.bytesRead = 0\nencryptAndHash.bytesWritten = 0\n\n// plaintext is the output here\nfunction decryptAndHash (state, plaintext, ciphertext) {\n assert(state.byteLength === STATELEN)\n assert(plaintext.byteLength != null)\n assert(ciphertext.byteLength != null)\n\n var cstate = state.subarray(CIPHER_BEGIN, CIPHER_END)\n var h = state.subarray(HASH_BEGIN, HASH_END)\n\n cipherState.decryptWithAd(cstate, plaintext, h, ciphertext)\n decryptAndHash.bytesRead = cipherState.decryptWithAd.bytesRead\n decryptAndHash.bytesWritten = cipherState.decryptWithAd.bytesWritten\n mixHash(state, ciphertext.subarray(0, decryptAndHash.bytesRead))\n}\ndecryptAndHash.bytesRead = 0\ndecryptAndHash.bytesWritten = 0\n\nvar TempKey1 = sodium_malloc(HASHLEN)\nvar TempKey2 = sodium_malloc(HASHLEN)\nvar zerolen = new Uint8Array(0)\nfunction split (state, cipherstate1, cipherstate2) {\n assert(state.byteLength === STATELEN)\n assert(cipherstate1.byteLength === cipherState.STATELEN)\n assert(cipherstate2.byteLength === cipherState.STATELEN)\n\n hash.hkdf(\n TempKey1,\n TempKey2,\n null,\n state.subarray(CHAINING_KEY_BEGIN, CHAINING_KEY_END),\n zerolen\n )\n\n // HASHLEN is always 64 here, so we truncate to 32 bytes per the spec\n cipherState.initializeKey(cipherstate1, TempKey1.subarray(0, 32))\n cipherState.initializeKey(cipherstate2, TempKey2.subarray(0, 32))\n sodium_memzero(TempKey1)\n sodium_memzero(TempKey2)\n}\n\nfunction _hasKey (state) {\n return cipherState.hasKey(state.subarray(CIPHER_BEGIN, CIPHER_END))\n}\n", "/* eslint-disable camelcase */\nconst { sodium_malloc, sodium_memzero, sodium_free } = require('sodium-universal/memory')\nconst assert = require('nanoassert')\nconst clone = require('clone')\nconst symmetricState = require('./symmetric-state')\nconst cipherState = require('./cipher-state')\nconst dh = require('./dh')\n\nconst PKLEN = dh.PKLEN\nconst SKLEN = dh.SKLEN\n\nmodule.exports = Object.freeze({\n initialize,\n writeMessage,\n readMessage,\n destroy,\n keygen,\n seedKeygen,\n SKLEN,\n PKLEN\n})\n\nfunction HandshakeState () {\n this.symmetricState = sodium_malloc(symmetricState.STATELEN)\n\n this.initiator = null\n\n this.spk = null\n this.ssk = null\n\n this.epk = null\n this.esk = null\n\n this.rs = null\n this.re = null\n\n this.messagePatterns = null\n}\n\nconst INITIATOR = Symbol('initiator')\nconst RESPONDER = Symbol('responder')\n\nconst TOK_S = Symbol('s')\nconst TOK_E = Symbol('e')\nconst TOK_ES = Symbol('es')\nconst TOK_SE = Symbol('se')\nconst TOK_EE = Symbol('ee')\nconst TOK_SS = Symbol('es')\n\n// initiator, ->\n// responder, <-\nvar PATTERNS = Object.freeze({\n N: {\n premessages: [\n [RESPONDER, TOK_S]\n ],\n messagePatterns: [\n [INITIATOR, TOK_E, TOK_ES]\n ]\n },\n K: {\n premessages: [\n [INITIATOR, TOK_S],\n [RESPONDER, TOK_S]\n ],\n messagePatterns: [\n [INITIATOR, TOK_E, TOK_ES, TOK_SS]\n ]\n },\n X: {\n premessages: [\n [RESPONDER, TOK_S]\n ],\n messagePatterns: [\n [INITIATOR, TOK_E, TOK_ES, TOK_S, TOK_SS]\n ]\n },\n NN: {\n premessages: [],\n messagePatterns: [\n [INITIATOR, TOK_E],\n [RESPONDER, TOK_E, TOK_EE]\n ]\n },\n KN: {\n premessages: [\n [INITIATOR, TOK_S]\n ],\n messagePatterns: [\n [INITIATOR, TOK_E],\n [RESPONDER, TOK_E, TOK_EE, TOK_SE]\n ]\n },\n NK: {\n premessages: [\n [RESPONDER, TOK_S]\n ],\n messagePatterns: [\n [INITIATOR, TOK_E, TOK_ES],\n [RESPONDER, TOK_E, TOK_EE]\n ]\n },\n KK: {\n premessages: [\n [INITIATOR, TOK_S],\n [RESPONDER, TOK_S]\n ],\n messagePatterns: [\n [INITIATOR, TOK_E, TOK_ES, TOK_SS],\n [RESPONDER, TOK_E, TOK_EE, TOK_SE]\n ]\n },\n NX: {\n premessages: [],\n messagePatterns: [\n [INITIATOR, TOK_E],\n [RESPONDER, TOK_E, TOK_EE, TOK_S, TOK_ES]\n ]\n },\n KX: {\n premessages: [\n [INITIATOR, TOK_S]\n ],\n messagePatterns: [\n [INITIATOR, TOK_E],\n [RESPONDER, TOK_E, TOK_EE, TOK_SE, TOK_S, TOK_ES]\n ]\n },\n XN: {\n premessages: [],\n messagePatterns: [\n [INITIATOR, TOK_E],\n [RESPONDER, TOK_E, TOK_EE],\n [INITIATOR, TOK_S, TOK_SE]\n ]\n },\n IN: {\n premessages: [],\n messagePatterns: [\n [INITIATOR, TOK_E, TOK_S],\n [RESPONDER, TOK_E, TOK_EE, TOK_SE]\n ]\n },\n XK: {\n premessages: [\n [RESPONDER, TOK_S]\n ],\n messagePatterns: [\n [INITIATOR, TOK_E, TOK_ES],\n [RESPONDER, TOK_E, TOK_EE],\n [INITIATOR, TOK_S, TOK_SE]\n ]\n },\n IK: {\n premessages: [\n [RESPONDER, TOK_S]\n ],\n messagePatterns: [\n [INITIATOR, TOK_E, TOK_ES, TOK_S, TOK_SS],\n [RESPONDER, TOK_E, TOK_EE, TOK_SE]\n ]\n },\n XX: {\n premessages: [],\n messagePatterns: [\n [INITIATOR, TOK_E],\n [RESPONDER, TOK_E, TOK_EE, TOK_S, TOK_ES],\n [INITIATOR, TOK_S, TOK_SE]\n ]\n },\n IX: {\n premessages: [],\n messagePatterns: [\n [INITIATOR, TOK_E, TOK_S],\n [RESPONDER, TOK_E, TOK_EE, TOK_SE, TOK_S, TOK_ES]\n ]\n }\n})\n\nfunction sodiumBufferCopy (src) {\n var buf = sodium_malloc(src.byteLength)\n buf.set(src)\n return buf\n}\n\nfunction initialize (handshakePattern, initiator, prologue, s, e, rs, re) {\n assert(Object.keys(PATTERNS).includes(handshakePattern), 'Unsupported handshake pattern')\n assert(typeof initiator === 'boolean', 'Initiator must be a boolean')\n assert(prologue.byteLength != null, 'prolouge must be a Buffer')\n\n assert(e == null ? true : e.publicKey.byteLength === dh.PKLEN, `e.publicKey must be ${dh.PKLEN} bytes`)\n assert(e == null ? true : e.secretKey.byteLength === dh.SKLEN, `e.secretKey must be ${dh.SKLEN} bytes`)\n\n assert(rs == null ? true : rs.byteLength === dh.PKLEN, `rs must be ${dh.PKLEN} bytes`)\n assert(re == null ? true : re.byteLength === dh.PKLEN, `re must be ${dh.PKLEN} bytes`)\n\n var state = new HandshakeState()\n\n var protocolName = Uint8Array.from(`Noise_${handshakePattern}_25519_ChaChaPoly_BLAKE2b`, toCharCode)\n\n symmetricState.initializeSymmetric(state.symmetricState, protocolName)\n symmetricState.mixHash(state.symmetricState, prologue)\n\n state.role = initiator === true ? INITIATOR : RESPONDER\n\n if (s != null) {\n assert(s.publicKey.byteLength === dh.PKLEN, `s.publicKey must be ${dh.PKLEN} bytes`)\n assert(s.secretKey.byteLength === dh.SKLEN, `s.secretKey must be ${dh.SKLEN} bytes`)\n\n state.spk = sodiumBufferCopy(s.publicKey)\n state.ssk = sodiumBufferCopy(s.secretKey)\n }\n\n if (e != null) {\n assert(e.publicKey.byteLength === dh.PKLEN)\n assert(e.secretKey.byteLength === dh.SKLEN)\n\n state.epk = sodiumBufferCopy(e.publicKey)\n state.esk = sodiumBufferCopy(e.secretKey)\n }\n\n if (rs != null) {\n assert(rs.byteLength === dh.PKLEN)\n state.rs = sodiumBufferCopy(rs)\n }\n if (re != null) {\n assert(re.byteLength === dh.PKLEN)\n state.re = sodiumBufferCopy(re)\n }\n\n // hashing\n var pat = PATTERNS[handshakePattern]\n\n for (var pattern of clone(pat.premessages)) {\n var patternRole = pattern.shift()\n\n for (var token of pattern) {\n switch (token) {\n case TOK_E:\n assert(state.role === patternRole ? state.epk.byteLength != null : state.re.byteLength != null)\n symmetricState.mixHash(state.symmetricState, state.role === patternRole ? state.epk : state.re)\n break\n case TOK_S:\n assert(state.role === patternRole ? state.spk.byteLength != null : state.rs.byteLength != null)\n symmetricState.mixHash(state.symmetricState, state.role === patternRole ? state.spk : state.rs)\n break\n default:\n throw new Error('Invalid premessage pattern')\n }\n }\n }\n\n state.messagePatterns = clone(pat.messagePatterns)\n\n assert(state.messagePatterns.filter(p => p[0] === INITIATOR).some(p => p.includes(TOK_S))\n ? (state.spk !== null && state.ssk !== null)\n : true, // Default if none is found\n 'This handshake pattern requires a static keypair')\n\n return state\n}\n\nvar DhResult = sodium_malloc(dh.DHLEN)\nfunction writeMessage (state, payload, messageBuffer) {\n assert(state instanceof HandshakeState)\n assert(payload.byteLength != null)\n assert(messageBuffer.byteLength != null)\n\n var mpat = state.messagePatterns.shift()\n var moffset = 0\n\n assert(mpat != null)\n\n assert(state.role === mpat.shift())\n\n for (var token of mpat) {\n switch (token) {\n case TOK_E:\n assert(state.epk == null)\n assert(state.esk == null)\n\n state.epk = sodium_malloc(dh.PKLEN)\n state.esk = sodium_malloc(dh.SKLEN)\n\n dh.generateKeypair(state.epk, state.esk)\n\n messageBuffer.set(state.epk, moffset)\n moffset += state.epk.byteLength\n\n symmetricState.mixHash(state.symmetricState, state.epk)\n\n break\n\n case TOK_S:\n assert(state.spk.byteLength === dh.PKLEN)\n\n symmetricState.encryptAndHash(state.symmetricState, messageBuffer.subarray(moffset), state.spk)\n moffset += symmetricState.encryptAndHash.bytesWritten\n\n break\n\n case TOK_EE:\n dh.dh(DhResult, state.esk, state.re)\n symmetricState.mixKey(state.symmetricState, DhResult)\n sodium_memzero(DhResult)\n break\n case TOK_ES:\n if (state.role === INITIATOR) dh.dh(DhResult, state.esk, state.rs)\n else dh.dh(DhResult, state.ssk, state.re)\n\n symmetricState.mixKey(state.symmetricState, DhResult)\n sodium_memzero(DhResult)\n break\n case TOK_SE:\n if (state.role === INITIATOR) dh.dh(DhResult, state.ssk, state.re)\n else dh.dh(DhResult, state.esk, state.rs)\n\n symmetricState.mixKey(state.symmetricState, DhResult)\n sodium_memzero(DhResult)\n break\n case TOK_SS:\n dh.dh(DhResult, state.ssk, state.rs)\n\n symmetricState.mixKey(state.symmetricState, DhResult)\n sodium_memzero(DhResult)\n break\n\n default:\n throw new Error('Invalid message pattern')\n }\n }\n\n symmetricState.encryptAndHash(state.symmetricState, messageBuffer.subarray(moffset), payload)\n moffset += symmetricState.encryptAndHash.bytesWritten\n\n writeMessage.bytes = moffset\n\n if (state.messagePatterns.length === 0) {\n var tx = sodium_malloc(cipherState.STATELEN)\n var rx = sodium_malloc(cipherState.STATELEN)\n symmetricState.split(state.symmetricState, tx, rx)\n\n return { tx, rx }\n }\n}\nwriteMessage.bytes = 0\n\nfunction readMessage (state, message, payloadBuffer) {\n assert(state instanceof HandshakeState)\n assert(message.byteLength != null)\n assert(payloadBuffer.byteLength != null)\n\n var mpat = state.messagePatterns.shift()\n var moffset = 0\n\n assert(mpat != null)\n assert(mpat.shift() !== state.role)\n\n for (var token of mpat) {\n switch (token) {\n case TOK_E:\n assert(state.re == null)\n assert(message.byteLength - moffset >= dh.PKLEN)\n\n // PKLEN instead of DHLEN since they are different in out case\n state.re = sodium_malloc(dh.PKLEN)\n state.re.set(message.subarray(moffset, moffset + dh.PKLEN))\n moffset += dh.PKLEN\n\n symmetricState.mixHash(state.symmetricState, state.re)\n\n break\n\n case TOK_S:\n assert(state.rs == null)\n state.rs = sodium_malloc(dh.PKLEN)\n\n var bytes = 0\n if (symmetricState._hasKey(state.symmetricState)) {\n bytes = dh.PKLEN + 16\n } else {\n bytes = dh.PKLEN\n }\n\n assert(message.byteLength - moffset >= bytes)\n\n symmetricState.decryptAndHash(\n state.symmetricState,\n state.rs,\n message.subarray(moffset, moffset + bytes) // <- called temp in noise spec\n )\n\n moffset += symmetricState.decryptAndHash.bytesRead\n\n break\n case TOK_EE:\n dh.dh(DhResult, state.esk, state.re)\n symmetricState.mixKey(state.symmetricState, DhResult)\n sodium_memzero(DhResult)\n break\n case TOK_ES:\n if (state.role === INITIATOR) dh.dh(DhResult, state.esk, state.rs)\n else dh.dh(DhResult, state.ssk, state.re)\n\n symmetricState.mixKey(state.symmetricState, DhResult)\n sodium_memzero(DhResult)\n break\n case TOK_SE:\n if (state.role === INITIATOR) dh.dh(DhResult, state.ssk, state.re)\n else dh.dh(DhResult, state.esk, state.rs)\n\n symmetricState.mixKey(state.symmetricState, DhResult)\n sodium_memzero(DhResult)\n break\n case TOK_SS:\n dh.dh(DhResult, state.ssk, state.rs)\n\n symmetricState.mixKey(state.symmetricState, DhResult)\n sodium_memzero(DhResult)\n break\n\n default:\n throw new Error('Invalid message pattern')\n }\n }\n\n symmetricState.decryptAndHash(state.symmetricState, payloadBuffer, message.subarray(moffset))\n\n // How many bytes were written to payload (minus the TAG/MAC)\n readMessage.bytes = symmetricState.decryptAndHash.bytesWritten\n\n if (state.messagePatterns.length === 0) {\n var tx = sodium_malloc(cipherState.STATELEN)\n var rx = sodium_malloc(cipherState.STATELEN)\n symmetricState.split(state.symmetricState, rx, tx)\n\n return { tx, rx }\n }\n}\nreadMessage.bytes = 0\n\nfunction destroy (state) {\n if (state.symmetricState != null) {\n sodium_free(state.symmetricState)\n state.symmetricState = null\n }\n\n state.role = null\n\n if (state.spk != null) {\n sodium_free(state.spk)\n state.spk = null\n }\n\n if (state.ssk != null) {\n sodium_free(state.ssk)\n state.ssk = null\n }\n\n if (state.epk != null) {\n sodium_free(state.epk)\n state.epk = null\n }\n\n if (state.esk != null) {\n sodium_free(state.esk)\n state.esk = null\n }\n\n if (state.rs != null) {\n sodium_free(state.rs)\n state.rs = null\n }\n\n if (state.re != null) {\n sodium_free(state.re)\n state.re = null\n }\n\n state.messagePatterns = null\n}\n\nfunction keygen (obj, sk) {\n if (!obj) {\n obj = { publicKey: sodium_malloc(PKLEN), secretKey: sodium_malloc(SKLEN) }\n return keygen(obj)\n }\n\n if (obj.publicKey) {\n dh.generateKeypair(obj.publicKey, obj.secretKey)\n return obj\n }\n\n if (obj.byteLength != null) dh.generateKeypair(null, obj)\n}\n\nfunction seedKeygen (seed) {\n var obj = { publicKey: sodium_malloc(PKLEN), secretKey: sodium_malloc(SKLEN) }\n dh.generateSeedKeypair(obj.publicKey, obj.secretKey, seed)\n return obj\n}\n\nfunction toCharCode (s) {\n return s.charCodeAt(0)\n}\n", "module.exports = require('./handshake-state')\n", "var noise = require('noise-protocol')\nvar NoiseSymmetricState = require('noise-protocol/symmetric-state')\nvar NoiseHash = require('noise-protocol/hash')\nvar assert = require('nanoassert')\nvar EMPTY = Buffer.alloc(0)\n\nfunction SimpleHandshake (isInitiator, opts) {\n if (!(this instanceof SimpleHandshake)) return new SimpleHandshake(isInitiator, opts)\n opts = opts || {}\n\n var pattern = opts.pattern || 'NN'\n var prolouge = opts.prolouge || EMPTY\n\n this.handshakeHash = null\n this.onstatickey = opts.onstatickey || function (_, cb) { cb() }\n this.onephemeralkey = opts.onephemeralkey || function (_, cb) { cb() }\n this.onhandshake = opts.onhandshake || function (_, cb) { cb() }\n\n this.state = noise.initialize(\n pattern,\n isInitiator,\n prolouge,\n opts.staticKeyPair,\n opts.ephemeralKeyPair,\n opts.remoteStaticKey,\n opts.remoteEphemeralKey\n )\n\n // initiators should send first message, so if initiator, waiting = false\n // while servers should await any message, so if not initiator, waiting = true\n this.waiting = isInitiator === false\n this.finished = false\n // Will hold the \"split\" for transport encryption after handshake\n this.split = null\n\n // ~64KiB is the max noise message length\n this._tx = Buffer.alloc(65535)\n this._rx = Buffer.alloc(65535)\n}\n\nSimpleHandshake.prototype.recv = function recv (data, cb) {\n var self = this\n assert(self.finished === false, 'Should not call recv if finished')\n assert(data != null, 'must have data')\n assert(data.byteLength <= self._rx.byteLength, 'too much data received')\n assert(self.waiting === true, 'Wrong state, not ready to receive data')\n assert(self.split == null, 'split should be null')\n\n var hasREBefore = self.state.re != null\n var hasRSBefore = self.state.rs != null\n try {\n self.split = noise.readMessage(self.state, data, self._rx)\n } catch (ex) {\n return self._finish(ex, null, cb)\n }\n\n self.waiting = false\n\n var hasREAfter = self.state.re != null\n var hasRSAfter = self.state.rs != null\n\n // e and s may come in the same message, so we always have to check static\n // after ephemeral. Assumption here (which holds for all official Noise handshakes)\n // is that e always comes before s\n if (hasREBefore === false && hasREAfter === true) {\n return self.onephemeralkey(self.state.re, checkStatic)\n }\n\n return checkStatic()\n\n function checkStatic (err) {\n if (err) return ondone(err)\n\n if (hasRSBefore === false && hasRSAfter === true) {\n return self.onstatickey(self.state.rs, ondone)\n }\n\n return ondone()\n }\n\n function ondone (err) {\n if (err) return self._finish(err, null, cb)\n\n var msg = self._rx.subarray(0, noise.readMessage.bytes)\n if (self.split) return self._finish(null, msg, cb)\n\n cb(null, msg)\n }\n}\n\nSimpleHandshake.prototype.send = function send (data, cb) {\n assert(this.finished === false, 'Should not call send if finished')\n assert(this.waiting === false, 'Wrong state, not ready to send data')\n assert(this.split == null, 'split should be null')\n\n data = data || EMPTY\n\n try {\n this.split = noise.writeMessage(this.state, data, this._tx)\n } catch (ex) {\n return this._finish(ex, null, cb)\n }\n\n this.waiting = true\n\n var buf = this._tx.subarray(0, noise.writeMessage.bytes)\n\n if (this.split != null) return this._finish(null, buf, cb)\n\n return cb(null, buf)\n}\n\nSimpleHandshake.prototype.destroy = function () {\n this._finish(null, null, function () {})\n}\n\nSimpleHandshake.prototype._finish = function _finish (err, msg, cb) {\n assert(this.finished === false, 'Already finished')\n const self = this\n\n self.finished = true\n self.waiting = false\n\n if (self.split) {\n self.handshakeHash = Buffer.alloc(NoiseHash.HASHLEN)\n NoiseSymmetricState.getHandshakeHash(self.state.symmetricState, self.handshakeHash)\n }\n if (err) return ondone(err)\n self.onhandshake(self.state, ondone)\n\n function ondone (err) {\n noise.destroy(self.state)\n\n cb(err, msg, self.split)\n\n // Should be sodium_memzero?\n self._rx.fill(0)\n self._tx.fill(0)\n }\n}\n\nSimpleHandshake.keygen = noise.keygen\nSimpleHandshake.seedKeygen = noise.seedKeygen\n\nmodule.exports = SimpleHandshake\n", "module.exports = encode\n\nvar MSB = 0x80\n , REST = 0x7F\n , MSBALL = ~REST\n , INT = Math.pow(2, 31)\n\nfunction encode(num, out, offset) {\n out = out || []\n offset = offset || 0\n var oldOffset = offset\n\n while(num >= INT) {\n out[offset++] = (num & 0xFF) | MSB\n num /= 128\n }\n while(num & MSBALL) {\n out[offset++] = (num & 0xFF) | MSB\n num >>>= 7\n }\n out[offset] = num | 0\n \n encode.bytes = offset - oldOffset + 1\n \n return out\n}\n", "module.exports = read\n\nvar MSB = 0x80\n , REST = 0x7F\n\nfunction read(buf, offset) {\n var res = 0\n , offset = offset || 0\n , shift = 0\n , counter = offset\n , b\n , l = buf.length\n\n do {\n if (counter >= l) {\n read.bytes = 0\n throw new RangeError('Could not decode varint')\n }\n b = buf[counter++]\n res += shift < 28\n ? (b & REST) << shift\n : (b & REST) * Math.pow(2, shift)\n shift += 7\n } while (b >= MSB)\n\n read.bytes = counter - offset\n\n return res\n}\n", "\nvar N1 = Math.pow(2, 7)\nvar N2 = Math.pow(2, 14)\nvar N3 = Math.pow(2, 21)\nvar N4 = Math.pow(2, 28)\nvar N5 = Math.pow(2, 35)\nvar N6 = Math.pow(2, 42)\nvar N7 = Math.pow(2, 49)\nvar N8 = Math.pow(2, 56)\nvar N9 = Math.pow(2, 63)\n\nmodule.exports = function (value) {\n return (\n value < N1 ? 1\n : value < N2 ? 2\n : value < N3 ? 3\n : value < N4 ? 4\n : value < N5 ? 5\n : value < N6 ? 6\n : value < N7 ? 7\n : value < N8 ? 8\n : value < N9 ? 9\n : 10\n )\n}\n", "module.exports = {\n encode: require('./encode.js')\n , decode: require('./decode.js')\n , encodingLength: require('./length.js')\n}\n", "const SH = require('simple-handshake')\nconst DH = require('noise-protocol/dh')\nconst crypto = require('hypercore-crypto')\nconst varint = require('varint')\n\nmodule.exports = class ProtocolHandshake {\n constructor (initiator, payload, opts, done) {\n this.options = opts\n this.ondone = done\n this.buffer = null\n this.length = 0\n this.remotePayload = null\n this.payload = payload\n this.keyPair = opts.keyPair || ProtocolHandshake.keyPair()\n this.remotePublicKey = null\n this.onrecv = onrecv.bind(this)\n this.onsend = onsend.bind(this)\n this.destroyed = false\n this.noise = SH(initiator, {\n pattern: 'XX',\n onhandshake,\n staticKeyPair: this.keyPair,\n onstatickey: onstatickey.bind(this)\n })\n\n const self = this\n if (this.noise.waiting === false) process.nextTick(start, this)\n\n function onhandshake (state, cb) {\n process.nextTick(finish, self)\n cb(null)\n }\n }\n\n recv (data) {\n if (this.destroyed) return\n\n if (this.buffer) this.buffer = Buffer.concat([this.buffer, data])\n else this.buffer = data\n\n while (!this.destroyed && !this.noise.finished) {\n if (!this.buffer || this.buffer.length < 3) return\n if (this.length) {\n if (this.buffer.length < this.length) return\n const message = this.buffer.slice(0, this.length)\n this.buffer = this.length < this.buffer.length ? this.buffer.slice(this.length) : null\n this.length = 0\n this.noise.recv(message, this.onrecv)\n } else {\n this.length = varint.decode(this.buffer, 0)\n this.buffer = this.buffer.slice(varint.decode.bytes)\n }\n }\n }\n\n destroy (err) {\n if (this.destroyed) return\n this.destroyed = true\n if (!this.noise.finished) this.noise.destroy()\n this.ondone(err)\n }\n\n static keyPair (seed) {\n const obj = {\n // suboptimal but to reduce secure memory overhead on linux with default settings\n // better fix is to batch mallocs in noise-protocol\n publicKey: Buffer.alloc(DH.PKLEN),\n secretKey: Buffer.alloc(DH.SKLEN)\n }\n\n if (seed) DH.generateSeedKeypair(obj.publicKey, obj.secretKey, seed)\n else DH.generateKeypair(obj.publicKey, obj.secretKey)\n\n return obj\n }\n}\n\nfunction finish (self) {\n if (self.destroyed) return\n self.destroyed = true\n // suboptimal but to reduce secure memory overhead on linux with default settings\n // better fix is to batch mallocs in noise-protocol\n const split = { rx: Buffer.from(self.noise.split.rx), tx: Buffer.from(self.noise.split.tx) }\n crypto.free(self.noise.split.rx)\n crypto.free(self.noise.split.tx)\n self.ondone(null, self.remotePayload, split, self.buffer, self.remotePublicKey, self.noise.handshakeHash)\n}\n\nfunction start (self) {\n if (self.destroyed) return\n self.noise.send(self.payload, self.onsend)\n}\n\nfunction onsend (err, data) {\n if (err) return this.destroy(err)\n const buf = Buffer.allocUnsafe(varint.encodingLength(data.length) + data.length)\n varint.encode(data.length, buf, 0)\n data.copy(buf, varint.encode.bytes)\n this.options.send(buf)\n}\n\nfunction onrecv (err, data) { // data is reused so we need to copy it if we use it\n if (err) return this.destroy(err)\n if (data && data.length) this.remotePayload = Buffer.from(data)\n if (this.destroyed || this.noise.finished) return\n\n if (this.noise.waiting === false) {\n this.noise.send(this.payload, this.onsend)\n }\n}\n\nfunction onstatickey (remoteKey, done) {\n this.remotePublicKey = Buffer.from(remoteKey)\n if (this.options.onauthenticate) this.options.onauthenticate(this.remotePublicKey, done)\n else done(null)\n}\n", "module.exports = encode\n\nvar MSB = 0x80\n , REST = 0x7F\n , MSBALL = ~REST\n , INT = Math.pow(2, 31)\n\nfunction encode(num, out, offset) {\n out = out || []\n offset = offset || 0\n var oldOffset = offset\n\n while(num >= INT) {\n out[offset++] = (num & 0xFF) | MSB\n num /= 128\n }\n while(num & MSBALL) {\n out[offset++] = (num & 0xFF) | MSB\n num >>>= 7\n }\n out[offset] = num | 0\n \n encode.bytes = offset - oldOffset + 1\n \n return out\n}\n", "module.exports = read\n\nvar MSB = 0x80\n , REST = 0x7F\n\nfunction read(buf, offset) {\n var res = 0\n , offset = offset || 0\n , shift = 0\n , counter = offset\n , b\n , l = buf.length\n\n do {\n if (counter >= l) {\n read.bytes = 0\n throw new RangeError('Could not decode varint')\n }\n b = buf[counter++]\n res += shift < 28\n ? (b & REST) << shift\n : (b & REST) * Math.pow(2, shift)\n shift += 7\n } while (b >= MSB)\n\n read.bytes = counter - offset\n\n return res\n}\n", "\nvar N1 = Math.pow(2, 7)\nvar N2 = Math.pow(2, 14)\nvar N3 = Math.pow(2, 21)\nvar N4 = Math.pow(2, 28)\nvar N5 = Math.pow(2, 35)\nvar N6 = Math.pow(2, 42)\nvar N7 = Math.pow(2, 49)\nvar N8 = Math.pow(2, 56)\nvar N9 = Math.pow(2, 63)\n\nmodule.exports = function (value) {\n return (\n value < N1 ? 1\n : value < N2 ? 2\n : value < N3 ? 3\n : value < N4 ? 4\n : value < N5 ? 5\n : value < N6 ? 6\n : value < N7 ? 7\n : value < N8 ? 8\n : value < N9 ? 9\n : 10\n )\n}\n", "module.exports = {\n encode: require('./encode.js')\n , decode: require('./decode.js')\n , encodingLength: require('./length.js')\n}\n", "var varint = require('varint')\nexports.encode = function encode (v, b, o) {\n v = v >= 0 ? v*2 : v*-2 - 1\n var r = varint.encode(v, b, o)\n encode.bytes = varint.encode.bytes\n return r\n}\nexports.decode = function decode (b, o) {\n var v = varint.decode(b, o)\n decode.bytes = varint.decode.bytes\n return v & 1 ? (v+1) / -2 : v / 2\n}\n\nexports.encodingLength = function (v) {\n return varint.encodingLength(v >= 0 ? v*2 : v*-2 - 1)\n}\n", "function isBuffer (value) {\n return Buffer.isBuffer(value) || value instanceof Uint8Array\n}\n\nfunction isEncoding (encoding) {\n return Buffer.isEncoding(encoding)\n}\n\nfunction alloc (size, fill, encoding) {\n return Buffer.alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n return Buffer.allocUnsafe(size)\n}\n\nfunction allocUnsafeSlow (size) {\n return Buffer.allocUnsafeSlow(size)\n}\n\nfunction byteLength (string, encoding) {\n return Buffer.byteLength(string, encoding)\n}\n\nfunction compare (a, b) {\n return Buffer.compare(a, b)\n}\n\nfunction concat (buffers, totalLength) {\n return Buffer.concat(buffers, totalLength)\n}\n\nfunction copy (source, target, targetStart, start, end) {\n return toBuffer(source).copy(target, targetStart, start, end)\n}\n\nfunction equals (a, b) {\n return toBuffer(a).equals(b)\n}\n\nfunction fill (buffer, value, offset, end, encoding) {\n return toBuffer(buffer).fill(value, offset, end, encoding)\n}\n\nfunction from (value, encodingOrOffset, length) {\n return Buffer.from(value, encodingOrOffset, length)\n}\n\nfunction includes (buffer, value, byteOffset, encoding) {\n return toBuffer(buffer).includes(value, byteOffset, encoding)\n}\n\nfunction indexOf (buffer, value, byfeOffset, encoding) {\n return toBuffer(buffer).indexOf(value, byfeOffset, encoding)\n}\n\nfunction lastIndexOf (buffer, value, byteOffset, encoding) {\n return toBuffer(buffer).lastIndexOf(value, byteOffset, encoding)\n}\n\nfunction swap16 (buffer) {\n return toBuffer(buffer).swap16()\n}\n\nfunction swap32 (buffer) {\n return toBuffer(buffer).swap32()\n}\n\nfunction swap64 (buffer) {\n return toBuffer(buffer).swap64()\n}\n\nfunction toBuffer (buffer) {\n if (Buffer.isBuffer(buffer)) return buffer\n return Buffer.from(buffer.buffer, buffer.byteOffset, buffer.byteLength)\n}\n\nfunction toString (buffer, encoding, start, end) {\n return toBuffer(buffer).toString(encoding, start, end)\n}\n\nfunction write (buffer, string, offset, length, encoding) {\n return toBuffer(buffer).write(string, offset, length, encoding)\n}\n\nfunction writeDoubleLE (buffer, value, offset) {\n return toBuffer(buffer).writeDoubleLE(value, offset)\n}\n\nfunction writeFloatLE (buffer, value, offset) {\n return toBuffer(buffer).writeFloatLE(value, offset)\n}\n\nfunction writeUInt32LE (buffer, value, offset) {\n return toBuffer(buffer).writeUInt32LE(value, offset)\n}\n\nfunction writeInt32LE (buffer, value, offset) {\n return toBuffer(buffer).writeInt32LE(value, offset)\n}\n\nfunction readDoubleLE (buffer, offset) {\n return toBuffer(buffer).readDoubleLE(offset)\n}\n\nfunction readFloatLE (buffer, offset) {\n return toBuffer(buffer).readFloatLE(offset)\n}\n\nfunction readUInt32LE (buffer, offset) {\n return toBuffer(buffer).readUInt32LE(offset)\n}\n\nfunction readInt32LE (buffer, offset) {\n return toBuffer(buffer).readInt32LE(offset)\n}\n\nmodule.exports = {\n isBuffer,\n isEncoding,\n alloc,\n allocUnsafe,\n allocUnsafeSlow,\n byteLength,\n compare,\n concat,\n copy,\n equals,\n fill,\n from,\n includes,\n indexOf,\n lastIndexOf,\n swap16,\n swap32,\n swap64,\n toBuffer,\n toString,\n write,\n writeDoubleLE,\n writeFloatLE,\n writeUInt32LE,\n writeInt32LE,\n readDoubleLE,\n readFloatLE,\n readUInt32LE,\n readInt32LE\n}\n", "var varint = require('varint')\nvar svarint = require('signed-varint')\nvar b4a = require('b4a')\n\nexports.make = encoder\n\nexports.name = function (enc) {\n var keys = Object.keys(exports)\n for (var i = 0; i < keys.length; i++) {\n if (exports[keys[i]] === enc) return keys[i]\n }\n return null\n}\n\nexports.skip = function (type, buffer, offset) {\n switch (type) {\n case 0:\n varint.decode(buffer, offset)\n return offset + varint.decode.bytes\n\n case 1:\n return offset + 8\n\n case 2:\n var len = varint.decode(buffer, offset)\n return offset + varint.decode.bytes + len\n\n case 3:\n case 4:\n throw new Error('Groups are not supported')\n\n case 5:\n return offset + 4\n }\n\n throw new Error('Unknown wire type: ' + type)\n}\n\nexports.bytes = encoder(2,\n function encode (val, buffer, offset) {\n var oldOffset = offset\n var len = bufferLength(val)\n\n varint.encode(len, buffer, offset)\n offset += varint.encode.bytes\n\n if (b4a.isBuffer(val)) b4a.copy(val, buffer, offset)\n else b4a.write(buffer, val, offset, len)\n offset += len\n\n encode.bytes = offset - oldOffset\n return buffer\n },\n function decode (buffer, offset) {\n var oldOffset = offset\n\n var len = varint.decode(buffer, offset)\n offset += varint.decode.bytes\n\n var val = buffer.subarray(offset, offset + len)\n offset += val.length\n\n decode.bytes = offset - oldOffset\n return val\n },\n function encodingLength (val) {\n var len = bufferLength(val)\n return varint.encodingLength(len) + len\n }\n)\n\nexports.string = encoder(2,\n function encode (val, buffer, offset) {\n var oldOffset = offset\n var len = b4a.byteLength(val)\n\n varint.encode(len, buffer, offset, 'utf-8')\n offset += varint.encode.bytes\n\n b4a.write(buffer, val, offset, len)\n offset += len\n\n encode.bytes = offset - oldOffset\n return buffer\n },\n function decode (buffer, offset) {\n var oldOffset = offset\n\n var len = varint.decode(buffer, offset)\n offset += varint.decode.bytes\n\n var val = b4a.toString(buffer, 'utf-8', offset, offset + len)\n offset += len\n\n decode.bytes = offset - oldOffset\n return val\n },\n function encodingLength (val) {\n var len = b4a.byteLength(val)\n return varint.encodingLength(len) + len\n }\n)\n\nexports.bool = encoder(0,\n function encode (val, buffer, offset) {\n buffer[offset] = val ? 1 : 0\n encode.bytes = 1\n return buffer\n },\n function decode (buffer, offset) {\n var bool = buffer[offset] > 0\n decode.bytes = 1\n return bool\n },\n function encodingLength () {\n return 1\n }\n)\n\nexports.int32 = encoder(0,\n function encode (val, buffer, offset) {\n varint.encode(val < 0 ? val + 4294967296 : val, buffer, offset)\n encode.bytes = varint.encode.bytes\n return buffer\n },\n function decode (buffer, offset) {\n var val = varint.decode(buffer, offset)\n decode.bytes = varint.decode.bytes\n return val > 2147483647 ? val - 4294967296 : val\n },\n function encodingLength (val) {\n return varint.encodingLength(val < 0 ? val + 4294967296 : val)\n }\n)\n\nexports.int64 = encoder(0,\n function encode (val, buffer, offset) {\n if (val < 0) {\n var last = offset + 9\n varint.encode(val * -1, buffer, offset)\n offset += varint.encode.bytes - 1\n buffer[offset] = buffer[offset] | 0x80\n while (offset < last - 1) {\n offset++\n buffer[offset] = 0xff\n }\n buffer[last] = 0x01\n encode.bytes = 10\n } else {\n varint.encode(val, buffer, offset)\n encode.bytes = varint.encode.bytes\n }\n return buffer\n },\n function decode (buffer, offset) {\n var val = varint.decode(buffer, offset)\n if (val >= Math.pow(2, 63)) {\n var limit = 9\n while (buffer[offset + limit - 1] === 0xff) limit--\n limit = limit || 9\n var subset = b4a.allocUnsafe(limit)\n b4a.copy(buffer, subset, 0, offset, offset + limit)\n subset[limit - 1] = subset[limit - 1] & 0x7f\n val = -1 * varint.decode(subset, 0)\n decode.bytes = 10\n } else {\n decode.bytes = varint.decode.bytes\n }\n return val\n },\n function encodingLength (val) {\n return val < 0 ? 10 : varint.encodingLength(val)\n }\n)\n\nexports.sint32 =\nexports.sint64 = encoder(0,\n svarint.encode,\n svarint.decode,\n svarint.encodingLength\n)\n\nexports.uint32 =\nexports.uint64 =\nexports.enum =\nexports.varint = encoder(0,\n varint.encode,\n varint.decode,\n varint.encodingLength\n)\n\n// we cannot represent these in javascript so we just use buffers\nexports.fixed64 =\nexports.sfixed64 = encoder(1,\n function encode (val, buffer, offset) {\n b4a.copy(val, buffer, offset)\n encode.bytes = 8\n return buffer\n },\n function decode (buffer, offset) {\n var val = buffer.subarray(offset, offset + 8)\n decode.bytes = 8\n return val\n },\n function encodingLength () {\n return 8\n }\n)\n\nexports.double = encoder(1,\n function encode (val, buffer, offset) {\n b4a.writeDoubleLE(buffer, val, offset)\n encode.bytes = 8\n return buffer\n },\n function decode (buffer, offset) {\n var val = b4a.readDoubleLE(buffer, offset)\n decode.bytes = 8\n return val\n },\n function encodingLength () {\n return 8\n }\n)\n\nexports.fixed32 = encoder(5,\n function encode (val, buffer, offset) {\n b4a.writeUInt32LE(buffer, val, offset)\n encode.bytes = 4\n return buffer\n },\n function decode (buffer, offset) {\n var val = b4a.readUInt32LE(buffer, offset)\n decode.bytes = 4\n return val\n },\n function encodingLength () {\n return 4\n }\n)\n\nexports.sfixed32 = encoder(5,\n function encode (val, buffer, offset) {\n b4a.writeInt32LE(buffer, val, offset)\n encode.bytes = 4\n return buffer\n },\n function decode (buffer, offset) {\n var val = b4a.readInt32LE(buffer, offset)\n decode.bytes = 4\n return val\n },\n function encodingLength () {\n return 4\n }\n)\n\nexports.float = encoder(5,\n function encode (val, buffer, offset) {\n b4a.writeFloatLE(buffer, val, offset)\n encode.bytes = 4\n return buffer\n },\n function decode (buffer, offset) {\n var val = b4a.readFloatLE(buffer, offset)\n decode.bytes = 4\n return val\n },\n function encodingLength () {\n return 4\n }\n)\n\nfunction encoder (type, encode, decode, encodingLength) {\n encode.bytes = decode.bytes = 0\n\n return {\n type: type,\n encode: encode,\n decode: decode,\n encodingLength: encodingLength\n }\n}\n\nfunction bufferLength (val) {\n return b4a.isBuffer(val) ? val.length : b4a.byteLength(val)\n}\n", "// This file is auto generated by the protocol-buffers compiler\n\n/* eslint-disable quotes */\n/* eslint-disable indent */\n/* eslint-disable no-redeclare */\n/* eslint-disable camelcase */\n\n// Remember to `npm install --save protocol-buffers-encodings`\nvar encodings = require('protocol-buffers-encodings')\nvar varint = encodings.varint\nvar skip = encodings.skip\n\nvar NoisePayload = exports.NoisePayload = {\n buffer: true,\n encodingLength: null,\n encode: null,\n decode: null\n}\n\nvar Open = exports.Open = {\n buffer: true,\n encodingLength: null,\n encode: null,\n decode: null\n}\n\nvar Options = exports.Options = {\n buffer: true,\n encodingLength: null,\n encode: null,\n decode: null\n}\n\nvar Status = exports.Status = {\n buffer: true,\n encodingLength: null,\n encode: null,\n decode: null\n}\n\nvar Have = exports.Have = {\n buffer: true,\n encodingLength: null,\n encode: null,\n decode: null\n}\n\nvar Unhave = exports.Unhave = {\n buffer: true,\n encodingLength: null,\n encode: null,\n decode: null\n}\n\nvar Want = exports.Want = {\n buffer: true,\n encodingLength: null,\n encode: null,\n decode: null\n}\n\nvar Unwant = exports.Unwant = {\n buffer: true,\n encodingLength: null,\n encode: null,\n decode: null\n}\n\nvar Request = exports.Request = {\n buffer: true,\n encodingLength: null,\n encode: null,\n decode: null\n}\n\nvar Cancel = exports.Cancel = {\n buffer: true,\n encodingLength: null,\n encode: null,\n decode: null\n}\n\nvar Data = exports.Data = {\n buffer: true,\n encodingLength: null,\n encode: null,\n decode: null\n}\n\nvar Close = exports.Close = {\n buffer: true,\n encodingLength: null,\n encode: null,\n decode: null\n}\n\ndefineNoisePayload()\ndefineOpen()\ndefineOptions()\ndefineStatus()\ndefineHave()\ndefineUnhave()\ndefineWant()\ndefineUnwant()\ndefineRequest()\ndefineCancel()\ndefineData()\ndefineClose()\n\nfunction defineNoisePayload () {\n var enc = [\n encodings.bytes\n ]\n\n NoisePayload.encodingLength = encodingLength\n NoisePayload.encode = encode\n NoisePayload.decode = decode\n\n function encodingLength (obj) {\n var length = 0\n if (!defined(obj.nonce)) throw new Error(\"nonce is required\")\n var len = enc[0].encodingLength(obj.nonce)\n length += 1 + len\n return length\n }\n\n function encode (obj, buf, offset) {\n if (!offset) offset = 0\n if (!buf) buf = Buffer.allocUnsafe(encodingLength(obj))\n var oldOffset = offset\n if (!defined(obj.nonce)) throw new Error(\"nonce is required\")\n buf[offset++] = 10\n enc[0].encode(obj.nonce, buf, offset)\n offset += enc[0].encode.bytes\n encode.bytes = offset - oldOffset\n return buf\n }\n\n function decode (buf, offset, end) {\n if (!offset) offset = 0\n if (!end) end = buf.length\n if (!(end <= buf.length && offset <= buf.length)) throw new Error(\"Decoded message is not valid\")\n var oldOffset = offset\n var obj = {\n nonce: null\n }\n var found0 = false\n while (true) {\n if (end <= offset) {\n if (!found0) throw new Error(\"Decoded message is not valid\")\n decode.bytes = offset - oldOffset\n return obj\n }\n var prefix = varint.decode(buf, offset)\n offset += varint.decode.bytes\n var tag = prefix >> 3\n switch (tag) {\n case 1:\n obj.nonce = enc[0].decode(buf, offset)\n offset += enc[0].decode.bytes\n found0 = true\n break\n default:\n offset = skip(prefix & 7, buf, offset)\n }\n }\n }\n}\n\nfunction defineOpen () {\n var enc = [\n encodings.bytes\n ]\n\n Open.encodingLength = encodingLength\n Open.encode = encode\n Open.decode = decode\n\n function encodingLength (obj) {\n var length = 0\n if (!defined(obj.discoveryKey)) throw new Error(\"discoveryKey is required\")\n var len = enc[0].encodingLength(obj.discoveryKey)\n length += 1 + len\n if (defined(obj.capability)) {\n var len = enc[0].encodingLength(obj.capability)\n length += 1 + len\n }\n return length\n }\n\n function encode (obj, buf, offset) {\n if (!offset) offset = 0\n if (!buf) buf = Buffer.allocUnsafe(encodingLength(obj))\n var oldOffset = offset\n if (!defined(obj.discoveryKey)) throw new Error(\"discoveryKey is required\")\n buf[offset++] = 10\n enc[0].encode(obj.discoveryKey, buf, offset)\n offset += enc[0].encode.bytes\n if (defined(obj.capability)) {\n buf[offset++] = 18\n enc[0].encode(obj.capability, buf, offset)\n offset += enc[0].encode.bytes\n }\n encode.bytes = offset - oldOffset\n return buf\n }\n\n function decode (buf, offset, end) {\n if (!offset) offset = 0\n if (!end) end = buf.length\n if (!(end <= buf.length && offset <= buf.length)) throw new Error(\"Decoded message is not valid\")\n var oldOffset = offset\n var obj = {\n discoveryKey: null,\n capability: null\n }\n var found0 = false\n while (true) {\n if (end <= offset) {\n if (!found0) throw new Error(\"Decoded message is not valid\")\n decode.bytes = offset - oldOffset\n return obj\n }\n var prefix = varint.decode(buf, offset)\n offset += varint.decode.bytes\n var tag = prefix >> 3\n switch (tag) {\n case 1:\n obj.discoveryKey = enc[0].decode(buf, offset)\n offset += enc[0].decode.bytes\n found0 = true\n break\n case 2:\n obj.capability = enc[0].decode(buf, offset)\n offset += enc[0].decode.bytes\n break\n default:\n offset = skip(prefix & 7, buf, offset)\n }\n }\n }\n}\n\nfunction defineOptions () {\n var enc = [\n encodings.string,\n encodings.bool\n ]\n\n Options.encodingLength = encodingLength\n Options.encode = encode\n Options.decode = decode\n\n function encodingLength (obj) {\n var length = 0\n if (defined(obj.extensions)) {\n for (var i = 0; i < obj.extensions.length; i++) {\n if (!defined(obj.extensions[i])) continue\n var len = enc[0].encodingLength(obj.extensions[i])\n length += 1 + len\n }\n }\n if (defined(obj.ack)) {\n var len = enc[1].encodingLength(obj.ack)\n length += 1 + len\n }\n return length\n }\n\n function encode (obj, buf, offset) {\n if (!offset) offset = 0\n if (!buf) buf = Buffer.allocUnsafe(encodingLength(obj))\n var oldOffset = offset\n if (defined(obj.extensions)) {\n for (var i = 0; i < obj.extensions.length; i++) {\n if (!defined(obj.extensions[i])) continue\n buf[offset++] = 10\n enc[0].encode(obj.extensions[i], buf, offset)\n offset += enc[0].encode.bytes\n }\n }\n if (defined(obj.ack)) {\n buf[offset++] = 16\n enc[1].encode(obj.ack, buf, offset)\n offset += enc[1].encode.bytes\n }\n encode.bytes = offset - oldOffset\n return buf\n }\n\n function decode (buf, offset, end) {\n if (!offset) offset = 0\n if (!end) end = buf.length\n if (!(end <= buf.length && offset <= buf.length)) throw new Error(\"Decoded message is not valid\")\n var oldOffset = offset\n var obj = {\n extensions: [],\n ack: false\n }\n while (true) {\n if (end <= offset) {\n decode.bytes = offset - oldOffset\n return obj\n }\n var prefix = varint.decode(buf, offset)\n offset += varint.decode.bytes\n var tag = prefix >> 3\n switch (tag) {\n case 1:\n obj.extensions.push(enc[0].decode(buf, offset))\n offset += enc[0].decode.bytes\n break\n case 2:\n obj.ack = enc[1].decode(buf, offset)\n offset += enc[1].decode.bytes\n break\n default:\n offset = skip(prefix & 7, buf, offset)\n }\n }\n }\n}\n\nfunction defineStatus () {\n var enc = [\n encodings.bool\n ]\n\n Status.encodingLength = encodingLength\n Status.encode = encode\n Status.decode = decode\n\n function encodingLength (obj) {\n var length = 0\n if (defined(obj.uploading)) {\n var len = enc[0].encodingLength(obj.uploading)\n length += 1 + len\n }\n if (defined(obj.downloading)) {\n var len = enc[0].encodingLength(obj.downloading)\n length += 1 + len\n }\n return length\n }\n\n function encode (obj, buf, offset) {\n if (!offset) offset = 0\n if (!buf) buf = Buffer.allocUnsafe(encodingLength(obj))\n var oldOffset = offset\n if (defined(obj.uploading)) {\n buf[offset++] = 8\n enc[0].encode(obj.uploading, buf, offset)\n offset += enc[0].encode.bytes\n }\n if (defined(obj.downloading)) {\n buf[offset++] = 16\n enc[0].encode(obj.downloading, buf, offset)\n offset += enc[0].encode.bytes\n }\n encode.bytes = offset - oldOffset\n return buf\n }\n\n function decode (buf, offset, end) {\n if (!offset) offset = 0\n if (!end) end = buf.length\n if (!(end <= buf.length && offset <= buf.length)) throw new Error(\"Decoded message is not valid\")\n var oldOffset = offset\n var obj = {\n uploading: false,\n downloading: false\n }\n while (true) {\n if (end <= offset) {\n decode.bytes = offset - oldOffset\n return obj\n }\n var prefix = varint.decode(buf, offset)\n offset += varint.decode.bytes\n var tag = prefix >> 3\n switch (tag) {\n case 1:\n obj.uploading = enc[0].decode(buf, offset)\n offset += enc[0].decode.bytes\n break\n case 2:\n obj.downloading = enc[0].decode(buf, offset)\n offset += enc[0].decode.bytes\n break\n default:\n offset = skip(prefix & 7, buf, offset)\n }\n }\n }\n}\n\nfunction defineHave () {\n var enc = [\n encodings.varint,\n encodings.bytes,\n encodings.bool\n ]\n\n Have.encodingLength = encodingLength\n Have.encode = encode\n Have.decode = decode\n\n function encodingLength (obj) {\n var length = 0\n if (!defined(obj.start)) throw new Error(\"start is required\")\n var len = enc[0].encodingLength(obj.start)\n length += 1 + len\n if (defined(obj.length)) {\n var len = enc[0].encodingLength(obj.length)\n length += 1 + len\n }\n if (defined(obj.bitfield)) {\n var len = enc[1].encodingLength(obj.bitfield)\n length += 1 + len\n }\n if (defined(obj.ack)) {\n var len = enc[2].encodingLength(obj.ack)\n length += 1 + len\n }\n return length\n }\n\n function encode (obj, buf, offset) {\n if (!offset) offset = 0\n if (!buf) buf = Buffer.allocUnsafe(encodingLength(obj))\n var oldOffset = offset\n if (!defined(obj.start)) throw new Error(\"start is required\")\n buf[offset++] = 8\n enc[0].encode(obj.start, buf, offset)\n offset += enc[0].encode.bytes\n if (defined(obj.length)) {\n buf[offset++] = 16\n enc[0].encode(obj.length, buf, offset)\n offset += enc[0].encode.bytes\n }\n if (defined(obj.bitfield)) {\n buf[offset++] = 26\n enc[1].encode(obj.bitfield, buf, offset)\n offset += enc[1].encode.bytes\n }\n if (defined(obj.ack)) {\n buf[offset++] = 32\n enc[2].encode(obj.ack, buf, offset)\n offset += enc[2].encode.bytes\n }\n encode.bytes = offset - oldOffset\n return buf\n }\n\n function decode (buf, offset, end) {\n if (!offset) offset = 0\n if (!end) end = buf.length\n if (!(end <= buf.length && offset <= buf.length)) throw new Error(\"Decoded message is not valid\")\n var oldOffset = offset\n var obj = {\n start: 0,\n length: 1,\n bitfield: null,\n ack: false\n }\n var found0 = false\n while (true) {\n if (end <= offset) {\n if (!found0) throw new Error(\"Decoded message is not valid\")\n decode.bytes = offset - oldOffset\n return obj\n }\n var prefix = varint.decode(buf, offset)\n offset += varint.decode.bytes\n var tag = prefix >> 3\n switch (tag) {\n case 1:\n obj.start = enc[0].decode(buf, offset)\n offset += enc[0].decode.bytes\n found0 = true\n break\n case 2:\n obj.length = enc[0].decode(buf, offset)\n offset += enc[0].decode.bytes\n break\n case 3:\n obj.bitfield = enc[1].decode(buf, offset)\n offset += enc[1].decode.bytes\n break\n case 4:\n obj.ack = enc[2].decode(buf, offset)\n offset += enc[2].decode.bytes\n break\n default:\n offset = skip(prefix & 7, buf, offset)\n }\n }\n }\n}\n\nfunction defineUnhave () {\n var enc = [\n encodings.varint\n ]\n\n Unhave.encodingLength = encodingLength\n Unhave.encode = encode\n Unhave.decode = decode\n\n function encodingLength (obj) {\n var length = 0\n if (!defined(obj.start)) throw new Error(\"start is required\")\n var len = enc[0].encodingLength(obj.start)\n length += 1 + len\n if (defined(obj.length)) {\n var len = enc[0].encodingLength(obj.length)\n length += 1 + len\n }\n return length\n }\n\n function encode (obj, buf, offset) {\n if (!offset) offset = 0\n if (!buf) buf = Buffer.allocUnsafe(encodingLength(obj))\n var oldOffset = offset\n if (!defined(obj.start)) throw new Error(\"start is required\")\n buf[offset++] = 8\n enc[0].encode(obj.start, buf, offset)\n offset += enc[0].encode.bytes\n if (defined(obj.length)) {\n buf[offset++] = 16\n enc[0].encode(obj.length, buf, offset)\n offset += enc[0].encode.bytes\n }\n encode.bytes = offset - oldOffset\n return buf\n }\n\n function decode (buf, offset, end) {\n if (!offset) offset = 0\n if (!end) end = buf.length\n if (!(end <= buf.length && offset <= buf.length)) throw new Error(\"Decoded message is not valid\")\n var oldOffset = offset\n var obj = {\n start: 0,\n length: 1\n }\n var found0 = false\n while (true) {\n if (end <= offset) {\n if (!found0) throw new Error(\"Decoded message is not valid\")\n decode.bytes = offset - oldOffset\n return obj\n }\n var prefix = varint.decode(buf, offset)\n offset += varint.decode.bytes\n var tag = prefix >> 3\n switch (tag) {\n case 1:\n obj.start = enc[0].decode(buf, offset)\n offset += enc[0].decode.bytes\n found0 = true\n break\n case 2:\n obj.length = enc[0].decode(buf, offset)\n offset += enc[0].decode.bytes\n break\n default:\n offset = skip(prefix & 7, buf, offset)\n }\n }\n }\n}\n\nfunction defineWant () {\n var enc = [\n encodings.varint\n ]\n\n Want.encodingLength = encodingLength\n Want.encode = encode\n Want.decode = decode\n\n function encodingLength (obj) {\n var length = 0\n if (!defined(obj.start)) throw new Error(\"start is required\")\n var len = enc[0].encodingLength(obj.start)\n length += 1 + len\n if (defined(obj.length)) {\n var len = enc[0].encodingLength(obj.length)\n length += 1 + len\n }\n return length\n }\n\n function encode (obj, buf, offset) {\n if (!offset) offset = 0\n if (!buf) buf = Buffer.allocUnsafe(encodingLength(obj))\n var oldOffset = offset\n if (!defined(obj.start)) throw new Error(\"start is required\")\n buf[offset++] = 8\n enc[0].encode(obj.start, buf, offset)\n offset += enc[0].encode.bytes\n if (defined(obj.length)) {\n buf[offset++] = 16\n enc[0].encode(obj.length, buf, offset)\n offset += enc[0].encode.bytes\n }\n encode.bytes = offset - oldOffset\n return buf\n }\n\n function decode (buf, offset, end) {\n if (!offset) offset = 0\n if (!end) end = buf.length\n if (!(end <= buf.length && offset <= buf.length)) throw new Error(\"Decoded message is not valid\")\n var oldOffset = offset\n var obj = {\n start: 0,\n length: 0\n }\n var found0 = false\n while (true) {\n if (end <= offset) {\n if (!found0) throw new Error(\"Decoded message is not valid\")\n decode.bytes = offset - oldOffset\n return obj\n }\n var prefix = varint.decode(buf, offset)\n offset += varint.decode.bytes\n var tag = prefix >> 3\n switch (tag) {\n case 1:\n obj.start = enc[0].decode(buf, offset)\n offset += enc[0].decode.bytes\n found0 = true\n break\n case 2:\n obj.length = enc[0].decode(buf, offset)\n offset += enc[0].decode.bytes\n break\n default:\n offset = skip(prefix & 7, buf, offset)\n }\n }\n }\n}\n\nfunction defineUnwant () {\n var enc = [\n encodings.varint\n ]\n\n Unwant.encodingLength = encodingLength\n Unwant.encode = encode\n Unwant.decode = decode\n\n function encodingLength (obj) {\n var length = 0\n if (!defined(obj.start)) throw new Error(\"start is required\")\n var len = enc[0].encodingLength(obj.start)\n length += 1 + len\n if (defined(obj.length)) {\n var len = enc[0].encodingLength(obj.length)\n length += 1 + len\n }\n return length\n }\n\n function encode (obj, buf, offset) {\n if (!offset) offset = 0\n if (!buf) buf = Buffer.allocUnsafe(encodingLength(obj))\n var oldOffset = offset\n if (!defined(obj.start)) throw new Error(\"start is required\")\n buf[offset++] = 8\n enc[0].encode(obj.start, buf, offset)\n offset += enc[0].encode.bytes\n if (defined(obj.length)) {\n buf[offset++] = 16\n enc[0].encode(obj.length, buf, offset)\n offset += enc[0].encode.bytes\n }\n encode.bytes = offset - oldOffset\n return buf\n }\n\n function decode (buf, offset, end) {\n if (!offset) offset = 0\n if (!end) end = buf.length\n if (!(end <= buf.length && offset <= buf.length)) throw new Error(\"Decoded message is not valid\")\n var oldOffset = offset\n var obj = {\n start: 0,\n length: 0\n }\n var found0 = false\n while (true) {\n if (end <= offset) {\n if (!found0) throw new Error(\"Decoded message is not valid\")\n decode.bytes = offset - oldOffset\n return obj\n }\n var prefix = varint.decode(buf, offset)\n offset += varint.decode.bytes\n var tag = prefix >> 3\n switch (tag) {\n case 1:\n obj.start = enc[0].decode(buf, offset)\n offset += enc[0].decode.bytes\n found0 = true\n break\n case 2:\n obj.length = enc[0].decode(buf, offset)\n offset += enc[0].decode.bytes\n break\n default:\n offset = skip(prefix & 7, buf, offset)\n }\n }\n }\n}\n\nfunction defineRequest () {\n var enc = [\n encodings.varint,\n encodings.bool\n ]\n\n Request.encodingLength = encodingLength\n Request.encode = encode\n Request.decode = decode\n\n function encodingLength (obj) {\n var length = 0\n if (!defined(obj.index)) throw new Error(\"index is required\")\n var len = enc[0].encodingLength(obj.index)\n length += 1 + len\n if (defined(obj.bytes)) {\n var len = enc[0].encodingLength(obj.bytes)\n length += 1 + len\n }\n if (defined(obj.hash)) {\n var len = enc[1].encodingLength(obj.hash)\n length += 1 + len\n }\n if (defined(obj.nodes)) {\n var len = enc[0].encodingLength(obj.nodes)\n length += 1 + len\n }\n return length\n }\n\n function encode (obj, buf, offset) {\n if (!offset) offset = 0\n if (!buf) buf = Buffer.allocUnsafe(encodingLength(obj))\n var oldOffset = offset\n if (!defined(obj.index)) throw new Error(\"index is required\")\n buf[offset++] = 8\n enc[0].encode(obj.index, buf, offset)\n offset += enc[0].encode.bytes\n if (defined(obj.bytes)) {\n buf[offset++] = 16\n enc[0].encode(obj.bytes, buf, offset)\n offset += enc[0].encode.bytes\n }\n if (defined(obj.hash)) {\n buf[offset++] = 24\n enc[1].encode(obj.hash, buf, offset)\n offset += enc[1].encode.bytes\n }\n if (defined(obj.nodes)) {\n buf[offset++] = 32\n enc[0].encode(obj.nodes, buf, offset)\n offset += enc[0].encode.bytes\n }\n encode.bytes = offset - oldOffset\n return buf\n }\n\n function decode (buf, offset, end) {\n if (!offset) offset = 0\n if (!end) end = buf.length\n if (!(end <= buf.length && offset <= buf.length)) throw new Error(\"Decoded message is not valid\")\n var oldOffset = offset\n var obj = {\n index: 0,\n bytes: 0,\n hash: false,\n nodes: 0\n }\n var found0 = false\n while (true) {\n if (end <= offset) {\n if (!found0) throw new Error(\"Decoded message is not valid\")\n decode.bytes = offset - oldOffset\n return obj\n }\n var prefix = varint.decode(buf, offset)\n offset += varint.decode.bytes\n var tag = prefix >> 3\n switch (tag) {\n case 1:\n obj.index = enc[0].decode(buf, offset)\n offset += enc[0].decode.bytes\n found0 = true\n break\n case 2:\n obj.bytes = enc[0].decode(buf, offset)\n offset += enc[0].decode.bytes\n break\n case 3:\n obj.hash = enc[1].decode(buf, offset)\n offset += enc[1].decode.bytes\n break\n case 4:\n obj.nodes = enc[0].decode(buf, offset)\n offset += enc[0].decode.bytes\n break\n default:\n offset = skip(prefix & 7, buf, offset)\n }\n }\n }\n}\n\nfunction defineCancel () {\n var enc = [\n encodings.varint,\n encodings.bool\n ]\n\n Cancel.encodingLength = encodingLength\n Cancel.encode = encode\n Cancel.decode = decode\n\n function encodingLength (obj) {\n var length = 0\n if (!defined(obj.index)) throw new Error(\"index is required\")\n var len = enc[0].encodingLength(obj.index)\n length += 1 + len\n if (defined(obj.bytes)) {\n var len = enc[0].encodingLength(obj.bytes)\n length += 1 + len\n }\n if (defined(obj.hash)) {\n var len = enc[1].encodingLength(obj.hash)\n length += 1 + len\n }\n return length\n }\n\n function encode (obj, buf, offset) {\n if (!offset) offset = 0\n if (!buf) buf = Buffer.allocUnsafe(encodingLength(obj))\n var oldOffset = offset\n if (!defined(obj.index)) throw new Error(\"index is required\")\n buf[offset++] = 8\n enc[0].encode(obj.index, buf, offset)\n offset += enc[0].encode.bytes\n if (defined(obj.bytes)) {\n buf[offset++] = 16\n enc[0].encode(obj.bytes, buf, offset)\n offset += enc[0].encode.bytes\n }\n if (defined(obj.hash)) {\n buf[offset++] = 24\n enc[1].encode(obj.hash, buf, offset)\n offset += enc[1].encode.bytes\n }\n encode.bytes = offset - oldOffset\n return buf\n }\n\n function decode (buf, offset, end) {\n if (!offset) offset = 0\n if (!end) end = buf.length\n if (!(end <= buf.length && offset <= buf.length)) throw new Error(\"Decoded message is not valid\")\n var oldOffset = offset\n var obj = {\n index: 0,\n bytes: 0,\n hash: false\n }\n var found0 = false\n while (true) {\n if (end <= offset) {\n if (!found0) throw new Error(\"Decoded message is not valid\")\n decode.bytes = offset - oldOffset\n return obj\n }\n var prefix = varint.decode(buf, offset)\n offset += varint.decode.bytes\n var tag = prefix >> 3\n switch (tag) {\n case 1:\n obj.index = enc[0].decode(buf, offset)\n offset += enc[0].decode.bytes\n found0 = true\n break\n case 2:\n obj.bytes = enc[0].decode(buf, offset)\n offset += enc[0].decode.bytes\n break\n case 3:\n obj.hash = enc[1].decode(buf, offset)\n offset += enc[1].decode.bytes\n break\n default:\n offset = skip(prefix & 7, buf, offset)\n }\n }\n }\n}\n\nfunction defineData () {\n var Node = Data.Node = {\n buffer: true,\n encodingLength: null,\n encode: null,\n decode: null\n }\n\n defineNode()\n\n function defineNode () {\n var enc = [\n encodings.varint,\n encodings.bytes\n ]\n\n Node.encodingLength = encodingLength\n Node.encode = encode\n Node.decode = decode\n\n function encodingLength (obj) {\n var length = 0\n if (!defined(obj.index)) throw new Error(\"index is required\")\n var len = enc[0].encodingLength(obj.index)\n length += 1 + len\n if (!defined(obj.hash)) throw new Error(\"hash is required\")\n var len = enc[1].encodingLength(obj.hash)\n length += 1 + len\n if (!defined(obj.size)) throw new Error(\"size is required\")\n var len = enc[0].encodingLength(obj.size)\n length += 1 + len\n return length\n }\n\n function encode (obj, buf, offset) {\n if (!offset) offset = 0\n if (!buf) buf = Buffer.allocUnsafe(encodingLength(obj))\n var oldOffset = offset\n if (!defined(obj.index)) throw new Error(\"index is required\")\n buf[offset++] = 8\n enc[0].encode(obj.index, buf, offset)\n offset += enc[0].encode.bytes\n if (!defined(obj.hash)) throw new Error(\"hash is required\")\n buf[offset++] = 18\n enc[1].encode(obj.hash, buf, offset)\n offset += enc[1].encode.bytes\n if (!defined(obj.size)) throw new Error(\"size is required\")\n buf[offset++] = 24\n enc[0].encode(obj.size, buf, offset)\n offset += enc[0].encode.bytes\n encode.bytes = offset - oldOffset\n return buf\n }\n\n function decode (buf, offset, end) {\n if (!offset) offset = 0\n if (!end) end = buf.length\n if (!(end <= buf.length && offset <= buf.length)) throw new Error(\"Decoded message is not valid\")\n var oldOffset = offset\n var obj = {\n index: 0,\n hash: null,\n size: 0\n }\n var found0 = false\n var found1 = false\n var found2 = false\n while (true) {\n if (end <= offset) {\n if (!found0 || !found1 || !found2) throw new Error(\"Decoded message is not valid\")\n decode.bytes = offset - oldOffset\n return obj\n }\n var prefix = varint.decode(buf, offset)\n offset += varint.decode.bytes\n var tag = prefix >> 3\n switch (tag) {\n case 1:\n obj.index = enc[0].decode(buf, offset)\n offset += enc[0].decode.bytes\n found0 = true\n break\n case 2:\n obj.hash = enc[1].decode(buf, offset)\n offset += enc[1].decode.bytes\n found1 = true\n break\n case 3:\n obj.size = enc[0].decode(buf, offset)\n offset += enc[0].decode.bytes\n found2 = true\n break\n default:\n offset = skip(prefix & 7, buf, offset)\n }\n }\n }\n }\n\n var enc = [\n encodings.varint,\n encodings.bytes,\n Node\n ]\n\n Data.encodingLength = encodingLength\n Data.encode = encode\n Data.decode = decode\n\n function encodingLength (obj) {\n var length = 0\n if (!defined(obj.index)) throw new Error(\"index is required\")\n var len = enc[0].encodingLength(obj.index)\n length += 1 + len\n if (defined(obj.value)) {\n var len = enc[1].encodingLength(obj.value)\n length += 1 + len\n }\n if (defined(obj.nodes)) {\n for (var i = 0; i < obj.nodes.length; i++) {\n if (!defined(obj.nodes[i])) continue\n var len = enc[2].encodingLength(obj.nodes[i])\n length += varint.encodingLength(len)\n length += 1 + len\n }\n }\n if (defined(obj.signature)) {\n var len = enc[1].encodingLength(obj.signature)\n length += 1 + len\n }\n return length\n }\n\n function encode (obj, buf, offset) {\n if (!offset) offset = 0\n if (!buf) buf = Buffer.allocUnsafe(encodingLength(obj))\n var oldOffset = offset\n if (!defined(obj.index)) throw new Error(\"index is required\")\n buf[offset++] = 8\n enc[0].encode(obj.index, buf, offset)\n offset += enc[0].encode.bytes\n if (defined(obj.value)) {\n buf[offset++] = 18\n enc[1].encode(obj.value, buf, offset)\n offset += enc[1].encode.bytes\n }\n if (defined(obj.nodes)) {\n for (var i = 0; i < obj.nodes.length; i++) {\n if (!defined(obj.nodes[i])) continue\n buf[offset++] = 26\n varint.encode(enc[2].encodingLength(obj.nodes[i]), buf, offset)\n offset += varint.encode.bytes\n enc[2].encode(obj.nodes[i], buf, offset)\n offset += enc[2].encode.bytes\n }\n }\n if (defined(obj.signature)) {\n buf[offset++] = 34\n enc[1].encode(obj.signature, buf, offset)\n offset += enc[1].encode.bytes\n }\n encode.bytes = offset - oldOffset\n return buf\n }\n\n function decode (buf, offset, end) {\n if (!offset) offset = 0\n if (!end) end = buf.length\n if (!(end <= buf.length && offset <= buf.length)) throw new Error(\"Decoded message is not valid\")\n var oldOffset = offset\n var obj = {\n index: 0,\n value: null,\n nodes: [],\n signature: null\n }\n var found0 = false\n while (true) {\n if (end <= offset) {\n if (!found0) throw new Error(\"Decoded message is not valid\")\n decode.bytes = offset - oldOffset\n return obj\n }\n var prefix = varint.decode(buf, offset)\n offset += varint.decode.bytes\n var tag = prefix >> 3\n switch (tag) {\n case 1:\n obj.index = enc[0].decode(buf, offset)\n offset += enc[0].decode.bytes\n found0 = true\n break\n case 2:\n obj.value = enc[1].decode(buf, offset)\n offset += enc[1].decode.bytes\n break\n case 3:\n var len = varint.decode(buf, offset)\n offset += varint.decode.bytes\n obj.nodes.push(enc[2].decode(buf, offset, offset + len))\n offset += enc[2].decode.bytes\n break\n case 4:\n obj.signature = enc[1].decode(buf, offset)\n offset += enc[1].decode.bytes\n break\n default:\n offset = skip(prefix & 7, buf, offset)\n }\n }\n }\n}\n\nfunction defineClose () {\n var enc = [\n encodings.bytes\n ]\n\n Close.encodingLength = encodingLength\n Close.encode = encode\n Close.decode = decode\n\n function encodingLength (obj) {\n var length = 0\n if (defined(obj.discoveryKey)) {\n var len = enc[0].encodingLength(obj.discoveryKey)\n length += 1 + len\n }\n return length\n }\n\n function encode (obj, buf, offset) {\n if (!offset) offset = 0\n if (!buf) buf = Buffer.allocUnsafe(encodingLength(obj))\n var oldOffset = offset\n if (defined(obj.discoveryKey)) {\n buf[offset++] = 10\n enc[0].encode(obj.discoveryKey, buf, offset)\n offset += enc[0].encode.bytes\n }\n encode.bytes = offset - oldOffset\n return buf\n }\n\n function decode (buf, offset, end) {\n if (!offset) offset = 0\n if (!end) end = buf.length\n if (!(end <= buf.length && offset <= buf.length)) throw new Error(\"Decoded message is not valid\")\n var oldOffset = offset\n var obj = {\n discoveryKey: null\n }\n while (true) {\n if (end <= offset) {\n decode.bytes = offset - oldOffset\n return obj\n }\n var prefix = varint.decode(buf, offset)\n offset += varint.decode.bytes\n var tag = prefix >> 3\n switch (tag) {\n case 1:\n obj.discoveryKey = enc[0].decode(buf, offset)\n offset += enc[0].decode.bytes\n break\n default:\n offset = skip(prefix & 7, buf, offset)\n }\n }\n }\n}\n\nfunction defined (val) {\n return val !== null && val !== undefined && (typeof val !== 'number' || !isNaN(val))\n}\n", "const sodium = require('sodium-native')\n\nmodule.exports = class XORNative {\n constructor (nonce, key) {\n this.handle = Buffer.alloc(sodium.crypto_stream_xor_STATEBYTES)\n this.nonce = nonce\n this.key = key\n sodium.crypto_stream_xor_init(this.handle, this.nonce, this.key)\n }\n\n update (out, message) {\n sodium.crypto_stream_xor_update(this.handle, out, message)\n }\n\n final () {\n sodium.crypto_stream_xor_final(this.handle)\n }\n}\n", "const XSalsa20 = require('xsalsa20-universal')\nconst crypto = require('hypercore-crypto')\n\nmodule.exports = class XOR {\n constructor (nonces, split) {\n this.rnonce = nonces.rnonce\n this.tnonce = nonces.tnonce\n this.rx = new XSalsa20(this.rnonce, split.rx.slice(0, 32))\n this.tx = new XSalsa20(this.tnonce, split.tx.slice(0, 32))\n }\n\n encrypt (data) {\n this.tx.update(data, data)\n return data\n }\n\n decrypt (data) {\n this.rx.update(data, data)\n return data\n }\n\n destroy () {\n this.tx.final()\n this.rx.final()\n }\n\n static nonce () {\n return crypto.randomBytes(24)\n }\n}\n", "const varint = require('varint')\n\nmodule.exports = class SimpleMessageChannels {\n constructor ({ maxSize = 8 * 1024 * 1024, context = null, onmessage = null, onmissing = null, types = null } = {}) {\n this._message = null\n this._ptr = 0\n this._varint = 0\n this._factor = 1\n this._length = 0\n this._header = 0\n this._state = 0\n this._consumed = 0\n this._maxSize = maxSize\n this._types = types || []\n\n this.receiving = false\n this.destroyed = false\n this.error = null\n this.context = context\n this.onmessage = onmessage\n this.onmissing = onmissing\n }\n\n destroy (err) {\n if (err) this.error = err\n this.destroyed = true\n }\n\n recv (data) {\n if (this.receiving === true) throw new Error('Cannot recursively receive data')\n this.receiving = true\n\n let offset = 0\n while (offset < data.length) {\n if (this._state === 2) offset = this._readMessage(data, offset)\n else offset = this._readVarint(data, offset)\n }\n if (this._state === 2 && this._length === 0) {\n this._readMessage(data, offset)\n }\n\n this.receiving = false\n return !this.destroyed\n }\n\n _readMessage (data, offset) {\n const free = data.length - offset\n if (free >= this._length) {\n if (this._message) {\n data.copy(this._message, this._message.length - this._length, offset)\n } else {\n this._message = data.slice(offset, offset + this._length)\n }\n return this._nextState(data, offset += this._length) ? offset : data.length\n }\n\n if (!this._message) this._message = Buffer.allocUnsafe(this._length)\n data.copy(this._message, this._message.length - this._length, offset)\n this._length -= free\n\n return data.length\n }\n\n _readVarint (data, offset) {\n for (; offset < data.length; offset++) {\n this._varint += (data[offset] & 127) * this._factor\n this._consumed++\n if (data[offset] < 128) return this._nextState(data, ++offset) ? offset : data.length\n this._factor *= 128\n }\n if (this._consumed >= 8) this.destroy(new Error('Incoming varint is invalid')) // 8 * 7bits is 56 ie max for js\n return data.length\n }\n\n _nextState (data, offset) {\n switch (this._state) {\n case 0:\n this._state = 1\n this._factor = 1\n this._length = this._varint\n this._consumed = this._varint = 0\n if (this._length === 0) this._state = 0\n return true\n\n case 1:\n this._state = 2\n this._factor = 1\n this._header = this._varint\n this._length -= this._consumed\n this._consumed = this._varint = 0\n if (this._length < 0 || this._length > this._maxSize) {\n this.destroy(new Error('Incoming message is larger than max size'))\n return false\n }\n if (this.onmissing) {\n const extra = data.length - offset\n if (this._length > extra) this.onmissing(this._length - extra, this.context)\n }\n return true\n\n case 2:\n this._state = 0\n this._onmessage(this._header >> 4, this._header & 0b1111, this._message, data, offset)\n this._message = null\n return !this.destroyed\n\n default:\n return false\n }\n }\n\n _onmessage (channel, type, message, data, offset) {\n if (type >= this._types.length) {\n if (this.onmessage === null) return\n return this.onmessage(channel, type, message, this.context, data, offset)\n }\n\n let m = null\n const { onmessage, encoding, context } = this._types[type]\n\n try {\n m = encoding.decode(message)\n } catch (err) {\n this.destroy(err)\n return\n }\n\n onmessage(channel, m, context, data, offset)\n }\n\n send (channel, type, message) {\n const header = channel << 4 | type\n const length = this._encodingLength(type, message) + varint.encodingLength(header)\n const payload = Buffer.allocUnsafe(varint.encodingLength(length) + length)\n\n varint.encode(length, payload, 0)\n const offset = varint.encode.bytes\n varint.encode(header, payload, offset)\n this._encode(type, message, payload, offset + varint.encode.bytes)\n\n return payload\n }\n\n sendBatch (messages) {\n let length = 0\n let offset = 0\n\n for (const { type, message } of messages) {\n // 16 is >= the max size of the varints\n length += 16 + this._encodingLength(type, message)\n }\n\n const payload = Buffer.allocUnsafe(length)\n\n for (const { channel, type, message } of messages) {\n const header = channel << 4 | type\n const length = this._encodingLength(type, message) + varint.encodingLength(header)\n varint.encode(length, payload, offset)\n offset += varint.encode.bytes\n varint.encode(header, payload, offset)\n offset += varint.encode.bytes\n offset += this._encode(type, message, payload, offset)\n }\n\n return payload.slice(0, offset)\n }\n\n _encodingLength (type, message) {\n if (type >= this._types.length) return message.length\n return this._types[type].encoding.encodingLength(message)\n }\n\n _encode (type, message, buf, offset) {\n if (type >= this._types.length) {\n message.copy(buf, offset)\n return message.length\n }\n\n const enc = this._types[type].encoding\n enc.encode(message, buf, offset)\n return enc.encode.bytes\n }\n}\n", "const Handshake = require('./lib/handshake')\nconst messages = require('./messages')\nconst XOR = require('./lib/xor')\nconst SMC = require('simple-message-channels')\nconst crypto = require('hypercore-crypto')\nconst varint = require('varint')\n\nmodule.exports = class SimpleProtocol {\n constructor (initiator, handlers) {\n const payload = { nonce: XOR.nonce() }\n\n this.handlers = handlers || {}\n this.remotePayload = null\n this.remotePublicKey = null\n this.publicKey = null\n this.handshakeHash = null\n this.destroyed = false\n\n this._initiator = initiator\n this._payload = payload\n this._pending = []\n this._handshake = null\n this._split = null\n this._encryption = null\n this._noise = !(handlers.encrypted === false && handlers.noise === false)\n this._buffering = null\n this._handshaking = false\n\n this._messages = new SMC({\n onmessage,\n onmissing,\n context: this,\n types: [\n { context: this, onmessage: onopen, encoding: messages.Open },\n { context: this, onmessage: onoptions, encoding: messages.Options },\n { context: this, onmessage: onstatus, encoding: messages.Status },\n { context: this, onmessage: onhave, encoding: messages.Have },\n { context: this, onmessage: onunhave, encoding: messages.Unhave },\n { context: this, onmessage: onwant, encoding: messages.Want },\n { context: this, onmessage: onunwant, encoding: messages.Unwant },\n { context: this, onmessage: onrequest, encoding: messages.Request },\n { context: this, onmessage: oncancel, encoding: messages.Cancel },\n { context: this, onmessage: ondata, encoding: messages.Data },\n { context: this, onmessage: onclose, encoding: messages.Close }\n ]\n })\n\n if (handlers.encrypted !== false || handlers.noise !== false) {\n this._handshaking = true\n if (typeof this.handlers.keyPair !== 'function') {\n this._onkeypair(null, this.handlers.keyPair || null)\n } else {\n this._buffering = []\n this.handlers.keyPair(this._onkeypair.bind(this))\n }\n }\n }\n\n _onkeypair (err, keyPair) {\n if (err) return this.destroy(err)\n if (this._handshake !== null) return\n\n this.handlers.keyPair = keyPair\n const handshake = new Handshake(this._initiator, messages.NoisePayload.encode(this._payload), this.handlers, this._onhandshake.bind(this))\n\n this.publicKey = handshake.keyPair.publicKey\n this._handshake = handshake\n\n if (this._buffering) {\n while (this._buffering.length) this._recv(this._buffering.shift())\n }\n\n this._buffering = null\n }\n\n open (ch, message) {\n return this._send(ch, 0, message)\n }\n\n options (ch, message) {\n return this._send(ch, 1, message)\n }\n\n status (ch, message) {\n return this._send(ch, 2, message)\n }\n\n have (ch, message) {\n return this._send(ch, 3, message)\n }\n\n unhave (ch, message) {\n return this._send(ch, 4, message)\n }\n\n want (ch, message) {\n return this._send(ch, 5, message)\n }\n\n unwant (ch, message) {\n return this._send(ch, 6, message)\n }\n\n request (ch, message) {\n return this._send(ch, 7, message)\n }\n\n cancel (ch, message) {\n return this._send(ch, 8, message)\n }\n\n data (ch, message) {\n return this._send(ch, 9, message)\n }\n\n close (ch, message) {\n return this._send(ch, 10, message || {})\n }\n\n extension (ch, id, message) {\n const buf = Buffer.allocUnsafe(varint.encodingLength(id) + message.length)\n\n varint.encode(id, buf, 0)\n message.copy(buf, varint.encode.bytes)\n\n return this._send(ch, 15, buf)\n }\n\n ping () {\n if (this._handshaking || this._pending.length) return\n\n let ping = Buffer.from([0])\n if (this._encryption !== null) {\n ping = this._encryption.encrypt(ping)\n }\n\n return this.handlers.send(ping)\n }\n\n _onhandshake (err, remotePayload, split, overflow, remotePublicKey, handshakeHash) {\n if (err) return this.destroy(new Error('Noise handshake error')) // workaround for https://github.com/emilbayes/noise-protocol/issues/5\n if (!remotePayload) return this.destroy(new Error('Remote did not include a handshake payload'))\n\n this.remotePublicKey = remotePublicKey\n this.handshakeHash = handshakeHash\n\n try {\n remotePayload = messages.NoisePayload.decode(remotePayload)\n } catch (_) {\n return this.destroy(new Error('Could not parse remote payload'))\n }\n\n this._handshake = null\n this._handshaking = false\n this._split = split\n this._encryption = this.handlers.encrypted === false\n ? null\n : new XOR({ rnonce: remotePayload.nonce, tnonce: this._payload.nonce }, split)\n\n this.remotePayload = remotePayload\n\n if (this.handlers.onhandshake) this.handlers.onhandshake()\n if (this.destroyed) return\n\n if (overflow) this.recv(overflow)\n while (this._pending.length && !this.destroyed) {\n this._sendNow(...this._pending.shift())\n }\n }\n\n _send (channel, type, message) {\n if (this._handshaking || this._pending.length) {\n this._pending.push([channel, type, message])\n return false\n }\n\n return this._sendNow(channel, type, message)\n }\n\n _sendNow (channel, type, message) {\n if (type === 0 && message.key && !message.capability) {\n message.capability = this.capability(message.key)\n message.key = null\n }\n\n let data = this._messages.send(channel, type, message)\n\n if (this._encryption !== null) {\n data = this._encryption.encrypt(data)\n }\n\n return this.handlers.send(data)\n }\n\n capability (key) {\n return crypto.capability(key, this._split)\n }\n\n remoteCapability (key) {\n return crypto.remoteCapability(key, this._split)\n }\n\n recv (data) {\n if (this._buffering !== null) this._buffering.push(data)\n else this._recv(data)\n }\n\n _recv (data) {\n if (this.destroyed) return\n\n if (this._handshaking) {\n this._handshake.recv(data)\n return\n }\n\n if (this._encryption !== null) {\n data = this._encryption.decrypt(data)\n }\n\n if (!this._messages.recv(data)) {\n this.destroy(this._messages.error)\n }\n }\n\n destroy (err) {\n if (this.destroyed) return\n this.destroyed = true\n if (this._handshake) this._handshake.destroy()\n if (this._encryption) this._encryption.destroy()\n if (this.handlers.destroy) this.handlers.destroy(err)\n }\n\n static keyPair (seed) {\n return Handshake.keyPair(seed)\n }\n}\n\nfunction onopen (ch, message, self) {\n if (self.handlers.onopen) self.handlers.onopen(ch, message)\n}\n\nfunction onoptions (ch, message, self) {\n if (self.handlers.onoptions) self.handlers.onoptions(ch, message)\n}\n\nfunction onstatus (ch, message, self) {\n if (self.handlers.onstatus) self.handlers.onstatus(ch, message)\n}\n\nfunction onhave (ch, message, self) {\n if (self.handlers.onhave) self.handlers.onhave(ch, message)\n}\n\nfunction onunhave (ch, message, self) {\n if (self.handlers.onunhave) self.handlers.onunhave(ch, message)\n}\n\nfunction onwant (ch, message, self) {\n if (self.handlers.onwant) self.handlers.onwant(ch, message)\n}\n\nfunction onunwant (ch, message, self) {\n if (self.handlers.onunwant) self.handlers.onunwant(ch, message)\n}\n\nfunction onrequest (ch, message, self) {\n if (self.handlers.onrequest) self.handlers.onrequest(ch, message)\n}\n\nfunction oncancel (ch, message, self) {\n if (self.handlers.oncancel) self.handlers.oncancel(ch, message)\n}\n\nfunction ondata (ch, message, self) {\n if (self.handlers.ondata) self.handlers.ondata(ch, message)\n}\n\nfunction onclose (ch, message, self) {\n if (self.handlers.onclose) self.handlers.onclose(ch, message)\n}\n\nfunction onmessage (ch, type, message, self) {\n if (type !== 15) return\n const id = varint.decode(message)\n const m = message.slice(varint.decode.bytes)\n if (self.handlers.onextension) self.handlers.onextension(ch, id, m)\n}\n\nfunction onmissing (bytes, self) {\n if (self.handlers.onmissing) self.handlers.onmissing(bytes)\n}\n", "module.exports = Timer\n\nfunction Timer (ms, fn, ctx) {\n if (!(this instanceof Timer)) return new Timer(ms, fn, ctx)\n this.ms = ms\n this.ontimeout = fn\n this.context = ctx || null\n this.called = false\n this._timeout = setTimeout(call, ms, this)\n this._timeout.unref()\n}\n\nTimer.prototype.refresh = function () {\n if (this.called || this.ontimeout === null) return\n this._timeout.refresh()\n}\n\nTimer.prototype.destroy = function () {\n this.ontimeout = null\n clearTimeout(this._timeout)\n}\n\nfunction call (self) {\n self.called = true\n self.ontimeout.call(self.context)\n}\n", "module.exports = Timeout\n\nfunction Timeout (ms, fn, ctx) {\n if (!(this instanceof Timeout)) return new Timeout(ms, fn, ctx)\n this.ms = ms\n this.ontimeout = fn\n this.context = ctx || null\n this.called = false\n this._timeout = setTimeout(call, ms, this)\n}\n\nTimeout.prototype.refresh = function () {\n if (this.called || this.ontimeout === null) return\n clearTimeout(this._timeout)\n this._timeout = setTimeout(call, this.ms, this)\n}\n\nTimeout.prototype.destroy = function () {\n this.ontimeout = null\n clearTimeout(this._timeout)\n}\n\nfunction call (self) {\n self.called = true\n self.ontimeout.call(self.context)\n}\n", "var timers = require('timers')\n\nvar enroll = timers.enroll || noop\nvar active = timers._unrefActive || timers.active || noop\nvar unenroll = timers.unenroll || noop\n\nmodule.exports = Timeout\n\nfunction Timeout (ms, fn, ctx) {\n if (!(this instanceof Timeout)) return new Timeout(ms, fn, ctx)\n this.ms = ms\n this.ontimeout = fn\n this.context = ctx || null\n this.called = false\n enroll(this, ms)\n active(this)\n}\n\nTimeout.prototype._onTimeout = function () {\n this.called = true\n this.ontimeout.call(this.context)\n}\n\nTimeout.prototype.refresh = function () {\n if (this.called || this.ontimeout === null) return\n active(this)\n}\n\nTimeout.prototype.destroy = function () {\n this.ontimeout = null\n unenroll(this)\n}\n\nfunction noop () {}\n", "const to = setTimeout(function () {}, 1000)\nclearTimeout(to)\n\nmodule.exports = to.refresh\n ? require('./refresh')\n : process.versions.electron ? require('./browser') : require('./timers')\n", "const codecs = require('codecs')\n\nclass AbstractExtension {\n constructor (local, name, handlers = {}) {\n this.id = 0\n this.name = name\n this.encoding = codecs(handlers.encoding || 'binary')\n this.handlers = handlers\n this.local = local\n }\n\n encode (message) {\n return this.encoding.encode(message)\n }\n\n remoteSupports () {\n return !!(this.local && this.local.map && this.local.map[this.id] === this)\n }\n\n onmessage (buf, context) {\n if (!this.handlers.onmessage) return\n\n let message\n try {\n message = this.encoding.decode(buf)\n } catch (err) {\n if (this.handlers.onerror) this.handlers.onerror(err, context)\n return\n }\n\n this.handlers.onmessage(message, context)\n }\n\n get destroyed () {\n return this.local === null\n }\n\n destroy () {\n if (this.local === null) return\n this.local._remove(this)\n this.local = null\n }\n\n static createLocal (handlers = null) {\n return new Local(handlers, this)\n }\n}\n\nclass Remote {\n constructor (local) {\n this.local = local\n this.names = null\n this.map = null\n this.changes = 0\n }\n\n update (names) {\n this.names = names\n this.changes = 0\n }\n\n onmessage (id, message, context = null) {\n if (this.changes !== this.local.changes) {\n this.map = this.names ? match(this.local.messages, this.names) : null\n this.changes = this.local.changes\n }\n const m = this.map && this.map[id]\n if (m) m.onmessage(message, context)\n }\n}\n\nclass Local {\n constructor (handlers = null, M) {\n this.messages = []\n this.handlers = handlers\n this.Extension = M\n this.changes = 1\n this.exclusive = true\n }\n\n get length () {\n return this.messages.length\n }\n\n [Symbol.iterator] () {\n return this.messages[Symbol.iterator]()\n }\n\n get (name) {\n // technically we can bisect here, but yolo\n for (const m of this.messages) {\n if (m.name === name) return m\n }\n return null\n }\n\n add (name, handlers) {\n let m\n\n if (typeof handlers !== 'function') {\n m = new this.Extension(this, name, handlers)\n } else {\n m = new this.Extension(this, name, {})\n m.handlers = handlers(m) || {}\n m.encoding = codecs(m.handlers.encoding || 'binary')\n }\n\n this.changes++\n this.messages.push(m)\n this.messages.sort(sortMessages)\n for (let i = 0; i < this.messages.length; i++) {\n this.messages[i].id = i\n }\n\n if (this.exclusive) {\n if ((m.id > 0 && this.messages[m.id - 1].name === m.name) || (m.id < this.messages.length - 1 && this.messages[m.id + 1].name === m.name)) {\n this._remove(m)\n throw new Error('Cannot add multiple messages with the same name')\n }\n }\n\n if (this.handlers && this.handlers.onextensionupdate) this.handlers.onextensionupdate()\n\n return m\n }\n\n remote () {\n return new Remote(this)\n }\n\n _remove (m) {\n this.changes++\n this.messages.splice(m.id, 1)\n m.id = -1\n if (this.handlers && this.handlers.onextensionupdate) this.handlers.onextensionupdate()\n }\n\n names () {\n const names = new Array(this.messages.length)\n for (let i = 0; i < names.length; i++) {\n names[i] = this.messages[i].name\n }\n return names\n }\n}\n\nfunction sortMessages (a, b) {\n return a.name < b.name ? -1 : a.name > b.name ? 1 : 0\n}\n\nfunction match (local, remote) {\n let i = 0\n let j = 0\n\n const map = new Array(remote.length)\n\n while (i < local.length && j < remote.length) {\n const l = local[i].name\n const r = remote[j]\n\n if (l < r) i++\n else if (l > r) j++\n else map[j++] = local[i]\n }\n\n return map\n}\n\nmodule.exports = AbstractExtension\n", "/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function (val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isFinite(val)) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'weeks':\n case 'week':\n case 'w':\n return n * w;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (msAbs >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (msAbs >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (msAbs >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return plural(ms, msAbs, d, 'day');\n }\n if (msAbs >= h) {\n return plural(ms, msAbs, h, 'hour');\n }\n if (msAbs >= m) {\n return plural(ms, msAbs, m, 'minute');\n }\n if (msAbs >= s) {\n return plural(ms, msAbs, s, 'second');\n }\n return ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, msAbs, n, name) {\n var isPlural = msAbs >= n * 1.5;\n return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}\n", "\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n */\n\nfunction setup(env) {\n\tcreateDebug.debug = createDebug;\n\tcreateDebug.default = createDebug;\n\tcreateDebug.coerce = coerce;\n\tcreateDebug.disable = disable;\n\tcreateDebug.enable = enable;\n\tcreateDebug.enabled = enabled;\n\tcreateDebug.humanize = require('ms');\n\tcreateDebug.destroy = destroy;\n\n\tObject.keys(env).forEach(key => {\n\t\tcreateDebug[key] = env[key];\n\t});\n\n\t/**\n\t* The currently active debug mode names, and names to skip.\n\t*/\n\n\tcreateDebug.names = [];\n\tcreateDebug.skips = [];\n\n\t/**\n\t* Map of special \"%n\" handling functions, for the debug \"format\" argument.\n\t*\n\t* Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n\t*/\n\tcreateDebug.formatters = {};\n\n\t/**\n\t* Selects a color for a debug namespace\n\t* @param {String} namespace The namespace string for the debug instance to be colored\n\t* @return {Number|String} An ANSI color code for the given namespace\n\t* @api private\n\t*/\n\tfunction selectColor(namespace) {\n\t\tlet hash = 0;\n\n\t\tfor (let i = 0; i < namespace.length; i++) {\n\t\t\thash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n\t\t\thash |= 0; // Convert to 32bit integer\n\t\t}\n\n\t\treturn createDebug.colors[Math.abs(hash) % createDebug.colors.length];\n\t}\n\tcreateDebug.selectColor = selectColor;\n\n\t/**\n\t* Create a debugger with the given `namespace`.\n\t*\n\t* @param {String} namespace\n\t* @return {Function}\n\t* @api public\n\t*/\n\tfunction createDebug(namespace) {\n\t\tlet prevTime;\n\t\tlet enableOverride = null;\n\t\tlet namespacesCache;\n\t\tlet enabledCache;\n\n\t\tfunction debug(...args) {\n\t\t\t// Disabled?\n\t\t\tif (!debug.enabled) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst self = debug;\n\n\t\t\t// Set `diff` timestamp\n\t\t\tconst curr = Number(new Date());\n\t\t\tconst ms = curr - (prevTime || curr);\n\t\t\tself.diff = ms;\n\t\t\tself.prev = prevTime;\n\t\t\tself.curr = curr;\n\t\t\tprevTime = curr;\n\n\t\t\targs[0] = createDebug.coerce(args[0]);\n\n\t\t\tif (typeof args[0] !== 'string') {\n\t\t\t\t// Anything else let's inspect with %O\n\t\t\t\targs.unshift('%O');\n\t\t\t}\n\n\t\t\t// Apply any `formatters` transformations\n\t\t\tlet index = 0;\n\t\t\targs[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => {\n\t\t\t\t// If we encounter an escaped % then don't increase the array index\n\t\t\t\tif (match === '%%') {\n\t\t\t\t\treturn '%';\n\t\t\t\t}\n\t\t\t\tindex++;\n\t\t\t\tconst formatter = createDebug.formatters[format];\n\t\t\t\tif (typeof formatter === 'function') {\n\t\t\t\t\tconst val = args[index];\n\t\t\t\t\tmatch = formatter.call(self, val);\n\n\t\t\t\t\t// Now we need to remove `args[index]` since it's inlined in the `format`\n\t\t\t\t\targs.splice(index, 1);\n\t\t\t\t\tindex--;\n\t\t\t\t}\n\t\t\t\treturn match;\n\t\t\t});\n\n\t\t\t// Apply env-specific formatting (colors, etc.)\n\t\t\tcreateDebug.formatArgs.call(self, args);\n\n\t\t\tconst logFn = self.log || createDebug.log;\n\t\t\tlogFn.apply(self, args);\n\t\t}\n\n\t\tdebug.namespace = namespace;\n\t\tdebug.useColors = createDebug.useColors();\n\t\tdebug.color = createDebug.selectColor(namespace);\n\t\tdebug.extend = extend;\n\t\tdebug.destroy = createDebug.destroy; // XXX Temporary. Will be removed in the next major release.\n\n\t\tObject.defineProperty(debug, 'enabled', {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: false,\n\t\t\tget: () => {\n\t\t\t\tif (enableOverride !== null) {\n\t\t\t\t\treturn enableOverride;\n\t\t\t\t}\n\t\t\t\tif (namespacesCache !== createDebug.namespaces) {\n\t\t\t\t\tnamespacesCache = createDebug.namespaces;\n\t\t\t\t\tenabledCache = createDebug.enabled(namespace);\n\t\t\t\t}\n\n\t\t\t\treturn enabledCache;\n\t\t\t},\n\t\t\tset: v => {\n\t\t\t\tenableOverride = v;\n\t\t\t}\n\t\t});\n\n\t\t// Env-specific initialization logic for debug instances\n\t\tif (typeof createDebug.init === 'function') {\n\t\t\tcreateDebug.init(debug);\n\t\t}\n\n\t\treturn debug;\n\t}\n\n\tfunction extend(namespace, delimiter) {\n\t\tconst newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);\n\t\tnewDebug.log = this.log;\n\t\treturn newDebug;\n\t}\n\n\t/**\n\t* Enables a debug mode by namespaces. This can include modes\n\t* separated by a colon and wildcards.\n\t*\n\t* @param {String} namespaces\n\t* @api public\n\t*/\n\tfunction enable(namespaces) {\n\t\tcreateDebug.save(namespaces);\n\t\tcreateDebug.namespaces = namespaces;\n\n\t\tcreateDebug.names = [];\n\t\tcreateDebug.skips = [];\n\n\t\tconst split = (typeof namespaces === 'string' ? namespaces : '')\n\t\t\t.trim()\n\t\t\t.replace(/\\s+/g, ',')\n\t\t\t.split(',')\n\t\t\t.filter(Boolean);\n\n\t\tfor (const ns of split) {\n\t\t\tif (ns[0] === '-') {\n\t\t\t\tcreateDebug.skips.push(ns.slice(1));\n\t\t\t} else {\n\t\t\t\tcreateDebug.names.push(ns);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Checks if the given string matches a namespace template, honoring\n\t * asterisks as wildcards.\n\t *\n\t * @param {String} search\n\t * @param {String} template\n\t * @return {Boolean}\n\t */\n\tfunction matchesTemplate(search, template) {\n\t\tlet searchIndex = 0;\n\t\tlet templateIndex = 0;\n\t\tlet starIndex = -1;\n\t\tlet matchIndex = 0;\n\n\t\twhile (searchIndex < search.length) {\n\t\t\tif (templateIndex < template.length && (template[templateIndex] === search[searchIndex] || template[templateIndex] === '*')) {\n\t\t\t\t// Match character or proceed with wildcard\n\t\t\t\tif (template[templateIndex] === '*') {\n\t\t\t\t\tstarIndex = templateIndex;\n\t\t\t\t\tmatchIndex = searchIndex;\n\t\t\t\t\ttemplateIndex++; // Skip the '*'\n\t\t\t\t} else {\n\t\t\t\t\tsearchIndex++;\n\t\t\t\t\ttemplateIndex++;\n\t\t\t\t}\n\t\t\t} else if (starIndex !== -1) { // eslint-disable-line no-negated-condition\n\t\t\t\t// Backtrack to the last '*' and try to match more characters\n\t\t\t\ttemplateIndex = starIndex + 1;\n\t\t\t\tmatchIndex++;\n\t\t\t\tsearchIndex = matchIndex;\n\t\t\t} else {\n\t\t\t\treturn false; // No match\n\t\t\t}\n\t\t}\n\n\t\t// Handle trailing '*' in template\n\t\twhile (templateIndex < template.length && template[templateIndex] === '*') {\n\t\t\ttemplateIndex++;\n\t\t}\n\n\t\treturn templateIndex === template.length;\n\t}\n\n\t/**\n\t* Disable debug output.\n\t*\n\t* @return {String} namespaces\n\t* @api public\n\t*/\n\tfunction disable() {\n\t\tconst namespaces = [\n\t\t\t...createDebug.names,\n\t\t\t...createDebug.skips.map(namespace => '-' + namespace)\n\t\t].join(',');\n\t\tcreateDebug.enable('');\n\t\treturn namespaces;\n\t}\n\n\t/**\n\t* Returns true if the given mode name is enabled, false otherwise.\n\t*\n\t* @param {String} name\n\t* @return {Boolean}\n\t* @api public\n\t*/\n\tfunction enabled(name) {\n\t\tfor (const skip of createDebug.skips) {\n\t\t\tif (matchesTemplate(name, skip)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tfor (const ns of createDebug.names) {\n\t\t\tif (matchesTemplate(name, ns)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t* Coerce `val`.\n\t*\n\t* @param {Mixed} val\n\t* @return {Mixed}\n\t* @api private\n\t*/\n\tfunction coerce(val) {\n\t\tif (val instanceof Error) {\n\t\t\treturn val.stack || val.message;\n\t\t}\n\t\treturn val;\n\t}\n\n\t/**\n\t* XXX DO NOT USE. This is a temporary stub function.\n\t* XXX It WILL be removed in the next major release.\n\t*/\n\tfunction destroy() {\n\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t}\n\n\tcreateDebug.enable(createDebug.load());\n\n\treturn createDebug;\n}\n\nmodule.exports = setup;\n", "/* eslint-env browser */\n\n/**\n * This is the web browser implementation of `debug()`.\n */\n\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = localstorage();\nexports.destroy = (() => {\n\tlet warned = false;\n\n\treturn () => {\n\t\tif (!warned) {\n\t\t\twarned = true;\n\t\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t\t}\n\t};\n})();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n\t'#0000CC',\n\t'#0000FF',\n\t'#0033CC',\n\t'#0033FF',\n\t'#0066CC',\n\t'#0066FF',\n\t'#0099CC',\n\t'#0099FF',\n\t'#00CC00',\n\t'#00CC33',\n\t'#00CC66',\n\t'#00CC99',\n\t'#00CCCC',\n\t'#00CCFF',\n\t'#3300CC',\n\t'#3300FF',\n\t'#3333CC',\n\t'#3333FF',\n\t'#3366CC',\n\t'#3366FF',\n\t'#3399CC',\n\t'#3399FF',\n\t'#33CC00',\n\t'#33CC33',\n\t'#33CC66',\n\t'#33CC99',\n\t'#33CCCC',\n\t'#33CCFF',\n\t'#6600CC',\n\t'#6600FF',\n\t'#6633CC',\n\t'#6633FF',\n\t'#66CC00',\n\t'#66CC33',\n\t'#9900CC',\n\t'#9900FF',\n\t'#9933CC',\n\t'#9933FF',\n\t'#99CC00',\n\t'#99CC33',\n\t'#CC0000',\n\t'#CC0033',\n\t'#CC0066',\n\t'#CC0099',\n\t'#CC00CC',\n\t'#CC00FF',\n\t'#CC3300',\n\t'#CC3333',\n\t'#CC3366',\n\t'#CC3399',\n\t'#CC33CC',\n\t'#CC33FF',\n\t'#CC6600',\n\t'#CC6633',\n\t'#CC9900',\n\t'#CC9933',\n\t'#CCCC00',\n\t'#CCCC33',\n\t'#FF0000',\n\t'#FF0033',\n\t'#FF0066',\n\t'#FF0099',\n\t'#FF00CC',\n\t'#FF00FF',\n\t'#FF3300',\n\t'#FF3333',\n\t'#FF3366',\n\t'#FF3399',\n\t'#FF33CC',\n\t'#FF33FF',\n\t'#FF6600',\n\t'#FF6633',\n\t'#FF9900',\n\t'#FF9933',\n\t'#FFCC00',\n\t'#FFCC33'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\n// eslint-disable-next-line complexity\nfunction useColors() {\n\t// NB: In an Electron preload script, document will be defined but not fully\n\t// initialized. Since we know we're in Chrome, we'll just detect this case\n\t// explicitly\n\tif (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {\n\t\treturn true;\n\t}\n\n\t// Internet Explorer and Edge do not support colors.\n\tif (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n\t\treturn false;\n\t}\n\n\tlet m;\n\n\t// Is webkit? http://stackoverflow.com/a/16459606/376773\n\t// document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n\t// eslint-disable-next-line no-return-assign\n\treturn (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n\t\t// Is firebug? http://stackoverflow.com/a/398120/376773\n\t\t(typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n\t\t// Is firefox >= v31?\n\t\t// https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && (m = navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/)) && parseInt(m[1], 10) >= 31) ||\n\t\t// Double check webkit in userAgent just in case we are in a worker\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\targs[0] = (this.useColors ? '%c' : '') +\n\t\tthis.namespace +\n\t\t(this.useColors ? ' %c' : ' ') +\n\t\targs[0] +\n\t\t(this.useColors ? '%c ' : ' ') +\n\t\t'+' + module.exports.humanize(this.diff);\n\n\tif (!this.useColors) {\n\t\treturn;\n\t}\n\n\tconst c = 'color: ' + this.color;\n\targs.splice(1, 0, c, 'color: inherit');\n\n\t// The final \"%c\" is somewhat tricky, because there could be other\n\t// arguments passed either before or after the %c, so we need to\n\t// figure out the correct index to insert the CSS into\n\tlet index = 0;\n\tlet lastC = 0;\n\targs[0].replace(/%[a-zA-Z%]/g, match => {\n\t\tif (match === '%%') {\n\t\t\treturn;\n\t\t}\n\t\tindex++;\n\t\tif (match === '%c') {\n\t\t\t// We only are interested in the *last* %c\n\t\t\t// (the user may have provided their own)\n\t\t\tlastC = index;\n\t\t}\n\t});\n\n\targs.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.debug()` when available.\n * No-op when `console.debug` is not a \"function\".\n * If `console.debug` is not available, falls back\n * to `console.log`.\n *\n * @api public\n */\nexports.log = console.debug || console.log || (() => {});\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\ttry {\n\t\tif (namespaces) {\n\t\t\texports.storage.setItem('debug', namespaces);\n\t\t} else {\n\t\t\texports.storage.removeItem('debug');\n\t\t}\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\nfunction load() {\n\tlet r;\n\ttry {\n\t\tr = exports.storage.getItem('debug') || exports.storage.getItem('DEBUG') ;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n\n\t// If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n\tif (!r && typeof process !== 'undefined' && 'env' in process) {\n\t\tr = process.env.DEBUG;\n\t}\n\n\treturn r;\n}\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n\ttry {\n\t\t// TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context\n\t\t// The Browser also has localStorage in the global context.\n\t\treturn localStorage;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nformatters.j = function (v) {\n\ttry {\n\t\treturn JSON.stringify(v);\n\t} catch (error) {\n\t\treturn '[UnexpectedJSONParseError]: ' + error.message;\n\t}\n};\n", "'use strict';\n\nmodule.exports = (flag, argv = process.argv) => {\n\tconst prefix = flag.startsWith('-') ? '' : (flag.length === 1 ? '-' : '--');\n\tconst position = argv.indexOf(prefix + flag);\n\tconst terminatorPosition = argv.indexOf('--');\n\treturn position !== -1 && (terminatorPosition === -1 || position < terminatorPosition);\n};\n", "'use strict';\nconst os = require('os');\nconst tty = require('tty');\nconst hasFlag = require('has-flag');\n\nconst {env} = process;\n\nlet flagForceColor;\nif (hasFlag('no-color') ||\n\thasFlag('no-colors') ||\n\thasFlag('color=false') ||\n\thasFlag('color=never')) {\n\tflagForceColor = 0;\n} else if (hasFlag('color') ||\n\thasFlag('colors') ||\n\thasFlag('color=true') ||\n\thasFlag('color=always')) {\n\tflagForceColor = 1;\n}\n\nfunction envForceColor() {\n\tif ('FORCE_COLOR' in env) {\n\t\tif (env.FORCE_COLOR === 'true') {\n\t\t\treturn 1;\n\t\t}\n\n\t\tif (env.FORCE_COLOR === 'false') {\n\t\t\treturn 0;\n\t\t}\n\n\t\treturn env.FORCE_COLOR.length === 0 ? 1 : Math.min(Number.parseInt(env.FORCE_COLOR, 10), 3);\n\t}\n}\n\nfunction translateLevel(level) {\n\tif (level === 0) {\n\t\treturn false;\n\t}\n\n\treturn {\n\t\tlevel,\n\t\thasBasic: true,\n\t\thas256: level >= 2,\n\t\thas16m: level >= 3\n\t};\n}\n\nfunction supportsColor(haveStream, {streamIsTTY, sniffFlags = true} = {}) {\n\tconst noFlagForceColor = envForceColor();\n\tif (noFlagForceColor !== undefined) {\n\t\tflagForceColor = noFlagForceColor;\n\t}\n\n\tconst forceColor = sniffFlags ? flagForceColor : noFlagForceColor;\n\n\tif (forceColor === 0) {\n\t\treturn 0;\n\t}\n\n\tif (sniffFlags) {\n\t\tif (hasFlag('color=16m') ||\n\t\t\thasFlag('color=full') ||\n\t\t\thasFlag('color=truecolor')) {\n\t\t\treturn 3;\n\t\t}\n\n\t\tif (hasFlag('color=256')) {\n\t\t\treturn 2;\n\t\t}\n\t}\n\n\tif (haveStream && !streamIsTTY && forceColor === undefined) {\n\t\treturn 0;\n\t}\n\n\tconst min = forceColor || 0;\n\n\tif (env.TERM === 'dumb') {\n\t\treturn min;\n\t}\n\n\tif (process.platform === 'win32') {\n\t\t// Windows 10 build 10586 is the first Windows release that supports 256 colors.\n\t\t// Windows 10 build 14931 is the first release that supports 16m/TrueColor.\n\t\tconst osRelease = os.release().split('.');\n\t\tif (\n\t\t\tNumber(osRelease[0]) >= 10 &&\n\t\t\tNumber(osRelease[2]) >= 10586\n\t\t) {\n\t\t\treturn Number(osRelease[2]) >= 14931 ? 3 : 2;\n\t\t}\n\n\t\treturn 1;\n\t}\n\n\tif ('CI' in env) {\n\t\tif (['TRAVIS', 'CIRCLECI', 'APPVEYOR', 'GITLAB_CI', 'GITHUB_ACTIONS', 'BUILDKITE', 'DRONE'].some(sign => sign in env) || env.CI_NAME === 'codeship') {\n\t\t\treturn 1;\n\t\t}\n\n\t\treturn min;\n\t}\n\n\tif ('TEAMCITY_VERSION' in env) {\n\t\treturn /^(9\\.(0*[1-9]\\d*)\\.|\\d{2,}\\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0;\n\t}\n\n\tif (env.COLORTERM === 'truecolor') {\n\t\treturn 3;\n\t}\n\n\tif ('TERM_PROGRAM' in env) {\n\t\tconst version = Number.parseInt((env.TERM_PROGRAM_VERSION || '').split('.')[0], 10);\n\n\t\tswitch (env.TERM_PROGRAM) {\n\t\t\tcase 'iTerm.app':\n\t\t\t\treturn version >= 3 ? 3 : 2;\n\t\t\tcase 'Apple_Terminal':\n\t\t\t\treturn 2;\n\t\t\t// No default\n\t\t}\n\t}\n\n\tif (/-256(color)?$/i.test(env.TERM)) {\n\t\treturn 2;\n\t}\n\n\tif (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) {\n\t\treturn 1;\n\t}\n\n\tif ('COLORTERM' in env) {\n\t\treturn 1;\n\t}\n\n\treturn min;\n}\n\nfunction getSupportLevel(stream, options = {}) {\n\tconst level = supportsColor(stream, {\n\t\tstreamIsTTY: stream && stream.isTTY,\n\t\t...options\n\t});\n\n\treturn translateLevel(level);\n}\n\nmodule.exports = {\n\tsupportsColor: getSupportLevel,\n\tstdout: getSupportLevel({isTTY: tty.isatty(1)}),\n\tstderr: getSupportLevel({isTTY: tty.isatty(2)})\n};\n", "/**\n * Module dependencies.\n */\n\nconst tty = require('tty');\nconst util = require('util');\n\n/**\n * This is the Node.js implementation of `debug()`.\n */\n\nexports.init = init;\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.destroy = util.deprecate(\n\t() => {},\n\t'Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.'\n);\n\n/**\n * Colors.\n */\n\nexports.colors = [6, 2, 3, 4, 5, 1];\n\ntry {\n\t// Optional dependency (as in, doesn't need to be installed, NOT like optionalDependencies in package.json)\n\t// eslint-disable-next-line import/no-extraneous-dependencies\n\tconst supportsColor = require('supports-color');\n\n\tif (supportsColor && (supportsColor.stderr || supportsColor).level >= 2) {\n\t\texports.colors = [\n\t\t\t20,\n\t\t\t21,\n\t\t\t26,\n\t\t\t27,\n\t\t\t32,\n\t\t\t33,\n\t\t\t38,\n\t\t\t39,\n\t\t\t40,\n\t\t\t41,\n\t\t\t42,\n\t\t\t43,\n\t\t\t44,\n\t\t\t45,\n\t\t\t56,\n\t\t\t57,\n\t\t\t62,\n\t\t\t63,\n\t\t\t68,\n\t\t\t69,\n\t\t\t74,\n\t\t\t75,\n\t\t\t76,\n\t\t\t77,\n\t\t\t78,\n\t\t\t79,\n\t\t\t80,\n\t\t\t81,\n\t\t\t92,\n\t\t\t93,\n\t\t\t98,\n\t\t\t99,\n\t\t\t112,\n\t\t\t113,\n\t\t\t128,\n\t\t\t129,\n\t\t\t134,\n\t\t\t135,\n\t\t\t148,\n\t\t\t149,\n\t\t\t160,\n\t\t\t161,\n\t\t\t162,\n\t\t\t163,\n\t\t\t164,\n\t\t\t165,\n\t\t\t166,\n\t\t\t167,\n\t\t\t168,\n\t\t\t169,\n\t\t\t170,\n\t\t\t171,\n\t\t\t172,\n\t\t\t173,\n\t\t\t178,\n\t\t\t179,\n\t\t\t184,\n\t\t\t185,\n\t\t\t196,\n\t\t\t197,\n\t\t\t198,\n\t\t\t199,\n\t\t\t200,\n\t\t\t201,\n\t\t\t202,\n\t\t\t203,\n\t\t\t204,\n\t\t\t205,\n\t\t\t206,\n\t\t\t207,\n\t\t\t208,\n\t\t\t209,\n\t\t\t214,\n\t\t\t215,\n\t\t\t220,\n\t\t\t221\n\t\t];\n\t}\n} catch (error) {\n\t// Swallow - we only care if `supports-color` is available; it doesn't have to be.\n}\n\n/**\n * Build up the default `inspectOpts` object from the environment variables.\n *\n * $ DEBUG_COLORS=no DEBUG_DEPTH=10 DEBUG_SHOW_HIDDEN=enabled node script.js\n */\n\nexports.inspectOpts = Object.keys(process.env).filter(key => {\n\treturn /^debug_/i.test(key);\n}).reduce((obj, key) => {\n\t// Camel-case\n\tconst prop = key\n\t\t.substring(6)\n\t\t.toLowerCase()\n\t\t.replace(/_([a-z])/g, (_, k) => {\n\t\t\treturn k.toUpperCase();\n\t\t});\n\n\t// Coerce string value into JS value\n\tlet val = process.env[key];\n\tif (/^(yes|on|true|enabled)$/i.test(val)) {\n\t\tval = true;\n\t} else if (/^(no|off|false|disabled)$/i.test(val)) {\n\t\tval = false;\n\t} else if (val === 'null') {\n\t\tval = null;\n\t} else {\n\t\tval = Number(val);\n\t}\n\n\tobj[prop] = val;\n\treturn obj;\n}, {});\n\n/**\n * Is stdout a TTY? Colored output is enabled when `true`.\n */\n\nfunction useColors() {\n\treturn 'colors' in exports.inspectOpts ?\n\t\tBoolean(exports.inspectOpts.colors) :\n\t\ttty.isatty(process.stderr.fd);\n}\n\n/**\n * Adds ANSI color escape codes if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\tconst {namespace: name, useColors} = this;\n\n\tif (useColors) {\n\t\tconst c = this.color;\n\t\tconst colorCode = '\\u001B[3' + (c < 8 ? c : '8;5;' + c);\n\t\tconst prefix = ` ${colorCode};1m${name} \\u001B[0m`;\n\n\t\targs[0] = prefix + args[0].split('\\n').join('\\n' + prefix);\n\t\targs.push(colorCode + 'm+' + module.exports.humanize(this.diff) + '\\u001B[0m');\n\t} else {\n\t\targs[0] = getDate() + name + ' ' + args[0];\n\t}\n}\n\nfunction getDate() {\n\tif (exports.inspectOpts.hideDate) {\n\t\treturn '';\n\t}\n\treturn new Date().toISOString() + ' ';\n}\n\n/**\n * Invokes `util.formatWithOptions()` with the specified arguments and writes to stderr.\n */\n\nfunction log(...args) {\n\treturn process.stderr.write(util.formatWithOptions(exports.inspectOpts, ...args) + '\\n');\n}\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\tif (namespaces) {\n\t\tprocess.env.DEBUG = namespaces;\n\t} else {\n\t\t// If you set a process.env field to null or undefined, it gets cast to the\n\t\t// string 'null' or 'undefined'. Just delete instead.\n\t\tdelete process.env.DEBUG;\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\nfunction load() {\n\treturn process.env.DEBUG;\n}\n\n/**\n * Init logic for `debug` instances.\n *\n * Create a new `inspectOpts` object in case `useColors` is set\n * differently for a particular `debug` instance.\n */\n\nfunction init(debug) {\n\tdebug.inspectOpts = {};\n\n\tconst keys = Object.keys(exports.inspectOpts);\n\tfor (let i = 0; i < keys.length; i++) {\n\t\tdebug.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]];\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %o to `util.inspect()`, all on a single line.\n */\n\nformatters.o = function (v) {\n\tthis.inspectOpts.colors = this.useColors;\n\treturn util.inspect(v, this.inspectOpts)\n\t\t.split('\\n')\n\t\t.map(str => str.trim())\n\t\t.join(' ');\n};\n\n/**\n * Map %O to `util.inspect()`, allowing multiple lines if needed.\n */\n\nformatters.O = function (v) {\n\tthis.inspectOpts.colors = this.useColors;\n\treturn util.inspect(v, this.inspectOpts);\n};\n", "/**\n * Detect Electron renderer / nwjs process, which is node, but we should\n * treat as a browser.\n */\n\nif (typeof process === 'undefined' || process.type === 'renderer' || process.browser === true || process.__nwjs) {\n\tmodule.exports = require('./browser.js');\n} else {\n\tmodule.exports = require('./node.js');\n}\n", "const SHP = require('simple-hypercore-protocol')\nconst crypto = require('hypercore-crypto')\nconst timeout = require('timeout-refresh')\nconst inspect = require('inspect-custom-symbol')\nconst Nanoguard = require('nanoguard')\nconst pretty = require('pretty-hash')\nconst Message = require('abstract-extension')\nconst { Duplex } = require('streamx')\nconst debug = require('debug')('hypercore-protocol')\n\nclass StreamExtension extends Message {\n send (message) {\n const stream = this.local.handlers\n if (stream._changes !== this.local.changes) {\n stream._changes = this.local.changes\n stream.state.options(0, { extensions: this.local.names() })\n }\n return stream.state.extension(0, this.id, this.encode(message))\n }\n}\n\nclass Channelizer {\n constructor (stream, { encrypted, noise, keyPair }) {\n this.stream = stream\n this.created = new Map()\n this.local = [null]\n this.remote = [null]\n this.noise = !(noise === false && encrypted === false)\n this.encrypted = encrypted !== false\n this.keyPair = keyPair\n }\n\n allocLocal () {\n const id = this.local.indexOf(null)\n if (id > 0) return id\n this.local.push(null)\n return this.local.length - 1\n }\n\n attachLocal (ch) {\n const id = this.allocLocal()\n this.local[id] = ch\n ch.localId = id\n }\n\n attachRemote (ch, id) {\n if (this.remote.length === id) this.remote.push(null)\n this.remote[id] = ch\n ch.remoteId = id\n }\n\n detachChannel (ch) {\n if (ch.localId > -1 && this.local[ch.localId] === ch) {\n this.local[ch.localId] = null\n ch.localId = -1\n if (ch.handlers && ch.handlers.onclose) ch.handlers.onclose()\n }\n if (ch.remoteId > -1 && this.remote[ch.remoteId] === ch) {\n this.remote[ch.remoteId] = null\n }\n\n const hex = ch.discoveryKey.toString('hex')\n if (this.created.get(hex) === ch) this.created.delete(hex)\n }\n\n getChannel (dk) {\n return this.created.get(dk.toString('hex'))\n }\n\n createChannel (dk) {\n const hex = dk.toString('hex')\n\n const old = this.created.get(hex)\n if (old) return old\n\n const fresh = new Channel(this.stream.state, this.stream, dk)\n this.created.set(hex, fresh)\n return fresh\n }\n\n onauthenticate (key, done) {\n if (this.stream.handlers && this.stream.handlers.onauthenticate) this.stream.handlers.onauthenticate(key, done)\n else done(null)\n }\n\n onhandshake () {\n debug('recv handshake')\n if (this.stream.handlers && this.stream.handlers.onhandshake) this.stream.handlers.onhandshake()\n this.stream.emit('handshake')\n }\n\n onopen (channelId, message) {\n debug('recv open', channelId, message)\n const ch = this.createChannel(message.discoveryKey)\n ch.remoteCapability = message.capability\n this.attachRemote(ch, channelId)\n if (ch.localId === -1) {\n if (this.stream.handlers.ondiscoverykey) this.stream.handlers.ondiscoverykey(ch.discoveryKey)\n this.stream.emit('discovery-key', ch.discoveryKey)\n } else {\n if (this.noise && !ch.remoteVerified) {\n // We are leaking metadata here that the remote cap was bad which means the remote prob can figure\n // out that we indeed had the key. Since we were the one to initialise the channel that's ok, as\n // that already kinda leaks that.\n this.stream.destroy(new Error('Invalid remote channel capability'))\n return\n }\n this.stream.emit('duplex-channel', ch)\n }\n if (ch.handlers && ch.handlers.onopen) ch.handlers.onopen()\n\n if (this.stream.handlers.onremoteopen) this.stream.handlers.onremoteopen(ch.discoveryKey)\n this.stream.emit('remote-open', ch.discoveryKey)\n }\n\n onoptions (channelId, message) {\n debug('recv options', channelId, message)\n const ch = this.remote[channelId]\n if (ch && ch.handlers && ch.handlers.onoptions) ch.handlers.onoptions(message)\n else if (channelId === 0 && !ch) this.stream._updateExtensions(message.extensions)\n }\n\n onstatus (channelId, message) {\n debug('recv status', channelId, message)\n const ch = this.remote[channelId]\n if (ch && ch.handlers && ch.handlers.onstatus) ch.handlers.onstatus(message)\n }\n\n onhave (channelId, message) {\n debug('recv have', channelId, message)\n const ch = this.remote[channelId]\n if (ch && ch.handlers && ch.handlers.onhave) ch.handlers.onhave(message)\n }\n\n onunhave (channelId, message) {\n debug('recv unhave', channelId, message)\n const ch = this.remote[channelId]\n if (ch && ch.handlers && ch.handlers.onunhave) ch.handlers.onunhave(message)\n }\n\n onwant (channelId, message) {\n debug('recv want', channelId, message)\n const ch = this.remote[channelId]\n if (ch && ch.handlers && ch.handlers.onwant) ch.handlers.onwant(message)\n }\n\n onunwant (channelId, message) {\n debug('recv unwant', channelId, message)\n const ch = this.remote[channelId]\n if (ch && ch.handlers && ch.handlers.onunwant) ch.handlers.onunwant(message)\n }\n\n onrequest (channelId, message) {\n debug('recv request', channelId, message)\n const ch = this.remote[channelId]\n if (ch && ch.handlers && ch.handlers.onrequest) ch.handlers.onrequest(message)\n }\n\n oncancel (channelId, message) {\n debug('recv cancel', channelId, message)\n const ch = this.remote[channelId]\n if (ch && ch.handlers && ch.handlers.oncancel) ch.handlers.oncancel(message)\n }\n\n ondata (channelId, message) {\n debug('recv data', channelId, message)\n const ch = this.remote[channelId]\n if (ch && ch.handlers && ch.handlers.ondata) ch.handlers.ondata(message)\n }\n\n onextension (channelId, id, buf) {\n debug('recv extension', channelId, id)\n const ch = this.remote[channelId]\n if (ch && ch.handlers && ch.handlers.onextension) ch.handlers.onextension(id, buf)\n else if (channelId === 0 && !ch) this.stream.remoteExtensions.onmessage(id, buf)\n }\n\n onclose (channelId, message) {\n debug('recv close', channelId, message)\n let ch = channelId < this.remote.length ? this.remote[channelId] : null\n\n if (ch) {\n this.remote[channelId] = null\n } else if (message.discoveryKey) {\n ch = this.getChannel(message.discoveryKey)\n }\n\n if (!ch) return\n\n if (ch.localId > -1 && this.local[ch.localId] === ch) {\n this.local[ch.localId] = null\n ch.state.close(ch.localId, {})\n ch.localId = -1\n if (ch.handlers && ch.handlers.onclose) ch.handlers.onclose()\n }\n\n if (this.stream.handlers && this.stream.handlers.onchannelclose) {\n this.stream.handlers.onchannelclose(ch.discoveryKey, ch.key)\n }\n\n const hex = ch.discoveryKey.toString('hex')\n if (this.created.get(hex) === ch) this.created.delete(hex)\n this.stream._prefinalize()\n }\n\n onmissing (bytes) {\n if (this.stream._utp === null) return\n this.stream._utp.setContentSize(bytes)\n }\n\n // called by the state machine\n send (data) {\n if (this.stream.keepAlive !== null) this.stream.keepAlive.refresh()\n this.stream.bytesSent += data.length\n return this.stream.push(data)\n }\n\n // called by the state machine\n destroy (err) {\n this.stream.destroy(err)\n this.local = []\n this.remote = []\n for (const ch of this.created.values()) {\n const closed = ch.localId === -1\n ch.localId = ch.remoteId = -1\n if (!closed && ch.handlers && ch.handlers.onclose) ch.handlers.onclose()\n\n if (this.stream.handlers && this.stream.handlers.onchannelclose) {\n this.stream.handlers.onchannelclose(ch.discoveryKey, ch.key)\n }\n }\n this.created.clear()\n }\n}\n\nclass Channel {\n constructor (state, stream, dk) {\n this.key = null\n this.discoveryKey = dk\n this.localId = -1\n this.remoteId = -1\n this.remoteCapability = null\n this.handlers = null\n this.state = state\n this.stream = stream\n }\n\n get opened () {\n return this.localId > -1\n }\n\n get closed () {\n return this.localId === -1\n }\n\n get remoteOpened () {\n return this.remoteId > -1\n }\n\n get remoteVerified () {\n return this.localId > -1 &&\n this.remoteId > -1 &&\n !!this.remoteCapability &&\n this.remoteCapability.equals(this.state.remoteCapability(this.key))\n }\n\n options (message) {\n debug('send options', message)\n return this.state.options(this.localId, message)\n }\n\n status (message) {\n debug('send status', message)\n return this.state.status(this.localId, message)\n }\n\n have (message) {\n debug('send have', message)\n return this.state.have(this.localId, message)\n }\n\n unhave (message) {\n debug('send unhave', message)\n return this.state.unhave(this.localId, message)\n }\n\n want (message) {\n debug('send want', message)\n return this.state.want(this.localId, message)\n }\n\n unwant (message) {\n debug('send unwant', message)\n return this.state.unwant(this.localId, message)\n }\n\n request (message) {\n debug('send request', message)\n return this.state.request(this.localId, message)\n }\n\n cancel (message) {\n debug('send cancel', message)\n return this.state.cancel(this.localId, message)\n }\n\n data (message) {\n debug('send data', message)\n return this.state.data(this.localId, message)\n }\n\n extension (id, buf) {\n debug('send extension', id)\n return this.state.extension(this.localId, id, buf)\n }\n\n close () {\n debug('send close')\n if (this.closed) return\n\n const localId = this.localId\n this.stream.channelizer.detachChannel(this)\n this.state.close(localId, {})\n this.stream._prefinalize()\n }\n\n destroy (err) {\n this.stream.destroy(err)\n }\n}\n\nmodule.exports = class ProtocolStream extends Duplex {\n constructor (initiator, handlers = {}) {\n super()\n\n if (typeof initiator !== 'boolean') throw new Error('Must specify initiator boolean in replication stream')\n\n this.initiator = initiator\n this.handlers = handlers\n this.channelizer = new Channelizer(this, {\n encrypted: handlers.encrypted,\n noise: handlers.noise,\n keyPair: handlers.keyPair\n })\n this.state = new SHP(initiator, this.channelizer)\n this.live = !!handlers.live\n this.timeout = null\n this.keepAlive = null\n this.prefinalize = new Nanoguard()\n this.bytesSent = 0\n this.bytesReceived = 0\n this.extensions = StreamExtension.createLocal(this)\n this.remoteExtensions = this.extensions.remote()\n\n this._utp = null\n this._changes = 0\n\n this.once('finish', this.push.bind(this, null))\n this.on('pipe', this._onpipe)\n\n if (handlers.timeout !== false && handlers.timeout !== 0) {\n const timeout = handlers.timeout || 20000\n this.setTimeout(timeout, () => this.destroy(new Error('ETIMEDOUT')))\n this.setKeepAlive(Math.ceil(timeout / 2))\n }\n }\n\n registerExtension (name, handlers) {\n return this.extensions.add(name, handlers)\n }\n\n [inspect] (depth, opts) {\n let indent = ''\n if (typeof opts.indentationLvl === 'number') {\n while (indent.length < opts.indentationLvl) indent += ' '\n }\n\n return 'HypercoreProtocolStream(\\n' +\n indent + ' publicKey: ' + opts.stylize((this.publicKey && pretty(this.publicKey)), 'string') + '\\n' +\n indent + ' remotePublicKey: ' + opts.stylize((this.remotePublicKey && pretty(this.remotePublicKey)), 'string') + '\\n' +\n indent + ' remoteAddress: ' + opts.stylize(this.remoteAddress, 'string') + '\\n' +\n indent + ' remoteType: ' + opts.stylize(this.remoteType, 'string') + '\\n' +\n indent + ' live: ' + opts.stylize(this.live, 'boolean') + '\\n' +\n indent + ' initiator: ' + opts.stylize(this.initiator, 'boolean') + '\\n' +\n indent + ' channelCount: ' + opts.stylize(this.channelCount, 'number') + '\\n' +\n indent + ' destroyed: ' + opts.stylize(this.destroyed, 'boolean') + '\\n' +\n indent + ' prefinalized: ' + opts.stylize(!this.prefinalize.waiting, 'boolean') + '\\n' +\n indent + ' bytesSent: ' + opts.stylize(this.bytesSent, 'number') + '\\n' +\n indent + ' bytesReceived: ' + opts.stylize(this.bytesReceived, 'number') + '\\n' +\n indent + ')'\n }\n\n static isProtocolStream (s) {\n return !!(s && typeof s.initiator === 'boolean' && typeof s.pipe === 'function' && s.state)\n }\n\n static keyPair (seed) {\n return SHP.keyPair(seed)\n }\n\n get remoteAddress () {\n const to = this._readableState.pipeTo\n if (!to) return null\n if (ProtocolStream.isProtocolStream(to)) return null\n return to.remoteAddress\n }\n\n get remoteType () {\n const to = this._readableState.pipeTo\n if (!to) return null\n if (to._utp) return 'utp'\n if (to.remoteAddress) return 'tcp'\n return 'unknown'\n }\n\n get publicKey () {\n return this.state.publicKey\n }\n\n get remotePublicKey () {\n return this.state.remotePublicKey\n }\n\n _onpipe (dest) {\n if (typeof dest.setContentSize === 'function') this._utp = dest\n }\n\n _write (data, cb) {\n if (this.timeout !== null) this.timeout.refresh()\n this.bytesReceived += data.length\n this.state.recv(data)\n cb(null)\n }\n\n _destroy (cb) {\n this._predestroy() // make sure this always runs\n this.channelizer.destroy()\n this.state.destroy()\n cb(null)\n }\n\n _predestroy () {\n if (this.timeout !== null) {\n this.timeout.destroy()\n this.timeout = null\n }\n if (this.keepAlive !== null) {\n this.keepAlive.destroy()\n this.keepAlive = null\n }\n this.prefinalize.destroy()\n }\n\n _prefinalize () {\n this.emit('prefinalize')\n this.prefinalize.ready(() => {\n if (this.destroyed) return\n if (this.channelCount) return\n if (this.live) return\n this.finalize()\n })\n }\n\n _updateExtensions (names) {\n this.remoteExtensions.update(names)\n if (this.handlers.onextensions) this.handlers.onextensions(names)\n this.emit('extensions', names)\n }\n\n remoteOpened (key) {\n const ch = this.channelizer.getChannel(crypto.discoveryKey(key))\n return !!(ch && ch.remoteId > -1)\n }\n\n remoteVerified (key) {\n const ch = this.channelizer.getChannel(crypto.discoveryKey(key))\n return !!ch && !!ch.remoteCapability && ch.remoteCapability.equals(this.state.remoteCapability(key))\n }\n\n opened (key) {\n const ch = this.channelizer.getChannel(crypto.discoveryKey(key))\n return !!(ch && ch.localId > -1)\n }\n\n ping () {\n return this.state.ping()\n }\n\n setKeepAlive (ms) {\n if (this.keepAlive) this.keepAlive.destroy()\n if (!ms) {\n this.keepAlive = null\n return\n }\n this.keepAlive = timeout(ms, ping, this)\n\n function ping () {\n this.ping()\n this.keepAlive = timeout(ms, ping, this)\n }\n }\n\n setTimeout (ms, ontimeout) {\n if (this.timeout) this.timeout.destroy()\n if (!ms) {\n this.timeout = null\n return\n }\n this.timeout = timeout(ms, this.emit.bind(this, 'timeout'))\n if (ontimeout) this.once('timeout', ontimeout)\n }\n\n get channelCount () {\n return this.channelizer.created.size\n }\n\n get channels () {\n return this.channelizer.created.values()\n }\n\n open (key, handlers) {\n const discoveryKey = crypto.discoveryKey(key)\n const ch = this.channelizer.createChannel(discoveryKey)\n\n if (ch.key === null) {\n ch.key = key\n this.channelizer.attachLocal(ch)\n this.state.open(ch.localId, { key, discoveryKey })\n }\n\n if (handlers) ch.handlers = handlers\n\n if (ch.remoteId > -1) this.emit('duplex-channel', ch)\n\n return ch\n }\n\n close (discoveryKey) {\n const ch = this.channelizer.getChannel(discoveryKey)\n\n if (ch && ch.localId > -1) {\n ch.close()\n return\n }\n\n this.state.close(this.channelizer.allocLocal(), { discoveryKey })\n }\n\n finalize () {\n this.push(null)\n }\n}\n", "module.exports = function(v) {\n var c = 32\n v &= -v\n if (v) c--\n if (v & 0x0000FFFF) c -= 16\n if (v & 0x00FF00FF) c -= 8\n if (v & 0x0F0F0F0F) c -= 4\n if (v & 0x33333333) c -= 2\n if (v & 0x55555555) c -= 1\n return c\n}\n", "'use strict'\n\nconst ctz = require('count-trailing-zeros')\n\nmodule.exports = () => new Bitfield()\n\nclass Page {\n constructor (level) {\n const buf = new Uint8Array(level ? 8456 : 4360)\n const b = buf.byteOffset\n\n this.buffer = buf\n this.bits = level ? null : new Uint32Array(buf.buffer, b, 1024)\n this.children = level ? new Array(32768) : null\n this.level = level\n\n this.allOne = level\n ? [\n new Uint32Array(buf.buffer, b, 1024),\n new Uint32Array(buf.buffer, b + 4096, 32),\n new Uint32Array(buf.buffer, b + 4224, 1)\n ]\n : [\n this.bits,\n new Uint32Array(buf.buffer, b + 4096, 32),\n new Uint32Array(buf.buffer, b + 4224, 1)\n ]\n\n this.oneOne = level\n ? [\n new Uint32Array(buf.buffer, b + 4228, 1024),\n new Uint32Array(buf.buffer, b + 8324, 32),\n new Uint32Array(buf.buffer, b + 8452, 1)\n ]\n : [\n this.bits,\n new Uint32Array(buf.buffer, b + 4228, 32),\n new Uint32Array(buf.buffer, b + 4356, 1)\n ]\n }\n}\n\nconst ZEROS = [new Page(0), new Page(1), new Page(2), new Page(3)]\nconst MASK = new Uint32Array(32)\nconst MASK_INCL = new Uint32Array(32)\n\nfor (var i = 0; i < 32; i++) {\n MASK[i] = Math.pow(2, 31 - i) - 1\n MASK_INCL[i] = Math.pow(2, 32 - i) - 1\n}\n\nconst LITTLE_ENDIAN = new Uint8Array(MASK.buffer, MASK.byteOffset, 1)[0] === 0xff\n\nclass Bitfield {\n constructor () {\n this.length = 32768\n this.littleEndian = LITTLE_ENDIAN\n\n this._path = new Uint16Array(5)\n this._offsets = new Uint16Array(this._path.buffer, this._path.byteOffset + 2, 4)\n this._parents = new Array(4).fill(null)\n this._page = new Page(0)\n this._allocs = 1\n }\n\n last () {\n var page = this._page\n var b = 0\n\n while (true) {\n for (var i = 2; i >= 0; i--) {\n const c = ctz(page.oneOne[i][b])\n if (c === 32) return -1\n b = (b << 5) + (31 - c)\n }\n\n this._path[page.level] = b\n if (!page.level) return defactor(this._path)\n page = page.children[b]\n b = 0\n }\n }\n\n set (index, bit) {\n const page = this._getPage(index, bit)\n if (!page) return false\n\n const i = this._path[0]\n const r = i & 31\n const b = i >>> 5\n const prev = page.bits[b]\n\n page.bits[b] = bit\n ? (prev | (0x80000000 >>> r))\n : (prev & ~(0x80000000 >>> r))\n\n const upd = page.bits[b]\n if (upd === prev) return false\n\n this._updateAllOne(page, b, upd)\n this._updateOneOne(page, b, upd)\n\n return true\n }\n\n get (index) {\n const page = this._getPage(index, false)\n if (!page) return false\n\n const i = this._path[0]\n const r = i & 31\n\n return (page.bits[i >>> 5] & (0x80000000 >>> r)) !== 0\n }\n\n iterator () {\n return new Iterator(this)\n }\n\n fill (val, start, end) {\n if (!start) start = 0\n if (val === true) return this._fillBit(true, start, end === 0 ? end : (end || this.length))\n if (val === false) return this._fillBit(false, start, end === 0 ? end : (end || this.length))\n this._fillBuffer(val, start, end === 0 ? end : (end || (start + 8 * val.length)))\n }\n\n grow () {\n if (this._page.level === 3) throw new Error('Cannot grow beyond ' + this.length)\n const page = this._page\n this._page = new Page(page.level + 1)\n this._page.children[0] = page\n if (this._page.level === 3) this.length = Number.MAX_SAFE_INTEGER\n else this.length *= 32768\n }\n\n _fillBuffer (buf, start, end) {\n if ((start & 7) || (end & 7)) throw new Error('Offsets must be a multiple of 8')\n\n start /= 8\n while (end > this.length) this.grow()\n end /= 8\n\n const offset = start\n var page = this._getPage(8 * start, true)\n\n while (start < end) {\n const delta = end - start < 4096 ? end - start : 4096\n const s = start - offset\n\n start += this._setPageBuffer(page, buf.subarray(s, s + delta), start & 1023)\n if (start !== end) page = this._nextPage(page, 8 * start)\n }\n }\n\n _fillBit (bit, start, end) {\n var page = this._getPage(start, bit)\n\n // TODO: this can be optimised a lot in the case of end - start > 32768\n // in that case clear levels of 32768 ** 2 instead etc\n\n while (start < end) {\n const delta = end - start < 32768 ? end - start : 32768\n start += this._setPageBits(page, bit, start & 32767, delta)\n if (start !== end) page = this._nextPage(page, start)\n }\n }\n\n _nextPage (page, start) {\n const i = ++this._offsets[page.level]\n return i === 32768\n ? this._getPage(start, true)\n : this._parents[page.level].children[i] || this._addPage(this._parents[page.level], i)\n }\n\n _setPageBuffer (page, buf, start) {\n new Uint8Array(page.bits.buffer, page.bits.byteOffset, page.bits.length * 4).set(buf, start)\n start >>>= 2\n this._update(page, start, start + (buf.length >>> 2) + (buf.length & 3 ? 1 : 0))\n return buf.length\n }\n\n _setPageBits (page, bit, start, end) {\n const s = start >>> 5\n const e = end >>> 5\n const sm = 0xffffffff >>> (start & 31)\n const em = ~(0xffffffff >>> (end & 31))\n\n if (s === e) {\n page.bits[s] = bit\n ? page.bits[s] | (sm & em)\n : page.bits[s] & ~(sm & em)\n this._update(page, s, s + 1)\n return end - start\n }\n\n page.bits[s] = bit\n ? page.bits[s] | sm\n : page.bits[s] & (~sm)\n\n if (e - s > 2) page.bits.fill(bit ? 0xffffffff : 0, s + 1, e - 1)\n\n if (e === 1024) {\n page.bits[e - 1] = bit ? 0xffffffff : 0\n this._update(page, s, e)\n return end - start\n }\n\n page.bits[e] = bit\n ? page.bits[e] | em\n : page.bits[e] & (~em)\n\n this._update(page, s, e + 1)\n return end - start\n }\n\n _update (page, start, end) {\n for (; start < end; start++) {\n const upd = page.bits[start]\n this._updateAllOne(page, start, upd)\n this._updateOneOne(page, start, upd)\n }\n }\n\n _updateAllOne (page, b, upd) {\n var i = 1\n\n do {\n for (; i < 3; i++) {\n const buf = page.allOne[i]\n const r = b & 31\n const prev = buf[b >>>= 5]\n buf[b] = upd === 0xffffffff\n ? (prev | (0x80000000 >>> r))\n : (prev & ~(0x80000000 >>> r))\n upd = buf[b]\n if (upd === prev) return\n }\n\n b += this._offsets[page.level]\n page = this._parents[page.level]\n i = 0\n } while (page)\n }\n\n _updateOneOne (page, b, upd) {\n var i = 1\n\n do {\n for (; i < 3; i++) {\n const buf = page.oneOne[i]\n const r = b & 31\n const prev = buf[b >>>= 5]\n buf[b] = upd !== 0\n ? (prev | (0x80000000 >>> r))\n : (prev & ~(0x80000000 >>> r))\n upd = buf[b]\n if (upd === prev) return\n }\n\n b += this._offsets[page.level]\n page = this._parents[page.level]\n i = 0\n\n if (upd === 0 && page) {\n // all zeros, non root -> free page\n page.children[this._offsets[page.level - 1]] = undefined\n }\n } while (page)\n }\n\n _getPage (index, createIfMissing) {\n factor(index, this._path)\n\n while (index >= this.length) {\n if (!createIfMissing) return null\n this.grow()\n }\n\n var page = this._page\n\n for (var i = page.level; i > 0 && page; i--) {\n const p = this._path[i]\n this._parents[i - 1] = page\n page = page.children[p] || (createIfMissing ? this._addPage(page, p) : null)\n }\n\n return page\n }\n\n _addPage (page, i) {\n this._allocs++\n page = page.children[i] = new Page(page.level - 1)\n return page\n }\n}\n\nclass Iterator {\n constructor (bitfield) {\n this._bitfield = bitfield\n this._path = new Uint16Array(5)\n this._offsets = new Uint16Array(this._path.buffer, this._path.byteOffset + 2, 4)\n this._parents = new Array(4).fill(null)\n this._page = null\n this._allocs = bitfield._allocs\n\n this.seek(0)\n }\n\n seek (index) {\n this._allocs = this._bitfield._allocs\n\n if (index >= this._bitfield.length) {\n this._page = null\n return this\n }\n\n factor(index, this._path)\n\n this._page = this._bitfield._page\n for (var i = this._page.level; i > 0; i--) {\n this._parents[i - 1] = this._page\n this._page = this._page.children[this._path[i]] || ZEROS[i - 1]\n }\n\n return this\n }\n\n next (bit) {\n return bit ? this.nextTrue() : this.nextFalse()\n }\n\n nextFalse () {\n if (this._allocs !== this._bitfield._allocs) {\n // If a page has been alloced while we are iterating\n // and we have a zero page in our path we need to reseek\n // in case that page has been overwritten\n this.seek(defactor(this._path))\n }\n\n var page = this._page\n var b = this._path[0]\n var mask = MASK_INCL\n\n while (page) {\n for (var i = 0; i < 3; i++) {\n const r = b & 31\n const clz = Math.clz32((~page.allOne[i][b >>>= 5]) & mask[r])\n if (clz !== 32) return this._downLeftFalse(page, i, b, clz)\n mask = MASK\n }\n\n b = this._offsets[page.level]\n page = this._parents[page.level]\n }\n\n return -1\n }\n\n _downLeftFalse (page, i, b, clz) {\n while (true) {\n while (i) {\n b = (b << 5) + clz\n clz = Math.clz32(~page.allOne[--i][b])\n }\n\n b = (b << 5) + clz\n\n if (!page.level) break\n\n this._parents[page.level - 1] = page\n this._path[page.level] = b\n\n page = page.children[b]\n i = 3\n clz = b = 0\n }\n\n this._page = page\n this._path[0] = b\n\n return this._inc()\n }\n\n nextTrue () {\n var page = this._page\n var b = this._path[0]\n var mask = MASK_INCL\n\n while (page) {\n for (var i = 0; i < 3; i++) {\n const r = b & 31\n const clz = Math.clz32(page.oneOne[i][b >>>= 5] & mask[r])\n if (clz !== 32) return this._downLeftTrue(page, i, b, clz)\n mask = MASK\n }\n\n b = this._offsets[page.level]\n page = this._parents[page.level]\n }\n\n return -1\n }\n\n _downLeftTrue (page, i, b, clz) {\n while (true) {\n while (i) {\n b = (b << 5) + clz\n clz = Math.clz32(page.oneOne[--i][b])\n }\n\n b = (b << 5) + clz\n\n if (!page.level) break\n\n this._parents[page.level - 1] = page\n this._path[page.level] = b\n\n page = page.children[b]\n i = 3\n clz = b = 0\n }\n\n this._page = page\n this._path[0] = b\n\n return this._inc()\n }\n\n _inc () {\n const n = defactor(this._path)\n if (this._path[0] < 32767) this._path[0]++\n else this.seek(n + 1)\n return n\n }\n}\n\nfunction defactor (out) {\n return ((((out[3] * 32768 + out[2]) * 32768) + out[1]) * 32768) + out[0]\n}\n\nfunction factor (n, out) {\n n = (n - (out[0] = (n & 32767))) / 32768\n n = (n - (out[1] = (n & 32767))) / 32768\n out[3] = ((n - (out[2] = (n & 32767))) / 32768) & 32767\n}\n", "var Protocol = require('hypercore-protocol')\nvar timeout = require('timeout-refresh')\nvar bitfield = require('fast-bitfield')\nvar set = require('unordered-set')\nvar rle = require('bitfield-rle').align(4)\nvar treeIndex = require('./tree-index')\n\nvar EMPTY = new Uint8Array(1024)\n\nmodule.exports = replicate\n\nfunction replicate (feed, initiator, opts) {\n feed.ifAvailable.wait()\n var stream = Protocol.isProtocolStream(initiator) ? initiator : opts.stream\n\n if (!stream) {\n if (!opts.keyPair) opts.keyPair = feed.noiseKeyPair\n stream = new Protocol(initiator, opts)\n }\n\n if (feed.opened) onready(null)\n else feed.ready(onready)\n\n return stream\n\n function onready (err) {\n feed.ifAvailable.continue()\n\n if (err) return stream.destroy(err)\n if (stream.destroyed) return\n if (stream.opened(feed.key)) return\n\n if (opts.noise !== false && opts.onfeedauthenticate) {\n if (!stream.remotePublicKey) {\n feed.ifAvailable.wait()\n stream.setMaxListeners(0)\n stream.on('close', onhandshake)\n stream.on('handshake', onhandshake)\n return\n }\n feedauthenticate()\n return\n }\n replicatePeer()\n }\n\n function onhandshake () {\n feed.ifAvailable.continue()\n stream.off('close', onhandshake)\n stream.off('handshake', onhandshake)\n feedauthenticate()\n }\n\n function feedauthenticate () {\n if (stream.destroyed) return\n if (stream.opened(feed.key)) return\n feed.ifAvailable.wait()\n opts.onfeedauthenticate(feed, stream.remotePublicKey, function (err) {\n feed.ifAvailable.continue()\n if (stream.destroyed) return\n if (stream.opened(feed.key)) return\n if (err) {\n stream.close(feed.discoveryKey)\n return\n }\n replicatePeer()\n })\n }\n\n function replicatePeer () {\n if (opts.noise !== false) {\n if (stream.remoteOpened(feed.key) && !stream.remoteVerified(feed.key)) {\n stream.close(feed.discoveryKey)\n return\n }\n }\n\n var peer = new Peer(feed, opts)\n\n peer.feed = feed\n peer.stream = stream.open(feed.key, peer)\n\n stream.setMaxListeners(0)\n peer.ready()\n feed.emit('replicating', stream)\n }\n}\n\nfunction Peer (feed, opts) {\n if (opts.extensions) throw new Error('Per peer extensions is not supported. Use feed.registerExtension instead')\n\n this.feed = feed\n this.stream = null // set by replicate just after creation\n this.wants = bitfield()\n this.remoteBitfield = bitfield()\n this.remoteLength = 0\n this.remoteWant = false\n this.remoteTree = null\n this.remoteAck = false\n this.remoteOpened = false\n this.live = !!opts.live\n this.sparse = feed.sparse\n this.ack = !!opts.ack\n\n this.remoteDownloading = true\n this.remoteUploading = true\n this.remoteExtensions = feed.extensions.remote()\n this.downloading = typeof opts.download === 'boolean' ? opts.download : feed.downloading\n this.uploading = typeof opts.upload === 'boolean' ? opts.upload : feed.uploading\n\n this.updated = false\n\n this.maxRequests = opts.maxRequests || feed.maxRequests || 16\n this.urgentRequests = this.maxRequests + 16\n this.inflightRequests = []\n this.inflightWants = 0\n\n this._index = -1\n this._lastBytes = 0\n this._first = true\n this._closed = false\n this._destroyed = false\n this._defaultDownloading = this.downloading\n this._iterator = this.remoteBitfield.iterator()\n this._requestTimeout = null\n\n this.stats = !opts.stats ? null : {\n uploadedBytes: 0,\n uploadedBlocks: 0,\n downloadedBytes: 0,\n downloadedBlocks: 0\n }\n}\n\nObject.defineProperty(Peer.prototype, 'remoteAddress', {\n enumerable: true,\n get: function () {\n return this.stream.stream.remoteAddress\n }\n})\n\nObject.defineProperty(Peer.prototype, 'remoteType', {\n enumerable: true,\n get: function () {\n return this.stream.stream.remoteType\n }\n})\n\nObject.defineProperty(Peer.prototype, 'remotePublicKey', {\n enumerable: true,\n get: function () {\n return this.stream.state.remotePublicKey\n }\n})\n\nPeer.prototype.onwant = function (want) {\n if (!this.uploading) return\n // We only reploy to multipla of 8192 in terms of offsets and lengths for want messages\n // since this is much easier for the bitfield, in terms of paging.\n if ((want.start & 8191) || (want.length & 8191)) return\n if (!this.remoteWant && this.feed.length && this.feed.bitfield.get(this.feed.length - 1)) {\n // Eagerly send the length of the feed to the otherside\n // TODO: only send this if the remote is not wanting a region\n // where this is contained in\n this.stream.have({ start: this.feed.length - 1 })\n }\n this.remoteWant = true\n var rle = this.feed.bitfield.compress(want.start, want.length)\n this.stream.have({ start: want.start, length: want.length, bitfield: rle })\n}\n\nPeer.prototype.ondata = function (data) {\n var self = this\n\n // Ignore unrequested messages unless we allow push\n // TODO: would be better to check if the byte range was requested instead, but this works fine\n var allowPush = this.feed.allowPush || !data.value\n if (!allowPush && !this.feed._reserved.get(data.index)) {\n // If we do not have this block, send back unhave message for this index,\n // to let the remote know we rejected it.\n // TODO: we might want to have some \"unwanted push\" threshold to punish spammers\n if (!self.feed.bitfield.get(data.index)) self.unhave({ start: data.index })\n self._clear(data.index, !data.value)\n return\n }\n\n this.feed._putBuffer(data.index, data.value, data, this, function (err) {\n if (err) return self.destroy(err)\n if (data.value) self.remoteBitfield.set(data.index, false)\n if (self.remoteAck) {\n // Send acknowledgement.\n // In the future this could batch several ACKs at once\n self.stream.have({ start: data.index, length: 1, ack: true })\n }\n if (self.stats && data.value) {\n self.stats.downloadedBlocks += 1\n self.stats.downloadedBytes += data.value.length\n }\n self._clear(data.index, !data.value)\n })\n}\n\nPeer.prototype._clear = function (index, hash) {\n // TODO: optimize me (no splice and do not run through all ...)\n for (var i = 0; i < this.inflightRequests.length; i++) {\n if (this.inflightRequests[i].index === index) {\n if (this._requestTimeout !== null) this._requestTimeout.refresh()\n this.inflightRequests.splice(i, 1)\n i--\n }\n }\n\n this.feed._reserved.set(index, false)\n // TODO: only update all if we have overlapping selections\n this.feed._updatePeers()\n\n if (this.inflightRequests.length === 0 && this._requestTimeout !== null) {\n this._requestTimeout.destroy()\n this._requestTimeout = null\n }\n}\n\nPeer.prototype.onrequest = function (request) {\n if (!this.uploading) return\n if (request.bytes) return this._onbytes(request)\n\n // lazily instantiate the remote tree\n if (!this.remoteTree) this.remoteTree = treeIndex()\n\n var self = this\n var opts = { digest: request.nodes, hash: request.hash, tree: this.remoteTree }\n\n this.feed.proof(request.index, opts, onproof)\n\n function onproof (err, proof) {\n if (err) return self.destroy(err)\n if (request.hash) onvalue(null, null)\n else if (self.feed.bitfield.get(request.index)) self.feed._getBuffer(request.index, onvalue)\n\n function onvalue (err, value) {\n if (!self.uploading) return\n if (err) return self.destroy(err)\n\n if (value) {\n if (self.stats) {\n self.stats.uploadedBlocks += 1\n self.stats.uploadedBytes += value.length\n self.feed._stats.uploadedBlocks += 1\n self.feed._stats.uploadedBytes += value.length\n }\n self.feed.emit('upload', request.index, value, self)\n }\n\n // TODO: prob not needed with new bitfield\n if (request.index + 1 > self.remoteLength) {\n self.remoteLength = request.index + 1\n self._updateEnd()\n }\n\n self.stream.data({\n index: request.index,\n value: value,\n nodes: proof.nodes,\n signature: proof.signature\n })\n }\n }\n}\n\nPeer.prototype._updateOptions = function () {\n if (this.ack || this.feed.extensions.length) {\n this.stream.options({\n ack: this.ack,\n extensions: this.feed.extensions.names()\n })\n }\n}\n\nPeer.prototype.setDownloading = function (downloading) {\n if (downloading === this.downloading) return\n this.downloading = downloading\n this.stream.status({\n downloading,\n uploading: this.uploading\n })\n this.update()\n}\n\nPeer.prototype.setUploading = function (uploading) {\n if (uploading === this.uploading) return\n this.uploading = uploading\n this.stream.status({\n downloading: this.downloading,\n uploading\n })\n this.update()\n}\n\nPeer.prototype._onbytes = function (request) {\n var self = this\n\n this.feed.seek(request.bytes, { wait: false }, function (err, index) {\n if (err) {\n request.bytes = 0\n self.onrequest(request)\n return\n }\n\n // quick'n'dirty filter for parallel bytes requests\n // it does not matter that this doesn't catch ALL parallel requests - just a bandwidth optimization\n if (self._lastBytes === request.bytes) return\n self._lastBytes = request.bytes\n\n request.bytes = 0\n request.index = index\n request.nodes = 0\n\n self.onrequest(request)\n })\n}\n\nPeer.prototype._onrequesttimeout = function () {\n this._requestTimeout = null\n if (!this.inflightRequests.length) return\n\n var first = this.inflightRequests[0]\n\n if (first.hash ? this.feed.tree.get(2 * first.index) : this.feed.bitfield.get(first.index)) {\n // prob a bytes response\n this.inflightRequests.shift()\n this.feed._reserved.set(first.index, false)\n\n if (this.stream.stream.timeout) {\n this._requestTimeout = timeout(this.stream.stream.timeout.ms, this._onrequesttimeout, this)\n }\n return\n }\n\n this.destroy(new Error('Request timeout'))\n}\n\nPeer.prototype.onhave = function (have) {\n this.feed.emit('peer-ack', this, have)\n\n if (this.ack && have.ack && !have.bitfield && this.feed.bitfield.get(have.start)) {\n this.stream.stream.emit('ack', have)\n return\n }\n\n var updated = this._first\n if (this._first) this._first = false\n\n // In this impl, we only sent WANTs for 1024 * 1024 length ranges\n // so if we get a HAVE for that it is a reply to a WANT.\n if (have.length === 1024 * 1024 && this.inflightWants > 0) {\n this.feed.ifAvailable.continue()\n this.inflightWants--\n }\n\n if (have.bitfield) { // TODO: handle start !== 0\n if (have.length === 0 || have.length === 1) { // length === 1 is for backwards compat\n this.wants = null // we are in backwards compat mode where we subscribe everything\n }\n var buf = rle.decode(have.bitfield)\n var bits = buf.length * 8\n remoteAndNotLocal(this.feed.bitfield, buf, this.remoteBitfield.littleEndian, have.start)\n this.remoteBitfield.fill(buf, have.start)\n if (bits > this.remoteLength) {\n this.remoteLength = this.remoteBitfield.last() + 1\n updated = true\n }\n } else {\n // TODO: if len > something simply copy a 0b1111... buffer to the bitfield\n\n var start = have.start\n var len = have.length || 1\n\n while (len--) this.remoteBitfield.set(start, !this.feed.bitfield.get(start++))\n if (start > this.remoteLength) {\n this.remoteLength = start\n updated = true\n }\n }\n\n if (updated) {\n this.updated = true\n this.feed.emit('remote-update', this)\n }\n\n this._updateEnd()\n this.update()\n}\n\nPeer.prototype._updateEnd = function () {\n if (this.live || this.feed.sparse || !this.feed._selections.length) return\n\n var sel = this.feed._selections[0]\n var remoteLength = this.feed.length || -1\n\n for (var i = 0; i < this.feed.peers.length; i++) {\n if (this.feed.peers[i].remoteLength > remoteLength) {\n remoteLength = this.feed.peers[i].remoteLength\n }\n }\n\n sel.end = remoteLength\n}\n\nPeer.prototype.onextension = function (id, message) {\n this.remoteExtensions.onmessage(id, message, this)\n}\n\nPeer.prototype.onstatus = function (info) {\n this.remoteUploading = info.uploading\n this.remoteDownloading = info.downloading\n\n if (!info.uploading) {\n while (this.inflightRequests.length) {\n const data = this.inflightRequests[0]\n this._clear(data.index, !data.value)\n }\n for (var i = 0; i < this.inflightWants; i++) {\n this.feed.ifAvailable.continue()\n }\n this.inflightWants = 0\n this.wants = bitfield()\n }\n this.update()\n if (info.downloading || this.live) return\n if (this.feed._selections.length && this.downloading) return\n this._autoEnd()\n}\n\nPeer.prototype._autoEnd = function () {\n if (this.uploading && this.remoteDownloading) return\n if ((this.sparse || this.live) && (this.remoteUploading || this.downloading)) return\n this.end()\n}\n\nPeer.prototype.onunhave = function (unhave) {\n var start = unhave.start\n var len = unhave.length || 1\n\n if (start === 0 && len >= this.remoteLength) {\n this.remoteLength = 0\n this.remoteBitfield = bitfield()\n return\n }\n\n while (len--) this.remoteBitfield.set(start++, false)\n}\n\nPeer.prototype.onunwant =\nPeer.prototype.oncancel = function () {\n // TODO: impl all of me\n}\n\nPeer.prototype.onclose = function () {\n this._close()\n}\n\nPeer.prototype.have = function (have) { // called by feed\n if (this.stream && this.remoteWant) this.stream.have(have)\n var start = have.start\n var len = have.length\n while (len--) this.remoteBitfield.set(start++, false)\n}\n\nPeer.prototype.unhave = function (unhave) { // called by feed\n if (this.stream && this.remoteWant) this.stream.unhave(unhave)\n}\n\nPeer.prototype.haveBytes = function (bytes) { // called by feed\n for (var i = 0; i < this.inflightRequests.length; i++) {\n if (this.inflightRequests[i].bytes === bytes) {\n this.feed._reserved.set(this.inflightRequests[i].index, false)\n this.inflightRequests.splice(i, 1)\n i--\n }\n }\n\n this.update()\n\n if (this.inflightRequests.length === 0 && this._requestTimeout !== null) {\n this._requestTimeout.destroy()\n this._requestTimeout = null\n }\n}\n\nPeer.prototype.update = function () {\n // do nothing\n while (this._update()) {}\n this._sendWantsMaybe()\n}\n\nPeer.prototype._update = function () {\n // should return true if mutated false if not\n if (!this.downloading || !this.remoteUploading) return false\n var selections = this.feed._selections\n var waiting = this.feed._waiting\n var wlen = waiting.length\n var slen = selections.length\n var inflight = this.inflightRequests.length\n var offset = 0\n var i = 0\n\n // TODO: less duplicate code here\n // TODO: re-add priority levels\n\n while (inflight < this.urgentRequests) {\n offset = Math.floor(Math.random() * waiting.length)\n\n for (i = 0; i < waiting.length; i++) {\n var w = waiting[offset++]\n if (offset === waiting.length) offset = 0\n\n this._downloadWaiting(w)\n if (waiting.length !== wlen) return true // mutated\n if (this.inflightRequests.length >= this.urgentRequests) return false\n }\n if (inflight === this.inflightRequests.length) break\n inflight = this.inflightRequests.length\n }\n\n while (inflight < this.maxRequests) {\n offset = Math.floor(Math.random() * selections.length)\n\n for (i = 0; i < selections.length; i++) {\n var s = selections[offset++]\n if (offset === selections.length) offset = 0\n\n if (!s.iterator) s.iterator = this.feed.bitfield.iterator(s.start, s.end)\n if (s.blocks) this._downloadBlocks(s)\n else this._downloadRange(s)\n if (selections.length !== slen) return true // mutated\n if (this.inflightRequests.length >= this.maxRequests) return false\n }\n\n if (inflight === this.inflightRequests.length) return false\n inflight = this.inflightRequests.length\n }\n\n return false\n}\n\nPeer.prototype.onopen = function () {\n this.feed.ifAvailable.continue()\n this.remoteOpened = true\n\n this._updateOptions()\n\n if (!this.uploading || !this.downloading) {\n this.stream.status({\n uploading: this.uploading,\n downloading: this.downloading\n })\n }\n\n this._sendWants()\n this.feed.emit('peer-open', this)\n}\n\nPeer.prototype.onoptions = function (options) {\n this.remoteAck = options.ack\n this.remoteExtensions.update(options.extensions)\n}\n\nPeer.prototype.ready = function () {\n this.feed.ifAvailable.wait() // continued by onopen or close\n set.add(this.feed.peers, this)\n this.feed.emit('peer-add', this)\n if (this.stream.remoteOpened) this.onopen()\n}\n\nPeer.prototype.end = function () {\n if (!this.downloading && !this.remoteDownloading && !this.live) {\n if (!this._defaultDownloading) {\n this.stream.status({ downloading: false, uploading: false })\n }\n this._close()\n return\n }\n if (!this._closed) {\n this._closed = true\n this.downloading = false\n this.stream.status({ downloading: false, uploading: true })\n } else {\n if (!this.live) this._close()\n }\n}\n\nPeer.prototype._close = function () {\n if (!this._destroyed) {\n this._destroyed = true\n this.stream.close()\n }\n if (this._index === -1) return\n set.remove(this.feed.peers, this)\n this._index = -1\n for (var i = 0; i < this.inflightRequests.length; i++) {\n this.feed._reserved.set(this.inflightRequests[i].index, false)\n }\n if (this._requestTimeout !== null) {\n this._requestTimeout.destroy()\n this._requestTimeout = null\n }\n this._updateEnd()\n this.remoteWant = false\n this.feed._updatePeers()\n this.feed.emit('peer-remove', this)\n for (i = 0; i < this.inflightWants; i++) {\n this.feed.ifAvailable.continue()\n }\n if (!this.remoteOpened) {\n this.feed.ifAvailable.continue()\n }\n}\n\nPeer.prototype.destroy = function (err) {\n if (this._index === -1 || this._destroyed) return\n this.stream.destroy(err)\n this._destroyed = true\n this._close()\n}\n\nPeer.prototype._sendWantsMaybe = function () {\n if (this.inflightRequests.length < this.urgentRequests) this._sendWants()\n}\n\nPeer.prototype._sendWants = function () {\n if (!this.wants || !this.downloading || !this.remoteOpened || !this.remoteUploading) return\n if (this.inflightWants >= 16) return\n\n var i\n\n for (i = 0; i < this.feed._waiting.length; i++) {\n var w = this.feed._waiting[i]\n if (w.index === -1) this._sendWantRange(w)\n else this._sendWant(w.index)\n if (this.inflightWants >= 16) return\n }\n\n for (i = 0; i < this.feed._selections.length; i++) {\n var s = this.feed._selections[i]\n this._sendWantRange(s)\n if (this.inflightWants >= 16) return\n }\n\n // always sub to the first range for now, usually what you want\n this._sendWant(0)\n}\n\nPeer.prototype._sendWantRange = function (s) {\n if (s.blocks) {\n if (!s.selected) s.selected = new WeakSet()\n if (s.selected.has(this)) return\n s.selected.add(this)\n for (const block of s.blocks) {\n this._sendWant(block)\n }\n return\n }\n\n var want = s.start ? 1024 * 1024 * Math.floor(s.start / 1024 / 1024) : 0\n\n while (true) {\n if (want >= this.remoteLength) return\n if (s.end !== -1 && want >= s.end) return\n\n if (this._sendWant(want)) return\n\n // check if region is already selected - if so try next one\n if (!this.wants.get(Math.floor(want / 1024 / 1024))) return\n want += 1024 * 1024\n }\n}\n\nPeer.prototype._sendWant = function (index) {\n var len = 1024 * 1024\n var j = Math.floor(index / len)\n if (this.wants.get(j)) return false\n this.wants.set(j, true)\n this.inflightWants++\n this.feed.ifAvailable.wait()\n this.stream.want({ start: j * len, length: len })\n return true\n}\n\nPeer.prototype._downloadWaiting = function (wait) {\n if (!wait.bytes) {\n if (!this.remoteBitfield.get(wait.index) || !this.feed._reserved.set(wait.index, true)) {\n if (!wait.update || this.feed._reserved.get(wait.index)) return\n const i = this._iterator.seek(wait.index).next(true)\n if (i === -1 || !this.feed._reserved.set(i, true)) return\n wait.index = i\n }\n this._request(wait.index, 0, wait.hash === true)\n return\n }\n\n this._downloadRange(wait)\n}\n\nPeer.prototype._downloadBlocks = function (range) {\n while (range.blocksDownloaded < range.blocks.length) {\n const blk = range.blocks[range.blocksDownloaded]\n if (!this.feed.bitfield.get(blk)) break\n range.blocksDownloaded++\n }\n\n if (range.blocksDownloaded >= range.blocks.length) {\n set.remove(this.feed._selections, range)\n range.callback(null)\n return\n }\n\n for (var i = range.blocksDownloaded; i < range.blocks.length; i++) {\n const blk = range.blocks[i]\n if (this.remoteBitfield.get(blk) && this.feed._reserved.set(blk, true)) {\n range.requested++\n this._request(blk, 0, false)\n return\n }\n }\n}\n\nPeer.prototype._downloadRange = function (range) {\n if (!range.iterator) range.iterator = this.feed.bitfield.iterator(range.start, range.end)\n\n var reserved = this.feed._reserved\n var ite = this._iterator\n var wantedEnd = Math.min(range.end === -1 ? this.remoteLength : range.end, this.remoteLength)\n\n var i = range.linear ? ite.seek(range.start).next(true) : nextRandom(ite, range.start, wantedEnd)\n var start = i\n\n if (i === -1 || i >= wantedEnd) {\n if (!range.bytes && range.end > -1 && this.feed.length >= range.end && range.iterator.seek(0).next() === -1) {\n set.remove(this.feed._selections, range)\n range.callback(null)\n if (!this.live && !this.sparse && !this.feed._selections.length) this.end()\n }\n return\n }\n\n while ((range.hash && this.feed.tree.get(2 * i)) || !reserved.set(i, true)) {\n i = ite.next(true)\n\n if (i > -1 && i < wantedEnd) {\n // check this index\n continue\n }\n\n if (!range.linear && start !== 0) {\n // retry from the beginning since we are iterating randomly and started !== 0\n i = ite.seek(range.start).next(true)\n start = 0\n if (i > -1 && i < wantedEnd) continue\n }\n\n // we have checked all indexes.\n // if we are looking for hashes we should check if we have all now (first check only checks blocks)\n if (range.hash) {\n // quick'n'dirty check if have all hashes - can be optimized be checking only tree roots\n // but we don't really request long ranges of hashes so yolo\n for (var j = range.start; j < wantedEnd; j++) {\n if (!this.feed.tree.get(2 * j)) return\n }\n if (!range.bytes) {\n set.remove(this.feed._selections, range)\n range.callback(null)\n }\n }\n\n // exit the update loop - nothing to do\n return\n }\n\n range.requested++\n this._request(i, range.bytes || 0, range.hash)\n}\n\nPeer.prototype._request = function (index, bytes, hash) {\n var request = {\n bytes: bytes,\n index: index,\n hash: hash,\n nodes: this.feed.digest(index)\n }\n\n if (this._requestTimeout === null && this.stream.stream.timeout) {\n this._requestTimeout = timeout(this.stream.stream.timeout.ms, this._onrequesttimeout, this)\n }\n this.inflightRequests.push(request)\n this.stream.request(request)\n}\n\nPeer.prototype.extension = function (id, message) {\n this.stream.extension(id, message)\n}\n\nfunction createView (page) {\n var buf = page ? page.buffer : EMPTY\n return new DataView(buf.buffer, buf.byteOffset, 1024)\n}\n\nfunction remoteAndNotLocal (local, buf, le, start) {\n var remote = new DataView(buf.buffer, buf.byteOffset)\n var len = Math.floor(buf.length / 4)\n var arr = new Uint32Array(buf.buffer, buf.byteOffset, len)\n var p = start / 8192 // 8192 is bits per bitfield page\n var l = 0\n var page = createView(local.pages.get(p++, true))\n\n for (var i = 0; i < len; i++) {\n arr[i] = remote.getUint32(4 * i, !le) & ~page.getUint32(4 * (l++), !le)\n\n if (l === 256) {\n page = createView(local.pages.get(p++, true))\n l = 0\n }\n }\n}\n\nfunction nextRandom (ite, start, end) {\n var len = end - start\n var i = ite.seek(Math.floor(Math.random() * len) + start).next(true)\n return i === -1 || i >= end ? ite.seek(start).next(true) : i\n}\n", "// Copy of index.js that extends from EventEmitter\n\nconst events = require('events')\nconst inherits = require('inherits')\n\nconst opening = Symbol('opening queue')\nconst preclosing = Symbol('closing when inactive')\nconst closing = Symbol('closing queue')\nconst sync = Symbol('sync')\nconst fastClose = Symbol('fast close')\n\nmodule.exports = Nanoresource\n\nfunction Nanoresource (opts) {\n if (!(this instanceof Nanoresource)) return new Nanoresource(opts)\n events.EventEmitter.call(this)\n\n if (!opts) opts = {}\n if (opts.open) this._open = opts.open\n if (opts.close) this._close = opts.close\n\n this.opening = false\n this.opened = false\n this.closing = false\n this.closed = false\n this.actives = 0\n\n this[opening] = null\n this[preclosing] = null\n this[closing] = null\n this[sync] = false\n this[fastClose] = true\n}\n\ninherits(Nanoresource, events.EventEmitter)\n\nNanoresource.prototype._open = function (cb) {\n cb(null)\n}\n\nNanoresource.prototype._close = function (cb) {\n cb(null)\n}\n\nNanoresource.prototype.open = function (cb) {\n if (!cb) cb = noop\n\n if (this[closing] || this.closed) return process.nextTick(cb, new Error('Resource is closed'))\n if (this.opened) return process.nextTick(cb)\n\n if (this[opening]) {\n this[opening].push(cb)\n return\n }\n\n this.opening = true\n this[opening] = [cb]\n this[sync] = true\n this._open(onopen.bind(this))\n this[sync] = false\n}\n\nNanoresource.prototype.active = function (cb) {\n if ((this[fastClose] && this[preclosing]) || this[closing] || this.closed) {\n if (cb) process.nextTick(cb, new Error('Resource is closed'))\n return false\n }\n this.actives++\n return true\n}\n\nNanoresource.prototype.inactive = function (cb, err, val) {\n if (!--this.actives) {\n const queue = this[preclosing]\n if (queue) {\n this[preclosing] = null\n while (queue.length) this.close(queue.shift())\n }\n }\n\n if (cb) cb(err, val)\n}\n\nNanoresource.prototype.close = function (allowActive, cb) {\n if (typeof allowActive === 'function') return this.close(false, allowActive)\n if (!cb) cb = noop\n\n if (allowActive) this[fastClose] = false\n\n if (this.closed) return process.nextTick(cb)\n\n if (this.actives || this[opening]) {\n if (!this[preclosing]) this[preclosing] = []\n this[preclosing].push(cb)\n return\n }\n\n if (!this.opened) {\n this.closed = true\n process.nextTick(cb)\n return\n }\n\n if (this[closing]) {\n this[closing].push(cb)\n return\n }\n\n this.closing = true\n this[closing] = [cb]\n this[sync] = true\n this._close(onclose.bind(this))\n this[sync] = false\n}\n\nfunction onopen (err) {\n if (this[sync]) return process.nextTick(onopen.bind(this), err)\n\n const oqueue = this[opening]\n this[opening] = null\n this.opening = false\n this.opened = !err\n\n while (oqueue.length) oqueue.shift()(err)\n\n const cqueue = this[preclosing]\n if (cqueue && !this.actives) {\n this[preclosing] = null\n while (cqueue.length) this.close(cqueue.shift())\n }\n}\n\nfunction onclose (err) {\n if (this[sync]) return process.nextTick(onclose.bind(this), err)\n const queue = this[closing]\n this.closing = false\n this[closing] = null\n this.closed = !err\n while (queue.length) queue.shift()(err)\n}\n\nfunction noop () {}\n", "//\n// Copyright 2023 DXOS.org\n//\n\n// Empty module to stub packages that we know won't be used at runtime and can be replaces with a mock like this.\nmodule.exports = new Proxy(\n {},\n {\n get: (target, prop) => {\n throw new Error('Package has been stripped');\n },\n },\n);\n", "const { Writable, Readable } = require('streamx')\n\nclass WriteStream extends Writable {\n constructor (feed, opts) {\n super()\n\n this.feed = feed\n this.maxBlockSize = (opts && opts.maxBlockSize) || 0\n }\n\n _writev (batch, cb) {\n this.feed.append(this.maxBlockSize ? this._ensureMaxSize(batch) : batch, cb)\n }\n\n _ensureMaxSize (batch) {\n for (let i = 0; i < batch.length; i++) {\n let blk = batch[i]\n if (blk.length > this.maxBlockSize) {\n const chunked = []\n while (blk.length > this.maxBlockSize) {\n chunked.push(blk.slice(0, this.maxBlockSize))\n blk = blk.slice(this.maxBlockSize)\n }\n if (blk.length) chunked.push(blk)\n batch.splice(i, 1, ...chunked)\n i += chunked.length - 1\n }\n }\n return batch\n }\n}\n\nclass ReadStream extends Readable {\n constructor (feed, opts = {}) {\n super()\n\n this.feed = feed\n this.start = opts.start || 0\n this.end = typeof opts.end === 'number' ? opts.end : -1\n this.live = !!opts.live\n this.snapshot = opts.snapshot !== false\n this.tail = !!opts.tail\n this.index = this.start\n this.options = { wait: opts.wait !== false, ifAvailable: !!opts.ifAvailable, valueEncoding: opts.valueEncoding }\n }\n\n _open (cb) {\n this.feed.ready((err) => {\n if (err) return cb(err)\n if (this.end === -1) {\n if (this.live) this.end = Infinity\n else if (this.snapshot) this.end = this.feed.length\n if (this.start > this.end) this.push(null)\n }\n if (this.tail) this.start = this.feed.length\n this.index = this.start\n cb(null)\n })\n }\n\n _read (cb) {\n if (this.index === this.end || (this.end === -1 && this.index >= this.feed.length)) {\n this.push(null)\n return cb(null)\n }\n this.feed.get(this.index++, this.options, (err, block) => {\n if (err) return cb(err)\n this.push(block)\n cb(null)\n })\n }\n}\n\nmodule.exports = { WriteStream, ReadStream }\n", "var low = require('last-one-wins')\nvar remove = require('unordered-array-remove')\nvar set = require('unordered-set')\nvar MerkleGenerator = require('merkle-tree-stream/generator')\nvar flat = require('flat-tree')\nvar codecs = require('codecs')\nvar batcher = require('atomic-batcher')\nvar inherits = require('inherits')\nvar bitfield = require('./lib/bitfield')\nvar sparseBitfield = require('sparse-bitfield')\nvar treeIndex = require('./lib/tree-index')\nvar storage = require('./lib/storage')\nvar crypto = require('hypercore-crypto')\nvar inspect = require('inspect-custom-symbol')\nvar pretty = require('pretty-hash')\nvar Nanoguard = require('nanoguard')\nvar safeBufferEquals = require('./lib/safe-buffer-equals')\nvar replicate = require('./lib/replicate')\nvar Protocol = require('hypercore-protocol')\nvar Message = require('abstract-extension')\nvar Nanoresource = require('nanoresource/emitter')\nvar defaultStorage = require('hypercore-default-storage')\nvar { WriteStream, ReadStream } = require('hypercore-streams')\n\nclass Extension extends Message {\n broadcast (message) {\n const feed = this.local.handlers\n const buf = this.encoding.encode(message)\n let broadcasted = false\n for (const peer of feed.peers) {\n broadcasted = true\n peer.extension(this.id, buf)\n }\n return broadcasted\n }\n\n send (message, peer) {\n peer.extension(this.id, this.encode(message))\n }\n}\n\nvar defaultCrypto = {\n sign (data, sk, cb) {\n return cb(null, crypto.sign(data, sk))\n },\n verify (sig, data, pk, cb) {\n return cb(null, crypto.verify(sig, data, pk))\n }\n}\n\nmodule.exports = Feed\n\nfunction Feed (createStorage, key, opts) {\n if (!(this instanceof Feed)) return new Feed(createStorage, key, opts)\n Nanoresource.call(this)\n\n if (typeof createStorage === 'string') createStorage = defaultStorageDir(createStorage)\n if (typeof createStorage !== 'function') throw new Error('Storage should be a function or string')\n\n if (typeof key === 'string') key = Buffer.from(key, 'hex')\n\n if (!Buffer.isBuffer(key) && !opts) {\n opts = key\n key = null\n }\n\n if (!opts) opts = {}\n\n var self = this\n\n var secretKey = opts.secretKey || null\n if (typeof secretKey === 'string') secretKey = Buffer.from(secretKey, 'hex')\n\n this.noiseKeyPair = opts.noiseKeyPair || Protocol.keyPair()\n this.live = opts.live !== false\n this.sparse = !!opts.sparse\n this.length = 0\n this.byteLength = 0\n this.maxRequests = opts.maxRequests || 16\n this.key = key || opts.key || null\n this.discoveryKey = this.key && crypto.discoveryKey(this.key)\n this.secretKey = secretKey\n this.bitfield = null\n this.tree = null\n this.writable = !!opts.writable\n this.readable = true\n this.downloading = opts.downloading !== false\n this.uploading = opts.uploading !== false\n this.allowPush = !!opts.allowPush\n this.peers = []\n this.ifAvailable = new Nanoguard()\n this.extensions = Extension.createLocal(this) // set Feed as the handlers\n\n this.crypto = opts.crypto || defaultCrypto\n\n // hooks\n this._onwrite = opts.onwrite || null\n\n this._force = !!opts.force\n this._expectedLength = -1\n this._indexing = !!opts.indexing\n this._createIfMissing = opts.createIfMissing !== false\n this._overwrite = !!opts.overwrite\n this._storeSecretKey = opts.storeSecretKey !== false\n this._alwaysIfAvailable = !!opts.ifAvailable\n this._merkle = null\n this._storage = storage(createStorage, opts)\n this._batch = batcher(this._onwrite ? workHook : work)\n\n this.timeouts = opts.timeouts || {\n get (cb) {\n cb(null)\n },\n update (cb) {\n cb(null)\n }\n }\n\n this._seq = 0\n this._waiting = []\n this._selections = []\n this._reserved = sparseBitfield()\n this._synced = null\n this._downloadingSet = typeof opts.downloading === 'boolean'\n\n this._stats = (typeof opts.stats !== 'undefined' && !opts.stats) ? null : {\n downloadedBlocks: 0,\n downloadedBytes: 0,\n uploadedBlocks: 0,\n uploadedBytes: 0\n }\n\n this._codec = toCodec(opts.valueEncoding)\n this._sync = low(sync)\n if (!this.sparse) this.download({ start: 0, end: -1 })\n\n if (this.sparse && opts.eagerUpdate) {\n this.update(function loop (err) {\n if (err) self.emit('update-error', err)\n self.update(loop)\n })\n }\n\n // open it right away\n this.open(onerror)\n\n function onerror (err) {\n if (err) self.emit('error', err)\n }\n\n function workHook (values, cb) {\n if (!self._merkle) return self._reloadMerkleStateBeforeAppend(workHook, values, cb)\n self._appendHook(values, cb)\n }\n\n function work (values, cb) {\n if (!self._merkle) return self._reloadMerkleStateBeforeAppend(work, values, cb)\n self._append(values, cb)\n }\n\n function sync (_, cb) {\n self._syncBitfield(cb)\n }\n}\n\ninherits(Feed, Nanoresource)\n\nFeed.discoveryKey = crypto.discoveryKey\n\nFeed.prototype[inspect] = function (depth, opts) {\n var indent = ''\n if (typeof opts.indentationLvl === 'number') {\n while (indent.length < opts.indentationLvl) indent += ' '\n }\n return 'Hypercore(\\n' +\n indent + ' key: ' + opts.stylize((this.key && pretty(this.key)), 'string') + '\\n' +\n indent + ' discoveryKey: ' + opts.stylize((this.discoveryKey && pretty(this.discoveryKey)), 'string') + '\\n' +\n indent + ' opened: ' + opts.stylize(this.opened, 'boolean') + '\\n' +\n indent + ' sparse: ' + opts.stylize(this.sparse, 'boolean') + '\\n' +\n indent + ' writable: ' + opts.stylize(this.writable, 'boolean') + '\\n' +\n indent + ' length: ' + opts.stylize(this.length, 'number') + '\\n' +\n indent + ' byteLength: ' + opts.stylize(this.byteLength, 'number') + '\\n' +\n indent + ' peers: ' + opts.stylize(this.peers.length, 'number') + '\\n' +\n indent + ')'\n}\n\n// TODO: instead of using a getter, update on remote-update/add/remove\nObject.defineProperty(Feed.prototype, 'remoteLength', {\n enumerable: true,\n get: function () {\n var len = 0\n for (var i = 0; i < this.peers.length; i++) {\n var remoteLength = this.peers[i].remoteLength\n if (remoteLength > len) len = remoteLength\n }\n return len\n }\n})\n\nObject.defineProperty(Feed.prototype, 'stats', {\n enumerable: true,\n get: function () {\n if (!this._stats) return null\n var peerStats = []\n for (var i = 0; i < this.peers.length; i++) {\n var peer = this.peers[i]\n peerStats[i] = peer.stats\n }\n return {\n peers: peerStats,\n totals: this._stats\n }\n }\n})\n\nFeed.prototype.replicate = function (initiator, opts) {\n if ((!this._selections.length || this._selections[0].end !== -1) && !this.sparse && !(opts && opts.live)) {\n // hack!! proper fix is to refactor ./replicate to *not* clear our non-sparse selection\n this.download({ start: 0, end: -1 })\n }\n\n if (isOptions(initiator) && !opts) {\n opts = initiator\n initiator = opts.initiator\n }\n\n opts = opts || {}\n opts.stats = !!this._stats\n opts.noise = !(opts.noise === false && opts.encrypted === false)\n\n return replicate(this, initiator, opts)\n}\n\nFeed.prototype.registerExtension = function (name, handlers) {\n return this.extensions.add(name, handlers)\n}\n\nFeed.prototype.onextensionupdate = function () {\n for (const peer of this.peers) peer._updateOptions()\n}\n\nFeed.prototype.setDownloading = function (downloading) {\n if (this.downloading === downloading && this._downloadingSet) return\n this.downloading = downloading\n this._downloadingSet = true\n this.ready((err) => {\n if (err) return\n for (const peer of this.peers) peer.setDownloading(this.downloading)\n })\n}\n\nFeed.prototype.setUploading = function (uploading) {\n if (uploading === this.uploading) return\n this.uploading = uploading\n this.ready((err) => {\n if (err) return\n for (const peer of this.peers) peer.setUploading(this.uploading)\n })\n}\n\n// Alias the nanoresource open method\nFeed.prototype.ready = Feed.prototype.open\n\nFeed.prototype.update = function (opts, cb) {\n if (typeof opts === 'function') return this.update(-1, opts)\n if (typeof opts === 'number') opts = { minLength: opts }\n if (!opts) opts = {}\n if (!cb) cb = noop\n\n var self = this\n var len = typeof opts.minLength === 'number' ? opts.minLength : -1\n\n this.ready(function (err) {\n if (err) return cb(err)\n if (len === -1) len = self.length + 1\n if (self.length >= len) return cb(null)\n\n const ifAvailable = typeof opts.ifAvailable === 'boolean'\n ? opts.ifAvailable\n : self._alwaysIfAvailable\n\n if (ifAvailable && self.writable && !opts.force) return cb(new Error('No update available from peers'))\n if (self.writable) cb = self._writeStateReloader(cb)\n\n var w = {\n hash: opts.hash !== false,\n bytes: 0,\n index: len - 1,\n options: opts,\n update: true,\n callback: cb\n }\n\n self._waiting.push(w)\n if (ifAvailable) self._ifAvailable(w, len)\n self._updatePeers()\n })\n}\n\n// Used to hint to the update guard if it can bail early\nFeed.prototype.setExpectedLength = function (len) {\n this._expectedLength = len\n this.ready((err) => {\n if (err) return\n\n this.ifAvailable.ready(() => {\n this._expectedLength = -1\n })\n\n if (this._expectedLength === -1 || this._expectedLength > this.length) return\n\n for (const w of this._waiting) {\n if (w.update && w.ifAvailable) w.callback(new Error('Expected length is less than current length'))\n }\n })\n}\n\n// Beware! This might break your core if you share forks with other people through replication\nFeed.prototype.truncate = function (newLength, cb) {\n if (!cb) cb = noop\n const self = this\n\n this.ready(function (err) {\n if (err) return cb(err)\n\n self._roots(newLength, function (err, roots) {\n if (err) return cb(err)\n\n const oldLength = self.length\n if (oldLength <= newLength) return cb(null)\n\n let byteLength = 0\n for (const { size } of roots) byteLength += size\n\n for (let i = oldLength; i < newLength; i++) self.data.set(i, false)\n self.byteLength = byteLength\n self.length = newLength\n self.tree.truncate(2 * newLength)\n self._merkle = new MerkleGenerator(crypto, roots)\n\n self._sync(null, function (err) {\n if (err) return cb(err)\n self._storage.deleteSignatures(newLength, oldLength, cb)\n })\n })\n })\n}\n\nFeed.prototype._ifAvailable = function (w, minLength) {\n var cb = w.callback\n var called = false\n var self = this\n\n w.callback = done\n w.ifAvailable = true\n\n if (this._expectedLength > -1 && this._expectedLength <= this.length) {\n return process.nextTick(w.callback, new Error('Expected length is less than current length'))\n }\n\n this.timeouts.update(function () {\n if (self.closed) return done(new Error('Closed'))\n\n process.nextTick(readyNT, self.ifAvailable, function () {\n if (self.closed) return done(new Error('Closed'))\n if (self.length >= minLength || self.remoteLength >= minLength) return\n done(new Error('No update available from peers'))\n })\n })\n\n function done (err) {\n if (called) return\n called = true\n\n var i = self._waiting.indexOf(w)\n if (i > -1) remove(self._waiting, i)\n cb(err)\n }\n}\n\nFeed.prototype._ifAvailableGet = function (w) {\n var cb = w.callback\n var called = false\n var self = this\n\n w.callback = done\n\n self.timeouts.get(function () {\n if (self.closed) return done(new Error('Closed'))\n\n process.nextTick(readyNT, self.ifAvailable, function () {\n if (self.closed) return done(new Error('Closed'))\n\n for (var i = 0; i < self.peers.length; i++) {\n var peer = self.peers[i]\n if (peer.remoteBitfield.get(w.index)) return\n }\n done(new Error('Block not available from peers'))\n })\n })\n\n function done (err, data) {\n if (called) return\n called = true\n\n var i = self._waiting.indexOf(w)\n if (i > -1) remove(self._waiting, i)\n cb(err, data)\n }\n}\n\n// will reload the writable state. used by .update on a writable peer\nFeed.prototype._writeStateReloader = function (cb) {\n var self = this\n return function (err) {\n if (err) return cb(err)\n self._reloadMerkleState(cb)\n }\n}\n\nFeed.prototype._reloadMerkleState = function (cb) {\n var self = this\n\n this._roots(self.length, function (err, roots) {\n if (err) return cb(err)\n self._merkle = new MerkleGenerator(crypto, roots)\n cb(null)\n })\n}\n\nFeed.prototype._reloadMerkleStateBeforeAppend = function (work, values, cb) {\n this._reloadMerkleState(function (err) {\n if (err) return cb(err)\n work(values, cb)\n })\n}\n\nFeed.prototype._open = function (cb) {\n var self = this\n var generatedKey = false\n var retryOpen = true\n\n // TODO: clean up the duplicate code below ...\n\n this._storage.openKey(function (_, key) {\n if (key && !self._overwrite && !self.key) self.key = key\n\n if (!self.key && self.live) {\n var keyPair = crypto.keyPair()\n self.secretKey = keyPair.secretKey\n self.key = keyPair.publicKey\n generatedKey = true\n }\n\n self.discoveryKey = self.key && crypto.discoveryKey(self.key)\n self._storage.open({ key: self.key, discoveryKey: self.discoveryKey }, onopen)\n })\n\n function onopen (err, state) {\n if (err) return cb(err)\n\n // if no key but we have data do a bitfield reset since we cannot verify the data.\n if (!state.key && state.bitfield.length) {\n self._overwrite = true\n }\n\n if (self._force && state.key && self.key && Buffer.compare(state.key, self.key) !== 0) {\n self._overwrite = true\n }\n\n if (self._overwrite) {\n state.bitfield = []\n state.key = state.secretKey = null\n }\n\n self.bitfield = bitfield(state.bitfieldPageSize, state.bitfield)\n self.tree = treeIndex(self.bitfield.tree)\n self.length = self.tree.blocks()\n self._seq = self.length\n\n if (state.key && self.key && Buffer.compare(state.key, self.key) !== 0) {\n return self._forceClose(cb, new Error('Another hypercore is stored here'))\n }\n\n if (state.key) self.key = state.key\n if (state.secretKey) self.secretKey = state.secretKey\n\n if (!self.length) return onsignature(null, null)\n self._storage.getSignature(self.length - 1, onsignature)\n\n function onsignature (_, sig) {\n if (self.length) self.live = !!sig\n\n if ((generatedKey || !self.key) && !self._createIfMissing) {\n return self._forceClose(cb, new Error('No hypercore is stored here'))\n }\n\n if (!self.key && self.live) {\n var keyPair = crypto.keyPair()\n self.secretKey = keyPair.secretKey\n self.key = keyPair.publicKey\n }\n\n var writable = !!self.secretKey || self.key === null\n\n if (!writable && self.writable) return self._forceClose(cb, new Error('Feed is not writable'))\n self.writable = writable\n if (!self._downloadingSet) self.downloading = !writable\n self.discoveryKey = self.key && crypto.discoveryKey(self.key)\n\n if (self._storeSecretKey && !self.secretKey) {\n self._storeSecretKey = false\n }\n\n var shouldWriteKey = generatedKey || !safeBufferEquals(self.key, state.key)\n var shouldWriteSecretKey = self._storeSecretKey && (generatedKey || !safeBufferEquals(self.secretKey, state.secretKey))\n\n var missing = 1 +\n (shouldWriteKey ? 1 : 0) +\n (shouldWriteSecretKey ? 1 : 0) +\n (self._overwrite ? 1 : 0)\n var error = null\n\n if (shouldWriteKey) self._storage.key.write(0, self.key, done)\n if (shouldWriteSecretKey) self._storage.secretKey.write(0, self.secretKey, done)\n\n if (self._overwrite) {\n self._storage.bitfield.del(32, Infinity, done)\n }\n\n done(null)\n\n function done (err) {\n if (err) error = err\n if (--missing) return\n if (error) return self._forceClose(cb, error)\n self._roots(self.length, onroots)\n }\n\n function onroots (err, roots) {\n if (err && retryOpen) {\n retryOpen = false\n self.length--\n self._storage.getSignature(self.length - 1, onsignature)\n return\n }\n\n if (err) return self._forceClose(cb, err)\n\n self._merkle = new MerkleGenerator(crypto, roots)\n self.byteLength = roots.reduce(addSize, 0)\n self.emit('ready')\n\n cb(null)\n }\n }\n }\n}\n\nFeed.prototype.download = function (range, cb) {\n if (typeof range === 'function') return this.download(null, range)\n if (typeof range === 'number') range = { start: range, end: range + 1 }\n if (Array.isArray(range)) range = { blocks: range }\n if (!range) range = {}\n if (!cb) cb = noop\n if (!this.readable) return cb(new Error('Feed is closed'))\n\n // TODO: if no peers, check if range is already satisfied and nextTick(cb) if so\n // this._updatePeers does this for us when there is a peer though, so not critical\n\n // We need range.start, end for the want messages so make sure to infer these\n // when blocks are passed and start,end is not set\n if (range.blocks && typeof range.start !== 'number') {\n var min = -1\n var max = 0\n\n for (var i = 0; i < range.blocks.length; i++) {\n const blk = range.blocks[i]\n if (min === -1 || blk < min) min = blk\n if (blk >= max) max = blk + 1\n }\n\n range.start = min === -1 ? 0 : min\n range.end = max\n }\n\n var sel = {\n _index: this._selections.length,\n hash: !!range.hash,\n iterator: null,\n start: range.start || 0,\n end: range.end || -1,\n want: 0,\n linear: !!range.linear,\n blocks: range.blocks || null,\n blocksDownloaded: 0,\n requested: 0,\n callback: cb\n }\n\n sel.want = toWantRange(sel.start)\n\n this._selections.push(sel)\n this._updatePeers()\n\n return sel\n}\n\nFeed.prototype.undownload = function (range) {\n if (typeof range === 'number') range = { start: range, end: range + 1 }\n if (!range) range = {}\n\n if (range.callback && range._index > -1) {\n set.remove(this._selections, range)\n process.nextTick(range.callback, createError('ECANCELED', -11, 'Download was cancelled'))\n return\n }\n\n var start = range.start || 0\n var end = range.end || -1\n var hash = !!range.hash\n var linear = !!range.linear\n\n for (var i = 0; i < this._selections.length; i++) {\n var s = this._selections[i]\n\n if (s.start === start && s.end === end && s.hash === hash && s.linear === linear) {\n set.remove(this._selections, s)\n process.nextTick(range.callback, createError('ECANCELED', -11, 'Download was cancelled'))\n return\n }\n }\n}\n\nFeed.prototype.digest = function (index) {\n return this.tree.digest(2 * index)\n}\n\nFeed.prototype.proof = function (index, opts, cb) {\n if (typeof opts === 'function') return this.proof(index, null, opts)\n if (!this.opened) return this._readyAndProof(index, opts, cb)\n if (!opts) opts = {}\n\n var proof = this.tree.proof(2 * index, opts)\n if (!proof) return cb(new Error('No proof available for this index'))\n\n var needsSig = this.live && !!proof.verifiedBy\n var pending = proof.nodes.length + (needsSig ? 1 : 0)\n var error = null\n var signature = null\n var nodes = new Array(proof.nodes.length)\n\n if (!pending) return cb(null, { nodes: nodes, signature: null })\n\n for (var i = 0; i < proof.nodes.length; i++) {\n this._storage.getNode(proof.nodes[i], onnode)\n }\n if (needsSig) {\n this._storage.getSignature(proof.verifiedBy / 2 - 1, onsignature)\n }\n\n function onsignature (err, sig) {\n if (sig) signature = sig\n onnode(err, null)\n }\n\n function onnode (err, node) {\n if (err) error = err\n\n if (node) {\n nodes[proof.nodes.indexOf(node.index)] = node\n }\n\n if (--pending) return\n if (error) return cb(error)\n cb(null, { nodes: nodes, signature: signature })\n }\n}\n\nFeed.prototype._readyAndProof = function (index, opts, cb) {\n var self = this\n this.ready(function (err) {\n if (err) return cb(err)\n self.proof(index, opts, cb)\n })\n}\n\nFeed.prototype.put = function (index, data, proof, cb) {\n if (!this.opened) return this._readyAndPut(index, data, proof, cb)\n this._putBuffer(index, data === null ? null : this._codec.encode(data), proof, null, cb)\n}\n\nFeed.prototype.cancel = function (start, end) { // TODO: use same argument scheme as download\n if (typeof start !== 'symbol') {\n if (!end) end = start + 1\n\n // cancel these right away as .download does not wait for ready\n for (var i = this._selections.length - 1; i >= 0; i--) {\n var sel = this._selections[i]\n if (start <= sel.start && sel.end <= end) {\n this.undownload(sel)\n }\n }\n }\n\n // defer the last part until after ready as .get does that as well\n if (this.opened) this._cancel(start, end)\n else this._readyAndCancel(start, end)\n}\n\nFeed.prototype._cancel = function (start, end) {\n var i = 0\n\n if (typeof start === 'symbol') {\n for (i = this._waiting.length - 1; i >= 0; i--) {\n const w = this._waiting[i]\n if (w.options.cancel === start) {\n remove(this._waiting, i)\n this._reserved.set(w.index, false)\n if (w.callback) process.nextTick(w.callback, new Error('Request cancelled'))\n this._updatePeers()\n return\n }\n }\n return\n }\n\n for (i = start; i < end; i++) {\n this._reserved.set(i, false) // TODO: send cancel message if set returns true\n }\n\n for (i = this._waiting.length - 1; i >= 0; i--) {\n var w = this._waiting[i]\n if ((start <= w.start && w.end <= end) || (start <= w.index && w.index < end)) {\n remove(this._waiting, i)\n if (w.callback) process.nextTick(w.callback, new Error('Request cancelled'))\n }\n }\n}\n\nFeed.prototype.clear = function (start, end, opts, cb) { // TODO: use same argument scheme as download\n if (typeof end === 'function') return this.clear(start, start + 1, null, end)\n if (typeof opts === 'function') return this.clear(start, end, null, opts)\n if (!opts) opts = {}\n if (!end) end = start + 1\n if (!cb) cb = noop\n\n // TODO: this needs some work. fx we can only calc byte offset for blocks we know about\n // so internally we should make sure to only do that. We should use the merkle tree for this\n\n var self = this\n var byteOffset = start === 0 ? 0 : (typeof opts.byteOffset === 'number' ? opts.byteOffset : -1)\n var byteLength = typeof opts.byteLength === 'number' ? opts.byteLength : -1\n\n this.ready(function (err) {\n if (err) return cb(err)\n\n var modified = false\n\n // TODO: use a buffer.fill thing here to speed this up!\n\n for (var i = start; i < end; i++) {\n if (self.bitfield.set(i, false)) modified = true\n }\n\n if (!modified) return process.nextTick(cb)\n\n // TODO: write to a tmp/update file that we want to del this incase it crashes will del'ing\n\n self._unannounce({ start: start, length: end - start })\n if (opts.delete === false || self._indexing) return sync()\n if (byteOffset > -1) return onstartbytes(null, byteOffset)\n self._storage.dataOffset(start, [], onstartbytes)\n\n function sync () {\n self.emit('clear', start, end)\n self._sync(null, cb)\n }\n\n function onstartbytes (err, offset) {\n if (err) return cb(err)\n byteOffset = offset\n if (byteLength > -1) return onendbytes(null, byteLength + byteOffset)\n if (end === self.length) return onendbytes(null, self.byteLength)\n self._storage.dataOffset(end, [], onendbytes)\n }\n\n function onendbytes (err, end) {\n if (err) return cb(err)\n if (!self._storage.data.del) return sync() // Not all data storage impls del\n self._storage.data.del(byteOffset, end - byteOffset, sync)\n }\n })\n}\n\nFeed.prototype.signature = function (index, cb) {\n if (typeof index === 'function') return this.signature(this.length - 1, index)\n\n if (index < 0 || index >= this.length) return cb(new Error('No signature available for this index'))\n\n this._storage.nextSignature(index, cb)\n}\n\nFeed.prototype.verify = function (index, signature, cb) {\n var self = this\n\n this.rootHashes(index, function (err, roots) {\n if (err) return cb(err)\n\n var checksum = crypto.signable(roots, index + 1)\n\n verifyCompat(self, checksum, signature, function (err, valid) {\n if (err) return cb(err)\n\n if (!valid) return cb(new Error('Signature verification failed'))\n\n return cb(null, true)\n })\n })\n}\n\nFeed.prototype.rootHashes = function (index, cb) {\n this._getRootsToVerify(index * 2 + 2, {}, [], cb)\n}\n\nFeed.prototype.seek = function (bytes, opts, cb) {\n if (typeof opts === 'function') return this.seek(bytes, null, opts)\n if (!opts) opts = {}\n if (!this.opened) return this._readyAndSeek(bytes, opts, cb)\n\n var self = this\n\n if (bytes === this.byteLength) return process.nextTick(cb, null, this.length, 0)\n\n this._seek(bytes, function (err, index, offset) {\n if (!err && isBlock(index)) return done(index / 2, offset)\n if (opts.wait === false) return cb(err || new Error('Unable to seek to this offset'))\n\n var start = opts.start || 0\n var end = opts.end || -1\n\n if (!err) {\n var left = flat.leftSpan(index) / 2\n var right = flat.rightSpan(index) / 2 + 1\n\n if (left > start) start = left\n if (right < end || end === -1) end = right\n }\n\n if (end > -1 && end <= start) return cb(new Error('Unable to seek to this offset'))\n\n var w = {\n hash: opts.hash !== false,\n bytes: bytes,\n index: -1,\n ifAvailable: opts && typeof opts.ifAvailable === 'boolean' ? opts.ifAvailable : self._alwaysIfAvailable,\n start: start,\n end: end,\n want: toWantRange(start),\n requested: 0,\n callback: cb || noop\n }\n\n self._waiting.push(w)\n self._updatePeers()\n if (w.ifAvailable) self._ifAvailableSeek(w)\n })\n\n function done (index, offset) {\n for (var i = 0; i < self.peers.length; i++) {\n self.peers[i].haveBytes(bytes)\n }\n cb(null, index, offset)\n }\n}\n\nFeed.prototype._ifAvailableSeek = function (w) {\n var self = this\n var cb = w.callback\n\n self.timeouts.get(function () {\n if (self.closed) return done(new Error('Closed'))\n\n process.nextTick(readyNT, self.ifAvailable, function () {\n if (self.closed) return done(new Error('Closed'))\n\n let available = false\n for (const peer of self.peers) {\n const ite = peer._iterator\n let i = ite.seek(w.start).next(true)\n while (self.tree.get(i * 2) && i > -1) i = ite.next(true)\n if (i > -1 && (w.end === -1 || i < w.end)) {\n available = true\n break\n }\n }\n\n if (!available) done(new Error('Seek not available from peers'))\n })\n })\n\n function done (err) {\n var i = self._waiting.indexOf(w)\n if (i > -1) {\n remove(self._waiting, i)\n w.callback = noop\n cb(err)\n }\n }\n}\n\nFeed.prototype._seek = function (offset, cb) {\n if (offset === 0) return cb(null, 0, 0)\n\n var self = this\n var roots = flat.fullRoots(this.length * 2)\n var nearestRoot = 0\n\n loop(null, null)\n\n function onroot (top) {\n if (isBlock(top)) return cb(null, nearestRoot, offset)\n\n var left = flat.leftChild(top)\n while (!self.tree.get(left)) {\n if (isBlock(left)) return cb(null, nearestRoot, offset)\n left = flat.leftChild(left)\n }\n\n self._storage.getNode(left, onleftchild)\n }\n\n function onleftchild (err, node) {\n if (err) return cb(err)\n\n if (node.size > offset) {\n nearestRoot = node.index\n onroot(node.index)\n } else {\n offset -= node.size\n if (flat.parent(node.index) === nearestRoot) {\n nearestRoot = flat.sibling(node.index)\n onroot(nearestRoot)\n } else {\n onroot(flat.sibling(node.index))\n }\n }\n }\n\n function loop (err, node) {\n if (err) return cb(err)\n\n if (node) {\n if (node.size > offset) {\n nearestRoot = node.index\n return onroot(node.index)\n }\n offset -= node.size\n }\n\n if (!roots.length) return cb(new Error('Out of bounds'))\n self._storage.getNode(roots.shift(), loop)\n }\n}\n\nFeed.prototype._readyAndSeek = function (bytes, opts, cb) {\n var self = this\n this.ready(function (err) {\n if (err) return cb(err)\n self.seek(bytes, opts, cb)\n })\n}\n\nFeed.prototype._getBuffer = function (index, cb) {\n this._storage.getData(index, cb)\n}\n\nFeed.prototype._putBuffer = function (index, data, proof, from, cb) {\n // TODO: this nodes in proof are not instances of our Node prototype\n // but just similar. Check if this has any v8 perf implications.\n\n // TODO: if the proof contains a valid signature BUT fails, emit a critical error\n // --> feed should be considered dead\n\n var self = this\n var trusted = -1\n var missing = []\n var next = 2 * index\n var i = data ? 0 : 1\n\n while (true) {\n if (this.tree.get(next)) {\n trusted = next\n break\n }\n\n var sib = flat.sibling(next)\n next = flat.parent(next)\n\n if (i < proof.nodes.length && proof.nodes[i].index === sib) {\n i++\n continue\n }\n\n if (!this.tree.get(sib)) break\n missing.push(sib)\n }\n\n if (trusted === -1 && this.tree.get(next)) trusted = next\n\n var error = null\n var trustedNode = null\n var missingNodes = new Array(missing.length)\n var pending = missing.length + (trusted > -1 ? 1 : 0)\n\n for (i = 0; i < missing.length; i++) this._storage.getNode(missing[i], onmissing)\n if (trusted > -1) this._storage.getNode(trusted, ontrusted)\n if (!missing.length && trusted === -1) onmissingloaded(null)\n\n function ontrusted (err, node) {\n if (err) error = err\n if (node) trustedNode = node\n if (!--pending) onmissingloaded(error)\n }\n\n function onmissing (err, node) {\n if (err) error = err\n if (node) missingNodes[missing.indexOf(node.index)] = node\n if (!--pending) onmissingloaded(error)\n }\n\n function onmissingloaded (err) {\n if (err) return cb(err)\n self._verifyAndWrite(index, data, proof, missingNodes, trustedNode, from, cb)\n }\n}\n\nFeed.prototype._readyAndPut = function (index, data, proof, cb) {\n var self = this\n this.ready(function (err) {\n if (err) return cb(err)\n self.put(index, data, proof, cb)\n })\n}\n\nFeed.prototype._write = function (index, data, nodes, sig, from, cb) {\n if (!this._onwrite) return this._writeAfterHook(index, data, nodes, sig, from, cb)\n this._onwrite(index, data, from, writeHookDone(this, index, data, nodes, sig, from, cb))\n}\n\nfunction writeHookDone (self, index, data, nodes, sig, from, cb) {\n return function (err) {\n if (err) return cb(err)\n self._writeAfterHook(index, data, nodes, sig, from, cb)\n }\n}\n\nFeed.prototype._writeAfterHook = function (index, data, nodes, sig, from, cb) {\n var self = this\n var pending = nodes.length + 1 + (sig ? 1 : 0)\n var error = null\n\n for (var i = 0; i < nodes.length; i++) this._storage.putNode(nodes[i].index, nodes[i], ondone)\n if (data) this._storage.putData(index, data, nodes, ondone)\n else ondone()\n if (sig) this._storage.putSignature(sig.index, sig.signature, ondone)\n\n function ondone (err) {\n if (err) error = err\n if (--pending) return\n if (error) return cb(error)\n self._writeDone(index, data, nodes, from, cb)\n }\n}\n\nFeed.prototype._writeDone = function (index, data, nodes, from, cb) {\n for (var i = 0; i < nodes.length; i++) this.tree.set(nodes[i].index)\n this.tree.set(2 * index)\n\n if (data) {\n if (this.bitfield.set(index, true)) {\n if (this._stats) {\n this._stats.downloadedBlocks += 1\n this._stats.downloadedBytes += data.length\n }\n this.emit('download', index, data, from)\n }\n if (this.peers.length) this._announce({ start: index }, from)\n\n if (!this.writable) {\n if (!this._synced) this._synced = this.bitfield.iterator(0, this.length)\n if (this._synced.next() === -1) {\n this._synced.range(0, this.length)\n this._synced.seek(0)\n if (this._synced.next() === -1) {\n this.emit('sync')\n }\n }\n }\n }\n\n this._sync(null, cb)\n}\n\nFeed.prototype._verifyAndWrite = function (index, data, proof, localNodes, trustedNode, from, cb) {\n var visited = []\n var remoteNodes = proof.nodes\n var top = data ? new storage.Node(2 * index, crypto.data(data), data.length) : remoteNodes.shift()\n\n // check if we already have the hash for this node\n if (verifyNode(trustedNode, top)) {\n this._write(index, data, visited, null, from, cb)\n return\n }\n\n // keep hashing with siblings until we reach or trusted node\n while (true) {\n var node = null\n var next = flat.sibling(top.index)\n\n if (remoteNodes.length && remoteNodes[0].index === next) {\n node = remoteNodes.shift()\n visited.push(node)\n } else if (localNodes.length && localNodes[0].index === next) {\n node = localNodes.shift()\n } else {\n // we cannot create another parent, i.e. these nodes must be roots in the tree\n this._verifyRootsAndWrite(index, data, top, proof, visited, from, cb)\n return\n }\n\n visited.push(top)\n top = new storage.Node(flat.parent(top.index), crypto.parent(top, node), top.size + node.size)\n\n // the tree checks out, write the data and the visited nodes\n if (verifyNode(trustedNode, top)) {\n this._write(index, data, visited, null, from, cb)\n return\n }\n }\n}\n\nFeed.prototype._verifyRootsAndWrite = function (index, data, top, proof, nodes, from, cb) {\n var remoteNodes = proof.nodes\n var lastNode = remoteNodes.length ? remoteNodes[remoteNodes.length - 1].index : top.index\n var verifiedBy = Math.max(flat.rightSpan(top.index), flat.rightSpan(lastNode)) + 2\n var length = verifiedBy / 2\n var self = this\n\n this._getRootsToVerify(verifiedBy, top, remoteNodes, function (err, roots, extraNodes) {\n if (err) return cb(err)\n\n var checksum = crypto.signable(roots, length)\n var signature = null\n\n if (self.length && self.live && !proof.signature) {\n return cb(new Error('Remote did not include a signature'))\n }\n\n if (proof.signature) { // check signatures\n verifyCompat(self, checksum, proof.signature, function (err, valid) {\n if (err) return cb(err)\n if (!valid) return cb(new Error('Remote signature could not be verified'))\n\n signature = { index: verifiedBy / 2 - 1, signature: proof.signature }\n write()\n })\n } else { // check tree root\n if (Buffer.compare(checksum.slice(0, 32), self.key) !== 0) {\n return cb(new Error('Remote checksum failed'))\n }\n\n write()\n }\n\n function write () {\n self.live = !!signature\n\n if (length > self.length) {\n // TODO: only emit this after the info has been flushed to storage\n if (self.writable) self._merkle = null // We need to reload merkle state now\n self.length = length\n self._seq = length\n self.byteLength = roots.reduce(addSize, 0)\n if (self._synced) self._synced.seek(0, self.length)\n self.emit('append')\n }\n\n self._write(index, data, nodes.concat(extraNodes), signature, from, cb)\n }\n })\n}\n\nFeed.prototype._getRootsToVerify = function (verifiedBy, top, remoteNodes, cb) {\n var indexes = flat.fullRoots(verifiedBy)\n var roots = new Array(indexes.length)\n var nodes = []\n var error = null\n var pending = roots.length\n\n for (var i = 0; i < indexes.length; i++) {\n if (indexes[i] === top.index) {\n nodes.push(top)\n onnode(null, top)\n } else if (remoteNodes.length && indexes[i] === remoteNodes[0].index) {\n nodes.push(remoteNodes[0])\n onnode(null, remoteNodes.shift())\n } else if (this.tree.get(indexes[i])) {\n this._storage.getNode(indexes[i], onnode)\n } else {\n onnode(new Error('Missing tree roots needed for verify'))\n }\n }\n\n function onnode (err, node) {\n if (err) error = err\n if (node) roots[indexes.indexOf(node.index)] = node\n if (!--pending) done(error)\n }\n\n function done (err) {\n if (err) return cb(err)\n\n cb(null, roots, nodes)\n }\n}\n\nFeed.prototype._announce = function (message, from) {\n for (var i = 0; i < this.peers.length; i++) {\n var peer = this.peers[i]\n if (peer !== from) peer.have(message)\n }\n}\n\nFeed.prototype._unannounce = function (message) {\n for (var i = 0; i < this.peers.length; i++) this.peers[i].unhave(message)\n}\n\nFeed.prototype.downloaded = function (start, end, cb) {\n const count = this.bitfield.total(start, end)\n if (cb) process.nextTick(cb, null, count) // prepare async interface for this\n return count\n}\n\nFeed.prototype.has = function (start, end, cb) {\n if (typeof end === 'function') return this.has(start, undefined, end)\n if (end === undefined) {\n const res = this.bitfield.get(start)\n if (cb) process.nextTick(cb, null, res)\n return res\n }\n const total = end - start\n const res = total === this.bitfield.total(start, end)\n if (cb) process.nextTick(cb, null, res)\n return res\n}\n\nFeed.prototype.getBlockInfo = function (index, cb) {\n var self = this\n this.ready(function (err) {\n if (err) return cb(err)\n self._storage.getNode(2 * index, cb)\n })\n}\n\nFeed.prototype.head = function (opts, cb) {\n if (typeof opts === 'function') return this.head({}, opts)\n var self = this\n this.ready(function (err) {\n if (err) return cb(err)\n if (opts && opts.update) self.update(opts, onupdate)\n else process.nextTick(onupdate)\n })\n\n function onupdate () {\n if (self.length === 0) cb(new Error('feed is empty'))\n else self.get(self.length - 1, opts, cb)\n }\n}\n\nFeed.prototype.get = function (index, opts, cb) {\n if (typeof opts === 'function') return this.get(index, null, opts)\n\n opts = { ...opts }\n if (!opts.cancel) opts.cancel = Symbol('hypercore-get')\n\n if (!this.opened) return this._readyAndGet(index, opts, cb)\n\n if (!this.readable) {\n process.nextTick(cb, new Error('Feed is closed'))\n return opts.cancel\n }\n\n if (opts.timeout) cb = timeoutCallback(cb, opts.timeout)\n\n if (!this.bitfield.get(index)) {\n if (opts && opts.wait === false) return process.nextTick(cb, new Error('Block not downloaded'))\n\n var w = { bytes: 0, hash: false, index: index, options: opts, requested: 0, callback: cb }\n this._waiting.push(w)\n\n if (opts && typeof opts.ifAvailable === 'boolean' ? opts.ifAvailable : this._alwaysIfAvailable) this._ifAvailableGet(w)\n\n this._updatePeers()\n if (opts.onwait) {\n const onwait = opts.onwait\n opts.onwait = null\n onwait(index)\n }\n return opts.cancel\n }\n\n if (opts && opts.valueEncoding) cb = wrapCodec(toCodec(opts.valueEncoding), cb)\n else if (this._codec !== codecs.binary) cb = wrapCodec(this._codec, cb)\n\n this._getBuffer(index, cb)\n return opts.cancel\n}\n\nFeed.prototype._readyAndGet = function (index, opts, cb) {\n var self = this\n this.ready(function (err) {\n if (err) return cb(err)\n self.get(index, opts, cb)\n })\n return opts.cancel\n}\n\nFeed.prototype.getBatch = function (start, end, opts, cb) {\n if (typeof opts === 'function') return this.getBatch(start, end, null, opts)\n if (!this.opened) return this._readyAndGetBatch(start, end, opts, cb)\n\n var self = this\n var wait = !opts || opts.wait !== false\n\n if (this.has(start, end)) return this._getBatch(start, end, opts, cb)\n if (!wait) return process.nextTick(cb, new Error('Block not downloaded'))\n\n if (opts && opts.timeout) cb = timeoutCallback(cb, opts.timeout)\n\n this.download({ start: start, end: end }, function (err) {\n if (err) return cb(err)\n self._getBatch(start, end, opts, cb)\n })\n}\n\nFeed.prototype._getBatch = function (start, end, opts, cb) {\n var enc = opts && opts.valueEncoding\n var codec = enc ? toCodec(enc) : this._codec\n\n this._storage.getDataBatch(start, end - start, onbatch)\n\n function onbatch (err, buffers) {\n if (err) return cb(err)\n\n var batch = new Array(buffers.length)\n\n for (var i = 0; i < buffers.length; i++) {\n try {\n batch[i] = codec ? codec.decode(buffers[i]) : buffers[i]\n } catch (err) {\n return cb(err)\n }\n }\n\n cb(null, batch)\n }\n}\n\nFeed.prototype._readyAndGetBatch = function (start, end, opts, cb) {\n var self = this\n this.ready(function (err) {\n if (err) return cb(err)\n self.getBatch(start, end, opts, cb)\n })\n}\n\nFeed.prototype._updatePeers = function () {\n for (var i = 0; i < this.peers.length; i++) this.peers[i].update()\n}\n\nFeed.prototype.createWriteStream = function (opts) {\n return new WriteStream(this, opts)\n}\n\nFeed.prototype.createReadStream = function (opts) {\n return new ReadStream(this, opts)\n}\n\n// TODO: when calling finalize on a live feed write an END_OF_FEED block (length === 0?)\nFeed.prototype.finalize = function (cb) {\n if (!this.key) {\n this.key = crypto.tree(this._merkle.roots)\n this.discoveryKey = crypto.discoveryKey(this.key)\n }\n this._storage.key.write(0, this.key, cb)\n}\n\nFeed.prototype.append = function (batch, cb) {\n if (!cb) cb = noop\n\n var self = this\n var list = Array.isArray(batch) ? batch : [batch]\n this._batch(list, onappend)\n\n function onappend (err) {\n if (err) return cb(err)\n var seq = self._seq\n self._seq += list.length\n cb(null, seq)\n }\n}\n\nFeed.prototype.flush = function (cb) {\n this.append([], cb)\n}\n\nFeed.prototype.destroyStorage = function (cb) {\n const self = this\n\n this.close(function (err) {\n if (err) cb(err)\n else self._storage.destroy(cb)\n })\n}\n\nFeed.prototype._close = function (cb) {\n const self = this\n\n for (const peer of this.peers) {\n if (!peer._destroyed) peer._close()\n }\n\n this._forceClose(onclose, null)\n\n function onclose (err) {\n if (!err) self.emit('close')\n cb(err)\n }\n}\n\nFeed.prototype._forceClose = function (cb, error) {\n var self = this\n\n this.writable = false\n this.readable = false\n\n this._storage.close(function (err) {\n if (!err) err = error\n self._destroy(err || new Error('Feed is closed'))\n cb(err)\n })\n}\n\nFeed.prototype._destroy = function (err) {\n this.ifAvailable.destroy()\n\n while (this._waiting.length) {\n this._waiting.pop().callback(err)\n }\n while (this._selections.length) {\n this._selections.pop().callback(err)\n }\n}\n\nFeed.prototype._appendHook = function (batch, cb) {\n var self = this\n var missing = batch.length\n var error = null\n\n if (!missing) return this._append(batch, cb)\n for (var i = 0; i < batch.length; i++) {\n this._onwrite(i + this.length, batch[i], null, done)\n }\n\n function done (err) {\n if (err) error = err\n if (--missing) return\n if (error) return cb(error)\n self._append(batch, cb)\n }\n}\n\nFeed.prototype._append = function (batch, cb) {\n if (!this.opened) return this._readyAndAppend(batch, cb)\n if (!this.writable) return cb(new Error('This feed is not writable. Did you create it?'))\n\n var self = this\n var pending = 1\n var offset = 0\n var error = null\n var nodeBatch = new Array(batch.length ? batch.length * 2 - 1 : 0)\n var nodeOffset = this.length * 2\n var dataBatch = new Array(batch.length)\n\n if (!pending) return cb()\n\n for (var i = 0; i < batch.length; i++) {\n var data = this._codec.encode(batch[i])\n var nodes = this._merkle.next(data)\n\n // the replication stream rejects frames >8MB for DOS defense. Is configurable there, so\n // we could bubble that up here. For now just hardcode it so you can't accidentally \"brick\" your core\n // note: this is *only* for individual blocks and is just a sanity check. most blocks are <1MB\n if (data.length > 8388608) return cb(new Error('Individual blocks has be less than 8MB'))\n\n offset += data.length\n dataBatch[i] = data\n\n for (var j = 0; j < nodes.length; j++) {\n var node = nodes[j]\n if (node.index >= nodeOffset && node.index - nodeOffset < nodeBatch.length) {\n nodeBatch[node.index - nodeOffset] = node\n } else {\n pending++\n this._storage.putNode(node.index, node, done)\n }\n }\n }\n\n if (this.live && batch.length) {\n pending++\n this.crypto.sign(crypto.signable(this._merkle.roots, self.length + batch.length), this.secretKey, function (err, sig) {\n if (err) return done(err)\n self._storage.putSignature(self.length + batch.length - 1, sig, done)\n })\n }\n\n if (!this._indexing) {\n pending++\n if (dataBatch.length === 1) this._storage.data.write(this.byteLength, dataBatch[0], done)\n else this._storage.data.write(this.byteLength, Buffer.concat(dataBatch), done)\n }\n\n this._storage.putNodeBatch(nodeOffset, nodeBatch, done)\n\n function done (err) {\n if (err) error = err\n if (--pending) return\n if (error) return cb(error)\n\n var start = self.length\n\n // TODO: only emit append and update length / byteLength after the info has been flushed to storage\n self.byteLength += offset\n for (var i = 0; i < batch.length; i++) {\n self.bitfield.set(self.length, true)\n self.tree.set(2 * self.length++)\n }\n self.emit('append')\n\n var message = self.length - start > 1 ? { start: start, length: self.length - start } : { start: start }\n if (self.peers.length) self._announce(message)\n\n self._sync(null, cb)\n }\n}\n\nFeed.prototype._readyAndAppend = function (batch, cb) {\n var self = this\n this.ready(function (err) {\n if (err) return cb(err)\n self._append(batch, cb)\n })\n}\n\nFeed.prototype._readyAndCancel = function (start, end) {\n var self = this\n this.ready(function () {\n self._cancel(start, end)\n })\n}\n\nFeed.prototype._pollWaiting = function () {\n var len = this._waiting.length\n\n for (var i = 0; i < len; i++) {\n var next = this._waiting[i]\n if (!next.bytes && !this.bitfield.get(next.index) && (!next.hash || !this.tree.get(next.index * 2))) {\n continue\n }\n\n remove(this._waiting, i--)\n len--\n\n if (next.bytes) this.seek(next.bytes, next, next.callback)\n else if (next.update) this.update(next.index + 1, next.callback)\n else this.get(next.index, next.options, next.callback)\n }\n}\n\nFeed.prototype._syncBitfield = function (cb) {\n var missing = this.bitfield.pages.updates.length\n var next = null\n var error = null\n\n // All data / nodes have been written now. We still need to update the bitfields though\n\n // TODO 1: if the program fails during this write the bitfield might not have been fully written\n // HOWEVER, we can easily recover from this by traversing the tree and checking if the nodes exists\n // on disk. So if a get fails, it should try and recover once.\n\n // TODO 2: if .writable append bitfield updates into a single buffer for extra perf\n // Added benefit is that if the program exits while flushing the bitfield the feed will only get\n // truncated and not have missing chunks which is what you expect.\n\n if (!missing) {\n this._pollWaiting()\n return cb(null)\n }\n\n while ((next = this.bitfield.pages.lastUpdate()) !== null) {\n this._storage.putBitfield(next.offset, next.buffer, ondone)\n }\n\n this._pollWaiting()\n\n function ondone (err) {\n if (err) error = err\n if (--missing) return\n cb(error)\n }\n}\n\nFeed.prototype._roots = function (index, cb) {\n var roots = flat.fullRoots(2 * index)\n var result = new Array(roots.length)\n var pending = roots.length\n var error = null\n\n if (!pending) return cb(null, result)\n\n for (var i = 0; i < roots.length; i++) {\n this._storage.getNode(roots[i], onnode)\n }\n\n function onnode (err, node) {\n if (err) error = err\n if (node) result[roots.indexOf(node.index)] = node\n if (--pending) return\n if (error) return cb(error)\n cb(null, result)\n }\n}\n\nFeed.prototype.audit = function (cb) {\n if (!cb) cb = noop\n\n var self = this\n var report = {\n valid: 0,\n invalid: 0\n }\n\n this.ready(function (err) {\n if (err) return cb(err)\n\n var block = 0\n var max = self.length\n\n next()\n\n function onnode (err, node) {\n if (err) return ondata(null, null)\n self._storage.getData(block, ondata)\n\n function ondata (_, data) {\n var verified = data && crypto.data(data).equals(node.hash)\n if (verified) report.valid++\n else report.invalid++\n self.bitfield.set(block, verified)\n block++\n next()\n }\n }\n\n function next () {\n while (block < max && !self.bitfield.get(block)) block++\n if (block >= max) return done()\n self._storage.getNode(2 * block, onnode)\n }\n\n function done () {\n self._sync(null, function (err) {\n if (err) return cb(err)\n cb(null, report)\n })\n }\n })\n}\n\nFeed.prototype.extension = function (name, message) {\n var peers = this.peers\n\n for (var i = 0; i < peers.length; i++) {\n peers[i].extension(name, message)\n }\n}\n\nfunction noop () {}\n\nfunction verifyNode (trusted, node) {\n return trusted && trusted.index === node.index && Buffer.compare(trusted.hash, node.hash) === 0\n}\n\nfunction addSize (size, node) {\n return size + node.size\n}\n\nfunction isBlock (index) {\n return (index & 1) === 0\n}\n\nfunction toCodec (enc) {\n // Switch to ndjson encoding if JSON is used. That way data files parse like ndjson \\o/\n return codecs(enc === 'json' ? 'ndjson' : enc)\n}\n\nfunction wrapCodec (enc, cb) {\n return function (err, buf) {\n if (err) return cb(err)\n try {\n buf = enc.decode(buf)\n } catch (err) {\n return cb(err)\n }\n cb(null, buf)\n }\n}\n\nfunction timeoutCallback (cb, timeout) {\n var failed = false\n var id = setTimeout(ontimeout, timeout)\n return done\n\n function ontimeout () {\n failed = true\n // TODO: make libs/errors for all this stuff\n var err = new Error('ETIMEDOUT')\n err.code = 'ETIMEDOUT'\n cb(err)\n }\n\n function done (err, val) {\n if (failed) return\n clearTimeout(id)\n cb(err, val)\n }\n}\n\nfunction toWantRange (i) {\n return Math.floor(i / 1024 / 1024) * 1024 * 1024\n}\n\nfunction createError (code, errno, msg) {\n var err = new Error(msg)\n err.code = code\n err.errno = errno\n return err\n}\n\nfunction defaultStorageDir (directory) {\n return function (name) {\n return defaultStorage(name, { directory })\n }\n}\n\nfunction isOptions (initiator) {\n return !Protocol.isProtocolStream(initiator) &&\n typeof initiator === 'object' &&\n !!initiator &&\n typeof initiator.initiator === 'boolean'\n}\n\nfunction readyNT (ifAvailable, fn) {\n ifAvailable.ready(fn)\n}\n\nfunction verifyCompat (self, checksum, signature, cb) {\n self.crypto.verify(checksum, signature, self.key, function (err, valid) {\n if (err || valid) return cb(err, valid)\n // compat mode, will be removed in a later version\n self.crypto.verify(checksum.slice(0, 32), signature, self.key, cb)\n })\n}\n", "export * from 'hypercore';\nexport { default } from 'hypercore';\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["exports", "i", "bitfield", "b", "err", "node", "clone", "parent", "depth", "require_nanoassert", "err", "require_encode", "require_decode", "require_length", "require_varint", "require_encode", "require_decode", "require_length", "require_varint", "
|
|
3
|
+
"sources": ["../../../../../node_modules/.pnpm/last-one-wins@1.0.4/node_modules/last-one-wins/index.js", "../../../../../node_modules/.pnpm/unordered-array-remove@1.0.2/node_modules/unordered-array-remove/index.js", "../../../../../node_modules/.pnpm/unordered-set@2.0.1/node_modules/unordered-set/index.js", "../../../../../node_modules/.pnpm/flat-tree@1.9.0/node_modules/flat-tree/index.js", "../../../../../node_modules/.pnpm/merkle-tree-stream@4.0.0/node_modules/merkle-tree-stream/generator.js", "../../../../../node_modules/.pnpm/codecs@2.2.0/node_modules/codecs/index.js", "../../../../../node_modules/.pnpm/atomic-batcher@1.0.2/node_modules/atomic-batcher/index.js", "../../../../../node_modules/.pnpm/inherits@2.0.4/node_modules/inherits/inherits_browser.js", "../../../../../node_modules/.pnpm/inherits@2.0.4/node_modules/inherits/inherits.js", "../../../../../node_modules/.pnpm/varint@4.0.1/node_modules/varint/encode.js", "../../../../../node_modules/.pnpm/varint@4.0.1/node_modules/varint/decode.js", "../../../../../node_modules/.pnpm/varint@4.0.1/node_modules/varint/length.js", "../../../../../node_modules/.pnpm/varint@4.0.1/node_modules/varint/index.js", "../../../../../node_modules/.pnpm/buffer-alloc-unsafe@1.1.0/node_modules/buffer-alloc-unsafe/index.js", "../../../../../node_modules/.pnpm/bitfield-rle@2.2.1/node_modules/bitfield-rle/index.js", "../../../../../node_modules/.pnpm/memory-pager@1.5.0/node_modules/memory-pager/index.js", "../../../../../node_modules/.pnpm/sparse-bitfield@3.0.3/node_modules/sparse-bitfield/index.js", "../../../../../node_modules/.pnpm/hypercore@9.12.0/node_modules/hypercore/lib/bitfield.js", "../../../../../node_modules/.pnpm/hypercore@9.12.0/node_modules/hypercore/lib/tree-index.js", "../../../../../node_modules/.pnpm/buffer-fill@1.0.0/node_modules/buffer-fill/index.js", "../../../../../node_modules/.pnpm/buffer-alloc@1.2.0/node_modules/buffer-alloc/index.js", "../../../../../node_modules/.pnpm/uint64be@2.0.2/node_modules/uint64be/index.js", "../../../../../node_modules/.pnpm/hypercore-cache@1.0.2/node_modules/hypercore-cache/index.js", "../../../../../node_modules/.pnpm/hypercore@9.12.0/node_modules/hypercore/lib/cache.js", "../../../../../node_modules/.pnpm/hypercore@9.12.0/node_modules/hypercore/lib/storage.js", "../../../../../node_modules/.pnpm/inspect-custom-symbol@1.1.1/node_modules/inspect-custom-symbol/index.js", "../../../../../node_modules/.pnpm/pretty-hash@1.0.1/node_modules/pretty-hash/index.js", "../../../../../node_modules/.pnpm/nanoguard@1.3.0/node_modules/nanoguard/index.js", "../../../../../node_modules/.pnpm/hypercore@9.12.0/node_modules/hypercore/lib/safe-buffer-equals.js", "../../../../../node_modules/.pnpm/clone@2.1.2/node_modules/clone/clone.js", "../../../../../node_modules/.pnpm/noise-protocol@3.0.1/node_modules/noise-protocol/cipher.js", "../../../../../node_modules/.pnpm/noise-protocol@3.0.1/node_modules/noise-protocol/cipher-state.js", "../../../../../node_modules/.pnpm/nanoassert@1.1.0/node_modules/nanoassert/index.js", "../../../../../node_modules/.pnpm/hmac-blake2b@2.0.0/node_modules/hmac-blake2b/index.js", "../../../../../node_modules/.pnpm/noise-protocol@3.0.1/node_modules/noise-protocol/dh.js", "../../../../../node_modules/.pnpm/noise-protocol@3.0.1/node_modules/noise-protocol/hash.js", "../../../../../node_modules/.pnpm/noise-protocol@3.0.1/node_modules/noise-protocol/symmetric-state.js", "../../../../../node_modules/.pnpm/noise-protocol@3.0.1/node_modules/noise-protocol/handshake-state.js", "../../../../../node_modules/.pnpm/noise-protocol@3.0.1/node_modules/noise-protocol/index.js", "../../../../../node_modules/.pnpm/simple-handshake@3.0.0/node_modules/simple-handshake/index.js", "../../../../../node_modules/.pnpm/varint@5.0.2/node_modules/varint/encode.js", "../../../../../node_modules/.pnpm/varint@5.0.2/node_modules/varint/decode.js", "../../../../../node_modules/.pnpm/varint@5.0.2/node_modules/varint/length.js", "../../../../../node_modules/.pnpm/varint@5.0.2/node_modules/varint/index.js", "../../../../../node_modules/.pnpm/simple-hypercore-protocol@2.1.2/node_modules/simple-hypercore-protocol/lib/handshake.js", "../../../../../node_modules/.pnpm/varint@5.0.0/node_modules/varint/encode.js", "../../../../../node_modules/.pnpm/varint@5.0.0/node_modules/varint/decode.js", "../../../../../node_modules/.pnpm/varint@5.0.0/node_modules/varint/length.js", "../../../../../node_modules/.pnpm/varint@5.0.0/node_modules/varint/index.js", "../../../../../node_modules/.pnpm/signed-varint@2.0.1/node_modules/signed-varint/index.js", "../../../../../node_modules/.pnpm/protocol-buffers-encodings@1.2.0/node_modules/protocol-buffers-encodings/index.js", "../../../../../node_modules/.pnpm/simple-hypercore-protocol@2.1.2/node_modules/simple-hypercore-protocol/messages.js", "../../../../../node_modules/.pnpm/xsalsa20-universal@1.0.0/node_modules/xsalsa20-universal/index.js", "../../../../../node_modules/.pnpm/simple-hypercore-protocol@2.1.2/node_modules/simple-hypercore-protocol/lib/xor.js", "../../../../../node_modules/.pnpm/simple-message-channels@1.2.1/node_modules/simple-message-channels/index.js", "../../../../../node_modules/.pnpm/simple-hypercore-protocol@2.1.2/node_modules/simple-hypercore-protocol/index.js", "../../../../../node_modules/.pnpm/timeout-refresh@1.0.3/node_modules/timeout-refresh/refresh.js", "../../../../../node_modules/.pnpm/timeout-refresh@1.0.3/node_modules/timeout-refresh/browser.js", "../../../../../node_modules/.pnpm/timeout-refresh@1.0.3/node_modules/timeout-refresh/timers.js", "../../../../../node_modules/.pnpm/timeout-refresh@1.0.3/node_modules/timeout-refresh/index.js", "../../../../../node_modules/.pnpm/abstract-extension@3.1.1/node_modules/abstract-extension/index.js", "../../../../../node_modules/.pnpm/queue-tick@1.0.1/node_modules/queue-tick/queue-microtask.js", "../../../../../node_modules/.pnpm/queue-tick@1.0.1/node_modules/queue-tick/process-next-tick.js", "../../../../../node_modules/.pnpm/fast-fifo@1.3.2/node_modules/fast-fifo/fixed-size.js", "../../../../../node_modules/.pnpm/fast-fifo@1.3.2/node_modules/fast-fifo/index.js", "../../../../../node_modules/.pnpm/streamx@2.15.6/node_modules/streamx/index.js", "../../../../../node_modules/.pnpm/ms@2.1.3/node_modules/ms/index.js", "../../../../../node_modules/.pnpm/debug@4.4.3/node_modules/debug/src/common.js", "../../../../../node_modules/.pnpm/debug@4.4.3/node_modules/debug/src/browser.js", "../../../../../node_modules/.pnpm/has-flag@4.0.0/node_modules/has-flag/index.js", "../../../../../node_modules/.pnpm/supports-color@7.2.0/node_modules/supports-color/index.js", "../../../../../node_modules/.pnpm/debug@4.4.3/node_modules/debug/src/node.js", "../../../../../node_modules/.pnpm/debug@4.4.3/node_modules/debug/src/index.js", "../../../../../node_modules/.pnpm/hypercore-protocol@8.0.7/node_modules/hypercore-protocol/index.js", "../../../../../node_modules/.pnpm/count-trailing-zeros@1.0.1/node_modules/count-trailing-zeros/ctz.js", "../../../../../node_modules/.pnpm/fast-bitfield@1.2.2/node_modules/fast-bitfield/index.js", "../../../../../node_modules/.pnpm/hypercore@9.12.0/node_modules/hypercore/lib/replicate.js", "../../../../../node_modules/.pnpm/nanoresource@1.3.0/node_modules/nanoresource/emitter.js", "../../../src/empty.js", "../../../../../node_modules/.pnpm/hypercore-streams@1.0.1/node_modules/hypercore-streams/index.js", "../../../../../node_modules/.pnpm/hypercore@9.12.0/node_modules/hypercore/index.js", "../../../src/hypercore.js"],
|
|
4
|
+
"sourcesContent": ["module.exports = function (work) {\n var pending = null\n var callback = null\n var callbacks = null\n var next = null\n\n return function (val, cb) {\n next = val\n update(cb || noop)\n }\n\n function update (cb) {\n if (callback) {\n if (!pending) pending = []\n pending.push(cb)\n return\n }\n\n var val = next\n next = null\n callback = cb\n work(val, done)\n }\n\n function done (err) {\n var cb = callback\n var cbs = callbacks\n callbacks = null\n callback = null\n\n if (pending) {\n callbacks = pending\n pending = null\n update(noop)\n }\n\n if (cbs) {\n for (var i = 0; i < cbs.length; i++) cbs[i](err)\n }\n cb(err)\n }\n}\n\nfunction noop (_) {}\n", "module.exports = remove\n\nfunction remove (arr, i) {\n if (i >= arr.length || i < 0) return\n var last = arr.pop()\n if (i < arr.length) {\n var tmp = arr[i]\n arr[i] = last\n return tmp\n }\n return last\n}\n", "exports.add = add\nexports.has = has\nexports.remove = remove\nexports.swap = swap\n\nfunction add (list, item) {\n if (has(list, item)) return item\n item._index = list.length\n list.push(item)\n return item\n}\n\nfunction has (list, item) {\n return item._index < list.length && list[item._index] === item\n}\n\nfunction remove (list, item) {\n if (!has(list, item)) return null\n\n var last = list.pop()\n if (last !== item) {\n list[item._index] = last\n last._index = item._index\n }\n\n return item\n}\n\nfunction swap (list, a, b) {\n if (!has(list, a) || !has(list, b)) return\n var tmp = a._index\n a._index = b._index\n list[a._index] = a\n b._index = tmp\n list[b._index] = b\n}\n", "exports.fullRoots = function (index, result) {\n if (index & 1) throw new Error('You can only look up roots for depth(0) blocks')\n if (!result) result = []\n\n index /= 2\n\n var offset = 0\n var factor = 1\n\n while (true) {\n if (!index) return result\n while (factor * 2 <= index) factor *= 2\n result.push(offset + factor - 1)\n offset = offset + 2 * factor\n index -= factor\n factor = 1\n }\n}\n\nexports.depth = function (index) {\n var depth = 0\n\n index += 1\n while (!(index & 1)) {\n depth++\n index = rightShift(index)\n }\n\n return depth\n}\n\nexports.sibling = function (index, depth) {\n if (!depth) depth = exports.depth(index)\n var offset = exports.offset(index, depth)\n\n return exports.index(depth, offset & 1 ? offset - 1 : offset + 1)\n}\n\nexports.parent = function (index, depth) {\n if (!depth) depth = exports.depth(index)\n var offset = exports.offset(index, depth)\n\n return exports.index(depth + 1, rightShift(offset))\n}\n\nexports.leftChild = function (index, depth) {\n if (!(index & 1)) return -1\n if (!depth) depth = exports.depth(index)\n return exports.index(depth - 1, exports.offset(index, depth) * 2)\n}\n\nexports.rightChild = function (index, depth) {\n if (!(index & 1)) return -1\n if (!depth) depth = exports.depth(index)\n return exports.index(depth - 1, 1 + (exports.offset(index, depth) * 2))\n}\n\nexports.children = function (index, depth) {\n if (!(index & 1)) return null\n\n if (!depth) depth = exports.depth(index)\n var offset = exports.offset(index, depth) * 2\n\n return [\n exports.index(depth - 1, offset),\n exports.index(depth - 1, offset + 1)\n ]\n}\n\nexports.leftSpan = function (index, depth) {\n if (!(index & 1)) return index\n if (!depth) depth = exports.depth(index)\n return exports.offset(index, depth) * twoPow(depth + 1)\n}\n\nexports.rightSpan = function (index, depth) {\n if (!(index & 1)) return index\n if (!depth) depth = exports.depth(index)\n return (exports.offset(index, depth) + 1) * twoPow(depth + 1) - 2\n}\n\nexports.count = function (index, depth) {\n if (!(index & 1)) return 1\n if (!depth) depth = exports.depth(index)\n return twoPow(depth + 1) - 1\n}\n\nexports.countLeaves = function (index) {\n return (exports.count(index) + 1) / 2\n}\n\nexports.spans = function (index, depth) {\n if (!(index & 1)) return [index, index]\n if (!depth) depth = exports.depth(index)\n\n var offset = exports.offset(index, depth)\n var width = twoPow(depth + 1)\n\n return [offset * width, (offset + 1) * width - 2]\n}\n\nexports.index = function (depth, offset) {\n return (1 + 2 * offset) * twoPow(depth) - 1\n}\n\nexports.offset = function (index, depth) {\n if (!(index & 1)) return index / 2\n if (!depth) depth = exports.depth(index)\n\n return ((index + 1) / twoPow(depth) - 1) / 2\n}\n\nexports.iterator = function (index) {\n var ite = new Iterator()\n ite.seek(index || 0)\n return ite\n}\n\nfunction twoPow (n) {\n return n < 31 ? 1 << n : ((1 << 30) * (1 << (n - 30)))\n}\n\nfunction rightShift (n) {\n return (n - (n & 1)) / 2\n}\n\nfunction Iterator () {\n this.index = 0\n this.offset = 0\n this.factor = 0\n}\n\nIterator.prototype.seek = function (index) {\n this.index = index\n if (this.index & 1) {\n this.offset = exports.offset(index)\n this.factor = twoPow(exports.depth(index) + 1)\n } else {\n this.offset = index / 2\n this.factor = 2\n }\n}\n\nIterator.prototype.isLeft = function () {\n return (this.offset & 1) === 0\n}\n\nIterator.prototype.isRight = function () {\n return (this.offset & 1) === 1\n}\n\nIterator.prototype.contains = function (index) {\n return index > this.index\n ? index < (this.index + this.factor / 2)\n : index < this.index\n ? index > (this.index - this.factor / 2)\n : true\n}\n\nIterator.prototype.prev = function () {\n if (!this.offset) return this.index\n this.offset--\n this.index -= this.factor\n return this.index\n}\n\nIterator.prototype.next = function () {\n this.offset++\n this.index += this.factor\n return this.index\n}\n\nIterator.prototype.count = function () {\n if (!(this.index & 1)) return 1\n return this.factor - 1\n}\n\nIterator.prototype.countLeaves = function () {\n return (this.count() + 1) / 2\n}\n\nIterator.prototype.sibling = function () {\n return this.isLeft() ? this.next() : this.prev()\n}\n\nIterator.prototype.parent = function () {\n if (this.offset & 1) {\n this.index -= this.factor / 2\n this.offset = (this.offset - 1) / 2\n } else {\n this.index += this.factor / 2\n this.offset /= 2\n }\n this.factor *= 2\n return this.index\n}\n\nIterator.prototype.leftSpan = function () {\n this.index = this.index - this.factor / 2 + 1\n this.offset = this.index / 2\n this.factor = 2\n return this.index\n}\n\nIterator.prototype.rightSpan = function () {\n this.index = this.index + this.factor / 2 - 1\n this.offset = this.index / 2\n this.factor = 2\n return this.index\n}\n\nIterator.prototype.leftChild = function () {\n if (this.factor === 2) return this.index\n this.factor /= 2\n this.index -= this.factor / 2\n this.offset *= 2\n return this.index\n}\n\nIterator.prototype.rightChild = function () {\n if (this.factor === 2) return this.index\n this.factor /= 2\n this.index += this.factor / 2\n this.offset = 2 * this.offset + 1\n return this.index\n}\n\nIterator.prototype.nextTree = function () {\n this.index = this.index + this.factor / 2 + 1\n this.offset = this.index / 2\n this.factor = 2\n return this.index\n}\n\nIterator.prototype.prevTree = function () {\n if (!this.offset) {\n this.index = 0\n this.factor = 2\n } else {\n this.index = this.index - this.factor / 2 - 1\n this.offset = this.index / 2\n this.factor = 2\n }\n return this.index\n}\n\nIterator.prototype.fullRoot = function (index) {\n if (index <= this.index || (this.index & 1) > 0) return false\n while (index > this.index + this.factor + this.factor / 2) {\n this.index += this.factor / 2\n this.factor *= 2\n this.offset /= 2\n }\n return true\n}\n", "// a more low level interface to the merkle tree stream.\n// useful for certain applications the require non-streamy access to the algos.\n// versioned by the same semver as the stream interface.\n\nconst flat = require('flat-tree')\n\nmodule.exports = class MerkleGenerator {\n constructor (opts, roots) {\n if (!opts || !opts.leaf || !opts.parent) throw new Error('opts.leaf and opts.parent required')\n\n this.roots = roots || opts.roots || []\n this.blocks = this.roots.length ? 1 + flat.rightSpan(this.roots[this.roots.length - 1].index) / 2 : 0\n\n for (var i = 0; i < this.roots.length; i++) {\n var r = this.roots[i]\n if (r && !r.parent) r.parent = flat.parent(r.index)\n }\n\n this._leaf = opts.leaf\n this._parent = opts.parent\n }\n\n next (data, nodes) {\n if (!Buffer.isBuffer(data)) data = Buffer.from(data)\n if (!nodes) nodes = []\n\n var index = 2 * this.blocks++\n\n var leaf = {\n index: index,\n parent: flat.parent(index),\n hash: null,\n size: data.length,\n data: data\n }\n\n leaf.hash = this._leaf(leaf, this.roots)\n this.roots.push(leaf)\n nodes.push(leaf)\n\n while (this.roots.length > 1) {\n var left = this.roots[this.roots.length - 2]\n var right = this.roots[this.roots.length - 1]\n\n if (left.parent !== right.parent) break\n\n this.roots.pop()\n this.roots[this.roots.length - 1] = leaf = {\n index: left.parent,\n parent: flat.parent(left.parent),\n hash: this._parent(left, right),\n size: left.size + right.size,\n data: null\n }\n nodes.push(leaf)\n }\n\n return nodes\n }\n}\n", "module.exports = codecs\n\ncodecs.ascii = createString('ascii')\ncodecs.utf8 = createString('utf-8')\ncodecs.hex = createString('hex')\ncodecs.base64 = createString('base64')\ncodecs.ucs2 = createString('ucs2')\ncodecs.utf16le = createString('utf16le')\ncodecs.ndjson = createJSON(true)\ncodecs.json = createJSON(false)\ncodecs.binary = {\n name: 'binary',\n encode: function encodeBinary (obj) {\n return typeof obj === 'string'\n ? Buffer.from(obj, 'utf-8')\n : Buffer.isBuffer(obj)\n ? obj\n : Buffer.from(obj.buffer, obj.byteOffset, obj.byteLength)\n },\n decode: function decodeBinary (buf) {\n return Buffer.isBuffer(buf)\n ? buf\n : Buffer.from(buf.buffer, buf.byteOffset, buf.byteLength)\n }\n}\n\nfunction codecs (fmt, fallback) {\n if (typeof fmt === 'object' && fmt && fmt.encode && fmt.decode) return fmt\n\n switch (fmt) {\n case 'ndjson': return codecs.ndjson\n case 'json': return codecs.json\n case 'ascii': return codecs.ascii\n case 'utf-8':\n case 'utf8': return codecs.utf8\n case 'hex': return codecs.hex\n case 'base64': return codecs.base64\n case 'ucs-2':\n case 'ucs2': return codecs.ucs2\n case 'utf16-le':\n case 'utf16le': return codecs.utf16le\n }\n\n return fallback !== undefined ? fallback : codecs.binary\n}\n\nfunction createJSON (newline) {\n return {\n name: newline ? 'ndjson' : 'json',\n encode: newline ? encodeNDJSON : encodeJSON,\n decode: function decodeJSON (buf) {\n return JSON.parse(buf.toString())\n }\n }\n\n function encodeJSON (val) {\n return Buffer.from(JSON.stringify(val))\n }\n\n function encodeNDJSON (val) {\n return Buffer.from(JSON.stringify(val) + '\\n')\n }\n}\n\nfunction createString (type) {\n return {\n name: type,\n encode: function encodeString (val) {\n if (typeof val !== 'string') val = val.toString()\n return Buffer.from(val, type)\n },\n decode: function decodeString (buf) {\n return buf.toString(type)\n }\n }\n}\n", "module.exports = batcher\n\nfunction batcher (run) {\n var running = false\n var pendingBatch = null\n var pendingCallbacks = null\n var callbacks = null\n\n return append\n\n function done (err) {\n if (callbacks) callAll(callbacks, err)\n\n running = false\n callbacks = pendingCallbacks\n var nextBatch = pendingBatch\n\n pendingBatch = null\n pendingCallbacks = null\n\n if (!nextBatch || !nextBatch.length) {\n if (!callbacks || !callbacks.length) {\n callbacks = null\n return\n }\n if (!nextBatch) nextBatch = []\n }\n\n running = true\n run(nextBatch, done)\n }\n\n function append (val, cb) {\n if (running) {\n if (!pendingBatch) {\n pendingBatch = []\n pendingCallbacks = []\n }\n pushAll(pendingBatch, val)\n if (cb) pendingCallbacks.push(cb)\n } else {\n if (cb) callbacks = [cb]\n running = true\n run(Array.isArray(val) ? val : [val], done)\n }\n }\n}\n\nfunction pushAll (list, val) {\n if (Array.isArray(val)) pushArray(list, val)\n else list.push(val)\n}\n\nfunction pushArray (list, val) {\n for (var i = 0; i < val.length; i++) list.push(val[i])\n}\n\nfunction callAll (list, err) {\n for (var i = 0; i < list.length; i++) list[i](err)\n}\n", "if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\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 };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (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 }\n}\n", "try {\n var util = require('util');\n /* istanbul ignore next */\n if (typeof util.inherits !== 'function') throw '';\n module.exports = util.inherits;\n} catch (e) {\n /* istanbul ignore next */\n module.exports = require('./inherits_browser.js');\n}\n", "module.exports = encode\n\nvar MSB = 0x80\n , REST = 0x7F\n , MSBALL = ~REST\n , INT = Math.pow(2, 31)\n\nfunction encode(num, out, offset) {\n out = out || []\n offset = offset || 0\n var oldOffset = offset\n\n while(num >= INT) {\n out[offset++] = (num & 0xFF) | MSB\n num /= 128\n }\n while(num & MSBALL) {\n out[offset++] = (num & 0xFF) | MSB\n num >>>= 7\n }\n out[offset] = num | 0\n \n encode.bytes = offset - oldOffset + 1\n \n return out\n}\n", "module.exports = read\n\nvar MSB = 0x80\n , REST = 0x7F\n\nfunction read(buf, offset) {\n var res = 0\n , offset = offset || 0\n , shift = 0\n , counter = offset\n , b\n , l = buf.length\n\n do {\n if(counter >= l) {\n read.bytes = 0\n read.bytesRead = 0 // DEPRECATED\n return undefined\n }\n b = buf[counter++]\n res += shift < 28\n ? (b & REST) << shift\n : (b & REST) * Math.pow(2, shift)\n shift += 7\n } while (b >= MSB)\n\n read.bytes = counter - offset\n\n return res\n}\n", "\nvar N1 = Math.pow(2, 7)\nvar N2 = Math.pow(2, 14)\nvar N3 = Math.pow(2, 21)\nvar N4 = Math.pow(2, 28)\nvar N5 = Math.pow(2, 35)\nvar N6 = Math.pow(2, 42)\nvar N7 = Math.pow(2, 49)\nvar N8 = Math.pow(2, 56)\nvar N9 = Math.pow(2, 63)\n\nmodule.exports = function (value) {\n return (\n value < N1 ? 1\n : value < N2 ? 2\n : value < N3 ? 3\n : value < N4 ? 4\n : value < N5 ? 5\n : value < N6 ? 6\n : value < N7 ? 7\n : value < N8 ? 8\n : value < N9 ? 9\n : 10\n )\n}\n", "module.exports = {\n encode: require('./encode.js')\n , decode: require('./decode.js')\n , encodingLength: require('./length.js')\n}\n", "function allocUnsafe (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number')\n }\n\n if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative')\n }\n\n if (Buffer.allocUnsafe) {\n return Buffer.allocUnsafe(size)\n } else {\n return new Buffer(size)\n }\n}\n\nmodule.exports = allocUnsafe\n", "var varint = require('varint')\nvar alloc = require('buffer-alloc-unsafe')\n\nmodule.exports = align(1)\n\nfunction align (n) {\n var exports = {}\n\n exports.align = align\n\n exports.encode = encode\n exports.encode.bytes = 0\n exports.encodingLength = encodingLength\n\n exports.decode = decode\n exports.decode.bytes = 0\n exports.decodingLength = decodingLength\n\n return exports\n\n function State (input, output, offset) {\n this.inputOffset = 0\n this.inputLength = input.length\n this.input = input\n this.outputOffset = offset\n this.output = output\n }\n\n function encode (bitfield, buffer, offset) {\n if (!offset) offset = 0\n if (!buffer) buffer = alloc(encodingLength(bitfield))\n var state = new State(bitfield, buffer, offset)\n rle(state)\n encode.bytes = state.outputOffset - offset\n return buffer\n }\n\n function encodingLength (bitfield) {\n var state = new State(bitfield, null, 0)\n rle(state)\n return state.outputOffset\n }\n\n function decode (buffer, offset) {\n if (!offset) offset = 0\n\n var bitfield = alloc(decodingLength(buffer, offset))\n var ptr = 0\n\n while (offset < buffer.length) {\n var next = varint.decode(buffer, offset)\n var repeat = next & 1\n var len = repeat ? (next - (next & 3)) / 4 : next / 2\n\n offset += varint.decode.bytes\n\n if (repeat) {\n bitfield.fill(next & 2 ? 255 : 0, ptr, ptr + len)\n } else {\n buffer.copy(bitfield, ptr, offset, offset + len)\n offset += len\n }\n\n ptr += len\n }\n\n bitfield.fill(0, ptr)\n decode.bytes = buffer.length - offset\n\n return bitfield\n }\n\n function decodingLength (buffer, offset) {\n if (!offset) offset = 0\n\n var len = 0\n\n while (offset < buffer.length) {\n var next = varint.decode(buffer, offset)\n offset += varint.decode.bytes\n\n var repeat = next & 1\n var slice = repeat ? (next - (next & 3)) / 4 : next / 2\n\n len += slice\n if (!repeat) offset += slice\n }\n\n if (offset > buffer.length) throw new Error('Invalid RLE bitfield')\n\n if (len & (n - 1)) return len + (n - (len & (n - 1)))\n\n return len\n }\n\n function rle (state) {\n var len = 0\n var bits = 0\n var input = state.input\n\n while (state.inputLength > 0 && !input[state.inputLength - 1]) state.inputLength--\n\n for (var i = 0; i < state.inputLength; i++) {\n if (input[i] === bits) {\n len++\n continue\n }\n\n if (len) encodeUpdate(state, i, len, bits)\n\n if (input[i] === 0 || input[i] === 255) {\n bits = input[i]\n len = 1\n } else {\n len = 0\n }\n }\n\n if (len) encodeUpdate(state, state.inputLength, len, bits)\n encodeFinal(state)\n }\n\n function encodeHead (state, end) {\n var headLength = end - state.inputOffset\n varint.encode(2 * headLength, state.output, state.outputOffset)\n state.outputOffset += varint.encode.bytes\n state.input.copy(state.output, state.outputOffset, state.inputOffset, end)\n state.outputOffset += headLength\n }\n\n function encodeFinal (state) {\n var headLength = state.inputLength - state.inputOffset\n if (!headLength) return\n\n if (!state.output) {\n state.outputOffset += (headLength + varint.encodingLength(2 * headLength))\n } else {\n encodeHead(state, state.inputLength)\n }\n\n state.inputOffset = state.inputLength\n }\n\n function encodeUpdate (state, i, len, bit) {\n var headLength = i - len - state.inputOffset\n var headCost = (headLength ? varint.encodingLength(2 * headLength) + headLength : 0)\n var enc = 4 * len + (bit ? 2 : 0) + 1 // len << 2 | bit << 1 | 1\n var encCost = headCost + varint.encodingLength(enc)\n var baseCost = varint.encodingLength(2 * (i - state.inputOffset)) + i - state.inputOffset\n\n if (encCost >= baseCost) return\n\n if (!state.output) {\n state.outputOffset += encCost\n state.inputOffset = i\n return\n }\n\n if (headLength) encodeHead(state, i - len)\n\n varint.encode(enc, state.output, state.outputOffset)\n state.outputOffset += varint.encode.bytes\n state.inputOffset = i\n }\n}\n", "module.exports = Pager\n\nfunction Pager (pageSize, opts) {\n if (!(this instanceof Pager)) return new Pager(pageSize, opts)\n\n this.length = 0\n this.updates = []\n this.path = new Uint16Array(4)\n this.pages = new Array(32768)\n this.maxPages = this.pages.length\n this.level = 0\n this.pageSize = pageSize || 1024\n this.deduplicate = opts ? opts.deduplicate : null\n this.zeros = this.deduplicate ? alloc(this.deduplicate.length) : null\n}\n\nPager.prototype.updated = function (page) {\n while (this.deduplicate && page.buffer[page.deduplicate] === this.deduplicate[page.deduplicate]) {\n page.deduplicate++\n if (page.deduplicate === this.deduplicate.length) {\n page.deduplicate = 0\n if (page.buffer.equals && page.buffer.equals(this.deduplicate)) page.buffer = this.deduplicate\n break\n }\n }\n if (page.updated || !this.updates) return\n page.updated = true\n this.updates.push(page)\n}\n\nPager.prototype.lastUpdate = function () {\n if (!this.updates || !this.updates.length) return null\n var page = this.updates.pop()\n page.updated = false\n return page\n}\n\nPager.prototype._array = function (i, noAllocate) {\n if (i >= this.maxPages) {\n if (noAllocate) return\n grow(this, i)\n }\n\n factor(i, this.path)\n\n var arr = this.pages\n\n for (var j = this.level; j > 0; j--) {\n var p = this.path[j]\n var next = arr[p]\n\n if (!next) {\n if (noAllocate) return\n next = arr[p] = new Array(32768)\n }\n\n arr = next\n }\n\n return arr\n}\n\nPager.prototype.get = function (i, noAllocate) {\n var arr = this._array(i, noAllocate)\n var first = this.path[0]\n var page = arr && arr[first]\n\n if (!page && !noAllocate) {\n page = arr[first] = new Page(i, alloc(this.pageSize))\n if (i >= this.length) this.length = i + 1\n }\n\n if (page && page.buffer === this.deduplicate && this.deduplicate && !noAllocate) {\n page.buffer = copy(page.buffer)\n page.deduplicate = 0\n }\n\n return page\n}\n\nPager.prototype.set = function (i, buf) {\n var arr = this._array(i, false)\n var first = this.path[0]\n\n if (i >= this.length) this.length = i + 1\n\n if (!buf || (this.zeros && buf.equals && buf.equals(this.zeros))) {\n arr[first] = undefined\n return\n }\n\n if (this.deduplicate && buf.equals && buf.equals(this.deduplicate)) {\n buf = this.deduplicate\n }\n\n var page = arr[first]\n var b = truncate(buf, this.pageSize)\n\n if (page) page.buffer = b\n else arr[first] = new Page(i, b)\n}\n\nPager.prototype.toBuffer = function () {\n var list = new Array(this.length)\n var empty = alloc(this.pageSize)\n var ptr = 0\n\n while (ptr < list.length) {\n var arr = this._array(ptr, true)\n for (var i = 0; i < 32768 && ptr < list.length; i++) {\n list[ptr++] = (arr && arr[i]) ? arr[i].buffer : empty\n }\n }\n\n return Buffer.concat(list)\n}\n\nfunction grow (pager, index) {\n while (pager.maxPages < index) {\n var old = pager.pages\n pager.pages = new Array(32768)\n pager.pages[0] = old\n pager.level++\n pager.maxPages *= 32768\n }\n}\n\nfunction truncate (buf, len) {\n if (buf.length === len) return buf\n if (buf.length > len) return buf.slice(0, len)\n var cpy = alloc(len)\n buf.copy(cpy)\n return cpy\n}\n\nfunction alloc (size) {\n if (Buffer.alloc) return Buffer.alloc(size)\n var buf = new Buffer(size)\n buf.fill(0)\n return buf\n}\n\nfunction copy (buf) {\n var cpy = Buffer.allocUnsafe ? Buffer.allocUnsafe(buf.length) : new Buffer(buf.length)\n buf.copy(cpy)\n return cpy\n}\n\nfunction Page (i, buf) {\n this.offset = i * buf.length\n this.buffer = buf\n this.updated = false\n this.deduplicate = 0\n}\n\nfunction factor (n, out) {\n n = (n - (out[0] = (n & 32767))) / 32768\n n = (n - (out[1] = (n & 32767))) / 32768\n out[3] = ((n - (out[2] = (n & 32767))) / 32768) & 32767\n}\n", "var pager = require('memory-pager')\n\nmodule.exports = Bitfield\n\nfunction Bitfield (opts) {\n if (!(this instanceof Bitfield)) return new Bitfield(opts)\n if (!opts) opts = {}\n if (Buffer.isBuffer(opts)) opts = {buffer: opts}\n\n this.pageOffset = opts.pageOffset || 0\n this.pageSize = opts.pageSize || 1024\n this.pages = opts.pages || pager(this.pageSize)\n\n this.byteLength = this.pages.length * this.pageSize\n this.length = 8 * this.byteLength\n\n if (!powerOfTwo(this.pageSize)) throw new Error('The page size should be a power of two')\n\n this._trackUpdates = !!opts.trackUpdates\n this._pageMask = this.pageSize - 1\n\n if (opts.buffer) {\n for (var i = 0; i < opts.buffer.length; i += this.pageSize) {\n this.pages.set(i / this.pageSize, opts.buffer.slice(i, i + this.pageSize))\n }\n this.byteLength = opts.buffer.length\n this.length = 8 * this.byteLength\n }\n}\n\nBitfield.prototype.get = function (i) {\n var o = i & 7\n var j = (i - o) / 8\n\n return !!(this.getByte(j) & (128 >> o))\n}\n\nBitfield.prototype.getByte = function (i) {\n var o = i & this._pageMask\n var j = (i - o) / this.pageSize\n var page = this.pages.get(j, true)\n\n return page ? page.buffer[o + this.pageOffset] : 0\n}\n\nBitfield.prototype.set = function (i, v) {\n var o = i & 7\n var j = (i - o) / 8\n var b = this.getByte(j)\n\n return this.setByte(j, v ? b | (128 >> o) : b & (255 ^ (128 >> o)))\n}\n\nBitfield.prototype.toBuffer = function () {\n var all = alloc(this.pages.length * this.pageSize)\n\n for (var i = 0; i < this.pages.length; i++) {\n var next = this.pages.get(i, true)\n var allOffset = i * this.pageSize\n if (next) next.buffer.copy(all, allOffset, this.pageOffset, this.pageOffset + this.pageSize)\n }\n\n return all\n}\n\nBitfield.prototype.setByte = function (i, b) {\n var o = i & this._pageMask\n var j = (i - o) / this.pageSize\n var page = this.pages.get(j, false)\n\n o += this.pageOffset\n\n if (page.buffer[o] === b) return false\n page.buffer[o] = b\n\n if (i >= this.byteLength) {\n this.byteLength = i + 1\n this.length = this.byteLength * 8\n }\n\n if (this._trackUpdates) this.pages.updated(page)\n\n return true\n}\n\nfunction alloc (n) {\n if (Buffer.alloc) return Buffer.alloc(n)\n var b = new Buffer(n)\n b.fill(0)\n return b\n}\n\nfunction powerOfTwo (x) {\n return !(x & (x - 1))\n}\n", "var flat = require('flat-tree')\nvar rle = require('bitfield-rle')\nvar pager = require('memory-pager')\nvar bitfield = require('sparse-bitfield')\n\nvar INDEX_UPDATE_MASK = [63, 207, 243, 252]\nvar INDEX_ITERATE_MASK = [0, 192, 240, 252]\nvar DATA_ITERATE_MASK = [128, 192, 224, 240, 248, 252, 254, 255]\nvar DATA_UPDATE_MASK = [127, 191, 223, 239, 247, 251, 253, 254]\nvar MAP_PARENT_RIGHT = new Array(256)\nvar MAP_PARENT_LEFT = new Array(256)\nvar NEXT_DATA_0_BIT = new Array(256)\nvar NEXT_INDEX_0_BIT = new Array(256)\nvar TOTAL_1_BITS = new Array(256)\n\nfor (var i = 0; i < 256; i++) {\n var a = (i & (15 << 4)) >> 4\n var b = i & 15\n var nibble = [0, 1, 1, 2, 1, 2, 2, 3, 1, 2, 2, 3, 2, 3, 3, 4]\n MAP_PARENT_RIGHT[i] = ((a === 15 ? 3 : a === 0 ? 0 : 1) << 2) | (b === 15 ? 3 : b === 0 ? 0 : 1)\n MAP_PARENT_LEFT[i] = MAP_PARENT_RIGHT[i] << 4\n NEXT_DATA_0_BIT[i] = i === 255 ? -1 : (8 - Math.ceil(Math.log(256 - i) / Math.log(2)))\n NEXT_INDEX_0_BIT[i] = i === 255 ? -1 : Math.floor(NEXT_DATA_0_BIT[i] / 2)\n TOTAL_1_BITS[i] = nibble[i >> 4] + nibble[i & 0x0F]\n}\n\nmodule.exports = Bitfield\n\nfunction Bitfield (pageSize, pages) {\n if (!(this instanceof Bitfield)) return new Bitfield(pageSize, pages)\n if (!pageSize) pageSize = 2048 + 1024 + 512\n\n var deduplicate = Buffer.allocUnsafe(pageSize)\n deduplicate.fill(255)\n\n this.indexSize = pageSize - 2048 - 1024\n this.pages = pager(pageSize, { deduplicate })\n\n if (pages) {\n for (var i = 0; i < pages.length; i++) {\n this.pages.set(i, pages[i])\n }\n }\n\n this.data = bitfield({\n pageSize: 1024,\n pageOffset: 0,\n pages: this.pages,\n trackUpdates: true\n })\n\n this.tree = bitfield({\n pageSize: 2048,\n pageOffset: 1024,\n pages: this.pages,\n trackUpdates: true\n })\n\n this.index = bitfield({\n pageSize: this.indexSize,\n pageOffset: 1024 + 2048,\n pages: this.pages,\n trackUpdates: true\n })\n\n this.length = this.data.length\n this._iterator = flat.iterator(0)\n}\n\nBitfield.prototype.set = function (i, value) {\n var o = i & 7\n i = (i - o) / 8\n var v = value ? this.data.getByte(i) | (128 >> o) : this.data.getByte(i) & DATA_UPDATE_MASK[o]\n\n if (!this.data.setByte(i, v)) return false\n this.length = this.data.length\n this._setIndex(i, v)\n return true\n}\n\nBitfield.prototype.get = function (i) {\n return this.data.get(i)\n}\n\nBitfield.prototype.total = function (start, end) {\n if (!start || start < 0) start = 0\n if (!end) end = this.data.length\n if (end < start) return 0\n if (end > this.data.length) {\n this._expand(end)\n }\n var o = start & 7\n var e = end & 7\n var pos = (start - o) / 8\n var last = (end - e) / 8\n var leftMask = (255 - (o ? DATA_ITERATE_MASK[o - 1] : 0))\n var rightMask = (e ? DATA_ITERATE_MASK[e - 1] : 0)\n var byte = this.data.getByte(pos)\n if (pos === last) {\n return TOTAL_1_BITS[byte & leftMask & rightMask]\n }\n var total = TOTAL_1_BITS[byte & leftMask]\n for (var i = pos + 1; i < last; i++) {\n total += TOTAL_1_BITS[this.data.getByte(i)]\n }\n total += TOTAL_1_BITS[this.data.getByte(last) & rightMask]\n return total\n}\n\n// TODO: use the index to speed this up *a lot*\nBitfield.prototype.compress = function (start, length) {\n if (!start && !length) return rle.encode(this.data.toBuffer())\n\n if (start + length > this.length) length = Math.max(1, this.length - start)\n var buf = Buffer.alloc(Math.ceil(length / 8))\n\n var p = start / this.data.pageSize / 8\n var end = p + length / this.data.pageSize / 8\n var offset = p * this.data.pageSize\n\n for (; p < end; p++) {\n var page = this.data.pages.get(p, true)\n if (!page || !page.buffer) continue\n page.buffer.copy(buf, p * this.data.pageSize - offset, this.data.pageOffset, this.data.pageOffset + this.data.pageSize)\n }\n\n return rle.encode(buf)\n}\n\nBitfield.prototype._setIndex = function (i, value) {\n // (a + b | c + d | e + f | g + h)\n // -> (a | b | c | d) (e | f | g | h)\n //\n\n var o = i & 3\n i = (i - o) / 4\n\n var bitfield = this.index\n var ite = this._iterator\n var start = 2 * i\n var byte = (bitfield.getByte(start) & INDEX_UPDATE_MASK[o]) | (getIndexValue(value) >> (2 * o))\n var len = bitfield.length\n var maxLength = this.pages.length * this.indexSize\n\n ite.seek(start)\n\n while (ite.index < maxLength && bitfield.setByte(ite.index, byte)) {\n if (ite.isLeft()) {\n byte = MAP_PARENT_LEFT[byte] | MAP_PARENT_RIGHT[bitfield.getByte(ite.sibling())]\n } else {\n byte = MAP_PARENT_RIGHT[byte] | MAP_PARENT_LEFT[bitfield.getByte(ite.sibling())]\n }\n ite.parent()\n }\n\n if (len !== bitfield.length) this._expand(len)\n\n return ite.index !== start\n}\n\nBitfield.prototype._expand = function (len) {\n var roots = flat.fullRoots(2 * len)\n var bitfield = this.index\n var ite = this._iterator\n var byte = 0\n\n for (var i = 0; i < roots.length; i++) {\n ite.seek(roots[i])\n byte = bitfield.getByte(ite.index)\n\n do {\n if (ite.isLeft()) {\n byte = MAP_PARENT_LEFT[byte] | MAP_PARENT_RIGHT[bitfield.getByte(ite.sibling())]\n } else {\n byte = MAP_PARENT_RIGHT[byte] | MAP_PARENT_LEFT[bitfield.getByte(ite.sibling())]\n }\n } while (setByteNoAlloc(bitfield, ite.parent(), byte))\n }\n}\n\nfunction setByteNoAlloc (bitfield, i, b) {\n if (8 * i >= bitfield.length) return false\n return bitfield.setByte(i, b)\n}\n\nBitfield.prototype.iterator = function (start, end) {\n var ite = new Iterator(this)\n\n ite.range(start || 0, end || this.length)\n ite.seek(0)\n\n return ite\n}\n\nfunction Iterator (bitfield) {\n this.start = 0\n this.end = 0\n\n this._indexEnd = 0\n this._pos = 0\n this._byte = 0\n this._bitfield = bitfield\n}\n\nIterator.prototype.range = function (start, end) {\n this.start = start\n this.end = end\n this._indexEnd = 2 * Math.ceil(end / 32)\n\n if (this.end > this._bitfield.length) {\n this._bitfield._expand(this.end)\n }\n\n return this\n}\n\nIterator.prototype.seek = function (offset) {\n offset += this.start\n if (offset < this.start) offset = this.start\n\n if (offset >= this.end) {\n this._pos = -1\n return this\n }\n\n var o = offset & 7\n\n this._pos = (offset - o) / 8\n this._byte = this._bitfield.data.getByte(this._pos) | (o ? DATA_ITERATE_MASK[o - 1] : 0)\n\n return this\n}\n\nIterator.prototype.random = function () {\n var i = this.seek(Math.floor(Math.random() * (this.end - this.start))).next()\n return i === -1 ? this.seek(0).next() : i\n}\n\nIterator.prototype.next = function () {\n if (this._pos === -1) return -1\n\n var dataBitfield = this._bitfield.data\n var free = NEXT_DATA_0_BIT[this._byte]\n\n while (free === -1) {\n this._byte = dataBitfield.getByte(++this._pos)\n free = NEXT_DATA_0_BIT[this._byte]\n\n if (free === -1) {\n this._pos = this._skipAhead(this._pos)\n if (this._pos === -1) return -1\n\n this._byte = dataBitfield.getByte(this._pos)\n free = NEXT_DATA_0_BIT[this._byte]\n }\n }\n\n this._byte |= DATA_ITERATE_MASK[free]\n\n var n = 8 * this._pos + free\n return n < this.end ? n : -1\n}\n\nIterator.prototype.peek = function () {\n if (this._pos === -1) return -1\n\n var free = NEXT_DATA_0_BIT[this._byte]\n var n = 8 * this._pos + free\n return n < this.end ? n : -1\n}\n\nIterator.prototype._skipAhead = function (start) {\n var indexBitfield = this._bitfield.index\n var treeEnd = this._indexEnd\n var ite = this._bitfield._iterator\n var o = start & 3\n\n ite.seek(2 * ((start - o) / 4))\n\n var treeByte = indexBitfield.getByte(ite.index) | INDEX_ITERATE_MASK[o]\n\n while (NEXT_INDEX_0_BIT[treeByte] === -1) {\n if (ite.isLeft()) {\n ite.next()\n } else {\n ite.next()\n ite.parent()\n }\n\n if (rightSpan(ite) >= treeEnd) {\n while (rightSpan(ite) >= treeEnd && isParent(ite)) ite.leftChild()\n if (rightSpan(ite) >= treeEnd) return -1\n }\n\n treeByte = indexBitfield.getByte(ite.index)\n }\n\n while (ite.factor > 2) {\n if (NEXT_INDEX_0_BIT[treeByte] < 2) ite.leftChild()\n else ite.rightChild()\n\n treeByte = indexBitfield.getByte(ite.index)\n }\n\n var free = NEXT_INDEX_0_BIT[treeByte]\n if (free === -1) free = 4\n\n var next = ite.index * 2 + free\n\n return next <= start ? start + 1 : next\n}\n\nfunction rightSpan (ite) {\n return ite.index + ite.factor / 2 - 1\n}\n\nfunction isParent (ite) {\n return ite.index & 1\n}\n\nfunction getIndexValue (n) {\n switch (n) {\n case 255: return 192\n case 0: return 0\n default: return 64\n }\n}\n", "var flat = require('flat-tree')\nvar bitfield = require('sparse-bitfield')\n\nmodule.exports = TreeIndex\n\nfunction TreeIndex (bits) {\n if (!(this instanceof TreeIndex)) return new TreeIndex(bits)\n this.bitfield = bits || bitfield()\n}\n\nTreeIndex.prototype.proof = function (index, opts) {\n if (!opts) opts = {}\n\n var nodes = []\n var remoteTree = opts.tree || new TreeIndex()\n var digest = opts.digest || 0\n\n if (!this.get(index)) return null\n if (opts.hash) nodes.push(index) // always return hash - no matter what the digest says\n if (digest === 1) return { nodes: nodes, verifiedBy: 0 }\n\n var roots = null\n var sibling = index\n var next = index\n var hasRoot = digest & 1\n digest = rightShift(digest)\n\n while (digest) {\n if (digest === 1 && hasRoot) {\n if (this.get(next)) remoteTree.set(next)\n\n // having a root implies having prev roots as well\n // TODO: this can be optimized away be only sending \"newer\" roots,\n // when sending roots\n if (flat.sibling(next) < next) next = flat.sibling(next)\n roots = flat.fullRoots(flat.rightSpan(next) + 2)\n for (var i = 0; i < roots.length; i++) {\n if (this.get(roots[i])) remoteTree.set(roots[i])\n }\n break\n }\n\n sibling = flat.sibling(next)\n if (digest & 1) {\n if (this.get(sibling)) remoteTree.set(sibling)\n }\n next = flat.parent(next)\n digest = rightShift(digest)\n }\n\n next = index\n\n while (!remoteTree.get(next)) {\n sibling = flat.sibling(next)\n if (!this.get(sibling)) {\n // next is a local root\n var verifiedBy = this.verifiedBy(next)\n addFullRoots(verifiedBy, nodes, next, remoteTree)\n return { nodes: nodes, verifiedBy: verifiedBy }\n } else {\n if (!remoteTree.get(sibling)) nodes.push(sibling)\n }\n\n next = flat.parent(next)\n }\n\n return { nodes: nodes, verifiedBy: 0 }\n}\n\nTreeIndex.prototype.digest = function (index) {\n if (this.get(index)) return 1\n\n var digest = 0\n var next = flat.sibling(index)\n var max = Math.max(next + 2, this.bitfield.length) // TODO: make this less ... hacky\n\n var bit = 2\n var depth = flat.depth(index)\n var parent = flat.parent(next, depth++)\n\n while (flat.rightSpan(next) < max || flat.leftSpan(parent) > 0) {\n if (this.get(next)) {\n digest += bit // + cause in this case it's the same as | but works for large nums\n }\n if (this.get(parent)) {\n digest += 2 * bit\n if (!(digest & 1)) digest += 1\n if (digest + 1 === 4 * bit) return 1\n return digest\n }\n next = flat.sibling(parent)\n parent = flat.parent(next, depth++)\n bit *= 2\n }\n\n return digest\n}\n\nTreeIndex.prototype.blocks = function () {\n var top = 0\n var next = 0\n var max = this.bitfield.length\n\n while (flat.rightSpan(next) < max) {\n next = flat.parent(next)\n if (this.get(next)) top = next\n }\n\n return (this.get(top) ? this.verifiedBy(top) : 0) / 2\n}\n\nTreeIndex.prototype.roots = function () {\n return flat.fullRoots(2 * this.blocks())\n}\n\nTreeIndex.prototype.verifiedBy = function (index, nodes) {\n var hasIndex = this.get(index)\n if (!hasIndex) return 0\n\n // find root of current tree\n\n var depth = flat.depth(index)\n var top = index\n var parent = flat.parent(top, depth++)\n while (this.get(parent) && this.get(flat.sibling(top))) {\n top = parent\n parent = flat.parent(top, depth++)\n }\n\n // expand right down\n\n depth--\n while (depth) {\n top = flat.leftChild(flat.index(depth, flat.offset(top, depth) + 1), depth)\n depth--\n\n while (!this.get(top) && depth) top = flat.leftChild(top, depth--)\n if (nodes && this.get(top)) nodes.push(top)\n }\n\n return this.get(top) ? top + 2 : top\n}\n\nTreeIndex.prototype.get = function (index) {\n return this.bitfield.get(index)\n}\n\nTreeIndex.prototype.truncate = function (len) {\n const currentLen = 2 * this.blocks()\n const roots = flat.fullRoots(len)\n\n for (let i = len; i < currentLen; i++) {\n this.bitfield.set(i, false)\n }\n\n for (const root of roots) {\n let p = flat.parent(root)\n while (p < len) {\n this.bitfield.set(p, false)\n p = flat.parent(p)\n }\n }\n}\n\nTreeIndex.prototype.set = function (index) {\n if (!this.bitfield.set(index, true)) return false\n while (this.bitfield.get(flat.sibling(index))) {\n index = flat.parent(index)\n if (!this.bitfield.set(index, true)) break\n }\n return true\n}\n\nfunction rightShift (n) {\n return (n - (n & 1)) / 2\n}\n\nfunction addFullRoots (verifiedBy, nodes, root, remoteTree) {\n var roots = flat.fullRoots(verifiedBy)\n for (var i = 0; i < roots.length; i++) {\n if (roots[i] !== root && !remoteTree.get(roots[i])) nodes.push(roots[i])\n }\n}\n", "/* Node.js 6.4.0 and up has full support */\nvar hasFullSupport = (function () {\n try {\n if (!Buffer.isEncoding('latin1')) {\n return false\n }\n\n var buf = Buffer.alloc ? Buffer.alloc(4) : new Buffer(4)\n\n buf.fill('ab', 'ucs2')\n\n return (buf.toString('hex') === '61006200')\n } catch (_) {\n return false\n }\n}())\n\nfunction isSingleByte (val) {\n return (val.length === 1 && val.charCodeAt(0) < 256)\n}\n\nfunction fillWithNumber (buffer, val, start, end) {\n if (start < 0 || end > buffer.length) {\n throw new RangeError('Out of range index')\n }\n\n start = start >>> 0\n end = end === undefined ? buffer.length : end >>> 0\n\n if (end > start) {\n buffer.fill(val, start, end)\n }\n\n return buffer\n}\n\nfunction fillWithBuffer (buffer, val, start, end) {\n if (start < 0 || end > buffer.length) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return buffer\n }\n\n start = start >>> 0\n end = end === undefined ? buffer.length : end >>> 0\n\n var pos = start\n var len = val.length\n while (pos <= (end - len)) {\n val.copy(buffer, pos)\n pos += len\n }\n\n if (pos !== end) {\n val.copy(buffer, pos, 0, end - pos)\n }\n\n return buffer\n}\n\nfunction fill (buffer, val, start, end, encoding) {\n if (hasFullSupport) {\n return buffer.fill(val, start, end, encoding)\n }\n\n if (typeof val === 'number') {\n return fillWithNumber(buffer, val, start, end)\n }\n\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = buffer.length\n } else if (typeof end === 'string') {\n encoding = end\n end = buffer.length\n }\n\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n\n if (encoding === 'latin1') {\n encoding = 'binary'\n }\n\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n if (val === '') {\n return fillWithNumber(buffer, 0, start, end)\n }\n\n if (isSingleByte(val)) {\n return fillWithNumber(buffer, val.charCodeAt(0), start, end)\n }\n\n val = new Buffer(val, encoding)\n }\n\n if (Buffer.isBuffer(val)) {\n return fillWithBuffer(buffer, val, start, end)\n }\n\n // Other values (e.g. undefined, boolean, object) results in zero-fill\n return fillWithNumber(buffer, 0, start, end)\n}\n\nmodule.exports = fill\n", "var bufferFill = require('buffer-fill')\nvar allocUnsafe = require('buffer-alloc-unsafe')\n\nmodule.exports = function alloc (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number')\n }\n\n if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative')\n }\n\n if (Buffer.alloc) {\n return Buffer.alloc(size, fill, encoding)\n }\n\n var buffer = allocUnsafe(size)\n\n if (size === 0) {\n return buffer\n }\n\n if (fill === undefined) {\n return bufferFill(buffer, 0)\n }\n\n if (typeof encoding !== 'string') {\n encoding = undefined\n }\n\n return bufferFill(buffer, fill, encoding)\n}\n", "var bufferAlloc = require('buffer-alloc')\n\nvar UINT_32_MAX = Math.pow(2, 32)\n\nexports.encodingLength = function () {\n return 8\n}\n\nexports.encode = function (num, buf, offset) {\n if (!buf) buf = bufferAlloc(8)\n if (!offset) offset = 0\n\n var top = Math.floor(num / UINT_32_MAX)\n var rem = num - top * UINT_32_MAX\n\n buf.writeUInt32BE(top, offset)\n buf.writeUInt32BE(rem, offset + 4)\n return buf\n}\n\nexports.decode = function (buf, offset) {\n if (!offset) offset = 0\n\n var top = buf.readUInt32BE(offset)\n var rem = buf.readUInt32BE(offset + 4)\n\n return top * UINT_32_MAX + rem\n}\n\nexports.encode.bytes = 8\nexports.decode.bytes = 8\n", "const DEFAULT_MAX_BYTE_SIZE = 1024 * 1024 * 16\n\nclass NamespacedCache {\n constructor (parent, name) {\n this.name = name\n this.parent = parent\n }\n\n get _info () {\n return this.parent._info\n }\n\n set (key, value) {\n return this.parent._set(this.name, key, value)\n }\n\n del (key) {\n return this.parent._del(this.name, key)\n }\n\n get (key) {\n return this.parent._get(this.name, key)\n }\n}\n\nmodule.exports = class HypercoreCache {\n constructor (opts = {}) {\n this.maxByteSize = opts.maxByteSize || DEFAULT_MAX_BYTE_SIZE\n this.onEvict = opts.onEvict\n this.estimateSize = opts.estimateSize || defaultSize\n\n this._nextNamespace = 0\n this.defaultCache = new NamespacedCache(this, this._nextNamespace++)\n\n this._stale = null\n this._fresh = new Map()\n this._freshByteSize = 0\n this._staleByteSize = 0\n }\n\n get _info () {\n return {\n freshByteSize: this._freshByteSize,\n staleByteSize: this._staleByteSize,\n staleEntries: this._stale ? this._stale.size : 0,\n freshEntries: this._fresh.size,\n byteSize: this.byteSize\n }\n }\n\n _prefix (namespace, key) {\n return namespace + ':' + key\n }\n\n _gc () {\n if (this.onEvict && this._staleByteSize > 0) this.onEvict(this._stale)\n this._stale = this._fresh\n this._fresh = new Map()\n this._staleByteSize = this._freshByteSize\n this._freshByteSize = 0\n }\n\n _get (namespace, key, prefixedKey) {\n if (!prefixedKey) prefixedKey = this._prefix(namespace, key)\n return this._fresh.get(prefixedKey) || (this._stale && this._stale.get(prefixedKey))\n }\n\n _set (namespace, key, value) {\n const valueSize = this.estimateSize(value)\n const prefixedKey = this._prefix(namespace, key)\n if (this._freshByteSize + valueSize > this.maxByteSize) {\n this._gc()\n }\n this._fresh.set(prefixedKey, value)\n this._freshByteSize += valueSize\n }\n\n _del (namespace, key) {\n const prefixedKey = this._prefix(namespace, key)\n let val = this._stale && this._stale.get(prefixedKey)\n if (val) {\n this._stale.delete(prefixedKey)\n this._staleByteSize -= this.estimateSize(val)\n }\n val = this._fresh.get(prefixedKey)\n if (val) {\n this._fresh.delete(prefixedKey)\n this._freshByteSize -= this.estimateSize(val)\n }\n }\n\n get byteSize () {\n return this._freshByteSize + this._staleByteSize\n }\n\n namespace () {\n const cache = new NamespacedCache(this, this._nextNamespace++)\n return cache\n }\n\n set (key, value) {\n return this.defaultCache.set(key, value)\n }\n\n del (key) {\n return this.defaultCache.del(key)\n }\n\n get (key) {\n return this.defaultCache.get(key)\n }\n}\n\nfunction defaultSize () {\n // Return an estimate of the object overhead, without being clever here.\n // (You should pass in a size estimator)\n return 1024\n}\n", "const HypercoreCache = require('hypercore-cache')\n\nconst DEFAULT_TREE_CACHE_SIZE = 65536 * 40\n\nfunction createCache (opts) {\n if (opts.cache === false) return {}\n\n const cacheOpts = opts.cache || {}\n if (cacheOpts.tree === undefined || typeof cacheOpts.tree === 'number') {\n const cacheSize = cacheOpts.tree || opts.storageCacheSize\n cacheOpts.tree = new HypercoreCache({\n maxByteSize: cacheSize !== undefined ? cacheSize : DEFAULT_TREE_CACHE_SIZE,\n estimateSize: () => 40\n })\n }\n if (cacheOpts.data === undefined) return cacheOpts\n if (typeof cacheOpts.data === 'number') {\n cacheOpts.data = new HypercoreCache({\n maxByteSize: cacheOpts.data,\n estimateSize: buf => buf.length\n })\n }\n return cacheOpts\n}\n\nmodule.exports = createCache\n", "var uint64be = require('uint64be')\nvar flat = require('flat-tree')\nvar createCache = require('./cache')\n\nmodule.exports = Storage\n\nvar noarr = []\n\nfunction Storage (create, opts) {\n if (!(this instanceof Storage)) return new Storage(create, opts)\n\n const cache = createCache(opts)\n\n this.treeCache = cache.tree || null\n this.dataCache = cache.data || null\n this.key = null\n this.secretKey = null\n this.tree = null\n this.data = null\n this.bitfield = null\n this.signatures = null\n this.create = create\n}\n\nStorage.prototype.putData = function (index, data, nodes, cb) {\n if (!cb) cb = noop\n var self = this\n if (!data.length) return cb(null)\n this.dataOffset(index, nodes, function (err, offset, size) {\n if (err) return cb(err)\n if (size !== data.length) return cb(new Error('Unexpected data size'))\n self.data.write(offset, data, cb)\n })\n}\n\nStorage.prototype.getData = function (index, cb) {\n var self = this\n var cached = this.dataCache && this.dataCache.get(index)\n if (cached) return process.nextTick(cb, null, cached)\n this.dataOffset(index, noarr, function (err, offset, size) {\n if (err) return cb(err)\n self.data.read(offset, size, (err, data) => {\n if (err) return cb(err)\n if (self.dataCache) self.dataCache.set(index, data)\n return cb(null, data)\n })\n })\n}\n\nStorage.prototype.nextSignature = function (index, cb) {\n var self = this\n\n this._getSignature(index, function (err, signature) {\n if (err) return cb(err)\n if (isBlank(signature)) return self.nextSignature(index + 1, cb)\n cb(null, { index: index, signature: signature })\n })\n}\n\nStorage.prototype.getSignature = function (index, cb) {\n this._getSignature(index, function (err, signature) {\n if (err) return cb(err)\n if (isBlank(signature)) return cb(new Error('No signature found'))\n cb(null, signature)\n })\n}\n\n// Caching not enabled for signatures because they are rarely reused.\nStorage.prototype._getSignature = function (index, cb) {\n this.signatures.read(32 + 64 * index, 64, cb)\n}\n\nStorage.prototype.putSignature = function (index, signature, cb) {\n this.signatures.write(32 + 64 * index, signature, cb)\n}\n\nStorage.prototype.deleteSignatures = function (start, end, cb) {\n this.signatures.del(32 + 64 * start, (end - start) * 64, cb)\n}\n\nStorage.prototype.dataOffset = function (index, cachedNodes, cb) {\n var roots = flat.fullRoots(2 * index)\n var self = this\n var offset = 0\n var pending = roots.length\n var error = null\n var blk = 2 * index\n\n if (!pending) {\n pending = 1\n onnode(null, null)\n return\n }\n\n for (var i = 0; i < roots.length; i++) {\n var node = findNode(cachedNodes, roots[i])\n if (node) onnode(null, node)\n else this.getNode(roots[i], onnode)\n }\n\n function onlast (err, node) {\n if (err) return cb(err)\n cb(null, offset, node.size)\n }\n\n function onnode (err, node) {\n if (err) error = err\n if (node) offset += node.size\n if (--pending) return\n\n if (error) return cb(error)\n\n var last = findNode(cachedNodes, blk)\n if (last) onlast(null, last)\n else self.getNode(blk, onlast)\n }\n}\n\n// Caching not enabled for batch reads because they'd be complicated to batch and they're rarely used.\nStorage.prototype.getDataBatch = function (start, n, cb) {\n var result = new Array(n)\n var sizes = new Array(n)\n var self = this\n\n this.dataOffset(start, noarr, function (err, offset, size) {\n if (err) return cb(err)\n\n start++\n n--\n\n if (n <= 0) return ontree(null, null)\n self.tree.read(32 + 80 * start, 80 * n - 40, ontree)\n\n function ontree (err, buf) {\n if (err) return cb(err)\n\n var total = sizes[0] = size\n\n if (buf) {\n for (var i = 1; i < sizes.length; i++) {\n sizes[i] = uint64be.decode(buf, 32 + (i - 1) * 80)\n total += sizes[i]\n }\n }\n\n self.data.read(offset, total, ondata)\n }\n\n function ondata (err, buf) {\n if (err) return cb(err)\n var total = 0\n for (var i = 0; i < result.length; i++) {\n result[i] = buf.slice(total, total += sizes[i])\n }\n\n cb(null, result)\n }\n })\n}\n\nStorage.prototype.getNode = function (index, cb) {\n if (this.treeCache) {\n var cached = this.treeCache.get(index)\n if (cached) return cb(null, cached)\n }\n\n var self = this\n\n this.tree.read(32 + 40 * index, 40, function (err, buf) {\n if (err) return cb(err)\n\n var hash = buf.slice(0, 32)\n var size = uint64be.decode(buf, 32)\n\n if (!size && isBlank(hash)) return cb(new Error('No node found'))\n\n var val = new Node(index, self.treeCache ? copyMaybe(hash, 40) : hash, size, null)\n if (self.treeCache) self.treeCache.set(index, val)\n cb(null, val)\n })\n}\n\nStorage.prototype.putNodeBatch = function (index, nodes, cb) {\n if (!cb) cb = noop\n\n var buf = Buffer.alloc(nodes.length * 40)\n\n for (var i = 0; i < nodes.length; i++) {\n var offset = i * 40\n var node = nodes[i]\n if (!node) continue\n node.hash.copy(buf, offset)\n uint64be.encode(node.size, buf, 32 + offset)\n }\n\n this.tree.write(32 + 40 * index, buf, cb)\n}\n\nStorage.prototype.putNode = function (index, node, cb) {\n if (!cb) cb = noop\n\n // TODO: re-enable put cache. currently this causes a memleak\n // because node.hash is a slice of the big data buffer on replicate\n // if (this.cache) this.cache.set(index, node)\n\n var buf = Buffer.allocUnsafe(40)\n\n node.hash.copy(buf, 0)\n uint64be.encode(node.size, buf, 32)\n this.tree.write(32 + 40 * index, buf, cb)\n}\n\nStorage.prototype.putBitfield = function (offset, data, cb) {\n this.bitfield.write(32 + offset, data, cb)\n}\n\nStorage.prototype.close = function (cb) {\n if (!cb) cb = noop\n var missing = 6\n var error = null\n\n close(this.bitfield, done)\n close(this.tree, done)\n close(this.data, done)\n close(this.key, done)\n close(this.secretKey, done)\n close(this.signatures, done)\n\n function done (err) {\n if (err) error = err\n if (--missing) return\n cb(error)\n }\n}\n\nStorage.prototype.destroy = function (cb) {\n if (!cb) cb = noop\n var missing = 6\n var error = null\n\n destroy(this.bitfield, done)\n destroy(this.tree, done)\n destroy(this.data, done)\n destroy(this.key, done)\n destroy(this.secretKey, done)\n destroy(this.signatures, done)\n\n function done (err) {\n if (err) error = err\n if (--missing) return\n cb(error)\n }\n}\n\nStorage.prototype.openKey = function (opts, cb) {\n if (typeof opts === 'function') return this.openKey({}, opts)\n if (!this.key) this.key = this.create('key', opts)\n this.key.read(0, 32, cb)\n}\n\nStorage.prototype.open = function (opts, cb) {\n if (typeof opts === 'function') return this.open({}, opts)\n\n var self = this\n var error = null\n var missing = 5\n\n if (!this.key) this.key = this.create('key', opts)\n if (!this.secretKey) this.secretKey = this.create('secret_key', opts)\n if (!this.tree) this.tree = this.create('tree', opts)\n if (!this.data) this.data = this.create('data', opts)\n if (!this.bitfield) this.bitfield = this.create('bitfield', opts)\n if (!this.signatures) this.signatures = this.create('signatures', opts)\n\n var result = {\n bitfield: [],\n bitfieldPageSize: 3584, // we upgraded the page size to fix a bug\n secretKey: null,\n key: null\n }\n\n this.bitfield.read(0, 32, function (err, h) {\n if (err && err.code === 'ELOCKED') return cb(err)\n if (h) result.bitfieldPageSize = h.readUInt16BE(5)\n self.bitfield.write(0, header(0, result.bitfieldPageSize, null), function (err) {\n if (err) return cb(err)\n readAll(self.bitfield, 32, result.bitfieldPageSize, function (err, pages) {\n if (pages) result.bitfield = pages\n done(err)\n })\n })\n })\n\n this.signatures.write(0, header(1, 64, 'Ed25519'), done)\n this.tree.write(0, header(2, 40, 'BLAKE2b'), done)\n\n // TODO: Improve the error handling here.\n // I.e. if secretKey length === 64 and it fails, error\n\n this.secretKey.read(0, 64, function (_, data) {\n if (data) result.secretKey = data\n done(null)\n })\n\n this.key.read(0, 32, function (_, data) {\n if (data) result.key = data\n done(null)\n })\n\n function done (err) {\n if (err) error = err\n if (--missing) return\n if (error) cb(error)\n else cb(null, result)\n }\n}\n\nStorage.Node = Node\n\nfunction noop () {}\n\nfunction copyMaybe (buf, maxSize) {\n if (buf.buffer.byteLength <= maxSize) return buf\n const cpy = Buffer.alloc(buf.byteLength)\n buf.copy(cpy)\n return cpy\n}\n\nfunction header (type, size, name) {\n var buf = Buffer.alloc(32)\n\n // magic number\n buf[0] = 5\n buf[1] = 2\n buf[2] = 87\n buf[3] = type\n\n // version\n buf[4] = 0\n\n // block size\n buf.writeUInt16BE(size, 5)\n\n if (name) {\n // algo name\n buf[7] = name.length\n buf.write(name, 8)\n }\n\n return buf\n}\n\nfunction Node (index, hash, size) {\n this.index = index\n this.hash = hash\n this.size = size\n}\n\nfunction findNode (nodes, index) {\n for (var i = 0; i < nodes.length; i++) {\n if (nodes[i].index === index) return nodes[i]\n }\n return null\n}\n\nfunction isBlank (buf) {\n for (var i = 0; i < buf.length; i++) {\n if (buf[i]) return false\n }\n return true\n}\n\nfunction close (st, cb) {\n if (st.close) st.close(cb)\n else cb()\n}\n\nfunction destroy (st, cb) {\n if (st.destroy) st.destroy(cb)\n else cb()\n}\n\nfunction statAndReadAll (st, offset, pageSize, cb) {\n st.stat(function (err, stat) {\n if (err) return cb(null, [])\n\n var result = []\n\n loop(null, null)\n\n function loop (err, batch) {\n if (err) return cb(err)\n\n if (batch) {\n offset += batch.length\n for (var i = 0; i < batch.length; i += pageSize) {\n result.push(batch.slice(i, i + pageSize))\n }\n }\n\n var next = Math.min(stat.size - offset, 32 * pageSize)\n if (!next) return cb(null, result)\n\n st.read(offset, next, loop)\n }\n })\n}\n\nfunction readAll (st, offset, pageSize, cb) {\n if (st.statable === true) return statAndReadAll(st, offset, pageSize, cb)\n\n var bufs = []\n\n st.read(offset, pageSize, loop)\n\n function loop (err, buf) {\n if (err) return cb(null, bufs)\n bufs.push(buf)\n st.read(offset + bufs.length * pageSize, pageSize, loop)\n }\n}\n", "var util = require('util')\nvar custom = util.inspect.custom\n\nmodule.exports = custom || Symbol.for('nodejs.util.inspect.custom')\n", "\nmodule.exports = function prettyHash (buf) {\n if (Buffer.isBuffer(buf)) buf = buf.toString('hex')\n if (typeof buf === 'string' && buf.length > 8) {\n return buf.slice(0, 6) + '..' + buf.slice(-2)\n }\n return buf\n}", "module.exports = class Nanoguard {\n constructor () {\n this._tick = 0\n this._fns = []\n this._dep = null\n }\n\n get waiting () {\n return this._tick > 0\n }\n\n depend (dep) {\n if (this._dep !== null) throw new Error('Can only depend on one other guard currently')\n this._dep = dep\n }\n\n wait () {\n this._tick++\n }\n\n continue (cb, err, val) {\n if (this._tick === 1) process.nextTick(continueNT, this)\n else this._tick--\n if (cb) cb(err, val)\n }\n\n waitAndContinue () {\n let once = false\n this.wait()\n return () => {\n if (once) return false\n once = true\n this.continue()\n return true\n }\n }\n\n continueSync (cb, err, val) {\n if (--this._tick) return\n while (this._fns !== null && this._fns.length) this._ready(this._fns.pop())\n if (cb) cb(err, val)\n }\n\n destroy () {\n const fns = this._fns\n if (fns) return\n this._fns = null\n while (fns.length) fns.pop()()\n }\n\n ready (fn) {\n if (this._fns === null || this._tick === 0) this._ready(fn)\n else this._fns.push(fn)\n }\n\n _ready (fn) {\n if (this._dep === null) fn()\n else this._dep.ready(fn)\n }\n}\n\nfunction continueNT (guard) {\n guard.continueSync()\n}\n", "// buffer-equals, but handle 'null' buffer parameters.\nmodule.exports = function safeBufferEquals (a, b) {\n if (!a) return !b\n if (!b) return !a\n return Buffer.compare(a, b) === 0\n}\n", "var clone = (function() {\n'use strict';\n\nfunction _instanceof(obj, type) {\n return type != null && obj instanceof type;\n}\n\nvar nativeMap;\ntry {\n nativeMap = Map;\n} catch(_) {\n // maybe a reference error because no `Map`. Give it a dummy value that no\n // value will ever be an instanceof.\n nativeMap = function() {};\n}\n\nvar nativeSet;\ntry {\n nativeSet = Set;\n} catch(_) {\n nativeSet = function() {};\n}\n\nvar nativePromise;\ntry {\n nativePromise = Promise;\n} catch(_) {\n nativePromise = function() {};\n}\n\n/**\n * Clones (copies) an Object using deep copying.\n *\n * This function supports circular references by default, but if you are certain\n * there are no circular references in your object, you can save some CPU time\n * by calling clone(obj, false).\n *\n * Caution: if `circular` is false and `parent` contains circular references,\n * your program may enter an infinite loop and crash.\n *\n * @param `parent` - the object to be cloned\n * @param `circular` - set to true if the object to be cloned may contain\n * circular references. (optional - true by default)\n * @param `depth` - set to a number if the object is only to be cloned to\n * a particular depth. (optional - defaults to Infinity)\n * @param `prototype` - sets the prototype to be used when cloning an object.\n * (optional - defaults to parent prototype).\n * @param `includeNonEnumerable` - set to true if the non-enumerable properties\n * should be cloned as well. Non-enumerable properties on the prototype\n * chain will be ignored. (optional - false by default)\n*/\nfunction clone(parent, circular, depth, prototype, includeNonEnumerable) {\n if (typeof circular === 'object') {\n depth = circular.depth;\n prototype = circular.prototype;\n includeNonEnumerable = circular.includeNonEnumerable;\n circular = circular.circular;\n }\n // maintain two arrays for circular references, where corresponding parents\n // and children have the same index\n var allParents = [];\n var allChildren = [];\n\n var useBuffer = typeof Buffer != 'undefined';\n\n if (typeof circular == 'undefined')\n circular = true;\n\n if (typeof depth == 'undefined')\n depth = Infinity;\n\n // recurse this function so we don't reset allParents and allChildren\n function _clone(parent, depth) {\n // cloning null always returns null\n if (parent === null)\n return null;\n\n if (depth === 0)\n return parent;\n\n var child;\n var proto;\n if (typeof parent != 'object') {\n return parent;\n }\n\n if (_instanceof(parent, nativeMap)) {\n child = new nativeMap();\n } else if (_instanceof(parent, nativeSet)) {\n child = new nativeSet();\n } else if (_instanceof(parent, nativePromise)) {\n child = new nativePromise(function (resolve, reject) {\n parent.then(function(value) {\n resolve(_clone(value, depth - 1));\n }, function(err) {\n reject(_clone(err, depth - 1));\n });\n });\n } else if (clone.__isArray(parent)) {\n child = [];\n } else if (clone.__isRegExp(parent)) {\n child = new RegExp(parent.source, __getRegExpFlags(parent));\n if (parent.lastIndex) child.lastIndex = parent.lastIndex;\n } else if (clone.__isDate(parent)) {\n child = new Date(parent.getTime());\n } else if (useBuffer && Buffer.isBuffer(parent)) {\n if (Buffer.allocUnsafe) {\n // Node.js >= 4.5.0\n child = Buffer.allocUnsafe(parent.length);\n } else {\n // Older Node.js versions\n child = new Buffer(parent.length);\n }\n parent.copy(child);\n return child;\n } else if (_instanceof(parent, Error)) {\n child = Object.create(parent);\n } else {\n if (typeof prototype == 'undefined') {\n proto = Object.getPrototypeOf(parent);\n child = Object.create(proto);\n }\n else {\n child = Object.create(prototype);\n proto = prototype;\n }\n }\n\n if (circular) {\n var index = allParents.indexOf(parent);\n\n if (index != -1) {\n return allChildren[index];\n }\n allParents.push(parent);\n allChildren.push(child);\n }\n\n if (_instanceof(parent, nativeMap)) {\n parent.forEach(function(value, key) {\n var keyChild = _clone(key, depth - 1);\n var valueChild = _clone(value, depth - 1);\n child.set(keyChild, valueChild);\n });\n }\n if (_instanceof(parent, nativeSet)) {\n parent.forEach(function(value) {\n var entryChild = _clone(value, depth - 1);\n child.add(entryChild);\n });\n }\n\n for (var i in parent) {\n var attrs;\n if (proto) {\n attrs = Object.getOwnPropertyDescriptor(proto, i);\n }\n\n if (attrs && attrs.set == null) {\n continue;\n }\n child[i] = _clone(parent[i], depth - 1);\n }\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(parent);\n for (var i = 0; i < symbols.length; i++) {\n // Don't need to worry about cloning a symbol because it is a primitive,\n // like a number or string.\n var symbol = symbols[i];\n var descriptor = Object.getOwnPropertyDescriptor(parent, symbol);\n if (descriptor && !descriptor.enumerable && !includeNonEnumerable) {\n continue;\n }\n child[symbol] = _clone(parent[symbol], depth - 1);\n if (!descriptor.enumerable) {\n Object.defineProperty(child, symbol, {\n enumerable: false\n });\n }\n }\n }\n\n if (includeNonEnumerable) {\n var allPropertyNames = Object.getOwnPropertyNames(parent);\n for (var i = 0; i < allPropertyNames.length; i++) {\n var propertyName = allPropertyNames[i];\n var descriptor = Object.getOwnPropertyDescriptor(parent, propertyName);\n if (descriptor && descriptor.enumerable) {\n continue;\n }\n child[propertyName] = _clone(parent[propertyName], depth - 1);\n Object.defineProperty(child, propertyName, {\n enumerable: false\n });\n }\n }\n\n return child;\n }\n\n return _clone(parent, depth);\n}\n\n/**\n * Simple flat clone using prototype, accepts only objects, usefull for property\n * override on FLAT configuration object (no nested props).\n *\n * USE WITH CAUTION! This may not behave as you wish if you do not know how this\n * works.\n */\nclone.clonePrototype = function clonePrototype(parent) {\n if (parent === null)\n return null;\n\n var c = function () {};\n c.prototype = parent;\n return new c();\n};\n\n// private utility functions\n\nfunction __objToStr(o) {\n return Object.prototype.toString.call(o);\n}\nclone.__objToStr = __objToStr;\n\nfunction __isDate(o) {\n return typeof o === 'object' && __objToStr(o) === '[object Date]';\n}\nclone.__isDate = __isDate;\n\nfunction __isArray(o) {\n return typeof o === 'object' && __objToStr(o) === '[object Array]';\n}\nclone.__isArray = __isArray;\n\nfunction __isRegExp(o) {\n return typeof o === 'object' && __objToStr(o) === '[object RegExp]';\n}\nclone.__isRegExp = __isRegExp;\n\nfunction __getRegExpFlags(re) {\n var flags = '';\n if (re.global) flags += 'g';\n if (re.ignoreCase) flags += 'i';\n if (re.multiline) flags += 'm';\n return flags;\n}\nclone.__getRegExpFlags = __getRegExpFlags;\n\nreturn clone;\n})();\n\nif (typeof module === 'object' && module.exports) {\n module.exports = clone;\n}\n", "/* eslint-disable camelcase */\nconst { sodium_malloc, sodium_memzero } = require('sodium-universal/memory')\nconst {\n crypto_aead_chacha20poly1305_ietf_KEYBYTES,\n crypto_aead_chacha20poly1305_ietf_NPUBBYTES,\n crypto_aead_chacha20poly1305_ietf_ABYTES,\n crypto_aead_chacha20poly1305_ietf_encrypt,\n crypto_aead_chacha20poly1305_ietf_decrypt\n} = require('sodium-universal/crypto_aead')\n\nvar assert = require('nanoassert')\n\nvar KEYLEN = 32\nvar NONCELEN = 8\nvar MACLEN = 16\n\nassert(crypto_aead_chacha20poly1305_ietf_KEYBYTES === KEYLEN)\n// 16 bytes are cut off in the following functions\nassert(crypto_aead_chacha20poly1305_ietf_NPUBBYTES === 4 + NONCELEN)\nassert(crypto_aead_chacha20poly1305_ietf_ABYTES === MACLEN)\n\nmodule.exports = {\n KEYLEN,\n NONCELEN,\n MACLEN,\n encrypt,\n decrypt,\n rekey\n}\n\nvar ElongatedNonce = sodium_malloc(crypto_aead_chacha20poly1305_ietf_NPUBBYTES)\nfunction encrypt (out, k, n, ad, plaintext) {\n assert(out.byteLength >= plaintext.byteLength + MACLEN, 'output buffer must be at least plaintext plus MACLEN bytes long')\n assert(k.byteLength === KEYLEN)\n assert(n.byteLength === NONCELEN)\n assert(ad == null ? true : ad.byteLength != null)\n sodium_memzero(ElongatedNonce)\n\n ElongatedNonce.set(n, 4)\n\n encrypt.bytesWritten = crypto_aead_chacha20poly1305_ietf_encrypt(out.subarray(0, plaintext.byteLength + MACLEN), plaintext, ad, null, ElongatedNonce, k)\n encrypt.bytesRead = encrypt.bytesWritten - MACLEN\n\n sodium_memzero(ElongatedNonce)\n}\nencrypt.bytesWritten = 0\nencrypt.bytesRead = 0\n\nfunction decrypt (out, k, n, ad, ciphertext) {\n assert(out.byteLength >= ciphertext.byteLength - MACLEN)\n assert(k.byteLength === KEYLEN)\n assert(n.byteLength === NONCELEN)\n assert(ad == null ? true : ad.byteLength != null)\n sodium_memzero(ElongatedNonce)\n\n ElongatedNonce.set(n, 4)\n\n decrypt.bytesWritten = crypto_aead_chacha20poly1305_ietf_decrypt(out.subarray(0, ciphertext.byteLength - MACLEN), null, ciphertext, ad, ElongatedNonce, k)\n decrypt.bytesRead = decrypt.bytesWritten + MACLEN\n\n sodium_memzero(ElongatedNonce)\n}\ndecrypt.bytesWritten = 0\ndecrypt.bytesRead = 0\n\nvar maxnonce = new Uint8Array(8).fill(0xff)\nvar zerolen = new Uint8Array(0)\nvar zeros = new Uint8Array(32)\n\nvar IntermediateKey = sodium_malloc(KEYLEN + MACLEN)\nsodium_memzero(IntermediateKey)\nfunction rekey (out, k) {\n assert(out.byteLength === KEYLEN)\n assert(k.byteLength === KEYLEN)\n sodium_memzero(IntermediateKey)\n\n IntermediateKey.set(k)\n encrypt(IntermediateKey, k, maxnonce, zerolen, zeros)\n rekey.bytesWritten = encrypt.bytesWritten\n rekey.bytesRead = encrypt.bytesRead\n out.set(IntermediateKey.subarray(0, KEYLEN))\n sodium_memzero(IntermediateKey)\n}\nrekey.bytesWritten = 0\nrekey.bytesRead = 0\n", "/* eslint-disable camelcase */\nconst { sodium_memzero } = require('sodium-universal/memory')\nconst { sodium_increment, sodium_memcmp, sodium_is_zero } = require('sodium-universal/helpers')\n\nvar assert = require('nanoassert')\nvar cipher = require('./cipher')\n\nvar STATELEN = cipher.KEYLEN + cipher.NONCELEN\nvar NONCELEN = cipher.NONCELEN\nvar MACLEN = cipher.MACLEN\n\nmodule.exports = {\n STATELEN,\n NONCELEN,\n MACLEN,\n initializeKey,\n hasKey,\n setNonce,\n encryptWithAd,\n decryptWithAd,\n rekey\n}\n\nvar KEY_BEGIN = 0\nvar KEY_END = cipher.KEYLEN\nvar NONCE_BEGIN = KEY_END\nvar NONCE_END = NONCE_BEGIN + cipher.NONCELEN\n\nfunction initializeKey (state, key) {\n assert(state.byteLength === STATELEN)\n assert(key == null ? true : key.byteLength === cipher.KEYLEN)\n\n if (key == null) {\n sodium_memzero(state.subarray(KEY_BEGIN, KEY_END))\n return\n }\n\n state.set(key)\n sodium_memzero(state.subarray(NONCE_BEGIN, NONCE_END))\n}\n\nfunction hasKey (state) {\n assert(state.byteLength === STATELEN)\n var k = state.subarray(KEY_BEGIN, KEY_END)\n return sodium_is_zero(k) === false\n}\n\nfunction setNonce (state, nonce) {\n assert(state.byteLength === STATELEN)\n assert(nonce.byteLength === NONCELEN)\n\n state.set(nonce, NONCE_BEGIN)\n}\n\nvar maxnonce = new Uint8Array(8).fill(0xff)\nfunction encryptWithAd (state, out, ad, plaintext) {\n assert(state.byteLength === STATELEN)\n assert(out.byteLength != null)\n assert(plaintext.byteLength != null)\n\n var n = state.subarray(NONCE_BEGIN, NONCE_END)\n if (sodium_memcmp(n, maxnonce)) throw new Error('Nonce overflow')\n\n if (hasKey(state) === false) {\n out.set(plaintext)\n encryptWithAd.bytesRead = plaintext.byteLength\n encryptWithAd.bytesWritten = encryptWithAd.bytesRead\n return\n }\n\n var k = state.subarray(KEY_BEGIN, KEY_END)\n\n cipher.encrypt(\n out,\n k,\n n,\n ad,\n plaintext\n )\n encryptWithAd.bytesRead = cipher.encrypt.bytesRead\n encryptWithAd.bytesWritten = cipher.encrypt.bytesWritten\n\n sodium_increment(n)\n}\nencryptWithAd.bytesRead = 0\nencryptWithAd.bytesWritten = 0\n\nfunction decryptWithAd (state, out, ad, ciphertext) {\n assert(state.byteLength === STATELEN)\n assert(out.byteLength != null)\n assert(ciphertext.byteLength != null)\n\n var n = state.subarray(NONCE_BEGIN, NONCE_END)\n if (sodium_memcmp(n, maxnonce)) throw new Error('Nonce overflow')\n\n if (hasKey(state) === false) {\n out.set(ciphertext)\n decryptWithAd.bytesRead = ciphertext.byteLength\n decryptWithAd.bytesWritten = decryptWithAd.bytesRead\n return\n }\n\n var k = state.subarray(KEY_BEGIN, KEY_END)\n\n cipher.decrypt(\n out,\n k,\n n,\n ad,\n ciphertext\n )\n decryptWithAd.bytesRead = cipher.decrypt.bytesRead\n decryptWithAd.bytesWritten = cipher.decrypt.bytesWritten\n\n sodium_increment(n)\n}\ndecryptWithAd.bytesRead = 0\ndecryptWithAd.bytesWritten = 0\n\nfunction rekey (state) {\n assert(state.byteLength === STATELEN)\n\n var k = state.subarray(KEY_BEGIN, KEY_END)\n cipher.rekey(k, k)\n rekey.bytesRead = cipher.rekey.bytesRead\n rekey.bytesWritten = cipher.rekey.bytesWritten\n}\nrekey.bytesRead = 0\nrekey.bytesWritten = 0\n", "assert.notEqual = notEqual\nassert.notOk = notOk\nassert.equal = equal\nassert.ok = assert\n\nmodule.exports = assert\n\nfunction equal (a, b, m) {\n assert(a == b, m) // eslint-disable-line eqeqeq\n}\n\nfunction notEqual (a, b, m) {\n assert(a != b, m) // eslint-disable-line eqeqeq\n}\n\nfunction notOk (t, m) {\n assert(!t, m)\n}\n\nfunction assert (t, m) {\n if (!t) throw new Error(m || 'AssertionError')\n}\n", "/* eslint-disable camelcase */\nvar { sodium_malloc, sodium_memzero } = require('sodium-universal/memory')\nvar { crypto_generichash, crypto_generichash_batch } = require('sodium-universal/crypto_generichash')\nvar assert = require('nanoassert')\n\nvar HASHLEN = 64\nvar BLOCKLEN = 128\nvar scratch = sodium_malloc(BLOCKLEN * 3)\nvar HMACKey = scratch.subarray(BLOCKLEN * 0, BLOCKLEN * 1)\nvar OuterKeyPad = scratch.subarray(BLOCKLEN * 1, BLOCKLEN * 2)\nvar InnerKeyPad = scratch.subarray(BLOCKLEN * 2, BLOCKLEN * 3)\n\n// Post-fill is done in the cases where someone caught an exception that\n// happened before we were able to clear data at the end\nmodule.exports = function hmac (out, data, key) {\n assert(out.byteLength === HASHLEN)\n assert(key.byteLength != null)\n assert(Array.isArray(data) ? data.every(d => d.byteLength != null) : data.byteLength != null)\n\n if (key.byteLength > BLOCKLEN) {\n crypto_generichash(HMACKey.subarray(0, HASHLEN), key)\n sodium_memzero(HMACKey.subarray(HASHLEN))\n } else {\n // Covers key <= BLOCKLEN\n HMACKey.set(key)\n sodium_memzero(HMACKey.subarray(key.byteLength))\n }\n\n for (var i = 0; i < HMACKey.byteLength; i++) {\n OuterKeyPad[i] = 0x5c ^ HMACKey[i]\n InnerKeyPad[i] = 0x36 ^ HMACKey[i]\n }\n sodium_memzero(HMACKey)\n\n crypto_generichash_batch(out, [InnerKeyPad].concat(data))\n sodium_memzero(InnerKeyPad)\n crypto_generichash_batch(out, [OuterKeyPad].concat(out))\n sodium_memzero(OuterKeyPad)\n}\n\nmodule.exports.BYTES = HASHLEN\nmodule.exports.KEYBYTES = BLOCKLEN\n", "/* eslint-disable camelcase */\nconst { crypto_kx_SEEDBYTES, crypto_kx_keypair, crypto_kx_seed_keypair } = require('sodium-universal/crypto_kx')\nconst { crypto_scalarmult_BYTES, crypto_scalarmult_SCALARBYTES, crypto_scalarmult } = require('sodium-universal/crypto_scalarmult')\n\nvar assert = require('nanoassert')\n\nvar DHLEN = crypto_scalarmult_BYTES\nvar PKLEN = crypto_scalarmult_BYTES\nvar SKLEN = crypto_scalarmult_SCALARBYTES\nvar SEEDLEN = crypto_kx_SEEDBYTES\n\nmodule.exports = {\n DHLEN,\n PKLEN,\n SKLEN,\n SEEDLEN,\n generateKeypair,\n generateSeedKeypair,\n dh\n}\n\nfunction generateKeypair (pk, sk) {\n assert(pk.byteLength === PKLEN)\n assert(sk.byteLength === SKLEN)\n crypto_kx_keypair(pk, sk)\n}\n\nfunction generateSeedKeypair (pk, sk, seed) {\n assert(pk.byteLength === PKLEN)\n assert(sk.byteLength === SKLEN)\n assert(seed.byteLength === SKLEN)\n\n crypto_kx_seed_keypair(pk, sk, seed)\n}\n\nfunction dh (output, lsk, pk) {\n assert(output.byteLength === DHLEN)\n assert(lsk.byteLength === SKLEN)\n assert(pk.byteLength === PKLEN)\n\n crypto_scalarmult(\n output,\n lsk,\n pk\n )\n}\n", "/* eslint-disable camelcase */\nconst { sodium_malloc, sodium_memzero } = require('sodium-universal/memory')\nconst { crypto_generichash_batch } = require('sodium-universal/crypto_generichash')\n\nconst assert = require('nanoassert')\nconst hmacBlake2b = require('hmac-blake2b')\nconst dh = require('./dh')\n\nconst HASHLEN = 64\nconst BLOCKLEN = 128\n\nassert(hmacBlake2b.KEYBYTES === BLOCKLEN, 'mismatching hmac BLOCKLEN')\nassert(hmacBlake2b.BYTES === HASHLEN, 'mismatching hmac HASHLEN')\n\nmodule.exports = {\n HASHLEN,\n BLOCKLEN,\n hash,\n hkdf\n}\n\nfunction hash (out, data) {\n assert(out.byteLength === HASHLEN)\n assert(Array.isArray(data))\n\n crypto_generichash_batch(out, data)\n}\n\nfunction hmac (out, key, data) {\n return hmacBlake2b(out, data, key)\n}\n\nconst TempKey = sodium_malloc(HASHLEN)\nconst Byte0x01 = new Uint8Array([0x01])\nconst Byte0x02 = new Uint8Array([0x02])\nconst Byte0x03 = new Uint8Array([0x03])\n\nfunction hkdf (out1, out2, out3, chainingKey, inputKeyMaterial) {\n assert(out1.byteLength === HASHLEN)\n assert(out2.byteLength === HASHLEN)\n assert(out3 == null ? true : out3.byteLength === HASHLEN)\n assert(chainingKey.byteLength === HASHLEN)\n assert([0, 32, dh.DHLEN, dh.PKLEN].includes(inputKeyMaterial.byteLength))\n\n sodium_memzero(TempKey)\n hmac(TempKey, chainingKey, [inputKeyMaterial])\n hmac(out1, TempKey, [Byte0x01])\n hmac(out2, TempKey, [out1, Byte0x02])\n\n if (out3 != null) {\n hmac(out3, TempKey, [out2, Byte0x03])\n }\n\n sodium_memzero(TempKey)\n}\n", "/* eslint-disable camelcase */\nconst { sodium_malloc, sodium_memzero } = require('sodium-universal/memory')\nvar assert = require('nanoassert')\nvar cipherState = require('./cipher-state')\nvar hash = require('./hash')\n\nvar STATELEN = hash.HASHLEN + hash.HASHLEN + cipherState.STATELEN\nvar HASHLEN = hash.HASHLEN\n\nmodule.exports = {\n STATELEN,\n initializeSymmetric,\n mixKey,\n mixHash,\n mixKeyAndHash,\n getHandshakeHash,\n encryptAndHash,\n decryptAndHash,\n split,\n _hasKey\n}\n\nvar CHAINING_KEY_BEGIN = 0\nvar CHAINING_KEY_END = hash.HASHLEN\nvar HASH_BEGIN = CHAINING_KEY_END\nvar HASH_END = HASH_BEGIN + hash.HASHLEN\nvar CIPHER_BEGIN = HASH_END\nvar CIPHER_END = CIPHER_BEGIN + cipherState.STATELEN\n\nfunction initializeSymmetric (state, protocolName) {\n assert(state.byteLength === STATELEN)\n assert(protocolName.byteLength != null)\n\n sodium_memzero(state)\n if (protocolName.byteLength <= HASHLEN) state.set(protocolName, HASH_BEGIN)\n else hash.hash(state.subarray(HASH_BEGIN, HASH_END), [protocolName])\n\n state.subarray(CHAINING_KEY_BEGIN, CHAINING_KEY_END).set(state.subarray(HASH_BEGIN, HASH_END))\n\n cipherState.initializeKey(state.subarray(CIPHER_BEGIN, CIPHER_END), null)\n}\n\nvar TempKey = sodium_malloc(HASHLEN)\nfunction mixKey (state, inputKeyMaterial) {\n assert(state.byteLength === STATELEN)\n assert(inputKeyMaterial.byteLength != null)\n\n hash.hkdf(\n state.subarray(CHAINING_KEY_BEGIN, CHAINING_KEY_END),\n TempKey,\n null,\n state.subarray(CHAINING_KEY_BEGIN, CHAINING_KEY_END),\n inputKeyMaterial\n )\n\n // HASHLEN is always 64 here, so we truncate to 32 bytes per the spec\n cipherState.initializeKey(state.subarray(CIPHER_BEGIN, CIPHER_END), TempKey.subarray(0, 32))\n sodium_memzero(TempKey)\n}\n\nfunction mixHash (state, data) {\n assert(state.byteLength === STATELEN)\n\n var h = state.subarray(HASH_BEGIN, HASH_END)\n\n hash.hash(h, [h, data])\n}\n\nvar TempHash = sodium_malloc(HASHLEN)\nfunction mixKeyAndHash (state, inputKeyMaterial) {\n assert(state.byteLength === STATELEN)\n assert(inputKeyMaterial.byteLength != null)\n\n hash.hkdf(\n state.subarray(CHAINING_KEY_BEGIN, CHAINING_KEY_END),\n TempHash,\n TempKey,\n state.subarray(CHAINING_KEY_BEGIN, CHAINING_KEY_END),\n inputKeyMaterial\n )\n\n mixHash(state, TempHash)\n sodium_memzero(TempHash)\n\n // HASHLEN is always 64 here, so we truncate to 32 bytes per the spec\n cipherState.initializeKey(state.subarray(CIPHER_BEGIN, CIPHER_END), TempKey.subarray(0, 32))\n sodium_memzero(TempKey)\n}\n\nfunction getHandshakeHash (state, out) {\n assert(state.byteLength === STATELEN)\n assert(out.byteLength === HASHLEN)\n\n out.set(state.subarray(HASH_BEGIN, HASH_END))\n}\n\n// ciphertext is the output here\nfunction encryptAndHash (state, ciphertext, plaintext) {\n assert(state.byteLength === STATELEN)\n assert(ciphertext.byteLength != null)\n assert(plaintext.byteLength != null)\n\n var cstate = state.subarray(CIPHER_BEGIN, CIPHER_END)\n var h = state.subarray(HASH_BEGIN, HASH_END)\n\n cipherState.encryptWithAd(cstate, ciphertext, h, plaintext)\n encryptAndHash.bytesRead = cipherState.encryptWithAd.bytesRead\n encryptAndHash.bytesWritten = cipherState.encryptWithAd.bytesWritten\n mixHash(state, ciphertext.subarray(0, encryptAndHash.bytesWritten))\n}\nencryptAndHash.bytesRead = 0\nencryptAndHash.bytesWritten = 0\n\n// plaintext is the output here\nfunction decryptAndHash (state, plaintext, ciphertext) {\n assert(state.byteLength === STATELEN)\n assert(plaintext.byteLength != null)\n assert(ciphertext.byteLength != null)\n\n var cstate = state.subarray(CIPHER_BEGIN, CIPHER_END)\n var h = state.subarray(HASH_BEGIN, HASH_END)\n\n cipherState.decryptWithAd(cstate, plaintext, h, ciphertext)\n decryptAndHash.bytesRead = cipherState.decryptWithAd.bytesRead\n decryptAndHash.bytesWritten = cipherState.decryptWithAd.bytesWritten\n mixHash(state, ciphertext.subarray(0, decryptAndHash.bytesRead))\n}\ndecryptAndHash.bytesRead = 0\ndecryptAndHash.bytesWritten = 0\n\nvar TempKey1 = sodium_malloc(HASHLEN)\nvar TempKey2 = sodium_malloc(HASHLEN)\nvar zerolen = new Uint8Array(0)\nfunction split (state, cipherstate1, cipherstate2) {\n assert(state.byteLength === STATELEN)\n assert(cipherstate1.byteLength === cipherState.STATELEN)\n assert(cipherstate2.byteLength === cipherState.STATELEN)\n\n hash.hkdf(\n TempKey1,\n TempKey2,\n null,\n state.subarray(CHAINING_KEY_BEGIN, CHAINING_KEY_END),\n zerolen\n )\n\n // HASHLEN is always 64 here, so we truncate to 32 bytes per the spec\n cipherState.initializeKey(cipherstate1, TempKey1.subarray(0, 32))\n cipherState.initializeKey(cipherstate2, TempKey2.subarray(0, 32))\n sodium_memzero(TempKey1)\n sodium_memzero(TempKey2)\n}\n\nfunction _hasKey (state) {\n return cipherState.hasKey(state.subarray(CIPHER_BEGIN, CIPHER_END))\n}\n", "/* eslint-disable camelcase */\nconst { sodium_malloc, sodium_memzero, sodium_free } = require('sodium-universal/memory')\nconst assert = require('nanoassert')\nconst clone = require('clone')\nconst symmetricState = require('./symmetric-state')\nconst cipherState = require('./cipher-state')\nconst dh = require('./dh')\n\nconst PKLEN = dh.PKLEN\nconst SKLEN = dh.SKLEN\n\nmodule.exports = Object.freeze({\n initialize,\n writeMessage,\n readMessage,\n destroy,\n keygen,\n seedKeygen,\n SKLEN,\n PKLEN\n})\n\nfunction HandshakeState () {\n this.symmetricState = sodium_malloc(symmetricState.STATELEN)\n\n this.initiator = null\n\n this.spk = null\n this.ssk = null\n\n this.epk = null\n this.esk = null\n\n this.rs = null\n this.re = null\n\n this.messagePatterns = null\n}\n\nconst INITIATOR = Symbol('initiator')\nconst RESPONDER = Symbol('responder')\n\nconst TOK_S = Symbol('s')\nconst TOK_E = Symbol('e')\nconst TOK_ES = Symbol('es')\nconst TOK_SE = Symbol('se')\nconst TOK_EE = Symbol('ee')\nconst TOK_SS = Symbol('es')\n\n// initiator, ->\n// responder, <-\nvar PATTERNS = Object.freeze({\n N: {\n premessages: [\n [RESPONDER, TOK_S]\n ],\n messagePatterns: [\n [INITIATOR, TOK_E, TOK_ES]\n ]\n },\n K: {\n premessages: [\n [INITIATOR, TOK_S],\n [RESPONDER, TOK_S]\n ],\n messagePatterns: [\n [INITIATOR, TOK_E, TOK_ES, TOK_SS]\n ]\n },\n X: {\n premessages: [\n [RESPONDER, TOK_S]\n ],\n messagePatterns: [\n [INITIATOR, TOK_E, TOK_ES, TOK_S, TOK_SS]\n ]\n },\n NN: {\n premessages: [],\n messagePatterns: [\n [INITIATOR, TOK_E],\n [RESPONDER, TOK_E, TOK_EE]\n ]\n },\n KN: {\n premessages: [\n [INITIATOR, TOK_S]\n ],\n messagePatterns: [\n [INITIATOR, TOK_E],\n [RESPONDER, TOK_E, TOK_EE, TOK_SE]\n ]\n },\n NK: {\n premessages: [\n [RESPONDER, TOK_S]\n ],\n messagePatterns: [\n [INITIATOR, TOK_E, TOK_ES],\n [RESPONDER, TOK_E, TOK_EE]\n ]\n },\n KK: {\n premessages: [\n [INITIATOR, TOK_S],\n [RESPONDER, TOK_S]\n ],\n messagePatterns: [\n [INITIATOR, TOK_E, TOK_ES, TOK_SS],\n [RESPONDER, TOK_E, TOK_EE, TOK_SE]\n ]\n },\n NX: {\n premessages: [],\n messagePatterns: [\n [INITIATOR, TOK_E],\n [RESPONDER, TOK_E, TOK_EE, TOK_S, TOK_ES]\n ]\n },\n KX: {\n premessages: [\n [INITIATOR, TOK_S]\n ],\n messagePatterns: [\n [INITIATOR, TOK_E],\n [RESPONDER, TOK_E, TOK_EE, TOK_SE, TOK_S, TOK_ES]\n ]\n },\n XN: {\n premessages: [],\n messagePatterns: [\n [INITIATOR, TOK_E],\n [RESPONDER, TOK_E, TOK_EE],\n [INITIATOR, TOK_S, TOK_SE]\n ]\n },\n IN: {\n premessages: [],\n messagePatterns: [\n [INITIATOR, TOK_E, TOK_S],\n [RESPONDER, TOK_E, TOK_EE, TOK_SE]\n ]\n },\n XK: {\n premessages: [\n [RESPONDER, TOK_S]\n ],\n messagePatterns: [\n [INITIATOR, TOK_E, TOK_ES],\n [RESPONDER, TOK_E, TOK_EE],\n [INITIATOR, TOK_S, TOK_SE]\n ]\n },\n IK: {\n premessages: [\n [RESPONDER, TOK_S]\n ],\n messagePatterns: [\n [INITIATOR, TOK_E, TOK_ES, TOK_S, TOK_SS],\n [RESPONDER, TOK_E, TOK_EE, TOK_SE]\n ]\n },\n XX: {\n premessages: [],\n messagePatterns: [\n [INITIATOR, TOK_E],\n [RESPONDER, TOK_E, TOK_EE, TOK_S, TOK_ES],\n [INITIATOR, TOK_S, TOK_SE]\n ]\n },\n IX: {\n premessages: [],\n messagePatterns: [\n [INITIATOR, TOK_E, TOK_S],\n [RESPONDER, TOK_E, TOK_EE, TOK_SE, TOK_S, TOK_ES]\n ]\n }\n})\n\nfunction sodiumBufferCopy (src) {\n var buf = sodium_malloc(src.byteLength)\n buf.set(src)\n return buf\n}\n\nfunction initialize (handshakePattern, initiator, prologue, s, e, rs, re) {\n assert(Object.keys(PATTERNS).includes(handshakePattern), 'Unsupported handshake pattern')\n assert(typeof initiator === 'boolean', 'Initiator must be a boolean')\n assert(prologue.byteLength != null, 'prolouge must be a Buffer')\n\n assert(e == null ? true : e.publicKey.byteLength === dh.PKLEN, `e.publicKey must be ${dh.PKLEN} bytes`)\n assert(e == null ? true : e.secretKey.byteLength === dh.SKLEN, `e.secretKey must be ${dh.SKLEN} bytes`)\n\n assert(rs == null ? true : rs.byteLength === dh.PKLEN, `rs must be ${dh.PKLEN} bytes`)\n assert(re == null ? true : re.byteLength === dh.PKLEN, `re must be ${dh.PKLEN} bytes`)\n\n var state = new HandshakeState()\n\n var protocolName = Uint8Array.from(`Noise_${handshakePattern}_25519_ChaChaPoly_BLAKE2b`, toCharCode)\n\n symmetricState.initializeSymmetric(state.symmetricState, protocolName)\n symmetricState.mixHash(state.symmetricState, prologue)\n\n state.role = initiator === true ? INITIATOR : RESPONDER\n\n if (s != null) {\n assert(s.publicKey.byteLength === dh.PKLEN, `s.publicKey must be ${dh.PKLEN} bytes`)\n assert(s.secretKey.byteLength === dh.SKLEN, `s.secretKey must be ${dh.SKLEN} bytes`)\n\n state.spk = sodiumBufferCopy(s.publicKey)\n state.ssk = sodiumBufferCopy(s.secretKey)\n }\n\n if (e != null) {\n assert(e.publicKey.byteLength === dh.PKLEN)\n assert(e.secretKey.byteLength === dh.SKLEN)\n\n state.epk = sodiumBufferCopy(e.publicKey)\n state.esk = sodiumBufferCopy(e.secretKey)\n }\n\n if (rs != null) {\n assert(rs.byteLength === dh.PKLEN)\n state.rs = sodiumBufferCopy(rs)\n }\n if (re != null) {\n assert(re.byteLength === dh.PKLEN)\n state.re = sodiumBufferCopy(re)\n }\n\n // hashing\n var pat = PATTERNS[handshakePattern]\n\n for (var pattern of clone(pat.premessages)) {\n var patternRole = pattern.shift()\n\n for (var token of pattern) {\n switch (token) {\n case TOK_E:\n assert(state.role === patternRole ? state.epk.byteLength != null : state.re.byteLength != null)\n symmetricState.mixHash(state.symmetricState, state.role === patternRole ? state.epk : state.re)\n break\n case TOK_S:\n assert(state.role === patternRole ? state.spk.byteLength != null : state.rs.byteLength != null)\n symmetricState.mixHash(state.symmetricState, state.role === patternRole ? state.spk : state.rs)\n break\n default:\n throw new Error('Invalid premessage pattern')\n }\n }\n }\n\n state.messagePatterns = clone(pat.messagePatterns)\n\n assert(state.messagePatterns.filter(p => p[0] === INITIATOR).some(p => p.includes(TOK_S))\n ? (state.spk !== null && state.ssk !== null)\n : true, // Default if none is found\n 'This handshake pattern requires a static keypair')\n\n return state\n}\n\nvar DhResult = sodium_malloc(dh.DHLEN)\nfunction writeMessage (state, payload, messageBuffer) {\n assert(state instanceof HandshakeState)\n assert(payload.byteLength != null)\n assert(messageBuffer.byteLength != null)\n\n var mpat = state.messagePatterns.shift()\n var moffset = 0\n\n assert(mpat != null)\n\n assert(state.role === mpat.shift())\n\n for (var token of mpat) {\n switch (token) {\n case TOK_E:\n assert(state.epk == null)\n assert(state.esk == null)\n\n state.epk = sodium_malloc(dh.PKLEN)\n state.esk = sodium_malloc(dh.SKLEN)\n\n dh.generateKeypair(state.epk, state.esk)\n\n messageBuffer.set(state.epk, moffset)\n moffset += state.epk.byteLength\n\n symmetricState.mixHash(state.symmetricState, state.epk)\n\n break\n\n case TOK_S:\n assert(state.spk.byteLength === dh.PKLEN)\n\n symmetricState.encryptAndHash(state.symmetricState, messageBuffer.subarray(moffset), state.spk)\n moffset += symmetricState.encryptAndHash.bytesWritten\n\n break\n\n case TOK_EE:\n dh.dh(DhResult, state.esk, state.re)\n symmetricState.mixKey(state.symmetricState, DhResult)\n sodium_memzero(DhResult)\n break\n case TOK_ES:\n if (state.role === INITIATOR) dh.dh(DhResult, state.esk, state.rs)\n else dh.dh(DhResult, state.ssk, state.re)\n\n symmetricState.mixKey(state.symmetricState, DhResult)\n sodium_memzero(DhResult)\n break\n case TOK_SE:\n if (state.role === INITIATOR) dh.dh(DhResult, state.ssk, state.re)\n else dh.dh(DhResult, state.esk, state.rs)\n\n symmetricState.mixKey(state.symmetricState, DhResult)\n sodium_memzero(DhResult)\n break\n case TOK_SS:\n dh.dh(DhResult, state.ssk, state.rs)\n\n symmetricState.mixKey(state.symmetricState, DhResult)\n sodium_memzero(DhResult)\n break\n\n default:\n throw new Error('Invalid message pattern')\n }\n }\n\n symmetricState.encryptAndHash(state.symmetricState, messageBuffer.subarray(moffset), payload)\n moffset += symmetricState.encryptAndHash.bytesWritten\n\n writeMessage.bytes = moffset\n\n if (state.messagePatterns.length === 0) {\n var tx = sodium_malloc(cipherState.STATELEN)\n var rx = sodium_malloc(cipherState.STATELEN)\n symmetricState.split(state.symmetricState, tx, rx)\n\n return { tx, rx }\n }\n}\nwriteMessage.bytes = 0\n\nfunction readMessage (state, message, payloadBuffer) {\n assert(state instanceof HandshakeState)\n assert(message.byteLength != null)\n assert(payloadBuffer.byteLength != null)\n\n var mpat = state.messagePatterns.shift()\n var moffset = 0\n\n assert(mpat != null)\n assert(mpat.shift() !== state.role)\n\n for (var token of mpat) {\n switch (token) {\n case TOK_E:\n assert(state.re == null)\n assert(message.byteLength - moffset >= dh.PKLEN)\n\n // PKLEN instead of DHLEN since they are different in out case\n state.re = sodium_malloc(dh.PKLEN)\n state.re.set(message.subarray(moffset, moffset + dh.PKLEN))\n moffset += dh.PKLEN\n\n symmetricState.mixHash(state.symmetricState, state.re)\n\n break\n\n case TOK_S:\n assert(state.rs == null)\n state.rs = sodium_malloc(dh.PKLEN)\n\n var bytes = 0\n if (symmetricState._hasKey(state.symmetricState)) {\n bytes = dh.PKLEN + 16\n } else {\n bytes = dh.PKLEN\n }\n\n assert(message.byteLength - moffset >= bytes)\n\n symmetricState.decryptAndHash(\n state.symmetricState,\n state.rs,\n message.subarray(moffset, moffset + bytes) // <- called temp in noise spec\n )\n\n moffset += symmetricState.decryptAndHash.bytesRead\n\n break\n case TOK_EE:\n dh.dh(DhResult, state.esk, state.re)\n symmetricState.mixKey(state.symmetricState, DhResult)\n sodium_memzero(DhResult)\n break\n case TOK_ES:\n if (state.role === INITIATOR) dh.dh(DhResult, state.esk, state.rs)\n else dh.dh(DhResult, state.ssk, state.re)\n\n symmetricState.mixKey(state.symmetricState, DhResult)\n sodium_memzero(DhResult)\n break\n case TOK_SE:\n if (state.role === INITIATOR) dh.dh(DhResult, state.ssk, state.re)\n else dh.dh(DhResult, state.esk, state.rs)\n\n symmetricState.mixKey(state.symmetricState, DhResult)\n sodium_memzero(DhResult)\n break\n case TOK_SS:\n dh.dh(DhResult, state.ssk, state.rs)\n\n symmetricState.mixKey(state.symmetricState, DhResult)\n sodium_memzero(DhResult)\n break\n\n default:\n throw new Error('Invalid message pattern')\n }\n }\n\n symmetricState.decryptAndHash(state.symmetricState, payloadBuffer, message.subarray(moffset))\n\n // How many bytes were written to payload (minus the TAG/MAC)\n readMessage.bytes = symmetricState.decryptAndHash.bytesWritten\n\n if (state.messagePatterns.length === 0) {\n var tx = sodium_malloc(cipherState.STATELEN)\n var rx = sodium_malloc(cipherState.STATELEN)\n symmetricState.split(state.symmetricState, rx, tx)\n\n return { tx, rx }\n }\n}\nreadMessage.bytes = 0\n\nfunction destroy (state) {\n if (state.symmetricState != null) {\n sodium_free(state.symmetricState)\n state.symmetricState = null\n }\n\n state.role = null\n\n if (state.spk != null) {\n sodium_free(state.spk)\n state.spk = null\n }\n\n if (state.ssk != null) {\n sodium_free(state.ssk)\n state.ssk = null\n }\n\n if (state.epk != null) {\n sodium_free(state.epk)\n state.epk = null\n }\n\n if (state.esk != null) {\n sodium_free(state.esk)\n state.esk = null\n }\n\n if (state.rs != null) {\n sodium_free(state.rs)\n state.rs = null\n }\n\n if (state.re != null) {\n sodium_free(state.re)\n state.re = null\n }\n\n state.messagePatterns = null\n}\n\nfunction keygen (obj, sk) {\n if (!obj) {\n obj = { publicKey: sodium_malloc(PKLEN), secretKey: sodium_malloc(SKLEN) }\n return keygen(obj)\n }\n\n if (obj.publicKey) {\n dh.generateKeypair(obj.publicKey, obj.secretKey)\n return obj\n }\n\n if (obj.byteLength != null) dh.generateKeypair(null, obj)\n}\n\nfunction seedKeygen (seed) {\n var obj = { publicKey: sodium_malloc(PKLEN), secretKey: sodium_malloc(SKLEN) }\n dh.generateSeedKeypair(obj.publicKey, obj.secretKey, seed)\n return obj\n}\n\nfunction toCharCode (s) {\n return s.charCodeAt(0)\n}\n", "module.exports = require('./handshake-state')\n", "var noise = require('noise-protocol')\nvar NoiseSymmetricState = require('noise-protocol/symmetric-state')\nvar NoiseHash = require('noise-protocol/hash')\nvar assert = require('nanoassert')\nvar EMPTY = Buffer.alloc(0)\n\nfunction SimpleHandshake (isInitiator, opts) {\n if (!(this instanceof SimpleHandshake)) return new SimpleHandshake(isInitiator, opts)\n opts = opts || {}\n\n var pattern = opts.pattern || 'NN'\n var prolouge = opts.prolouge || EMPTY\n\n this.handshakeHash = null\n this.onstatickey = opts.onstatickey || function (_, cb) { cb() }\n this.onephemeralkey = opts.onephemeralkey || function (_, cb) { cb() }\n this.onhandshake = opts.onhandshake || function (_, cb) { cb() }\n\n this.state = noise.initialize(\n pattern,\n isInitiator,\n prolouge,\n opts.staticKeyPair,\n opts.ephemeralKeyPair,\n opts.remoteStaticKey,\n opts.remoteEphemeralKey\n )\n\n // initiators should send first message, so if initiator, waiting = false\n // while servers should await any message, so if not initiator, waiting = true\n this.waiting = isInitiator === false\n this.finished = false\n // Will hold the \"split\" for transport encryption after handshake\n this.split = null\n\n // ~64KiB is the max noise message length\n this._tx = Buffer.alloc(65535)\n this._rx = Buffer.alloc(65535)\n}\n\nSimpleHandshake.prototype.recv = function recv (data, cb) {\n var self = this\n assert(self.finished === false, 'Should not call recv if finished')\n assert(data != null, 'must have data')\n assert(data.byteLength <= self._rx.byteLength, 'too much data received')\n assert(self.waiting === true, 'Wrong state, not ready to receive data')\n assert(self.split == null, 'split should be null')\n\n var hasREBefore = self.state.re != null\n var hasRSBefore = self.state.rs != null\n try {\n self.split = noise.readMessage(self.state, data, self._rx)\n } catch (ex) {\n return self._finish(ex, null, cb)\n }\n\n self.waiting = false\n\n var hasREAfter = self.state.re != null\n var hasRSAfter = self.state.rs != null\n\n // e and s may come in the same message, so we always have to check static\n // after ephemeral. Assumption here (which holds for all official Noise handshakes)\n // is that e always comes before s\n if (hasREBefore === false && hasREAfter === true) {\n return self.onephemeralkey(self.state.re, checkStatic)\n }\n\n return checkStatic()\n\n function checkStatic (err) {\n if (err) return ondone(err)\n\n if (hasRSBefore === false && hasRSAfter === true) {\n return self.onstatickey(self.state.rs, ondone)\n }\n\n return ondone()\n }\n\n function ondone (err) {\n if (err) return self._finish(err, null, cb)\n\n var msg = self._rx.subarray(0, noise.readMessage.bytes)\n if (self.split) return self._finish(null, msg, cb)\n\n cb(null, msg)\n }\n}\n\nSimpleHandshake.prototype.send = function send (data, cb) {\n assert(this.finished === false, 'Should not call send if finished')\n assert(this.waiting === false, 'Wrong state, not ready to send data')\n assert(this.split == null, 'split should be null')\n\n data = data || EMPTY\n\n try {\n this.split = noise.writeMessage(this.state, data, this._tx)\n } catch (ex) {\n return this._finish(ex, null, cb)\n }\n\n this.waiting = true\n\n var buf = this._tx.subarray(0, noise.writeMessage.bytes)\n\n if (this.split != null) return this._finish(null, buf, cb)\n\n return cb(null, buf)\n}\n\nSimpleHandshake.prototype.destroy = function () {\n this._finish(null, null, function () {})\n}\n\nSimpleHandshake.prototype._finish = function _finish (err, msg, cb) {\n assert(this.finished === false, 'Already finished')\n const self = this\n\n self.finished = true\n self.waiting = false\n\n if (self.split) {\n self.handshakeHash = Buffer.alloc(NoiseHash.HASHLEN)\n NoiseSymmetricState.getHandshakeHash(self.state.symmetricState, self.handshakeHash)\n }\n if (err) return ondone(err)\n self.onhandshake(self.state, ondone)\n\n function ondone (err) {\n noise.destroy(self.state)\n\n cb(err, msg, self.split)\n\n // Should be sodium_memzero?\n self._rx.fill(0)\n self._tx.fill(0)\n }\n}\n\nSimpleHandshake.keygen = noise.keygen\nSimpleHandshake.seedKeygen = noise.seedKeygen\n\nmodule.exports = SimpleHandshake\n", "module.exports = encode\n\nvar MSB = 0x80\n , REST = 0x7F\n , MSBALL = ~REST\n , INT = Math.pow(2, 31)\n\nfunction encode(num, out, offset) {\n out = out || []\n offset = offset || 0\n var oldOffset = offset\n\n while(num >= INT) {\n out[offset++] = (num & 0xFF) | MSB\n num /= 128\n }\n while(num & MSBALL) {\n out[offset++] = (num & 0xFF) | MSB\n num >>>= 7\n }\n out[offset] = num | 0\n \n encode.bytes = offset - oldOffset + 1\n \n return out\n}\n", "module.exports = read\n\nvar MSB = 0x80\n , REST = 0x7F\n\nfunction read(buf, offset) {\n var res = 0\n , offset = offset || 0\n , shift = 0\n , counter = offset\n , b\n , l = buf.length\n\n do {\n if (counter >= l) {\n read.bytes = 0\n throw new RangeError('Could not decode varint')\n }\n b = buf[counter++]\n res += shift < 28\n ? (b & REST) << shift\n : (b & REST) * Math.pow(2, shift)\n shift += 7\n } while (b >= MSB)\n\n read.bytes = counter - offset\n\n return res\n}\n", "\nvar N1 = Math.pow(2, 7)\nvar N2 = Math.pow(2, 14)\nvar N3 = Math.pow(2, 21)\nvar N4 = Math.pow(2, 28)\nvar N5 = Math.pow(2, 35)\nvar N6 = Math.pow(2, 42)\nvar N7 = Math.pow(2, 49)\nvar N8 = Math.pow(2, 56)\nvar N9 = Math.pow(2, 63)\n\nmodule.exports = function (value) {\n return (\n value < N1 ? 1\n : value < N2 ? 2\n : value < N3 ? 3\n : value < N4 ? 4\n : value < N5 ? 5\n : value < N6 ? 6\n : value < N7 ? 7\n : value < N8 ? 8\n : value < N9 ? 9\n : 10\n )\n}\n", "module.exports = {\n encode: require('./encode.js')\n , decode: require('./decode.js')\n , encodingLength: require('./length.js')\n}\n", "const SH = require('simple-handshake')\nconst DH = require('noise-protocol/dh')\nconst crypto = require('hypercore-crypto')\nconst varint = require('varint')\n\nmodule.exports = class ProtocolHandshake {\n constructor (initiator, payload, opts, done) {\n this.options = opts\n this.ondone = done\n this.buffer = null\n this.length = 0\n this.remotePayload = null\n this.payload = payload\n this.keyPair = opts.keyPair || ProtocolHandshake.keyPair()\n this.remotePublicKey = null\n this.onrecv = onrecv.bind(this)\n this.onsend = onsend.bind(this)\n this.destroyed = false\n this.noise = SH(initiator, {\n pattern: 'XX',\n onhandshake,\n staticKeyPair: this.keyPair,\n onstatickey: onstatickey.bind(this)\n })\n\n const self = this\n if (this.noise.waiting === false) process.nextTick(start, this)\n\n function onhandshake (state, cb) {\n process.nextTick(finish, self)\n cb(null)\n }\n }\n\n recv (data) {\n if (this.destroyed) return\n\n if (this.buffer) this.buffer = Buffer.concat([this.buffer, data])\n else this.buffer = data\n\n while (!this.destroyed && !this.noise.finished) {\n if (!this.buffer || this.buffer.length < 3) return\n if (this.length) {\n if (this.buffer.length < this.length) return\n const message = this.buffer.slice(0, this.length)\n this.buffer = this.length < this.buffer.length ? this.buffer.slice(this.length) : null\n this.length = 0\n this.noise.recv(message, this.onrecv)\n } else {\n this.length = varint.decode(this.buffer, 0)\n this.buffer = this.buffer.slice(varint.decode.bytes)\n }\n }\n }\n\n destroy (err) {\n if (this.destroyed) return\n this.destroyed = true\n if (!this.noise.finished) this.noise.destroy()\n this.ondone(err)\n }\n\n static keyPair (seed) {\n const obj = {\n // suboptimal but to reduce secure memory overhead on linux with default settings\n // better fix is to batch mallocs in noise-protocol\n publicKey: Buffer.alloc(DH.PKLEN),\n secretKey: Buffer.alloc(DH.SKLEN)\n }\n\n if (seed) DH.generateSeedKeypair(obj.publicKey, obj.secretKey, seed)\n else DH.generateKeypair(obj.publicKey, obj.secretKey)\n\n return obj\n }\n}\n\nfunction finish (self) {\n if (self.destroyed) return\n self.destroyed = true\n // suboptimal but to reduce secure memory overhead on linux with default settings\n // better fix is to batch mallocs in noise-protocol\n const split = { rx: Buffer.from(self.noise.split.rx), tx: Buffer.from(self.noise.split.tx) }\n crypto.free(self.noise.split.rx)\n crypto.free(self.noise.split.tx)\n self.ondone(null, self.remotePayload, split, self.buffer, self.remotePublicKey, self.noise.handshakeHash)\n}\n\nfunction start (self) {\n if (self.destroyed) return\n self.noise.send(self.payload, self.onsend)\n}\n\nfunction onsend (err, data) {\n if (err) return this.destroy(err)\n const buf = Buffer.allocUnsafe(varint.encodingLength(data.length) + data.length)\n varint.encode(data.length, buf, 0)\n data.copy(buf, varint.encode.bytes)\n this.options.send(buf)\n}\n\nfunction onrecv (err, data) { // data is reused so we need to copy it if we use it\n if (err) return this.destroy(err)\n if (data && data.length) this.remotePayload = Buffer.from(data)\n if (this.destroyed || this.noise.finished) return\n\n if (this.noise.waiting === false) {\n this.noise.send(this.payload, this.onsend)\n }\n}\n\nfunction onstatickey (remoteKey, done) {\n this.remotePublicKey = Buffer.from(remoteKey)\n if (this.options.onauthenticate) this.options.onauthenticate(this.remotePublicKey, done)\n else done(null)\n}\n", "module.exports = encode\n\nvar MSB = 0x80\n , REST = 0x7F\n , MSBALL = ~REST\n , INT = Math.pow(2, 31)\n\nfunction encode(num, out, offset) {\n out = out || []\n offset = offset || 0\n var oldOffset = offset\n\n while(num >= INT) {\n out[offset++] = (num & 0xFF) | MSB\n num /= 128\n }\n while(num & MSBALL) {\n out[offset++] = (num & 0xFF) | MSB\n num >>>= 7\n }\n out[offset] = num | 0\n \n encode.bytes = offset - oldOffset + 1\n \n return out\n}\n", "module.exports = read\n\nvar MSB = 0x80\n , REST = 0x7F\n\nfunction read(buf, offset) {\n var res = 0\n , offset = offset || 0\n , shift = 0\n , counter = offset\n , b\n , l = buf.length\n\n do {\n if (counter >= l) {\n read.bytes = 0\n throw new RangeError('Could not decode varint')\n }\n b = buf[counter++]\n res += shift < 28\n ? (b & REST) << shift\n : (b & REST) * Math.pow(2, shift)\n shift += 7\n } while (b >= MSB)\n\n read.bytes = counter - offset\n\n return res\n}\n", "\nvar N1 = Math.pow(2, 7)\nvar N2 = Math.pow(2, 14)\nvar N3 = Math.pow(2, 21)\nvar N4 = Math.pow(2, 28)\nvar N5 = Math.pow(2, 35)\nvar N6 = Math.pow(2, 42)\nvar N7 = Math.pow(2, 49)\nvar N8 = Math.pow(2, 56)\nvar N9 = Math.pow(2, 63)\n\nmodule.exports = function (value) {\n return (\n value < N1 ? 1\n : value < N2 ? 2\n : value < N3 ? 3\n : value < N4 ? 4\n : value < N5 ? 5\n : value < N6 ? 6\n : value < N7 ? 7\n : value < N8 ? 8\n : value < N9 ? 9\n : 10\n )\n}\n", "module.exports = {\n encode: require('./encode.js')\n , decode: require('./decode.js')\n , encodingLength: require('./length.js')\n}\n", "var varint = require('varint')\nexports.encode = function encode (v, b, o) {\n v = v >= 0 ? v*2 : v*-2 - 1\n var r = varint.encode(v, b, o)\n encode.bytes = varint.encode.bytes\n return r\n}\nexports.decode = function decode (b, o) {\n var v = varint.decode(b, o)\n decode.bytes = varint.decode.bytes\n return v & 1 ? (v+1) / -2 : v / 2\n}\n\nexports.encodingLength = function (v) {\n return varint.encodingLength(v >= 0 ? v*2 : v*-2 - 1)\n}\n", "var varint = require('varint')\nvar svarint = require('signed-varint')\nvar b4a = require('b4a')\n\nexports.make = encoder\n\nexports.name = function (enc) {\n var keys = Object.keys(exports)\n for (var i = 0; i < keys.length; i++) {\n if (exports[keys[i]] === enc) return keys[i]\n }\n return null\n}\n\nexports.skip = function (type, buffer, offset) {\n switch (type) {\n case 0:\n varint.decode(buffer, offset)\n return offset + varint.decode.bytes\n\n case 1:\n return offset + 8\n\n case 2:\n var len = varint.decode(buffer, offset)\n return offset + varint.decode.bytes + len\n\n case 3:\n case 4:\n throw new Error('Groups are not supported')\n\n case 5:\n return offset + 4\n }\n\n throw new Error('Unknown wire type: ' + type)\n}\n\nexports.bytes = encoder(2,\n function encode (val, buffer, offset) {\n var oldOffset = offset\n var len = bufferLength(val)\n\n varint.encode(len, buffer, offset)\n offset += varint.encode.bytes\n\n if (b4a.isBuffer(val)) b4a.copy(val, buffer, offset)\n else b4a.write(buffer, val, offset, len)\n offset += len\n\n encode.bytes = offset - oldOffset\n return buffer\n },\n function decode (buffer, offset) {\n var oldOffset = offset\n\n var len = varint.decode(buffer, offset)\n offset += varint.decode.bytes\n\n var val = buffer.subarray(offset, offset + len)\n offset += val.length\n\n decode.bytes = offset - oldOffset\n return val\n },\n function encodingLength (val) {\n var len = bufferLength(val)\n return varint.encodingLength(len) + len\n }\n)\n\nexports.string = encoder(2,\n function encode (val, buffer, offset) {\n var oldOffset = offset\n var len = b4a.byteLength(val)\n\n varint.encode(len, buffer, offset, 'utf-8')\n offset += varint.encode.bytes\n\n b4a.write(buffer, val, offset, len)\n offset += len\n\n encode.bytes = offset - oldOffset\n return buffer\n },\n function decode (buffer, offset) {\n var oldOffset = offset\n\n var len = varint.decode(buffer, offset)\n offset += varint.decode.bytes\n\n var val = b4a.toString(buffer, 'utf-8', offset, offset + len)\n offset += len\n\n decode.bytes = offset - oldOffset\n return val\n },\n function encodingLength (val) {\n var len = b4a.byteLength(val)\n return varint.encodingLength(len) + len\n }\n)\n\nexports.bool = encoder(0,\n function encode (val, buffer, offset) {\n buffer[offset] = val ? 1 : 0\n encode.bytes = 1\n return buffer\n },\n function decode (buffer, offset) {\n var bool = buffer[offset] > 0\n decode.bytes = 1\n return bool\n },\n function encodingLength () {\n return 1\n }\n)\n\nexports.int32 = encoder(0,\n function encode (val, buffer, offset) {\n varint.encode(val < 0 ? val + 4294967296 : val, buffer, offset)\n encode.bytes = varint.encode.bytes\n return buffer\n },\n function decode (buffer, offset) {\n var val = varint.decode(buffer, offset)\n decode.bytes = varint.decode.bytes\n return val > 2147483647 ? val - 4294967296 : val\n },\n function encodingLength (val) {\n return varint.encodingLength(val < 0 ? val + 4294967296 : val)\n }\n)\n\nexports.int64 = encoder(0,\n function encode (val, buffer, offset) {\n if (val < 0) {\n var last = offset + 9\n varint.encode(val * -1, buffer, offset)\n offset += varint.encode.bytes - 1\n buffer[offset] = buffer[offset] | 0x80\n while (offset < last - 1) {\n offset++\n buffer[offset] = 0xff\n }\n buffer[last] = 0x01\n encode.bytes = 10\n } else {\n varint.encode(val, buffer, offset)\n encode.bytes = varint.encode.bytes\n }\n return buffer\n },\n function decode (buffer, offset) {\n var val = varint.decode(buffer, offset)\n if (val >= Math.pow(2, 63)) {\n var limit = 9\n while (buffer[offset + limit - 1] === 0xff) limit--\n limit = limit || 9\n var subset = b4a.allocUnsafe(limit)\n b4a.copy(buffer, subset, 0, offset, offset + limit)\n subset[limit - 1] = subset[limit - 1] & 0x7f\n val = -1 * varint.decode(subset, 0)\n decode.bytes = 10\n } else {\n decode.bytes = varint.decode.bytes\n }\n return val\n },\n function encodingLength (val) {\n return val < 0 ? 10 : varint.encodingLength(val)\n }\n)\n\nexports.sint32 =\nexports.sint64 = encoder(0,\n svarint.encode,\n svarint.decode,\n svarint.encodingLength\n)\n\nexports.uint32 =\nexports.uint64 =\nexports.enum =\nexports.varint = encoder(0,\n varint.encode,\n varint.decode,\n varint.encodingLength\n)\n\n// we cannot represent these in javascript so we just use buffers\nexports.fixed64 =\nexports.sfixed64 = encoder(1,\n function encode (val, buffer, offset) {\n b4a.copy(val, buffer, offset)\n encode.bytes = 8\n return buffer\n },\n function decode (buffer, offset) {\n var val = buffer.subarray(offset, offset + 8)\n decode.bytes = 8\n return val\n },\n function encodingLength () {\n return 8\n }\n)\n\nexports.double = encoder(1,\n function encode (val, buffer, offset) {\n b4a.writeDoubleLE(buffer, val, offset)\n encode.bytes = 8\n return buffer\n },\n function decode (buffer, offset) {\n var val = b4a.readDoubleLE(buffer, offset)\n decode.bytes = 8\n return val\n },\n function encodingLength () {\n return 8\n }\n)\n\nexports.fixed32 = encoder(5,\n function encode (val, buffer, offset) {\n b4a.writeUInt32LE(buffer, val, offset)\n encode.bytes = 4\n return buffer\n },\n function decode (buffer, offset) {\n var val = b4a.readUInt32LE(buffer, offset)\n decode.bytes = 4\n return val\n },\n function encodingLength () {\n return 4\n }\n)\n\nexports.sfixed32 = encoder(5,\n function encode (val, buffer, offset) {\n b4a.writeInt32LE(buffer, val, offset)\n encode.bytes = 4\n return buffer\n },\n function decode (buffer, offset) {\n var val = b4a.readInt32LE(buffer, offset)\n decode.bytes = 4\n return val\n },\n function encodingLength () {\n return 4\n }\n)\n\nexports.float = encoder(5,\n function encode (val, buffer, offset) {\n b4a.writeFloatLE(buffer, val, offset)\n encode.bytes = 4\n return buffer\n },\n function decode (buffer, offset) {\n var val = b4a.readFloatLE(buffer, offset)\n decode.bytes = 4\n return val\n },\n function encodingLength () {\n return 4\n }\n)\n\nfunction encoder (type, encode, decode, encodingLength) {\n encode.bytes = decode.bytes = 0\n\n return {\n type: type,\n encode: encode,\n decode: decode,\n encodingLength: encodingLength\n }\n}\n\nfunction bufferLength (val) {\n return b4a.isBuffer(val) ? val.length : b4a.byteLength(val)\n}\n", "// This file is auto generated by the protocol-buffers compiler\n\n/* eslint-disable quotes */\n/* eslint-disable indent */\n/* eslint-disable no-redeclare */\n/* eslint-disable camelcase */\n\n// Remember to `npm install --save protocol-buffers-encodings`\nvar encodings = require('protocol-buffers-encodings')\nvar varint = encodings.varint\nvar skip = encodings.skip\n\nvar NoisePayload = exports.NoisePayload = {\n buffer: true,\n encodingLength: null,\n encode: null,\n decode: null\n}\n\nvar Open = exports.Open = {\n buffer: true,\n encodingLength: null,\n encode: null,\n decode: null\n}\n\nvar Options = exports.Options = {\n buffer: true,\n encodingLength: null,\n encode: null,\n decode: null\n}\n\nvar Status = exports.Status = {\n buffer: true,\n encodingLength: null,\n encode: null,\n decode: null\n}\n\nvar Have = exports.Have = {\n buffer: true,\n encodingLength: null,\n encode: null,\n decode: null\n}\n\nvar Unhave = exports.Unhave = {\n buffer: true,\n encodingLength: null,\n encode: null,\n decode: null\n}\n\nvar Want = exports.Want = {\n buffer: true,\n encodingLength: null,\n encode: null,\n decode: null\n}\n\nvar Unwant = exports.Unwant = {\n buffer: true,\n encodingLength: null,\n encode: null,\n decode: null\n}\n\nvar Request = exports.Request = {\n buffer: true,\n encodingLength: null,\n encode: null,\n decode: null\n}\n\nvar Cancel = exports.Cancel = {\n buffer: true,\n encodingLength: null,\n encode: null,\n decode: null\n}\n\nvar Data = exports.Data = {\n buffer: true,\n encodingLength: null,\n encode: null,\n decode: null\n}\n\nvar Close = exports.Close = {\n buffer: true,\n encodingLength: null,\n encode: null,\n decode: null\n}\n\ndefineNoisePayload()\ndefineOpen()\ndefineOptions()\ndefineStatus()\ndefineHave()\ndefineUnhave()\ndefineWant()\ndefineUnwant()\ndefineRequest()\ndefineCancel()\ndefineData()\ndefineClose()\n\nfunction defineNoisePayload () {\n var enc = [\n encodings.bytes\n ]\n\n NoisePayload.encodingLength = encodingLength\n NoisePayload.encode = encode\n NoisePayload.decode = decode\n\n function encodingLength (obj) {\n var length = 0\n if (!defined(obj.nonce)) throw new Error(\"nonce is required\")\n var len = enc[0].encodingLength(obj.nonce)\n length += 1 + len\n return length\n }\n\n function encode (obj, buf, offset) {\n if (!offset) offset = 0\n if (!buf) buf = Buffer.allocUnsafe(encodingLength(obj))\n var oldOffset = offset\n if (!defined(obj.nonce)) throw new Error(\"nonce is required\")\n buf[offset++] = 10\n enc[0].encode(obj.nonce, buf, offset)\n offset += enc[0].encode.bytes\n encode.bytes = offset - oldOffset\n return buf\n }\n\n function decode (buf, offset, end) {\n if (!offset) offset = 0\n if (!end) end = buf.length\n if (!(end <= buf.length && offset <= buf.length)) throw new Error(\"Decoded message is not valid\")\n var oldOffset = offset\n var obj = {\n nonce: null\n }\n var found0 = false\n while (true) {\n if (end <= offset) {\n if (!found0) throw new Error(\"Decoded message is not valid\")\n decode.bytes = offset - oldOffset\n return obj\n }\n var prefix = varint.decode(buf, offset)\n offset += varint.decode.bytes\n var tag = prefix >> 3\n switch (tag) {\n case 1:\n obj.nonce = enc[0].decode(buf, offset)\n offset += enc[0].decode.bytes\n found0 = true\n break\n default:\n offset = skip(prefix & 7, buf, offset)\n }\n }\n }\n}\n\nfunction defineOpen () {\n var enc = [\n encodings.bytes\n ]\n\n Open.encodingLength = encodingLength\n Open.encode = encode\n Open.decode = decode\n\n function encodingLength (obj) {\n var length = 0\n if (!defined(obj.discoveryKey)) throw new Error(\"discoveryKey is required\")\n var len = enc[0].encodingLength(obj.discoveryKey)\n length += 1 + len\n if (defined(obj.capability)) {\n var len = enc[0].encodingLength(obj.capability)\n length += 1 + len\n }\n return length\n }\n\n function encode (obj, buf, offset) {\n if (!offset) offset = 0\n if (!buf) buf = Buffer.allocUnsafe(encodingLength(obj))\n var oldOffset = offset\n if (!defined(obj.discoveryKey)) throw new Error(\"discoveryKey is required\")\n buf[offset++] = 10\n enc[0].encode(obj.discoveryKey, buf, offset)\n offset += enc[0].encode.bytes\n if (defined(obj.capability)) {\n buf[offset++] = 18\n enc[0].encode(obj.capability, buf, offset)\n offset += enc[0].encode.bytes\n }\n encode.bytes = offset - oldOffset\n return buf\n }\n\n function decode (buf, offset, end) {\n if (!offset) offset = 0\n if (!end) end = buf.length\n if (!(end <= buf.length && offset <= buf.length)) throw new Error(\"Decoded message is not valid\")\n var oldOffset = offset\n var obj = {\n discoveryKey: null,\n capability: null\n }\n var found0 = false\n while (true) {\n if (end <= offset) {\n if (!found0) throw new Error(\"Decoded message is not valid\")\n decode.bytes = offset - oldOffset\n return obj\n }\n var prefix = varint.decode(buf, offset)\n offset += varint.decode.bytes\n var tag = prefix >> 3\n switch (tag) {\n case 1:\n obj.discoveryKey = enc[0].decode(buf, offset)\n offset += enc[0].decode.bytes\n found0 = true\n break\n case 2:\n obj.capability = enc[0].decode(buf, offset)\n offset += enc[0].decode.bytes\n break\n default:\n offset = skip(prefix & 7, buf, offset)\n }\n }\n }\n}\n\nfunction defineOptions () {\n var enc = [\n encodings.string,\n encodings.bool\n ]\n\n Options.encodingLength = encodingLength\n Options.encode = encode\n Options.decode = decode\n\n function encodingLength (obj) {\n var length = 0\n if (defined(obj.extensions)) {\n for (var i = 0; i < obj.extensions.length; i++) {\n if (!defined(obj.extensions[i])) continue\n var len = enc[0].encodingLength(obj.extensions[i])\n length += 1 + len\n }\n }\n if (defined(obj.ack)) {\n var len = enc[1].encodingLength(obj.ack)\n length += 1 + len\n }\n return length\n }\n\n function encode (obj, buf, offset) {\n if (!offset) offset = 0\n if (!buf) buf = Buffer.allocUnsafe(encodingLength(obj))\n var oldOffset = offset\n if (defined(obj.extensions)) {\n for (var i = 0; i < obj.extensions.length; i++) {\n if (!defined(obj.extensions[i])) continue\n buf[offset++] = 10\n enc[0].encode(obj.extensions[i], buf, offset)\n offset += enc[0].encode.bytes\n }\n }\n if (defined(obj.ack)) {\n buf[offset++] = 16\n enc[1].encode(obj.ack, buf, offset)\n offset += enc[1].encode.bytes\n }\n encode.bytes = offset - oldOffset\n return buf\n }\n\n function decode (buf, offset, end) {\n if (!offset) offset = 0\n if (!end) end = buf.length\n if (!(end <= buf.length && offset <= buf.length)) throw new Error(\"Decoded message is not valid\")\n var oldOffset = offset\n var obj = {\n extensions: [],\n ack: false\n }\n while (true) {\n if (end <= offset) {\n decode.bytes = offset - oldOffset\n return obj\n }\n var prefix = varint.decode(buf, offset)\n offset += varint.decode.bytes\n var tag = prefix >> 3\n switch (tag) {\n case 1:\n obj.extensions.push(enc[0].decode(buf, offset))\n offset += enc[0].decode.bytes\n break\n case 2:\n obj.ack = enc[1].decode(buf, offset)\n offset += enc[1].decode.bytes\n break\n default:\n offset = skip(prefix & 7, buf, offset)\n }\n }\n }\n}\n\nfunction defineStatus () {\n var enc = [\n encodings.bool\n ]\n\n Status.encodingLength = encodingLength\n Status.encode = encode\n Status.decode = decode\n\n function encodingLength (obj) {\n var length = 0\n if (defined(obj.uploading)) {\n var len = enc[0].encodingLength(obj.uploading)\n length += 1 + len\n }\n if (defined(obj.downloading)) {\n var len = enc[0].encodingLength(obj.downloading)\n length += 1 + len\n }\n return length\n }\n\n function encode (obj, buf, offset) {\n if (!offset) offset = 0\n if (!buf) buf = Buffer.allocUnsafe(encodingLength(obj))\n var oldOffset = offset\n if (defined(obj.uploading)) {\n buf[offset++] = 8\n enc[0].encode(obj.uploading, buf, offset)\n offset += enc[0].encode.bytes\n }\n if (defined(obj.downloading)) {\n buf[offset++] = 16\n enc[0].encode(obj.downloading, buf, offset)\n offset += enc[0].encode.bytes\n }\n encode.bytes = offset - oldOffset\n return buf\n }\n\n function decode (buf, offset, end) {\n if (!offset) offset = 0\n if (!end) end = buf.length\n if (!(end <= buf.length && offset <= buf.length)) throw new Error(\"Decoded message is not valid\")\n var oldOffset = offset\n var obj = {\n uploading: false,\n downloading: false\n }\n while (true) {\n if (end <= offset) {\n decode.bytes = offset - oldOffset\n return obj\n }\n var prefix = varint.decode(buf, offset)\n offset += varint.decode.bytes\n var tag = prefix >> 3\n switch (tag) {\n case 1:\n obj.uploading = enc[0].decode(buf, offset)\n offset += enc[0].decode.bytes\n break\n case 2:\n obj.downloading = enc[0].decode(buf, offset)\n offset += enc[0].decode.bytes\n break\n default:\n offset = skip(prefix & 7, buf, offset)\n }\n }\n }\n}\n\nfunction defineHave () {\n var enc = [\n encodings.varint,\n encodings.bytes,\n encodings.bool\n ]\n\n Have.encodingLength = encodingLength\n Have.encode = encode\n Have.decode = decode\n\n function encodingLength (obj) {\n var length = 0\n if (!defined(obj.start)) throw new Error(\"start is required\")\n var len = enc[0].encodingLength(obj.start)\n length += 1 + len\n if (defined(obj.length)) {\n var len = enc[0].encodingLength(obj.length)\n length += 1 + len\n }\n if (defined(obj.bitfield)) {\n var len = enc[1].encodingLength(obj.bitfield)\n length += 1 + len\n }\n if (defined(obj.ack)) {\n var len = enc[2].encodingLength(obj.ack)\n length += 1 + len\n }\n return length\n }\n\n function encode (obj, buf, offset) {\n if (!offset) offset = 0\n if (!buf) buf = Buffer.allocUnsafe(encodingLength(obj))\n var oldOffset = offset\n if (!defined(obj.start)) throw new Error(\"start is required\")\n buf[offset++] = 8\n enc[0].encode(obj.start, buf, offset)\n offset += enc[0].encode.bytes\n if (defined(obj.length)) {\n buf[offset++] = 16\n enc[0].encode(obj.length, buf, offset)\n offset += enc[0].encode.bytes\n }\n if (defined(obj.bitfield)) {\n buf[offset++] = 26\n enc[1].encode(obj.bitfield, buf, offset)\n offset += enc[1].encode.bytes\n }\n if (defined(obj.ack)) {\n buf[offset++] = 32\n enc[2].encode(obj.ack, buf, offset)\n offset += enc[2].encode.bytes\n }\n encode.bytes = offset - oldOffset\n return buf\n }\n\n function decode (buf, offset, end) {\n if (!offset) offset = 0\n if (!end) end = buf.length\n if (!(end <= buf.length && offset <= buf.length)) throw new Error(\"Decoded message is not valid\")\n var oldOffset = offset\n var obj = {\n start: 0,\n length: 1,\n bitfield: null,\n ack: false\n }\n var found0 = false\n while (true) {\n if (end <= offset) {\n if (!found0) throw new Error(\"Decoded message is not valid\")\n decode.bytes = offset - oldOffset\n return obj\n }\n var prefix = varint.decode(buf, offset)\n offset += varint.decode.bytes\n var tag = prefix >> 3\n switch (tag) {\n case 1:\n obj.start = enc[0].decode(buf, offset)\n offset += enc[0].decode.bytes\n found0 = true\n break\n case 2:\n obj.length = enc[0].decode(buf, offset)\n offset += enc[0].decode.bytes\n break\n case 3:\n obj.bitfield = enc[1].decode(buf, offset)\n offset += enc[1].decode.bytes\n break\n case 4:\n obj.ack = enc[2].decode(buf, offset)\n offset += enc[2].decode.bytes\n break\n default:\n offset = skip(prefix & 7, buf, offset)\n }\n }\n }\n}\n\nfunction defineUnhave () {\n var enc = [\n encodings.varint\n ]\n\n Unhave.encodingLength = encodingLength\n Unhave.encode = encode\n Unhave.decode = decode\n\n function encodingLength (obj) {\n var length = 0\n if (!defined(obj.start)) throw new Error(\"start is required\")\n var len = enc[0].encodingLength(obj.start)\n length += 1 + len\n if (defined(obj.length)) {\n var len = enc[0].encodingLength(obj.length)\n length += 1 + len\n }\n return length\n }\n\n function encode (obj, buf, offset) {\n if (!offset) offset = 0\n if (!buf) buf = Buffer.allocUnsafe(encodingLength(obj))\n var oldOffset = offset\n if (!defined(obj.start)) throw new Error(\"start is required\")\n buf[offset++] = 8\n enc[0].encode(obj.start, buf, offset)\n offset += enc[0].encode.bytes\n if (defined(obj.length)) {\n buf[offset++] = 16\n enc[0].encode(obj.length, buf, offset)\n offset += enc[0].encode.bytes\n }\n encode.bytes = offset - oldOffset\n return buf\n }\n\n function decode (buf, offset, end) {\n if (!offset) offset = 0\n if (!end) end = buf.length\n if (!(end <= buf.length && offset <= buf.length)) throw new Error(\"Decoded message is not valid\")\n var oldOffset = offset\n var obj = {\n start: 0,\n length: 1\n }\n var found0 = false\n while (true) {\n if (end <= offset) {\n if (!found0) throw new Error(\"Decoded message is not valid\")\n decode.bytes = offset - oldOffset\n return obj\n }\n var prefix = varint.decode(buf, offset)\n offset += varint.decode.bytes\n var tag = prefix >> 3\n switch (tag) {\n case 1:\n obj.start = enc[0].decode(buf, offset)\n offset += enc[0].decode.bytes\n found0 = true\n break\n case 2:\n obj.length = enc[0].decode(buf, offset)\n offset += enc[0].decode.bytes\n break\n default:\n offset = skip(prefix & 7, buf, offset)\n }\n }\n }\n}\n\nfunction defineWant () {\n var enc = [\n encodings.varint\n ]\n\n Want.encodingLength = encodingLength\n Want.encode = encode\n Want.decode = decode\n\n function encodingLength (obj) {\n var length = 0\n if (!defined(obj.start)) throw new Error(\"start is required\")\n var len = enc[0].encodingLength(obj.start)\n length += 1 + len\n if (defined(obj.length)) {\n var len = enc[0].encodingLength(obj.length)\n length += 1 + len\n }\n return length\n }\n\n function encode (obj, buf, offset) {\n if (!offset) offset = 0\n if (!buf) buf = Buffer.allocUnsafe(encodingLength(obj))\n var oldOffset = offset\n if (!defined(obj.start)) throw new Error(\"start is required\")\n buf[offset++] = 8\n enc[0].encode(obj.start, buf, offset)\n offset += enc[0].encode.bytes\n if (defined(obj.length)) {\n buf[offset++] = 16\n enc[0].encode(obj.length, buf, offset)\n offset += enc[0].encode.bytes\n }\n encode.bytes = offset - oldOffset\n return buf\n }\n\n function decode (buf, offset, end) {\n if (!offset) offset = 0\n if (!end) end = buf.length\n if (!(end <= buf.length && offset <= buf.length)) throw new Error(\"Decoded message is not valid\")\n var oldOffset = offset\n var obj = {\n start: 0,\n length: 0\n }\n var found0 = false\n while (true) {\n if (end <= offset) {\n if (!found0) throw new Error(\"Decoded message is not valid\")\n decode.bytes = offset - oldOffset\n return obj\n }\n var prefix = varint.decode(buf, offset)\n offset += varint.decode.bytes\n var tag = prefix >> 3\n switch (tag) {\n case 1:\n obj.start = enc[0].decode(buf, offset)\n offset += enc[0].decode.bytes\n found0 = true\n break\n case 2:\n obj.length = enc[0].decode(buf, offset)\n offset += enc[0].decode.bytes\n break\n default:\n offset = skip(prefix & 7, buf, offset)\n }\n }\n }\n}\n\nfunction defineUnwant () {\n var enc = [\n encodings.varint\n ]\n\n Unwant.encodingLength = encodingLength\n Unwant.encode = encode\n Unwant.decode = decode\n\n function encodingLength (obj) {\n var length = 0\n if (!defined(obj.start)) throw new Error(\"start is required\")\n var len = enc[0].encodingLength(obj.start)\n length += 1 + len\n if (defined(obj.length)) {\n var len = enc[0].encodingLength(obj.length)\n length += 1 + len\n }\n return length\n }\n\n function encode (obj, buf, offset) {\n if (!offset) offset = 0\n if (!buf) buf = Buffer.allocUnsafe(encodingLength(obj))\n var oldOffset = offset\n if (!defined(obj.start)) throw new Error(\"start is required\")\n buf[offset++] = 8\n enc[0].encode(obj.start, buf, offset)\n offset += enc[0].encode.bytes\n if (defined(obj.length)) {\n buf[offset++] = 16\n enc[0].encode(obj.length, buf, offset)\n offset += enc[0].encode.bytes\n }\n encode.bytes = offset - oldOffset\n return buf\n }\n\n function decode (buf, offset, end) {\n if (!offset) offset = 0\n if (!end) end = buf.length\n if (!(end <= buf.length && offset <= buf.length)) throw new Error(\"Decoded message is not valid\")\n var oldOffset = offset\n var obj = {\n start: 0,\n length: 0\n }\n var found0 = false\n while (true) {\n if (end <= offset) {\n if (!found0) throw new Error(\"Decoded message is not valid\")\n decode.bytes = offset - oldOffset\n return obj\n }\n var prefix = varint.decode(buf, offset)\n offset += varint.decode.bytes\n var tag = prefix >> 3\n switch (tag) {\n case 1:\n obj.start = enc[0].decode(buf, offset)\n offset += enc[0].decode.bytes\n found0 = true\n break\n case 2:\n obj.length = enc[0].decode(buf, offset)\n offset += enc[0].decode.bytes\n break\n default:\n offset = skip(prefix & 7, buf, offset)\n }\n }\n }\n}\n\nfunction defineRequest () {\n var enc = [\n encodings.varint,\n encodings.bool\n ]\n\n Request.encodingLength = encodingLength\n Request.encode = encode\n Request.decode = decode\n\n function encodingLength (obj) {\n var length = 0\n if (!defined(obj.index)) throw new Error(\"index is required\")\n var len = enc[0].encodingLength(obj.index)\n length += 1 + len\n if (defined(obj.bytes)) {\n var len = enc[0].encodingLength(obj.bytes)\n length += 1 + len\n }\n if (defined(obj.hash)) {\n var len = enc[1].encodingLength(obj.hash)\n length += 1 + len\n }\n if (defined(obj.nodes)) {\n var len = enc[0].encodingLength(obj.nodes)\n length += 1 + len\n }\n return length\n }\n\n function encode (obj, buf, offset) {\n if (!offset) offset = 0\n if (!buf) buf = Buffer.allocUnsafe(encodingLength(obj))\n var oldOffset = offset\n if (!defined(obj.index)) throw new Error(\"index is required\")\n buf[offset++] = 8\n enc[0].encode(obj.index, buf, offset)\n offset += enc[0].encode.bytes\n if (defined(obj.bytes)) {\n buf[offset++] = 16\n enc[0].encode(obj.bytes, buf, offset)\n offset += enc[0].encode.bytes\n }\n if (defined(obj.hash)) {\n buf[offset++] = 24\n enc[1].encode(obj.hash, buf, offset)\n offset += enc[1].encode.bytes\n }\n if (defined(obj.nodes)) {\n buf[offset++] = 32\n enc[0].encode(obj.nodes, buf, offset)\n offset += enc[0].encode.bytes\n }\n encode.bytes = offset - oldOffset\n return buf\n }\n\n function decode (buf, offset, end) {\n if (!offset) offset = 0\n if (!end) end = buf.length\n if (!(end <= buf.length && offset <= buf.length)) throw new Error(\"Decoded message is not valid\")\n var oldOffset = offset\n var obj = {\n index: 0,\n bytes: 0,\n hash: false,\n nodes: 0\n }\n var found0 = false\n while (true) {\n if (end <= offset) {\n if (!found0) throw new Error(\"Decoded message is not valid\")\n decode.bytes = offset - oldOffset\n return obj\n }\n var prefix = varint.decode(buf, offset)\n offset += varint.decode.bytes\n var tag = prefix >> 3\n switch (tag) {\n case 1:\n obj.index = enc[0].decode(buf, offset)\n offset += enc[0].decode.bytes\n found0 = true\n break\n case 2:\n obj.bytes = enc[0].decode(buf, offset)\n offset += enc[0].decode.bytes\n break\n case 3:\n obj.hash = enc[1].decode(buf, offset)\n offset += enc[1].decode.bytes\n break\n case 4:\n obj.nodes = enc[0].decode(buf, offset)\n offset += enc[0].decode.bytes\n break\n default:\n offset = skip(prefix & 7, buf, offset)\n }\n }\n }\n}\n\nfunction defineCancel () {\n var enc = [\n encodings.varint,\n encodings.bool\n ]\n\n Cancel.encodingLength = encodingLength\n Cancel.encode = encode\n Cancel.decode = decode\n\n function encodingLength (obj) {\n var length = 0\n if (!defined(obj.index)) throw new Error(\"index is required\")\n var len = enc[0].encodingLength(obj.index)\n length += 1 + len\n if (defined(obj.bytes)) {\n var len = enc[0].encodingLength(obj.bytes)\n length += 1 + len\n }\n if (defined(obj.hash)) {\n var len = enc[1].encodingLength(obj.hash)\n length += 1 + len\n }\n return length\n }\n\n function encode (obj, buf, offset) {\n if (!offset) offset = 0\n if (!buf) buf = Buffer.allocUnsafe(encodingLength(obj))\n var oldOffset = offset\n if (!defined(obj.index)) throw new Error(\"index is required\")\n buf[offset++] = 8\n enc[0].encode(obj.index, buf, offset)\n offset += enc[0].encode.bytes\n if (defined(obj.bytes)) {\n buf[offset++] = 16\n enc[0].encode(obj.bytes, buf, offset)\n offset += enc[0].encode.bytes\n }\n if (defined(obj.hash)) {\n buf[offset++] = 24\n enc[1].encode(obj.hash, buf, offset)\n offset += enc[1].encode.bytes\n }\n encode.bytes = offset - oldOffset\n return buf\n }\n\n function decode (buf, offset, end) {\n if (!offset) offset = 0\n if (!end) end = buf.length\n if (!(end <= buf.length && offset <= buf.length)) throw new Error(\"Decoded message is not valid\")\n var oldOffset = offset\n var obj = {\n index: 0,\n bytes: 0,\n hash: false\n }\n var found0 = false\n while (true) {\n if (end <= offset) {\n if (!found0) throw new Error(\"Decoded message is not valid\")\n decode.bytes = offset - oldOffset\n return obj\n }\n var prefix = varint.decode(buf, offset)\n offset += varint.decode.bytes\n var tag = prefix >> 3\n switch (tag) {\n case 1:\n obj.index = enc[0].decode(buf, offset)\n offset += enc[0].decode.bytes\n found0 = true\n break\n case 2:\n obj.bytes = enc[0].decode(buf, offset)\n offset += enc[0].decode.bytes\n break\n case 3:\n obj.hash = enc[1].decode(buf, offset)\n offset += enc[1].decode.bytes\n break\n default:\n offset = skip(prefix & 7, buf, offset)\n }\n }\n }\n}\n\nfunction defineData () {\n var Node = Data.Node = {\n buffer: true,\n encodingLength: null,\n encode: null,\n decode: null\n }\n\n defineNode()\n\n function defineNode () {\n var enc = [\n encodings.varint,\n encodings.bytes\n ]\n\n Node.encodingLength = encodingLength\n Node.encode = encode\n Node.decode = decode\n\n function encodingLength (obj) {\n var length = 0\n if (!defined(obj.index)) throw new Error(\"index is required\")\n var len = enc[0].encodingLength(obj.index)\n length += 1 + len\n if (!defined(obj.hash)) throw new Error(\"hash is required\")\n var len = enc[1].encodingLength(obj.hash)\n length += 1 + len\n if (!defined(obj.size)) throw new Error(\"size is required\")\n var len = enc[0].encodingLength(obj.size)\n length += 1 + len\n return length\n }\n\n function encode (obj, buf, offset) {\n if (!offset) offset = 0\n if (!buf) buf = Buffer.allocUnsafe(encodingLength(obj))\n var oldOffset = offset\n if (!defined(obj.index)) throw new Error(\"index is required\")\n buf[offset++] = 8\n enc[0].encode(obj.index, buf, offset)\n offset += enc[0].encode.bytes\n if (!defined(obj.hash)) throw new Error(\"hash is required\")\n buf[offset++] = 18\n enc[1].encode(obj.hash, buf, offset)\n offset += enc[1].encode.bytes\n if (!defined(obj.size)) throw new Error(\"size is required\")\n buf[offset++] = 24\n enc[0].encode(obj.size, buf, offset)\n offset += enc[0].encode.bytes\n encode.bytes = offset - oldOffset\n return buf\n }\n\n function decode (buf, offset, end) {\n if (!offset) offset = 0\n if (!end) end = buf.length\n if (!(end <= buf.length && offset <= buf.length)) throw new Error(\"Decoded message is not valid\")\n var oldOffset = offset\n var obj = {\n index: 0,\n hash: null,\n size: 0\n }\n var found0 = false\n var found1 = false\n var found2 = false\n while (true) {\n if (end <= offset) {\n if (!found0 || !found1 || !found2) throw new Error(\"Decoded message is not valid\")\n decode.bytes = offset - oldOffset\n return obj\n }\n var prefix = varint.decode(buf, offset)\n offset += varint.decode.bytes\n var tag = prefix >> 3\n switch (tag) {\n case 1:\n obj.index = enc[0].decode(buf, offset)\n offset += enc[0].decode.bytes\n found0 = true\n break\n case 2:\n obj.hash = enc[1].decode(buf, offset)\n offset += enc[1].decode.bytes\n found1 = true\n break\n case 3:\n obj.size = enc[0].decode(buf, offset)\n offset += enc[0].decode.bytes\n found2 = true\n break\n default:\n offset = skip(prefix & 7, buf, offset)\n }\n }\n }\n }\n\n var enc = [\n encodings.varint,\n encodings.bytes,\n Node\n ]\n\n Data.encodingLength = encodingLength\n Data.encode = encode\n Data.decode = decode\n\n function encodingLength (obj) {\n var length = 0\n if (!defined(obj.index)) throw new Error(\"index is required\")\n var len = enc[0].encodingLength(obj.index)\n length += 1 + len\n if (defined(obj.value)) {\n var len = enc[1].encodingLength(obj.value)\n length += 1 + len\n }\n if (defined(obj.nodes)) {\n for (var i = 0; i < obj.nodes.length; i++) {\n if (!defined(obj.nodes[i])) continue\n var len = enc[2].encodingLength(obj.nodes[i])\n length += varint.encodingLength(len)\n length += 1 + len\n }\n }\n if (defined(obj.signature)) {\n var len = enc[1].encodingLength(obj.signature)\n length += 1 + len\n }\n return length\n }\n\n function encode (obj, buf, offset) {\n if (!offset) offset = 0\n if (!buf) buf = Buffer.allocUnsafe(encodingLength(obj))\n var oldOffset = offset\n if (!defined(obj.index)) throw new Error(\"index is required\")\n buf[offset++] = 8\n enc[0].encode(obj.index, buf, offset)\n offset += enc[0].encode.bytes\n if (defined(obj.value)) {\n buf[offset++] = 18\n enc[1].encode(obj.value, buf, offset)\n offset += enc[1].encode.bytes\n }\n if (defined(obj.nodes)) {\n for (var i = 0; i < obj.nodes.length; i++) {\n if (!defined(obj.nodes[i])) continue\n buf[offset++] = 26\n varint.encode(enc[2].encodingLength(obj.nodes[i]), buf, offset)\n offset += varint.encode.bytes\n enc[2].encode(obj.nodes[i], buf, offset)\n offset += enc[2].encode.bytes\n }\n }\n if (defined(obj.signature)) {\n buf[offset++] = 34\n enc[1].encode(obj.signature, buf, offset)\n offset += enc[1].encode.bytes\n }\n encode.bytes = offset - oldOffset\n return buf\n }\n\n function decode (buf, offset, end) {\n if (!offset) offset = 0\n if (!end) end = buf.length\n if (!(end <= buf.length && offset <= buf.length)) throw new Error(\"Decoded message is not valid\")\n var oldOffset = offset\n var obj = {\n index: 0,\n value: null,\n nodes: [],\n signature: null\n }\n var found0 = false\n while (true) {\n if (end <= offset) {\n if (!found0) throw new Error(\"Decoded message is not valid\")\n decode.bytes = offset - oldOffset\n return obj\n }\n var prefix = varint.decode(buf, offset)\n offset += varint.decode.bytes\n var tag = prefix >> 3\n switch (tag) {\n case 1:\n obj.index = enc[0].decode(buf, offset)\n offset += enc[0].decode.bytes\n found0 = true\n break\n case 2:\n obj.value = enc[1].decode(buf, offset)\n offset += enc[1].decode.bytes\n break\n case 3:\n var len = varint.decode(buf, offset)\n offset += varint.decode.bytes\n obj.nodes.push(enc[2].decode(buf, offset, offset + len))\n offset += enc[2].decode.bytes\n break\n case 4:\n obj.signature = enc[1].decode(buf, offset)\n offset += enc[1].decode.bytes\n break\n default:\n offset = skip(prefix & 7, buf, offset)\n }\n }\n }\n}\n\nfunction defineClose () {\n var enc = [\n encodings.bytes\n ]\n\n Close.encodingLength = encodingLength\n Close.encode = encode\n Close.decode = decode\n\n function encodingLength (obj) {\n var length = 0\n if (defined(obj.discoveryKey)) {\n var len = enc[0].encodingLength(obj.discoveryKey)\n length += 1 + len\n }\n return length\n }\n\n function encode (obj, buf, offset) {\n if (!offset) offset = 0\n if (!buf) buf = Buffer.allocUnsafe(encodingLength(obj))\n var oldOffset = offset\n if (defined(obj.discoveryKey)) {\n buf[offset++] = 10\n enc[0].encode(obj.discoveryKey, buf, offset)\n offset += enc[0].encode.bytes\n }\n encode.bytes = offset - oldOffset\n return buf\n }\n\n function decode (buf, offset, end) {\n if (!offset) offset = 0\n if (!end) end = buf.length\n if (!(end <= buf.length && offset <= buf.length)) throw new Error(\"Decoded message is not valid\")\n var oldOffset = offset\n var obj = {\n discoveryKey: null\n }\n while (true) {\n if (end <= offset) {\n decode.bytes = offset - oldOffset\n return obj\n }\n var prefix = varint.decode(buf, offset)\n offset += varint.decode.bytes\n var tag = prefix >> 3\n switch (tag) {\n case 1:\n obj.discoveryKey = enc[0].decode(buf, offset)\n offset += enc[0].decode.bytes\n break\n default:\n offset = skip(prefix & 7, buf, offset)\n }\n }\n }\n}\n\nfunction defined (val) {\n return val !== null && val !== undefined && (typeof val !== 'number' || !isNaN(val))\n}\n", "const sodium = require('sodium-native')\n\nmodule.exports = class XORNative {\n constructor (nonce, key) {\n this.handle = Buffer.alloc(sodium.crypto_stream_xor_STATEBYTES)\n this.nonce = nonce\n this.key = key\n sodium.crypto_stream_xor_init(this.handle, this.nonce, this.key)\n }\n\n update (out, message) {\n sodium.crypto_stream_xor_update(this.handle, out, message)\n }\n\n final () {\n sodium.crypto_stream_xor_final(this.handle)\n }\n}\n", "const XSalsa20 = require('xsalsa20-universal')\nconst crypto = require('hypercore-crypto')\n\nmodule.exports = class XOR {\n constructor (nonces, split) {\n this.rnonce = nonces.rnonce\n this.tnonce = nonces.tnonce\n this.rx = new XSalsa20(this.rnonce, split.rx.slice(0, 32))\n this.tx = new XSalsa20(this.tnonce, split.tx.slice(0, 32))\n }\n\n encrypt (data) {\n this.tx.update(data, data)\n return data\n }\n\n decrypt (data) {\n this.rx.update(data, data)\n return data\n }\n\n destroy () {\n this.tx.final()\n this.rx.final()\n }\n\n static nonce () {\n return crypto.randomBytes(24)\n }\n}\n", "const varint = require('varint')\n\nmodule.exports = class SimpleMessageChannels {\n constructor ({ maxSize = 8 * 1024 * 1024, context = null, onmessage = null, onmissing = null, types = null } = {}) {\n this._message = null\n this._ptr = 0\n this._varint = 0\n this._factor = 1\n this._length = 0\n this._header = 0\n this._state = 0\n this._consumed = 0\n this._maxSize = maxSize\n this._types = types || []\n\n this.receiving = false\n this.destroyed = false\n this.error = null\n this.context = context\n this.onmessage = onmessage\n this.onmissing = onmissing\n }\n\n destroy (err) {\n if (err) this.error = err\n this.destroyed = true\n }\n\n recv (data) {\n if (this.receiving === true) throw new Error('Cannot recursively receive data')\n this.receiving = true\n\n let offset = 0\n while (offset < data.length) {\n if (this._state === 2) offset = this._readMessage(data, offset)\n else offset = this._readVarint(data, offset)\n }\n if (this._state === 2 && this._length === 0) {\n this._readMessage(data, offset)\n }\n\n this.receiving = false\n return !this.destroyed\n }\n\n _readMessage (data, offset) {\n const free = data.length - offset\n if (free >= this._length) {\n if (this._message) {\n data.copy(this._message, this._message.length - this._length, offset)\n } else {\n this._message = data.slice(offset, offset + this._length)\n }\n return this._nextState(data, offset += this._length) ? offset : data.length\n }\n\n if (!this._message) this._message = Buffer.allocUnsafe(this._length)\n data.copy(this._message, this._message.length - this._length, offset)\n this._length -= free\n\n return data.length\n }\n\n _readVarint (data, offset) {\n for (; offset < data.length; offset++) {\n this._varint += (data[offset] & 127) * this._factor\n this._consumed++\n if (data[offset] < 128) return this._nextState(data, ++offset) ? offset : data.length\n this._factor *= 128\n }\n if (this._consumed >= 8) this.destroy(new Error('Incoming varint is invalid')) // 8 * 7bits is 56 ie max for js\n return data.length\n }\n\n _nextState (data, offset) {\n switch (this._state) {\n case 0:\n this._state = 1\n this._factor = 1\n this._length = this._varint\n this._consumed = this._varint = 0\n if (this._length === 0) this._state = 0\n return true\n\n case 1:\n this._state = 2\n this._factor = 1\n this._header = this._varint\n this._length -= this._consumed\n this._consumed = this._varint = 0\n if (this._length < 0 || this._length > this._maxSize) {\n this.destroy(new Error('Incoming message is larger than max size'))\n return false\n }\n if (this.onmissing) {\n const extra = data.length - offset\n if (this._length > extra) this.onmissing(this._length - extra, this.context)\n }\n return true\n\n case 2:\n this._state = 0\n this._onmessage(this._header >> 4, this._header & 0b1111, this._message, data, offset)\n this._message = null\n return !this.destroyed\n\n default:\n return false\n }\n }\n\n _onmessage (channel, type, message, data, offset) {\n if (type >= this._types.length) {\n if (this.onmessage === null) return\n return this.onmessage(channel, type, message, this.context, data, offset)\n }\n\n let m = null\n const { onmessage, encoding, context } = this._types[type]\n\n try {\n m = encoding.decode(message)\n } catch (err) {\n this.destroy(err)\n return\n }\n\n onmessage(channel, m, context, data, offset)\n }\n\n send (channel, type, message) {\n const header = channel << 4 | type\n const length = this._encodingLength(type, message) + varint.encodingLength(header)\n const payload = Buffer.allocUnsafe(varint.encodingLength(length) + length)\n\n varint.encode(length, payload, 0)\n const offset = varint.encode.bytes\n varint.encode(header, payload, offset)\n this._encode(type, message, payload, offset + varint.encode.bytes)\n\n return payload\n }\n\n sendBatch (messages) {\n let length = 0\n let offset = 0\n\n for (const { type, message } of messages) {\n // 16 is >= the max size of the varints\n length += 16 + this._encodingLength(type, message)\n }\n\n const payload = Buffer.allocUnsafe(length)\n\n for (const { channel, type, message } of messages) {\n const header = channel << 4 | type\n const length = this._encodingLength(type, message) + varint.encodingLength(header)\n varint.encode(length, payload, offset)\n offset += varint.encode.bytes\n varint.encode(header, payload, offset)\n offset += varint.encode.bytes\n offset += this._encode(type, message, payload, offset)\n }\n\n return payload.slice(0, offset)\n }\n\n _encodingLength (type, message) {\n if (type >= this._types.length) return message.length\n return this._types[type].encoding.encodingLength(message)\n }\n\n _encode (type, message, buf, offset) {\n if (type >= this._types.length) {\n message.copy(buf, offset)\n return message.length\n }\n\n const enc = this._types[type].encoding\n enc.encode(message, buf, offset)\n return enc.encode.bytes\n }\n}\n", "const Handshake = require('./lib/handshake')\nconst messages = require('./messages')\nconst XOR = require('./lib/xor')\nconst SMC = require('simple-message-channels')\nconst crypto = require('hypercore-crypto')\nconst varint = require('varint')\n\nmodule.exports = class SimpleProtocol {\n constructor (initiator, handlers) {\n const payload = { nonce: XOR.nonce() }\n\n this.handlers = handlers || {}\n this.remotePayload = null\n this.remotePublicKey = null\n this.publicKey = null\n this.handshakeHash = null\n this.destroyed = false\n\n this._initiator = initiator\n this._payload = payload\n this._pending = []\n this._handshake = null\n this._split = null\n this._encryption = null\n this._noise = !(handlers.encrypted === false && handlers.noise === false)\n this._buffering = null\n this._handshaking = false\n\n this._messages = new SMC({\n onmessage,\n onmissing,\n context: this,\n types: [\n { context: this, onmessage: onopen, encoding: messages.Open },\n { context: this, onmessage: onoptions, encoding: messages.Options },\n { context: this, onmessage: onstatus, encoding: messages.Status },\n { context: this, onmessage: onhave, encoding: messages.Have },\n { context: this, onmessage: onunhave, encoding: messages.Unhave },\n { context: this, onmessage: onwant, encoding: messages.Want },\n { context: this, onmessage: onunwant, encoding: messages.Unwant },\n { context: this, onmessage: onrequest, encoding: messages.Request },\n { context: this, onmessage: oncancel, encoding: messages.Cancel },\n { context: this, onmessage: ondata, encoding: messages.Data },\n { context: this, onmessage: onclose, encoding: messages.Close }\n ]\n })\n\n if (handlers.encrypted !== false || handlers.noise !== false) {\n this._handshaking = true\n if (typeof this.handlers.keyPair !== 'function') {\n this._onkeypair(null, this.handlers.keyPair || null)\n } else {\n this._buffering = []\n this.handlers.keyPair(this._onkeypair.bind(this))\n }\n }\n }\n\n _onkeypair (err, keyPair) {\n if (err) return this.destroy(err)\n if (this._handshake !== null) return\n\n this.handlers.keyPair = keyPair\n const handshake = new Handshake(this._initiator, messages.NoisePayload.encode(this._payload), this.handlers, this._onhandshake.bind(this))\n\n this.publicKey = handshake.keyPair.publicKey\n this._handshake = handshake\n\n if (this._buffering) {\n while (this._buffering.length) this._recv(this._buffering.shift())\n }\n\n this._buffering = null\n }\n\n open (ch, message) {\n return this._send(ch, 0, message)\n }\n\n options (ch, message) {\n return this._send(ch, 1, message)\n }\n\n status (ch, message) {\n return this._send(ch, 2, message)\n }\n\n have (ch, message) {\n return this._send(ch, 3, message)\n }\n\n unhave (ch, message) {\n return this._send(ch, 4, message)\n }\n\n want (ch, message) {\n return this._send(ch, 5, message)\n }\n\n unwant (ch, message) {\n return this._send(ch, 6, message)\n }\n\n request (ch, message) {\n return this._send(ch, 7, message)\n }\n\n cancel (ch, message) {\n return this._send(ch, 8, message)\n }\n\n data (ch, message) {\n return this._send(ch, 9, message)\n }\n\n close (ch, message) {\n return this._send(ch, 10, message || {})\n }\n\n extension (ch, id, message) {\n const buf = Buffer.allocUnsafe(varint.encodingLength(id) + message.length)\n\n varint.encode(id, buf, 0)\n message.copy(buf, varint.encode.bytes)\n\n return this._send(ch, 15, buf)\n }\n\n ping () {\n if (this._handshaking || this._pending.length) return\n\n let ping = Buffer.from([0])\n if (this._encryption !== null) {\n ping = this._encryption.encrypt(ping)\n }\n\n return this.handlers.send(ping)\n }\n\n _onhandshake (err, remotePayload, split, overflow, remotePublicKey, handshakeHash) {\n if (err) return this.destroy(new Error('Noise handshake error')) // workaround for https://github.com/emilbayes/noise-protocol/issues/5\n if (!remotePayload) return this.destroy(new Error('Remote did not include a handshake payload'))\n\n this.remotePublicKey = remotePublicKey\n this.handshakeHash = handshakeHash\n\n try {\n remotePayload = messages.NoisePayload.decode(remotePayload)\n } catch (_) {\n return this.destroy(new Error('Could not parse remote payload'))\n }\n\n this._handshake = null\n this._handshaking = false\n this._split = split\n this._encryption = this.handlers.encrypted === false\n ? null\n : new XOR({ rnonce: remotePayload.nonce, tnonce: this._payload.nonce }, split)\n\n this.remotePayload = remotePayload\n\n if (this.handlers.onhandshake) this.handlers.onhandshake()\n if (this.destroyed) return\n\n if (overflow) this.recv(overflow)\n while (this._pending.length && !this.destroyed) {\n this._sendNow(...this._pending.shift())\n }\n }\n\n _send (channel, type, message) {\n if (this._handshaking || this._pending.length) {\n this._pending.push([channel, type, message])\n return false\n }\n\n return this._sendNow(channel, type, message)\n }\n\n _sendNow (channel, type, message) {\n if (type === 0 && message.key && !message.capability) {\n message.capability = this.capability(message.key)\n message.key = null\n }\n\n let data = this._messages.send(channel, type, message)\n\n if (this._encryption !== null) {\n data = this._encryption.encrypt(data)\n }\n\n return this.handlers.send(data)\n }\n\n capability (key) {\n return crypto.capability(key, this._split)\n }\n\n remoteCapability (key) {\n return crypto.remoteCapability(key, this._split)\n }\n\n recv (data) {\n if (this._buffering !== null) this._buffering.push(data)\n else this._recv(data)\n }\n\n _recv (data) {\n if (this.destroyed) return\n\n if (this._handshaking) {\n this._handshake.recv(data)\n return\n }\n\n if (this._encryption !== null) {\n data = this._encryption.decrypt(data)\n }\n\n if (!this._messages.recv(data)) {\n this.destroy(this._messages.error)\n }\n }\n\n destroy (err) {\n if (this.destroyed) return\n this.destroyed = true\n if (this._handshake) this._handshake.destroy()\n if (this._encryption) this._encryption.destroy()\n if (this.handlers.destroy) this.handlers.destroy(err)\n }\n\n static keyPair (seed) {\n return Handshake.keyPair(seed)\n }\n}\n\nfunction onopen (ch, message, self) {\n if (self.handlers.onopen) self.handlers.onopen(ch, message)\n}\n\nfunction onoptions (ch, message, self) {\n if (self.handlers.onoptions) self.handlers.onoptions(ch, message)\n}\n\nfunction onstatus (ch, message, self) {\n if (self.handlers.onstatus) self.handlers.onstatus(ch, message)\n}\n\nfunction onhave (ch, message, self) {\n if (self.handlers.onhave) self.handlers.onhave(ch, message)\n}\n\nfunction onunhave (ch, message, self) {\n if (self.handlers.onunhave) self.handlers.onunhave(ch, message)\n}\n\nfunction onwant (ch, message, self) {\n if (self.handlers.onwant) self.handlers.onwant(ch, message)\n}\n\nfunction onunwant (ch, message, self) {\n if (self.handlers.onunwant) self.handlers.onunwant(ch, message)\n}\n\nfunction onrequest (ch, message, self) {\n if (self.handlers.onrequest) self.handlers.onrequest(ch, message)\n}\n\nfunction oncancel (ch, message, self) {\n if (self.handlers.oncancel) self.handlers.oncancel(ch, message)\n}\n\nfunction ondata (ch, message, self) {\n if (self.handlers.ondata) self.handlers.ondata(ch, message)\n}\n\nfunction onclose (ch, message, self) {\n if (self.handlers.onclose) self.handlers.onclose(ch, message)\n}\n\nfunction onmessage (ch, type, message, self) {\n if (type !== 15) return\n const id = varint.decode(message)\n const m = message.slice(varint.decode.bytes)\n if (self.handlers.onextension) self.handlers.onextension(ch, id, m)\n}\n\nfunction onmissing (bytes, self) {\n if (self.handlers.onmissing) self.handlers.onmissing(bytes)\n}\n", "module.exports = Timer\n\nfunction Timer (ms, fn, ctx) {\n if (!(this instanceof Timer)) return new Timer(ms, fn, ctx)\n this.ms = ms\n this.ontimeout = fn\n this.context = ctx || null\n this.called = false\n this._timeout = setTimeout(call, ms, this)\n this._timeout.unref()\n}\n\nTimer.prototype.refresh = function () {\n if (this.called || this.ontimeout === null) return\n this._timeout.refresh()\n}\n\nTimer.prototype.destroy = function () {\n this.ontimeout = null\n clearTimeout(this._timeout)\n}\n\nfunction call (self) {\n self.called = true\n self.ontimeout.call(self.context)\n}\n", "module.exports = Timeout\n\nfunction Timeout (ms, fn, ctx) {\n if (!(this instanceof Timeout)) return new Timeout(ms, fn, ctx)\n this.ms = ms\n this.ontimeout = fn\n this.context = ctx || null\n this.called = false\n this._timeout = setTimeout(call, ms, this)\n}\n\nTimeout.prototype.refresh = function () {\n if (this.called || this.ontimeout === null) return\n clearTimeout(this._timeout)\n this._timeout = setTimeout(call, this.ms, this)\n}\n\nTimeout.prototype.destroy = function () {\n this.ontimeout = null\n clearTimeout(this._timeout)\n}\n\nfunction call (self) {\n self.called = true\n self.ontimeout.call(self.context)\n}\n", "var timers = require('timers')\n\nvar enroll = timers.enroll || noop\nvar active = timers._unrefActive || timers.active || noop\nvar unenroll = timers.unenroll || noop\n\nmodule.exports = Timeout\n\nfunction Timeout (ms, fn, ctx) {\n if (!(this instanceof Timeout)) return new Timeout(ms, fn, ctx)\n this.ms = ms\n this.ontimeout = fn\n this.context = ctx || null\n this.called = false\n enroll(this, ms)\n active(this)\n}\n\nTimeout.prototype._onTimeout = function () {\n this.called = true\n this.ontimeout.call(this.context)\n}\n\nTimeout.prototype.refresh = function () {\n if (this.called || this.ontimeout === null) return\n active(this)\n}\n\nTimeout.prototype.destroy = function () {\n this.ontimeout = null\n unenroll(this)\n}\n\nfunction noop () {}\n", "const to = setTimeout(function () {}, 1000)\nclearTimeout(to)\n\nmodule.exports = to.refresh\n ? require('./refresh')\n : process.versions.electron ? require('./browser') : require('./timers')\n", "const codecs = require('codecs')\n\nclass AbstractExtension {\n constructor (local, name, handlers = {}) {\n this.id = 0\n this.name = name\n this.encoding = codecs(handlers.encoding || 'binary')\n this.handlers = handlers\n this.local = local\n }\n\n encode (message) {\n return this.encoding.encode(message)\n }\n\n remoteSupports () {\n return !!(this.local && this.local.map && this.local.map[this.id] === this)\n }\n\n onmessage (buf, context) {\n if (!this.handlers.onmessage) return\n\n let message\n try {\n message = this.encoding.decode(buf)\n } catch (err) {\n if (this.handlers.onerror) this.handlers.onerror(err, context)\n return\n }\n\n this.handlers.onmessage(message, context)\n }\n\n get destroyed () {\n return this.local === null\n }\n\n destroy () {\n if (this.local === null) return\n this.local._remove(this)\n this.local = null\n }\n\n static createLocal (handlers = null) {\n return new Local(handlers, this)\n }\n}\n\nclass Remote {\n constructor (local) {\n this.local = local\n this.names = null\n this.map = null\n this.changes = 0\n }\n\n update (names) {\n this.names = names\n this.changes = 0\n }\n\n onmessage (id, message, context = null) {\n if (this.changes !== this.local.changes) {\n this.map = this.names ? match(this.local.messages, this.names) : null\n this.changes = this.local.changes\n }\n const m = this.map && this.map[id]\n if (m) m.onmessage(message, context)\n }\n}\n\nclass Local {\n constructor (handlers = null, M) {\n this.messages = []\n this.handlers = handlers\n this.Extension = M\n this.changes = 1\n this.exclusive = true\n }\n\n get length () {\n return this.messages.length\n }\n\n [Symbol.iterator] () {\n return this.messages[Symbol.iterator]()\n }\n\n get (name) {\n // technically we can bisect here, but yolo\n for (const m of this.messages) {\n if (m.name === name) return m\n }\n return null\n }\n\n add (name, handlers) {\n let m\n\n if (typeof handlers !== 'function') {\n m = new this.Extension(this, name, handlers)\n } else {\n m = new this.Extension(this, name, {})\n m.handlers = handlers(m) || {}\n m.encoding = codecs(m.handlers.encoding || 'binary')\n }\n\n this.changes++\n this.messages.push(m)\n this.messages.sort(sortMessages)\n for (let i = 0; i < this.messages.length; i++) {\n this.messages[i].id = i\n }\n\n if (this.exclusive) {\n if ((m.id > 0 && this.messages[m.id - 1].name === m.name) || (m.id < this.messages.length - 1 && this.messages[m.id + 1].name === m.name)) {\n this._remove(m)\n throw new Error('Cannot add multiple messages with the same name')\n }\n }\n\n if (this.handlers && this.handlers.onextensionupdate) this.handlers.onextensionupdate()\n\n return m\n }\n\n remote () {\n return new Remote(this)\n }\n\n _remove (m) {\n this.changes++\n this.messages.splice(m.id, 1)\n m.id = -1\n if (this.handlers && this.handlers.onextensionupdate) this.handlers.onextensionupdate()\n }\n\n names () {\n const names = new Array(this.messages.length)\n for (let i = 0; i < names.length; i++) {\n names[i] = this.messages[i].name\n }\n return names\n }\n}\n\nfunction sortMessages (a, b) {\n return a.name < b.name ? -1 : a.name > b.name ? 1 : 0\n}\n\nfunction match (local, remote) {\n let i = 0\n let j = 0\n\n const map = new Array(remote.length)\n\n while (i < local.length && j < remote.length) {\n const l = local[i].name\n const r = remote[j]\n\n if (l < r) i++\n else if (l > r) j++\n else map[j++] = local[i]\n }\n\n return map\n}\n\nmodule.exports = AbstractExtension\n", "module.exports = typeof queueMicrotask === 'function' ? queueMicrotask : (fn) => Promise.resolve().then(fn)\n", "module.exports = (typeof process !== 'undefined' && typeof process.nextTick === 'function')\n ? process.nextTick.bind(process)\n : require('./queue-microtask')\n", "module.exports = class FixedFIFO {\n constructor (hwm) {\n if (!(hwm > 0) || ((hwm - 1) & hwm) !== 0) throw new Error('Max size for a FixedFIFO should be a power of two')\n this.buffer = new Array(hwm)\n this.mask = hwm - 1\n this.top = 0\n this.btm = 0\n this.next = null\n }\n\n clear () {\n this.top = this.btm = 0\n this.next = null\n this.buffer.fill(undefined)\n }\n\n push (data) {\n if (this.buffer[this.top] !== undefined) return false\n this.buffer[this.top] = data\n this.top = (this.top + 1) & this.mask\n return true\n }\n\n shift () {\n const last = this.buffer[this.btm]\n if (last === undefined) return undefined\n this.buffer[this.btm] = undefined\n this.btm = (this.btm + 1) & this.mask\n return last\n }\n\n peek () {\n return this.buffer[this.btm]\n }\n\n isEmpty () {\n return this.buffer[this.btm] === undefined\n }\n}\n", "const FixedFIFO = require('./fixed-size')\n\nmodule.exports = class FastFIFO {\n constructor (hwm) {\n this.hwm = hwm || 16\n this.head = new FixedFIFO(this.hwm)\n this.tail = this.head\n this.length = 0\n }\n\n clear () {\n this.head = this.tail\n this.head.clear()\n this.length = 0\n }\n\n push (val) {\n this.length++\n if (!this.head.push(val)) {\n const prev = this.head\n this.head = prev.next = new FixedFIFO(2 * this.head.buffer.length)\n this.head.push(val)\n }\n }\n\n shift () {\n if (this.length !== 0) this.length--\n const val = this.tail.shift()\n if (val === undefined && this.tail.next) {\n const next = this.tail.next\n this.tail.next = null\n this.tail = next\n return this.tail.shift()\n }\n\n return val\n }\n\n peek () {\n const val = this.tail.peek()\n if (val === undefined && this.tail.next) return this.tail.next.peek()\n return val\n }\n\n isEmpty () {\n return this.length === 0\n }\n}\n", "const { EventEmitter } = require('events')\nconst STREAM_DESTROYED = new Error('Stream was destroyed')\nconst PREMATURE_CLOSE = new Error('Premature close')\n\nconst queueTick = require('queue-tick')\nconst FIFO = require('fast-fifo')\n\n/* eslint-disable no-multi-spaces */\n\n// 27 bits used total (4 from shared, 13 from read, and 10 from write)\nconst MAX = ((1 << 27) - 1)\n\n// Shared state\nconst OPENING = 0b0001\nconst PREDESTROYING = 0b0010\nconst DESTROYING = 0b0100\nconst DESTROYED = 0b1000\n\nconst NOT_OPENING = MAX ^ OPENING\nconst NOT_PREDESTROYING = MAX ^ PREDESTROYING\n\n// Read state (4 bit offset from shared state)\nconst READ_ACTIVE = 0b0000000000001 << 4\nconst READ_UPDATING = 0b0000000000010 << 4\nconst READ_PRIMARY = 0b0000000000100 << 4\nconst READ_QUEUED = 0b0000000001000 << 4\nconst READ_RESUMED = 0b0000000010000 << 4\nconst READ_PIPE_DRAINED = 0b0000000100000 << 4\nconst READ_ENDING = 0b0000001000000 << 4\nconst READ_EMIT_DATA = 0b0000010000000 << 4\nconst READ_EMIT_READABLE = 0b0000100000000 << 4\nconst READ_EMITTED_READABLE = 0b0001000000000 << 4\nconst READ_DONE = 0b0010000000000 << 4\nconst READ_NEXT_TICK = 0b0100000000000 << 4\nconst READ_NEEDS_PUSH = 0b1000000000000 << 4\n\n// Combined read state\nconst READ_FLOWING = READ_RESUMED | READ_PIPE_DRAINED\nconst READ_ACTIVE_AND_NEEDS_PUSH = READ_ACTIVE | READ_NEEDS_PUSH\nconst READ_PRIMARY_AND_ACTIVE = READ_PRIMARY | READ_ACTIVE\nconst READ_EMIT_READABLE_AND_QUEUED = READ_EMIT_READABLE | READ_QUEUED\n\nconst READ_NOT_ACTIVE = MAX ^ READ_ACTIVE\nconst READ_NON_PRIMARY = MAX ^ READ_PRIMARY\nconst READ_NON_PRIMARY_AND_PUSHED = MAX ^ (READ_PRIMARY | READ_NEEDS_PUSH)\nconst READ_PUSHED = MAX ^ READ_NEEDS_PUSH\nconst READ_PAUSED = MAX ^ READ_RESUMED\nconst READ_NOT_QUEUED = MAX ^ (READ_QUEUED | READ_EMITTED_READABLE)\nconst READ_NOT_ENDING = MAX ^ READ_ENDING\nconst READ_PIPE_NOT_DRAINED = MAX ^ READ_FLOWING\nconst READ_NOT_NEXT_TICK = MAX ^ READ_NEXT_TICK\nconst READ_NOT_UPDATING = MAX ^ READ_UPDATING\n\n// Write state (17 bit offset, 4 bit offset from shared state and 13 from read state)\nconst WRITE_ACTIVE = 0b0000000001 << 17\nconst WRITE_UPDATING = 0b0000000010 << 17\nconst WRITE_PRIMARY = 0b0000000100 << 17\nconst WRITE_QUEUED = 0b0000001000 << 17\nconst WRITE_UNDRAINED = 0b0000010000 << 17\nconst WRITE_DONE = 0b0000100000 << 17\nconst WRITE_EMIT_DRAIN = 0b0001000000 << 17\nconst WRITE_NEXT_TICK = 0b0010000000 << 17\nconst WRITE_WRITING = 0b0100000000 << 17\nconst WRITE_FINISHING = 0b1000000000 << 17\n\nconst WRITE_NOT_ACTIVE = MAX ^ (WRITE_ACTIVE | WRITE_WRITING)\nconst WRITE_NON_PRIMARY = MAX ^ WRITE_PRIMARY\nconst WRITE_NOT_FINISHING = MAX ^ WRITE_FINISHING\nconst WRITE_DRAINED = MAX ^ WRITE_UNDRAINED\nconst WRITE_NOT_QUEUED = MAX ^ WRITE_QUEUED\nconst WRITE_NOT_NEXT_TICK = MAX ^ WRITE_NEXT_TICK\nconst WRITE_NOT_UPDATING = MAX ^ WRITE_UPDATING\n\n// Combined shared state\nconst ACTIVE = READ_ACTIVE | WRITE_ACTIVE\nconst NOT_ACTIVE = MAX ^ ACTIVE\nconst DONE = READ_DONE | WRITE_DONE\nconst DESTROY_STATUS = DESTROYING | DESTROYED | PREDESTROYING\nconst OPEN_STATUS = DESTROY_STATUS | OPENING\nconst AUTO_DESTROY = DESTROY_STATUS | DONE\nconst NON_PRIMARY = WRITE_NON_PRIMARY & READ_NON_PRIMARY\nconst ACTIVE_OR_TICKING = WRITE_NEXT_TICK | READ_NEXT_TICK\nconst TICKING = ACTIVE_OR_TICKING & NOT_ACTIVE\nconst IS_OPENING = OPEN_STATUS | TICKING\n\n// Combined shared state and read state\nconst READ_PRIMARY_STATUS = OPEN_STATUS | READ_ENDING | READ_DONE\nconst READ_STATUS = OPEN_STATUS | READ_DONE | READ_QUEUED\nconst READ_ENDING_STATUS = OPEN_STATUS | READ_ENDING | READ_QUEUED\nconst READ_READABLE_STATUS = OPEN_STATUS | READ_EMIT_READABLE | READ_QUEUED | READ_EMITTED_READABLE\nconst SHOULD_NOT_READ = OPEN_STATUS | READ_ACTIVE | READ_ENDING | READ_DONE | READ_NEEDS_PUSH\nconst READ_BACKPRESSURE_STATUS = DESTROY_STATUS | READ_ENDING | READ_DONE\nconst READ_UPDATE_SYNC_STATUS = READ_UPDATING | OPEN_STATUS | READ_NEXT_TICK | READ_PRIMARY\n\n// Combined write state\nconst WRITE_PRIMARY_STATUS = OPEN_STATUS | WRITE_FINISHING | WRITE_DONE\nconst WRITE_QUEUED_AND_UNDRAINED = WRITE_QUEUED | WRITE_UNDRAINED\nconst WRITE_QUEUED_AND_ACTIVE = WRITE_QUEUED | WRITE_ACTIVE\nconst WRITE_DRAIN_STATUS = WRITE_QUEUED | WRITE_UNDRAINED | OPEN_STATUS | WRITE_ACTIVE\nconst WRITE_STATUS = OPEN_STATUS | WRITE_ACTIVE | WRITE_QUEUED\nconst WRITE_PRIMARY_AND_ACTIVE = WRITE_PRIMARY | WRITE_ACTIVE\nconst WRITE_ACTIVE_AND_WRITING = WRITE_ACTIVE | WRITE_WRITING\nconst WRITE_FINISHING_STATUS = OPEN_STATUS | WRITE_FINISHING | WRITE_QUEUED_AND_ACTIVE | WRITE_DONE\nconst WRITE_BACKPRESSURE_STATUS = WRITE_UNDRAINED | DESTROY_STATUS | WRITE_FINISHING | WRITE_DONE\nconst WRITE_UPDATE_SYNC_STATUS = WRITE_UPDATING | OPEN_STATUS | WRITE_NEXT_TICK | WRITE_PRIMARY\n\nconst asyncIterator = Symbol.asyncIterator || Symbol('asyncIterator')\n\nclass WritableState {\n constructor (stream, { highWaterMark = 16384, map = null, mapWritable, byteLength, byteLengthWritable } = {}) {\n this.stream = stream\n this.queue = new FIFO()\n this.highWaterMark = highWaterMark\n this.buffered = 0\n this.error = null\n this.pipeline = null\n this.drains = null // if we add more seldomly used helpers we might them into a subobject so its a single ptr\n this.byteLength = byteLengthWritable || byteLength || defaultByteLength\n this.map = mapWritable || map\n this.afterWrite = afterWrite.bind(this)\n this.afterUpdateNextTick = updateWriteNT.bind(this)\n }\n\n get ended () {\n return (this.stream._duplexState & WRITE_DONE) !== 0\n }\n\n push (data) {\n if (this.map !== null) data = this.map(data)\n\n this.buffered += this.byteLength(data)\n this.queue.push(data)\n\n if (this.buffered < this.highWaterMark) {\n this.stream._duplexState |= WRITE_QUEUED\n return true\n }\n\n this.stream._duplexState |= WRITE_QUEUED_AND_UNDRAINED\n return false\n }\n\n shift () {\n const data = this.queue.shift()\n\n this.buffered -= this.byteLength(data)\n if (this.buffered === 0) this.stream._duplexState &= WRITE_NOT_QUEUED\n\n return data\n }\n\n end (data) {\n if (typeof data === 'function') this.stream.once('finish', data)\n else if (data !== undefined && data !== null) this.push(data)\n this.stream._duplexState = (this.stream._duplexState | WRITE_FINISHING) & WRITE_NON_PRIMARY\n }\n\n autoBatch (data, cb) {\n const buffer = []\n const stream = this.stream\n\n buffer.push(data)\n while ((stream._duplexState & WRITE_STATUS) === WRITE_QUEUED_AND_ACTIVE) {\n buffer.push(stream._writableState.shift())\n }\n\n if ((stream._duplexState & OPEN_STATUS) !== 0) return cb(null)\n stream._writev(buffer, cb)\n }\n\n update () {\n const stream = this.stream\n\n stream._duplexState |= WRITE_UPDATING\n\n do {\n while ((stream._duplexState & WRITE_STATUS) === WRITE_QUEUED) {\n const data = this.shift()\n stream._duplexState |= WRITE_ACTIVE_AND_WRITING\n stream._write(data, this.afterWrite)\n }\n\n if ((stream._duplexState & WRITE_PRIMARY_AND_ACTIVE) === 0) this.updateNonPrimary()\n } while (this.continueUpdate() === true)\n\n stream._duplexState &= WRITE_NOT_UPDATING\n }\n\n updateNonPrimary () {\n const stream = this.stream\n\n if ((stream._duplexState & WRITE_FINISHING_STATUS) === WRITE_FINISHING) {\n stream._duplexState = (stream._duplexState | WRITE_ACTIVE) & WRITE_NOT_FINISHING\n stream._final(afterFinal.bind(this))\n return\n }\n\n if ((stream._duplexState & DESTROY_STATUS) === DESTROYING) {\n if ((stream._duplexState & ACTIVE_OR_TICKING) === 0) {\n stream._duplexState |= ACTIVE\n stream._destroy(afterDestroy.bind(this))\n }\n return\n }\n\n if ((stream._duplexState & IS_OPENING) === OPENING) {\n stream._duplexState = (stream._duplexState | ACTIVE) & NOT_OPENING\n stream._open(afterOpen.bind(this))\n }\n }\n\n continueUpdate () {\n if ((this.stream._duplexState & WRITE_NEXT_TICK) === 0) return false\n this.stream._duplexState &= WRITE_NOT_NEXT_TICK\n return true\n }\n\n updateCallback () {\n if ((this.stream._duplexState & WRITE_UPDATE_SYNC_STATUS) === WRITE_PRIMARY) this.update()\n else this.updateNextTick()\n }\n\n updateNextTick () {\n if ((this.stream._duplexState & WRITE_NEXT_TICK) !== 0) return\n this.stream._duplexState |= WRITE_NEXT_TICK\n if ((this.stream._duplexState & WRITE_UPDATING) === 0) queueTick(this.afterUpdateNextTick)\n }\n}\n\nclass ReadableState {\n constructor (stream, { highWaterMark = 16384, map = null, mapReadable, byteLength, byteLengthReadable } = {}) {\n this.stream = stream\n this.queue = new FIFO()\n this.highWaterMark = highWaterMark\n this.buffered = 0\n this.error = null\n this.pipeline = null\n this.byteLength = byteLengthReadable || byteLength || defaultByteLength\n this.map = mapReadable || map\n this.pipeTo = null\n this.afterRead = afterRead.bind(this)\n this.afterUpdateNextTick = updateReadNT.bind(this)\n }\n\n get ended () {\n return (this.stream._duplexState & READ_DONE) !== 0\n }\n\n pipe (pipeTo, cb) {\n if (this.pipeTo !== null) throw new Error('Can only pipe to one destination')\n if (typeof cb !== 'function') cb = null\n\n this.stream._duplexState |= READ_PIPE_DRAINED\n this.pipeTo = pipeTo\n this.pipeline = new Pipeline(this.stream, pipeTo, cb)\n\n if (cb) this.stream.on('error', noop) // We already error handle this so supress crashes\n\n if (isStreamx(pipeTo)) {\n pipeTo._writableState.pipeline = this.pipeline\n if (cb) pipeTo.on('error', noop) // We already error handle this so supress crashes\n pipeTo.on('finish', this.pipeline.finished.bind(this.pipeline)) // TODO: just call finished from pipeTo itself\n } else {\n const onerror = this.pipeline.done.bind(this.pipeline, pipeTo)\n const onclose = this.pipeline.done.bind(this.pipeline, pipeTo, null) // onclose has a weird bool arg\n pipeTo.on('error', onerror)\n pipeTo.on('close', onclose)\n pipeTo.on('finish', this.pipeline.finished.bind(this.pipeline))\n }\n\n pipeTo.on('drain', afterDrain.bind(this))\n this.stream.emit('piping', pipeTo)\n pipeTo.emit('pipe', this.stream)\n }\n\n push (data) {\n const stream = this.stream\n\n if (data === null) {\n this.highWaterMark = 0\n stream._duplexState = (stream._duplexState | READ_ENDING) & READ_NON_PRIMARY_AND_PUSHED\n return false\n }\n\n if (this.map !== null) data = this.map(data)\n this.buffered += this.byteLength(data)\n this.queue.push(data)\n\n stream._duplexState = (stream._duplexState | READ_QUEUED) & READ_PUSHED\n\n return this.buffered < this.highWaterMark\n }\n\n shift () {\n const data = this.queue.shift()\n\n this.buffered -= this.byteLength(data)\n if (this.buffered === 0) this.stream._duplexState &= READ_NOT_QUEUED\n return data\n }\n\n unshift (data) {\n const pending = [this.map !== null ? this.map(data) : data]\n while (this.buffered > 0) pending.push(this.shift())\n\n for (let i = 0; i < pending.length - 1; i++) {\n const data = pending[i]\n this.buffered += this.byteLength(data)\n this.queue.push(data)\n }\n\n this.push(pending[pending.length - 1])\n }\n\n read () {\n const stream = this.stream\n\n if ((stream._duplexState & READ_STATUS) === READ_QUEUED) {\n const data = this.shift()\n if (this.pipeTo !== null && this.pipeTo.write(data) === false) stream._duplexState &= READ_PIPE_NOT_DRAINED\n if ((stream._duplexState & READ_EMIT_DATA) !== 0) stream.emit('data', data)\n return data\n }\n\n return null\n }\n\n drain () {\n const stream = this.stream\n\n while ((stream._duplexState & READ_STATUS) === READ_QUEUED && (stream._duplexState & READ_FLOWING) !== 0) {\n const data = this.shift()\n if (this.pipeTo !== null && this.pipeTo.write(data) === false) stream._duplexState &= READ_PIPE_NOT_DRAINED\n if ((stream._duplexState & READ_EMIT_DATA) !== 0) stream.emit('data', data)\n }\n }\n\n update () {\n const stream = this.stream\n\n stream._duplexState |= READ_UPDATING\n\n do {\n this.drain()\n\n while (this.buffered < this.highWaterMark && (stream._duplexState & SHOULD_NOT_READ) === 0) {\n stream._duplexState |= READ_ACTIVE_AND_NEEDS_PUSH\n stream._read(this.afterRead)\n this.drain()\n }\n\n if ((stream._duplexState & READ_READABLE_STATUS) === READ_EMIT_READABLE_AND_QUEUED) {\n stream._duplexState |= READ_EMITTED_READABLE\n stream.emit('readable')\n }\n\n if ((stream._duplexState & READ_PRIMARY_AND_ACTIVE) === 0) this.updateNonPrimary()\n } while (this.continueUpdate() === true)\n\n stream._duplexState &= READ_NOT_UPDATING\n }\n\n updateNonPrimary () {\n const stream = this.stream\n\n if ((stream._duplexState & READ_ENDING_STATUS) === READ_ENDING) {\n stream._duplexState = (stream._duplexState | READ_DONE) & READ_NOT_ENDING\n stream.emit('end')\n if ((stream._duplexState & AUTO_DESTROY) === DONE) stream._duplexState |= DESTROYING\n if (this.pipeTo !== null) this.pipeTo.end()\n }\n\n if ((stream._duplexState & DESTROY_STATUS) === DESTROYING) {\n if ((stream._duplexState & ACTIVE_OR_TICKING) === 0) {\n stream._duplexState |= ACTIVE\n stream._destroy(afterDestroy.bind(this))\n }\n return\n }\n\n if ((stream._duplexState & IS_OPENING) === OPENING) {\n stream._duplexState = (stream._duplexState | ACTIVE) & NOT_OPENING\n stream._open(afterOpen.bind(this))\n }\n }\n\n continueUpdate () {\n if ((this.stream._duplexState & READ_NEXT_TICK) === 0) return false\n this.stream._duplexState &= READ_NOT_NEXT_TICK\n return true\n }\n\n updateCallback () {\n if ((this.stream._duplexState & READ_UPDATE_SYNC_STATUS) === READ_PRIMARY) this.update()\n else this.updateNextTick()\n }\n\n updateNextTick () {\n if ((this.stream._duplexState & READ_NEXT_TICK) !== 0) return\n this.stream._duplexState |= READ_NEXT_TICK\n if ((this.stream._duplexState & READ_UPDATING) === 0) queueTick(this.afterUpdateNextTick)\n }\n}\n\nclass TransformState {\n constructor (stream) {\n this.data = null\n this.afterTransform = afterTransform.bind(stream)\n this.afterFinal = null\n }\n}\n\nclass Pipeline {\n constructor (src, dst, cb) {\n this.from = src\n this.to = dst\n this.afterPipe = cb\n this.error = null\n this.pipeToFinished = false\n }\n\n finished () {\n this.pipeToFinished = true\n }\n\n done (stream, err) {\n if (err) this.error = err\n\n if (stream === this.to) {\n this.to = null\n\n if (this.from !== null) {\n if ((this.from._duplexState & READ_DONE) === 0 || !this.pipeToFinished) {\n this.from.destroy(this.error || new Error('Writable stream closed prematurely'))\n }\n return\n }\n }\n\n if (stream === this.from) {\n this.from = null\n\n if (this.to !== null) {\n if ((stream._duplexState & READ_DONE) === 0) {\n this.to.destroy(this.error || new Error('Readable stream closed before ending'))\n }\n return\n }\n }\n\n if (this.afterPipe !== null) this.afterPipe(this.error)\n this.to = this.from = this.afterPipe = null\n }\n}\n\nfunction afterDrain () {\n this.stream._duplexState |= READ_PIPE_DRAINED\n this.updateCallback()\n}\n\nfunction afterFinal (err) {\n const stream = this.stream\n if (err) stream.destroy(err)\n if ((stream._duplexState & DESTROY_STATUS) === 0) {\n stream._duplexState |= WRITE_DONE\n stream.emit('finish')\n }\n if ((stream._duplexState & AUTO_DESTROY) === DONE) {\n stream._duplexState |= DESTROYING\n }\n\n stream._duplexState &= WRITE_NOT_ACTIVE\n\n // no need to wait the extra tick here, so we short circuit that\n if ((stream._duplexState & WRITE_UPDATING) === 0) this.update()\n else this.updateNextTick()\n}\n\nfunction afterDestroy (err) {\n const stream = this.stream\n\n if (!err && this.error !== STREAM_DESTROYED) err = this.error\n if (err) stream.emit('error', err)\n stream._duplexState |= DESTROYED\n stream.emit('close')\n\n const rs = stream._readableState\n const ws = stream._writableState\n\n if (rs !== null && rs.pipeline !== null) rs.pipeline.done(stream, err)\n\n if (ws !== null) {\n while (ws.drains !== null && ws.drains.length > 0) ws.drains.shift().resolve(false)\n if (ws.pipeline !== null) ws.pipeline.done(stream, err)\n }\n}\n\nfunction afterWrite (err) {\n const stream = this.stream\n\n if (err) stream.destroy(err)\n stream._duplexState &= WRITE_NOT_ACTIVE\n\n if (this.drains !== null) tickDrains(this.drains)\n\n if ((stream._duplexState & WRITE_DRAIN_STATUS) === WRITE_UNDRAINED) {\n stream._duplexState &= WRITE_DRAINED\n if ((stream._duplexState & WRITE_EMIT_DRAIN) === WRITE_EMIT_DRAIN) {\n stream.emit('drain')\n }\n }\n\n this.updateCallback()\n}\n\nfunction afterRead (err) {\n if (err) this.stream.destroy(err)\n this.stream._duplexState &= READ_NOT_ACTIVE\n this.updateCallback()\n}\n\nfunction updateReadNT () {\n if ((this.stream._duplexState & READ_UPDATING) === 0) {\n this.stream._duplexState &= READ_NOT_NEXT_TICK\n this.update()\n }\n}\n\nfunction updateWriteNT () {\n if ((this.stream._duplexState & WRITE_UPDATING) === 0) {\n this.stream._duplexState &= WRITE_NOT_NEXT_TICK\n this.update()\n }\n}\n\nfunction tickDrains (drains) {\n for (let i = 0; i < drains.length; i++) {\n // drains.writes are monotonic, so if one is 0 its always the first one\n if (--drains[i].writes === 0) {\n drains.shift().resolve(true)\n i--\n }\n }\n}\n\nfunction afterOpen (err) {\n const stream = this.stream\n\n if (err) stream.destroy(err)\n\n if ((stream._duplexState & DESTROYING) === 0) {\n if ((stream._duplexState & READ_PRIMARY_STATUS) === 0) stream._duplexState |= READ_PRIMARY\n if ((stream._duplexState & WRITE_PRIMARY_STATUS) === 0) stream._duplexState |= WRITE_PRIMARY\n stream.emit('open')\n }\n\n stream._duplexState &= NOT_ACTIVE\n\n if (stream._writableState !== null) {\n stream._writableState.updateCallback()\n }\n\n if (stream._readableState !== null) {\n stream._readableState.updateCallback()\n }\n}\n\nfunction afterTransform (err, data) {\n if (data !== undefined && data !== null) this.push(data)\n this._writableState.afterWrite(err)\n}\n\nfunction newListener (name) {\n if (this._readableState !== null) {\n if (name === 'data') {\n this._duplexState |= (READ_EMIT_DATA | READ_RESUMED)\n this._readableState.updateNextTick()\n }\n if (name === 'readable') {\n this._duplexState |= READ_EMIT_READABLE\n this._readableState.updateNextTick()\n }\n }\n\n if (this._writableState !== null) {\n if (name === 'drain') {\n this._duplexState |= WRITE_EMIT_DRAIN\n this._writableState.updateNextTick()\n }\n }\n}\n\nclass Stream extends EventEmitter {\n constructor (opts) {\n super()\n\n this._duplexState = 0\n this._readableState = null\n this._writableState = null\n\n if (opts) {\n if (opts.open) this._open = opts.open\n if (opts.destroy) this._destroy = opts.destroy\n if (opts.predestroy) this._predestroy = opts.predestroy\n if (opts.signal) {\n opts.signal.addEventListener('abort', abort.bind(this))\n }\n }\n\n this.on('newListener', newListener)\n }\n\n _open (cb) {\n cb(null)\n }\n\n _destroy (cb) {\n cb(null)\n }\n\n _predestroy () {\n // does nothing\n }\n\n get readable () {\n return this._readableState !== null ? true : undefined\n }\n\n get writable () {\n return this._writableState !== null ? true : undefined\n }\n\n get destroyed () {\n return (this._duplexState & DESTROYED) !== 0\n }\n\n get destroying () {\n return (this._duplexState & DESTROY_STATUS) !== 0\n }\n\n destroy (err) {\n if ((this._duplexState & DESTROY_STATUS) === 0) {\n if (!err) err = STREAM_DESTROYED\n this._duplexState = (this._duplexState | DESTROYING) & NON_PRIMARY\n\n if (this._readableState !== null) {\n this._readableState.highWaterMark = 0\n this._readableState.error = err\n }\n if (this._writableState !== null) {\n this._writableState.highWaterMark = 0\n this._writableState.error = err\n }\n\n this._duplexState |= PREDESTROYING\n this._predestroy()\n this._duplexState &= NOT_PREDESTROYING\n\n if (this._readableState !== null) this._readableState.updateNextTick()\n if (this._writableState !== null) this._writableState.updateNextTick()\n }\n }\n}\n\nclass Readable extends Stream {\n constructor (opts) {\n super(opts)\n\n this._duplexState |= OPENING | WRITE_DONE\n this._readableState = new ReadableState(this, opts)\n\n if (opts) {\n if (opts.read) this._read = opts.read\n if (opts.eagerOpen) this._readableState.updateNextTick()\n }\n }\n\n _read (cb) {\n cb(null)\n }\n\n pipe (dest, cb) {\n this._readableState.updateNextTick()\n this._readableState.pipe(dest, cb)\n return dest\n }\n\n read () {\n this._readableState.updateNextTick()\n return this._readableState.read()\n }\n\n push (data) {\n this._readableState.updateNextTick()\n return this._readableState.push(data)\n }\n\n unshift (data) {\n this._readableState.updateNextTick()\n return this._readableState.unshift(data)\n }\n\n resume () {\n this._duplexState |= READ_RESUMED\n this._readableState.updateNextTick()\n return this\n }\n\n pause () {\n this._duplexState &= READ_PAUSED\n return this\n }\n\n static _fromAsyncIterator (ite, opts) {\n let destroy\n\n const rs = new Readable({\n ...opts,\n read (cb) {\n ite.next().then(push).then(cb.bind(null, null)).catch(cb)\n },\n predestroy () {\n destroy = ite.return()\n },\n destroy (cb) {\n if (!destroy) return cb(null)\n destroy.then(cb.bind(null, null)).catch(cb)\n }\n })\n\n return rs\n\n function push (data) {\n if (data.done) rs.push(null)\n else rs.push(data.value)\n }\n }\n\n static from (data, opts) {\n if (isReadStreamx(data)) return data\n if (data[asyncIterator]) return this._fromAsyncIterator(data[asyncIterator](), opts)\n if (!Array.isArray(data)) data = data === undefined ? [] : [data]\n\n let i = 0\n return new Readable({\n ...opts,\n read (cb) {\n this.push(i === data.length ? null : data[i++])\n cb(null)\n }\n })\n }\n\n static isBackpressured (rs) {\n return (rs._duplexState & READ_BACKPRESSURE_STATUS) !== 0 || rs._readableState.buffered >= rs._readableState.highWaterMark\n }\n\n static isPaused (rs) {\n return (rs._duplexState & READ_RESUMED) === 0\n }\n\n [asyncIterator] () {\n const stream = this\n\n let error = null\n let promiseResolve = null\n let promiseReject = null\n\n this.on('error', (err) => { error = err })\n this.on('readable', onreadable)\n this.on('close', onclose)\n\n return {\n [asyncIterator] () {\n return this\n },\n next () {\n return new Promise(function (resolve, reject) {\n promiseResolve = resolve\n promiseReject = reject\n const data = stream.read()\n if (data !== null) ondata(data)\n else if ((stream._duplexState & DESTROYED) !== 0) ondata(null)\n })\n },\n return () {\n return destroy(null)\n },\n throw (err) {\n return destroy(err)\n }\n }\n\n function onreadable () {\n if (promiseResolve !== null) ondata(stream.read())\n }\n\n function onclose () {\n if (promiseResolve !== null) ondata(null)\n }\n\n function ondata (data) {\n if (promiseReject === null) return\n if (error) promiseReject(error)\n else if (data === null && (stream._duplexState & READ_DONE) === 0) promiseReject(STREAM_DESTROYED)\n else promiseResolve({ value: data, done: data === null })\n promiseReject = promiseResolve = null\n }\n\n function destroy (err) {\n stream.destroy(err)\n return new Promise((resolve, reject) => {\n if (stream._duplexState & DESTROYED) return resolve({ value: undefined, done: true })\n stream.once('close', function () {\n if (err) reject(err)\n else resolve({ value: undefined, done: true })\n })\n })\n }\n }\n}\n\nclass Writable extends Stream {\n constructor (opts) {\n super(opts)\n\n this._duplexState |= OPENING | READ_DONE\n this._writableState = new WritableState(this, opts)\n\n if (opts) {\n if (opts.writev) this._writev = opts.writev\n if (opts.write) this._write = opts.write\n if (opts.final) this._final = opts.final\n if (opts.eagerOpen) this._writableState.updateNextTick()\n }\n }\n\n _writev (batch, cb) {\n cb(null)\n }\n\n _write (data, cb) {\n this._writableState.autoBatch(data, cb)\n }\n\n _final (cb) {\n cb(null)\n }\n\n static isBackpressured (ws) {\n return (ws._duplexState & WRITE_BACKPRESSURE_STATUS) !== 0\n }\n\n static drained (ws) {\n if (ws.destroyed) return Promise.resolve(false)\n const state = ws._writableState\n const pending = (isWritev(ws) ? Math.min(1, state.queue.length) : state.queue.length)\n const writes = pending + ((ws._duplexState & WRITE_WRITING) ? 1 : 0)\n if (writes === 0) return Promise.resolve(true)\n if (state.drains === null) state.drains = []\n return new Promise((resolve) => {\n state.drains.push({ writes, resolve })\n })\n }\n\n write (data) {\n this._writableState.updateNextTick()\n return this._writableState.push(data)\n }\n\n end (data) {\n this._writableState.updateNextTick()\n this._writableState.end(data)\n return this\n }\n}\n\nclass Duplex extends Readable { // and Writable\n constructor (opts) {\n super(opts)\n\n this._duplexState = OPENING\n this._writableState = new WritableState(this, opts)\n\n if (opts) {\n if (opts.writev) this._writev = opts.writev\n if (opts.write) this._write = opts.write\n if (opts.final) this._final = opts.final\n }\n }\n\n _writev (batch, cb) {\n cb(null)\n }\n\n _write (data, cb) {\n this._writableState.autoBatch(data, cb)\n }\n\n _final (cb) {\n cb(null)\n }\n\n write (data) {\n this._writableState.updateNextTick()\n return this._writableState.push(data)\n }\n\n end (data) {\n this._writableState.updateNextTick()\n this._writableState.end(data)\n return this\n }\n}\n\nclass Transform extends Duplex {\n constructor (opts) {\n super(opts)\n this._transformState = new TransformState(this)\n\n if (opts) {\n if (opts.transform) this._transform = opts.transform\n if (opts.flush) this._flush = opts.flush\n }\n }\n\n _write (data, cb) {\n if (this._readableState.buffered >= this._readableState.highWaterMark) {\n this._transformState.data = data\n } else {\n this._transform(data, this._transformState.afterTransform)\n }\n }\n\n _read (cb) {\n if (this._transformState.data !== null) {\n const data = this._transformState.data\n this._transformState.data = null\n cb(null)\n this._transform(data, this._transformState.afterTransform)\n } else {\n cb(null)\n }\n }\n\n destroy (err) {\n super.destroy(err)\n if (this._transformState.data !== null) {\n this._transformState.data = null\n this._transformState.afterTransform()\n }\n }\n\n _transform (data, cb) {\n cb(null, data)\n }\n\n _flush (cb) {\n cb(null)\n }\n\n _final (cb) {\n this._transformState.afterFinal = cb\n this._flush(transformAfterFlush.bind(this))\n }\n}\n\nclass PassThrough extends Transform {}\n\nfunction transformAfterFlush (err, data) {\n const cb = this._transformState.afterFinal\n if (err) return cb(err)\n if (data !== null && data !== undefined) this.push(data)\n this.push(null)\n cb(null)\n}\n\nfunction pipelinePromise (...streams) {\n return new Promise((resolve, reject) => {\n return pipeline(...streams, (err) => {\n if (err) return reject(err)\n resolve()\n })\n })\n}\n\nfunction pipeline (stream, ...streams) {\n const all = Array.isArray(stream) ? [...stream, ...streams] : [stream, ...streams]\n const done = (all.length && typeof all[all.length - 1] === 'function') ? all.pop() : null\n\n if (all.length < 2) throw new Error('Pipeline requires at least 2 streams')\n\n let src = all[0]\n let dest = null\n let error = null\n\n for (let i = 1; i < all.length; i++) {\n dest = all[i]\n\n if (isStreamx(src)) {\n src.pipe(dest, onerror)\n } else {\n errorHandle(src, true, i > 1, onerror)\n src.pipe(dest)\n }\n\n src = dest\n }\n\n if (done) {\n let fin = false\n\n const autoDestroy = isStreamx(dest) || !!(dest._writableState && dest._writableState.autoDestroy)\n\n dest.on('error', (err) => {\n if (error === null) error = err\n })\n\n dest.on('finish', () => {\n fin = true\n if (!autoDestroy) done(error)\n })\n\n if (autoDestroy) {\n dest.on('close', () => done(error || (fin ? null : PREMATURE_CLOSE)))\n }\n }\n\n return dest\n\n function errorHandle (s, rd, wr, onerror) {\n s.on('error', onerror)\n s.on('close', onclose)\n\n function onclose () {\n if (rd && s._readableState && !s._readableState.ended) return onerror(PREMATURE_CLOSE)\n if (wr && s._writableState && !s._writableState.ended) return onerror(PREMATURE_CLOSE)\n }\n }\n\n function onerror (err) {\n if (!err || error) return\n error = err\n\n for (const s of all) {\n s.destroy(err)\n }\n }\n}\n\nfunction isStream (stream) {\n return !!stream._readableState || !!stream._writableState\n}\n\nfunction isStreamx (stream) {\n return typeof stream._duplexState === 'number' && isStream(stream)\n}\n\nfunction getStreamError (stream) {\n const err = (stream._readableState && stream._readableState.error) || (stream._writableState && stream._writableState.error)\n return err === STREAM_DESTROYED ? null : err // only explicit errors\n}\n\nfunction isReadStreamx (stream) {\n return isStreamx(stream) && stream.readable\n}\n\nfunction isTypedArray (data) {\n return typeof data === 'object' && data !== null && typeof data.byteLength === 'number'\n}\n\nfunction defaultByteLength (data) {\n return isTypedArray(data) ? data.byteLength : 1024\n}\n\nfunction noop () {}\n\nfunction abort () {\n this.destroy(new Error('Stream aborted.'))\n}\n\nfunction isWritev (s) {\n return s._writev !== Writable.prototype._writev && s._writev !== Duplex.prototype._writev\n}\n\nmodule.exports = {\n pipeline,\n pipelinePromise,\n isStream,\n isStreamx,\n getStreamError,\n Stream,\n Writable,\n Readable,\n Duplex,\n Transform,\n // Export PassThrough for compatibility with Node.js core's stream module\n PassThrough\n}\n", "/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function (val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isFinite(val)) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'weeks':\n case 'week':\n case 'w':\n return n * w;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (msAbs >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (msAbs >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (msAbs >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return plural(ms, msAbs, d, 'day');\n }\n if (msAbs >= h) {\n return plural(ms, msAbs, h, 'hour');\n }\n if (msAbs >= m) {\n return plural(ms, msAbs, m, 'minute');\n }\n if (msAbs >= s) {\n return plural(ms, msAbs, s, 'second');\n }\n return ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, msAbs, n, name) {\n var isPlural = msAbs >= n * 1.5;\n return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}\n", "\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n */\n\nfunction setup(env) {\n\tcreateDebug.debug = createDebug;\n\tcreateDebug.default = createDebug;\n\tcreateDebug.coerce = coerce;\n\tcreateDebug.disable = disable;\n\tcreateDebug.enable = enable;\n\tcreateDebug.enabled = enabled;\n\tcreateDebug.humanize = require('ms');\n\tcreateDebug.destroy = destroy;\n\n\tObject.keys(env).forEach(key => {\n\t\tcreateDebug[key] = env[key];\n\t});\n\n\t/**\n\t* The currently active debug mode names, and names to skip.\n\t*/\n\n\tcreateDebug.names = [];\n\tcreateDebug.skips = [];\n\n\t/**\n\t* Map of special \"%n\" handling functions, for the debug \"format\" argument.\n\t*\n\t* Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n\t*/\n\tcreateDebug.formatters = {};\n\n\t/**\n\t* Selects a color for a debug namespace\n\t* @param {String} namespace The namespace string for the debug instance to be colored\n\t* @return {Number|String} An ANSI color code for the given namespace\n\t* @api private\n\t*/\n\tfunction selectColor(namespace) {\n\t\tlet hash = 0;\n\n\t\tfor (let i = 0; i < namespace.length; i++) {\n\t\t\thash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n\t\t\thash |= 0; // Convert to 32bit integer\n\t\t}\n\n\t\treturn createDebug.colors[Math.abs(hash) % createDebug.colors.length];\n\t}\n\tcreateDebug.selectColor = selectColor;\n\n\t/**\n\t* Create a debugger with the given `namespace`.\n\t*\n\t* @param {String} namespace\n\t* @return {Function}\n\t* @api public\n\t*/\n\tfunction createDebug(namespace) {\n\t\tlet prevTime;\n\t\tlet enableOverride = null;\n\t\tlet namespacesCache;\n\t\tlet enabledCache;\n\n\t\tfunction debug(...args) {\n\t\t\t// Disabled?\n\t\t\tif (!debug.enabled) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst self = debug;\n\n\t\t\t// Set `diff` timestamp\n\t\t\tconst curr = Number(new Date());\n\t\t\tconst ms = curr - (prevTime || curr);\n\t\t\tself.diff = ms;\n\t\t\tself.prev = prevTime;\n\t\t\tself.curr = curr;\n\t\t\tprevTime = curr;\n\n\t\t\targs[0] = createDebug.coerce(args[0]);\n\n\t\t\tif (typeof args[0] !== 'string') {\n\t\t\t\t// Anything else let's inspect with %O\n\t\t\t\targs.unshift('%O');\n\t\t\t}\n\n\t\t\t// Apply any `formatters` transformations\n\t\t\tlet index = 0;\n\t\t\targs[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => {\n\t\t\t\t// If we encounter an escaped % then don't increase the array index\n\t\t\t\tif (match === '%%') {\n\t\t\t\t\treturn '%';\n\t\t\t\t}\n\t\t\t\tindex++;\n\t\t\t\tconst formatter = createDebug.formatters[format];\n\t\t\t\tif (typeof formatter === 'function') {\n\t\t\t\t\tconst val = args[index];\n\t\t\t\t\tmatch = formatter.call(self, val);\n\n\t\t\t\t\t// Now we need to remove `args[index]` since it's inlined in the `format`\n\t\t\t\t\targs.splice(index, 1);\n\t\t\t\t\tindex--;\n\t\t\t\t}\n\t\t\t\treturn match;\n\t\t\t});\n\n\t\t\t// Apply env-specific formatting (colors, etc.)\n\t\t\tcreateDebug.formatArgs.call(self, args);\n\n\t\t\tconst logFn = self.log || createDebug.log;\n\t\t\tlogFn.apply(self, args);\n\t\t}\n\n\t\tdebug.namespace = namespace;\n\t\tdebug.useColors = createDebug.useColors();\n\t\tdebug.color = createDebug.selectColor(namespace);\n\t\tdebug.extend = extend;\n\t\tdebug.destroy = createDebug.destroy; // XXX Temporary. Will be removed in the next major release.\n\n\t\tObject.defineProperty(debug, 'enabled', {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: false,\n\t\t\tget: () => {\n\t\t\t\tif (enableOverride !== null) {\n\t\t\t\t\treturn enableOverride;\n\t\t\t\t}\n\t\t\t\tif (namespacesCache !== createDebug.namespaces) {\n\t\t\t\t\tnamespacesCache = createDebug.namespaces;\n\t\t\t\t\tenabledCache = createDebug.enabled(namespace);\n\t\t\t\t}\n\n\t\t\t\treturn enabledCache;\n\t\t\t},\n\t\t\tset: v => {\n\t\t\t\tenableOverride = v;\n\t\t\t}\n\t\t});\n\n\t\t// Env-specific initialization logic for debug instances\n\t\tif (typeof createDebug.init === 'function') {\n\t\t\tcreateDebug.init(debug);\n\t\t}\n\n\t\treturn debug;\n\t}\n\n\tfunction extend(namespace, delimiter) {\n\t\tconst newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);\n\t\tnewDebug.log = this.log;\n\t\treturn newDebug;\n\t}\n\n\t/**\n\t* Enables a debug mode by namespaces. This can include modes\n\t* separated by a colon and wildcards.\n\t*\n\t* @param {String} namespaces\n\t* @api public\n\t*/\n\tfunction enable(namespaces) {\n\t\tcreateDebug.save(namespaces);\n\t\tcreateDebug.namespaces = namespaces;\n\n\t\tcreateDebug.names = [];\n\t\tcreateDebug.skips = [];\n\n\t\tconst split = (typeof namespaces === 'string' ? namespaces : '')\n\t\t\t.trim()\n\t\t\t.replace(/\\s+/g, ',')\n\t\t\t.split(',')\n\t\t\t.filter(Boolean);\n\n\t\tfor (const ns of split) {\n\t\t\tif (ns[0] === '-') {\n\t\t\t\tcreateDebug.skips.push(ns.slice(1));\n\t\t\t} else {\n\t\t\t\tcreateDebug.names.push(ns);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Checks if the given string matches a namespace template, honoring\n\t * asterisks as wildcards.\n\t *\n\t * @param {String} search\n\t * @param {String} template\n\t * @return {Boolean}\n\t */\n\tfunction matchesTemplate(search, template) {\n\t\tlet searchIndex = 0;\n\t\tlet templateIndex = 0;\n\t\tlet starIndex = -1;\n\t\tlet matchIndex = 0;\n\n\t\twhile (searchIndex < search.length) {\n\t\t\tif (templateIndex < template.length && (template[templateIndex] === search[searchIndex] || template[templateIndex] === '*')) {\n\t\t\t\t// Match character or proceed with wildcard\n\t\t\t\tif (template[templateIndex] === '*') {\n\t\t\t\t\tstarIndex = templateIndex;\n\t\t\t\t\tmatchIndex = searchIndex;\n\t\t\t\t\ttemplateIndex++; // Skip the '*'\n\t\t\t\t} else {\n\t\t\t\t\tsearchIndex++;\n\t\t\t\t\ttemplateIndex++;\n\t\t\t\t}\n\t\t\t} else if (starIndex !== -1) { // eslint-disable-line no-negated-condition\n\t\t\t\t// Backtrack to the last '*' and try to match more characters\n\t\t\t\ttemplateIndex = starIndex + 1;\n\t\t\t\tmatchIndex++;\n\t\t\t\tsearchIndex = matchIndex;\n\t\t\t} else {\n\t\t\t\treturn false; // No match\n\t\t\t}\n\t\t}\n\n\t\t// Handle trailing '*' in template\n\t\twhile (templateIndex < template.length && template[templateIndex] === '*') {\n\t\t\ttemplateIndex++;\n\t\t}\n\n\t\treturn templateIndex === template.length;\n\t}\n\n\t/**\n\t* Disable debug output.\n\t*\n\t* @return {String} namespaces\n\t* @api public\n\t*/\n\tfunction disable() {\n\t\tconst namespaces = [\n\t\t\t...createDebug.names,\n\t\t\t...createDebug.skips.map(namespace => '-' + namespace)\n\t\t].join(',');\n\t\tcreateDebug.enable('');\n\t\treturn namespaces;\n\t}\n\n\t/**\n\t* Returns true if the given mode name is enabled, false otherwise.\n\t*\n\t* @param {String} name\n\t* @return {Boolean}\n\t* @api public\n\t*/\n\tfunction enabled(name) {\n\t\tfor (const skip of createDebug.skips) {\n\t\t\tif (matchesTemplate(name, skip)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tfor (const ns of createDebug.names) {\n\t\t\tif (matchesTemplate(name, ns)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t* Coerce `val`.\n\t*\n\t* @param {Mixed} val\n\t* @return {Mixed}\n\t* @api private\n\t*/\n\tfunction coerce(val) {\n\t\tif (val instanceof Error) {\n\t\t\treturn val.stack || val.message;\n\t\t}\n\t\treturn val;\n\t}\n\n\t/**\n\t* XXX DO NOT USE. This is a temporary stub function.\n\t* XXX It WILL be removed in the next major release.\n\t*/\n\tfunction destroy() {\n\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t}\n\n\tcreateDebug.enable(createDebug.load());\n\n\treturn createDebug;\n}\n\nmodule.exports = setup;\n", "/* eslint-env browser */\n\n/**\n * This is the web browser implementation of `debug()`.\n */\n\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = localstorage();\nexports.destroy = (() => {\n\tlet warned = false;\n\n\treturn () => {\n\t\tif (!warned) {\n\t\t\twarned = true;\n\t\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t\t}\n\t};\n})();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n\t'#0000CC',\n\t'#0000FF',\n\t'#0033CC',\n\t'#0033FF',\n\t'#0066CC',\n\t'#0066FF',\n\t'#0099CC',\n\t'#0099FF',\n\t'#00CC00',\n\t'#00CC33',\n\t'#00CC66',\n\t'#00CC99',\n\t'#00CCCC',\n\t'#00CCFF',\n\t'#3300CC',\n\t'#3300FF',\n\t'#3333CC',\n\t'#3333FF',\n\t'#3366CC',\n\t'#3366FF',\n\t'#3399CC',\n\t'#3399FF',\n\t'#33CC00',\n\t'#33CC33',\n\t'#33CC66',\n\t'#33CC99',\n\t'#33CCCC',\n\t'#33CCFF',\n\t'#6600CC',\n\t'#6600FF',\n\t'#6633CC',\n\t'#6633FF',\n\t'#66CC00',\n\t'#66CC33',\n\t'#9900CC',\n\t'#9900FF',\n\t'#9933CC',\n\t'#9933FF',\n\t'#99CC00',\n\t'#99CC33',\n\t'#CC0000',\n\t'#CC0033',\n\t'#CC0066',\n\t'#CC0099',\n\t'#CC00CC',\n\t'#CC00FF',\n\t'#CC3300',\n\t'#CC3333',\n\t'#CC3366',\n\t'#CC3399',\n\t'#CC33CC',\n\t'#CC33FF',\n\t'#CC6600',\n\t'#CC6633',\n\t'#CC9900',\n\t'#CC9933',\n\t'#CCCC00',\n\t'#CCCC33',\n\t'#FF0000',\n\t'#FF0033',\n\t'#FF0066',\n\t'#FF0099',\n\t'#FF00CC',\n\t'#FF00FF',\n\t'#FF3300',\n\t'#FF3333',\n\t'#FF3366',\n\t'#FF3399',\n\t'#FF33CC',\n\t'#FF33FF',\n\t'#FF6600',\n\t'#FF6633',\n\t'#FF9900',\n\t'#FF9933',\n\t'#FFCC00',\n\t'#FFCC33'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\n// eslint-disable-next-line complexity\nfunction useColors() {\n\t// NB: In an Electron preload script, document will be defined but not fully\n\t// initialized. Since we know we're in Chrome, we'll just detect this case\n\t// explicitly\n\tif (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {\n\t\treturn true;\n\t}\n\n\t// Internet Explorer and Edge do not support colors.\n\tif (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n\t\treturn false;\n\t}\n\n\tlet m;\n\n\t// Is webkit? http://stackoverflow.com/a/16459606/376773\n\t// document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n\t// eslint-disable-next-line no-return-assign\n\treturn (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n\t\t// Is firebug? http://stackoverflow.com/a/398120/376773\n\t\t(typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n\t\t// Is firefox >= v31?\n\t\t// https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && (m = navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/)) && parseInt(m[1], 10) >= 31) ||\n\t\t// Double check webkit in userAgent just in case we are in a worker\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\targs[0] = (this.useColors ? '%c' : '') +\n\t\tthis.namespace +\n\t\t(this.useColors ? ' %c' : ' ') +\n\t\targs[0] +\n\t\t(this.useColors ? '%c ' : ' ') +\n\t\t'+' + module.exports.humanize(this.diff);\n\n\tif (!this.useColors) {\n\t\treturn;\n\t}\n\n\tconst c = 'color: ' + this.color;\n\targs.splice(1, 0, c, 'color: inherit');\n\n\t// The final \"%c\" is somewhat tricky, because there could be other\n\t// arguments passed either before or after the %c, so we need to\n\t// figure out the correct index to insert the CSS into\n\tlet index = 0;\n\tlet lastC = 0;\n\targs[0].replace(/%[a-zA-Z%]/g, match => {\n\t\tif (match === '%%') {\n\t\t\treturn;\n\t\t}\n\t\tindex++;\n\t\tif (match === '%c') {\n\t\t\t// We only are interested in the *last* %c\n\t\t\t// (the user may have provided their own)\n\t\t\tlastC = index;\n\t\t}\n\t});\n\n\targs.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.debug()` when available.\n * No-op when `console.debug` is not a \"function\".\n * If `console.debug` is not available, falls back\n * to `console.log`.\n *\n * @api public\n */\nexports.log = console.debug || console.log || (() => {});\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\ttry {\n\t\tif (namespaces) {\n\t\t\texports.storage.setItem('debug', namespaces);\n\t\t} else {\n\t\t\texports.storage.removeItem('debug');\n\t\t}\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\nfunction load() {\n\tlet r;\n\ttry {\n\t\tr = exports.storage.getItem('debug') || exports.storage.getItem('DEBUG') ;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n\n\t// If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n\tif (!r && typeof process !== 'undefined' && 'env' in process) {\n\t\tr = process.env.DEBUG;\n\t}\n\n\treturn r;\n}\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n\ttry {\n\t\t// TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context\n\t\t// The Browser also has localStorage in the global context.\n\t\treturn localStorage;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nformatters.j = function (v) {\n\ttry {\n\t\treturn JSON.stringify(v);\n\t} catch (error) {\n\t\treturn '[UnexpectedJSONParseError]: ' + error.message;\n\t}\n};\n", "'use strict';\n\nmodule.exports = (flag, argv = process.argv) => {\n\tconst prefix = flag.startsWith('-') ? '' : (flag.length === 1 ? '-' : '--');\n\tconst position = argv.indexOf(prefix + flag);\n\tconst terminatorPosition = argv.indexOf('--');\n\treturn position !== -1 && (terminatorPosition === -1 || position < terminatorPosition);\n};\n", "'use strict';\nconst os = require('os');\nconst tty = require('tty');\nconst hasFlag = require('has-flag');\n\nconst {env} = process;\n\nlet forceColor;\nif (hasFlag('no-color') ||\n\thasFlag('no-colors') ||\n\thasFlag('color=false') ||\n\thasFlag('color=never')) {\n\tforceColor = 0;\n} else if (hasFlag('color') ||\n\thasFlag('colors') ||\n\thasFlag('color=true') ||\n\thasFlag('color=always')) {\n\tforceColor = 1;\n}\n\nif ('FORCE_COLOR' in env) {\n\tif (env.FORCE_COLOR === 'true') {\n\t\tforceColor = 1;\n\t} else if (env.FORCE_COLOR === 'false') {\n\t\tforceColor = 0;\n\t} else {\n\t\tforceColor = env.FORCE_COLOR.length === 0 ? 1 : Math.min(parseInt(env.FORCE_COLOR, 10), 3);\n\t}\n}\n\nfunction translateLevel(level) {\n\tif (level === 0) {\n\t\treturn false;\n\t}\n\n\treturn {\n\t\tlevel,\n\t\thasBasic: true,\n\t\thas256: level >= 2,\n\t\thas16m: level >= 3\n\t};\n}\n\nfunction supportsColor(haveStream, streamIsTTY) {\n\tif (forceColor === 0) {\n\t\treturn 0;\n\t}\n\n\tif (hasFlag('color=16m') ||\n\t\thasFlag('color=full') ||\n\t\thasFlag('color=truecolor')) {\n\t\treturn 3;\n\t}\n\n\tif (hasFlag('color=256')) {\n\t\treturn 2;\n\t}\n\n\tif (haveStream && !streamIsTTY && forceColor === undefined) {\n\t\treturn 0;\n\t}\n\n\tconst min = forceColor || 0;\n\n\tif (env.TERM === 'dumb') {\n\t\treturn min;\n\t}\n\n\tif (process.platform === 'win32') {\n\t\t// Windows 10 build 10586 is the first Windows release that supports 256 colors.\n\t\t// Windows 10 build 14931 is the first release that supports 16m/TrueColor.\n\t\tconst osRelease = os.release().split('.');\n\t\tif (\n\t\t\tNumber(osRelease[0]) >= 10 &&\n\t\t\tNumber(osRelease[2]) >= 10586\n\t\t) {\n\t\t\treturn Number(osRelease[2]) >= 14931 ? 3 : 2;\n\t\t}\n\n\t\treturn 1;\n\t}\n\n\tif ('CI' in env) {\n\t\tif (['TRAVIS', 'CIRCLECI', 'APPVEYOR', 'GITLAB_CI', 'GITHUB_ACTIONS', 'BUILDKITE'].some(sign => sign in env) || env.CI_NAME === 'codeship') {\n\t\t\treturn 1;\n\t\t}\n\n\t\treturn min;\n\t}\n\n\tif ('TEAMCITY_VERSION' in env) {\n\t\treturn /^(9\\.(0*[1-9]\\d*)\\.|\\d{2,}\\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0;\n\t}\n\n\tif (env.COLORTERM === 'truecolor') {\n\t\treturn 3;\n\t}\n\n\tif ('TERM_PROGRAM' in env) {\n\t\tconst version = parseInt((env.TERM_PROGRAM_VERSION || '').split('.')[0], 10);\n\n\t\tswitch (env.TERM_PROGRAM) {\n\t\t\tcase 'iTerm.app':\n\t\t\t\treturn version >= 3 ? 3 : 2;\n\t\t\tcase 'Apple_Terminal':\n\t\t\t\treturn 2;\n\t\t\t// No default\n\t\t}\n\t}\n\n\tif (/-256(color)?$/i.test(env.TERM)) {\n\t\treturn 2;\n\t}\n\n\tif (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) {\n\t\treturn 1;\n\t}\n\n\tif ('COLORTERM' in env) {\n\t\treturn 1;\n\t}\n\n\treturn min;\n}\n\nfunction getSupportLevel(stream) {\n\tconst level = supportsColor(stream, stream && stream.isTTY);\n\treturn translateLevel(level);\n}\n\nmodule.exports = {\n\tsupportsColor: getSupportLevel,\n\tstdout: translateLevel(supportsColor(true, tty.isatty(1))),\n\tstderr: translateLevel(supportsColor(true, tty.isatty(2)))\n};\n", "/**\n * Module dependencies.\n */\n\nconst tty = require('tty');\nconst util = require('util');\n\n/**\n * This is the Node.js implementation of `debug()`.\n */\n\nexports.init = init;\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.destroy = util.deprecate(\n\t() => {},\n\t'Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.'\n);\n\n/**\n * Colors.\n */\n\nexports.colors = [6, 2, 3, 4, 5, 1];\n\ntry {\n\t// Optional dependency (as in, doesn't need to be installed, NOT like optionalDependencies in package.json)\n\t// eslint-disable-next-line import/no-extraneous-dependencies\n\tconst supportsColor = require('supports-color');\n\n\tif (supportsColor && (supportsColor.stderr || supportsColor).level >= 2) {\n\t\texports.colors = [\n\t\t\t20,\n\t\t\t21,\n\t\t\t26,\n\t\t\t27,\n\t\t\t32,\n\t\t\t33,\n\t\t\t38,\n\t\t\t39,\n\t\t\t40,\n\t\t\t41,\n\t\t\t42,\n\t\t\t43,\n\t\t\t44,\n\t\t\t45,\n\t\t\t56,\n\t\t\t57,\n\t\t\t62,\n\t\t\t63,\n\t\t\t68,\n\t\t\t69,\n\t\t\t74,\n\t\t\t75,\n\t\t\t76,\n\t\t\t77,\n\t\t\t78,\n\t\t\t79,\n\t\t\t80,\n\t\t\t81,\n\t\t\t92,\n\t\t\t93,\n\t\t\t98,\n\t\t\t99,\n\t\t\t112,\n\t\t\t113,\n\t\t\t128,\n\t\t\t129,\n\t\t\t134,\n\t\t\t135,\n\t\t\t148,\n\t\t\t149,\n\t\t\t160,\n\t\t\t161,\n\t\t\t162,\n\t\t\t163,\n\t\t\t164,\n\t\t\t165,\n\t\t\t166,\n\t\t\t167,\n\t\t\t168,\n\t\t\t169,\n\t\t\t170,\n\t\t\t171,\n\t\t\t172,\n\t\t\t173,\n\t\t\t178,\n\t\t\t179,\n\t\t\t184,\n\t\t\t185,\n\t\t\t196,\n\t\t\t197,\n\t\t\t198,\n\t\t\t199,\n\t\t\t200,\n\t\t\t201,\n\t\t\t202,\n\t\t\t203,\n\t\t\t204,\n\t\t\t205,\n\t\t\t206,\n\t\t\t207,\n\t\t\t208,\n\t\t\t209,\n\t\t\t214,\n\t\t\t215,\n\t\t\t220,\n\t\t\t221\n\t\t];\n\t}\n} catch (error) {\n\t// Swallow - we only care if `supports-color` is available; it doesn't have to be.\n}\n\n/**\n * Build up the default `inspectOpts` object from the environment variables.\n *\n * $ DEBUG_COLORS=no DEBUG_DEPTH=10 DEBUG_SHOW_HIDDEN=enabled node script.js\n */\n\nexports.inspectOpts = Object.keys(process.env).filter(key => {\n\treturn /^debug_/i.test(key);\n}).reduce((obj, key) => {\n\t// Camel-case\n\tconst prop = key\n\t\t.substring(6)\n\t\t.toLowerCase()\n\t\t.replace(/_([a-z])/g, (_, k) => {\n\t\t\treturn k.toUpperCase();\n\t\t});\n\n\t// Coerce string value into JS value\n\tlet val = process.env[key];\n\tif (/^(yes|on|true|enabled)$/i.test(val)) {\n\t\tval = true;\n\t} else if (/^(no|off|false|disabled)$/i.test(val)) {\n\t\tval = false;\n\t} else if (val === 'null') {\n\t\tval = null;\n\t} else {\n\t\tval = Number(val);\n\t}\n\n\tobj[prop] = val;\n\treturn obj;\n}, {});\n\n/**\n * Is stdout a TTY? Colored output is enabled when `true`.\n */\n\nfunction useColors() {\n\treturn 'colors' in exports.inspectOpts ?\n\t\tBoolean(exports.inspectOpts.colors) :\n\t\ttty.isatty(process.stderr.fd);\n}\n\n/**\n * Adds ANSI color escape codes if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\tconst {namespace: name, useColors} = this;\n\n\tif (useColors) {\n\t\tconst c = this.color;\n\t\tconst colorCode = '\\u001B[3' + (c < 8 ? c : '8;5;' + c);\n\t\tconst prefix = ` ${colorCode};1m${name} \\u001B[0m`;\n\n\t\targs[0] = prefix + args[0].split('\\n').join('\\n' + prefix);\n\t\targs.push(colorCode + 'm+' + module.exports.humanize(this.diff) + '\\u001B[0m');\n\t} else {\n\t\targs[0] = getDate() + name + ' ' + args[0];\n\t}\n}\n\nfunction getDate() {\n\tif (exports.inspectOpts.hideDate) {\n\t\treturn '';\n\t}\n\treturn new Date().toISOString() + ' ';\n}\n\n/**\n * Invokes `util.formatWithOptions()` with the specified arguments and writes to stderr.\n */\n\nfunction log(...args) {\n\treturn process.stderr.write(util.formatWithOptions(exports.inspectOpts, ...args) + '\\n');\n}\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\tif (namespaces) {\n\t\tprocess.env.DEBUG = namespaces;\n\t} else {\n\t\t// If you set a process.env field to null or undefined, it gets cast to the\n\t\t// string 'null' or 'undefined'. Just delete instead.\n\t\tdelete process.env.DEBUG;\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\nfunction load() {\n\treturn process.env.DEBUG;\n}\n\n/**\n * Init logic for `debug` instances.\n *\n * Create a new `inspectOpts` object in case `useColors` is set\n * differently for a particular `debug` instance.\n */\n\nfunction init(debug) {\n\tdebug.inspectOpts = {};\n\n\tconst keys = Object.keys(exports.inspectOpts);\n\tfor (let i = 0; i < keys.length; i++) {\n\t\tdebug.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]];\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %o to `util.inspect()`, all on a single line.\n */\n\nformatters.o = function (v) {\n\tthis.inspectOpts.colors = this.useColors;\n\treturn util.inspect(v, this.inspectOpts)\n\t\t.split('\\n')\n\t\t.map(str => str.trim())\n\t\t.join(' ');\n};\n\n/**\n * Map %O to `util.inspect()`, allowing multiple lines if needed.\n */\n\nformatters.O = function (v) {\n\tthis.inspectOpts.colors = this.useColors;\n\treturn util.inspect(v, this.inspectOpts);\n};\n", "/**\n * Detect Electron renderer / nwjs process, which is node, but we should\n * treat as a browser.\n */\n\nif (typeof process === 'undefined' || process.type === 'renderer' || process.browser === true || process.__nwjs) {\n\tmodule.exports = require('./browser.js');\n} else {\n\tmodule.exports = require('./node.js');\n}\n", "const SHP = require('simple-hypercore-protocol')\nconst crypto = require('hypercore-crypto')\nconst timeout = require('timeout-refresh')\nconst inspect = require('inspect-custom-symbol')\nconst Nanoguard = require('nanoguard')\nconst pretty = require('pretty-hash')\nconst Message = require('abstract-extension')\nconst { Duplex } = require('streamx')\nconst debug = require('debug')('hypercore-protocol')\n\nclass StreamExtension extends Message {\n send (message) {\n const stream = this.local.handlers\n if (stream._changes !== this.local.changes) {\n stream._changes = this.local.changes\n stream.state.options(0, { extensions: this.local.names() })\n }\n return stream.state.extension(0, this.id, this.encode(message))\n }\n}\n\nclass Channelizer {\n constructor (stream, { encrypted, noise, keyPair }) {\n this.stream = stream\n this.created = new Map()\n this.local = [null]\n this.remote = [null]\n this.noise = !(noise === false && encrypted === false)\n this.encrypted = encrypted !== false\n this.keyPair = keyPair\n }\n\n allocLocal () {\n const id = this.local.indexOf(null)\n if (id > 0) return id\n this.local.push(null)\n return this.local.length - 1\n }\n\n attachLocal (ch) {\n const id = this.allocLocal()\n this.local[id] = ch\n ch.localId = id\n }\n\n attachRemote (ch, id) {\n if (this.remote.length === id) this.remote.push(null)\n this.remote[id] = ch\n ch.remoteId = id\n }\n\n detachChannel (ch) {\n if (ch.localId > -1 && this.local[ch.localId] === ch) {\n this.local[ch.localId] = null\n ch.localId = -1\n if (ch.handlers && ch.handlers.onclose) ch.handlers.onclose()\n }\n if (ch.remoteId > -1 && this.remote[ch.remoteId] === ch) {\n this.remote[ch.remoteId] = null\n }\n\n const hex = ch.discoveryKey.toString('hex')\n if (this.created.get(hex) === ch) this.created.delete(hex)\n }\n\n getChannel (dk) {\n return this.created.get(dk.toString('hex'))\n }\n\n createChannel (dk) {\n const hex = dk.toString('hex')\n\n const old = this.created.get(hex)\n if (old) return old\n\n const fresh = new Channel(this.stream.state, this.stream, dk)\n this.created.set(hex, fresh)\n return fresh\n }\n\n onauthenticate (key, done) {\n if (this.stream.handlers && this.stream.handlers.onauthenticate) this.stream.handlers.onauthenticate(key, done)\n else done(null)\n }\n\n onhandshake () {\n debug('recv handshake')\n if (this.stream.handlers && this.stream.handlers.onhandshake) this.stream.handlers.onhandshake()\n this.stream.emit('handshake')\n }\n\n onopen (channelId, message) {\n debug('recv open', channelId, message)\n const ch = this.createChannel(message.discoveryKey)\n ch.remoteCapability = message.capability\n this.attachRemote(ch, channelId)\n if (ch.localId === -1) {\n if (this.stream.handlers.ondiscoverykey) this.stream.handlers.ondiscoverykey(ch.discoveryKey)\n this.stream.emit('discovery-key', ch.discoveryKey)\n } else {\n if (this.noise && !ch.remoteVerified) {\n // We are leaking metadata here that the remote cap was bad which means the remote prob can figure\n // out that we indeed had the key. Since we were the one to initialise the channel that's ok, as\n // that already kinda leaks that.\n this.stream.destroy(new Error('Invalid remote channel capability'))\n return\n }\n this.stream.emit('duplex-channel', ch)\n }\n if (ch.handlers && ch.handlers.onopen) ch.handlers.onopen()\n\n if (this.stream.handlers.onremoteopen) this.stream.handlers.onremoteopen(ch.discoveryKey)\n this.stream.emit('remote-open', ch.discoveryKey)\n }\n\n onoptions (channelId, message) {\n debug('recv options', channelId, message)\n const ch = this.remote[channelId]\n if (ch && ch.handlers && ch.handlers.onoptions) ch.handlers.onoptions(message)\n else if (channelId === 0 && !ch) this.stream._updateExtensions(message.extensions)\n }\n\n onstatus (channelId, message) {\n debug('recv status', channelId, message)\n const ch = this.remote[channelId]\n if (ch && ch.handlers && ch.handlers.onstatus) ch.handlers.onstatus(message)\n }\n\n onhave (channelId, message) {\n debug('recv have', channelId, message)\n const ch = this.remote[channelId]\n if (ch && ch.handlers && ch.handlers.onhave) ch.handlers.onhave(message)\n }\n\n onunhave (channelId, message) {\n debug('recv unhave', channelId, message)\n const ch = this.remote[channelId]\n if (ch && ch.handlers && ch.handlers.onunhave) ch.handlers.onunhave(message)\n }\n\n onwant (channelId, message) {\n debug('recv want', channelId, message)\n const ch = this.remote[channelId]\n if (ch && ch.handlers && ch.handlers.onwant) ch.handlers.onwant(message)\n }\n\n onunwant (channelId, message) {\n debug('recv unwant', channelId, message)\n const ch = this.remote[channelId]\n if (ch && ch.handlers && ch.handlers.onunwant) ch.handlers.onunwant(message)\n }\n\n onrequest (channelId, message) {\n debug('recv request', channelId, message)\n const ch = this.remote[channelId]\n if (ch && ch.handlers && ch.handlers.onrequest) ch.handlers.onrequest(message)\n }\n\n oncancel (channelId, message) {\n debug('recv cancel', channelId, message)\n const ch = this.remote[channelId]\n if (ch && ch.handlers && ch.handlers.oncancel) ch.handlers.oncancel(message)\n }\n\n ondata (channelId, message) {\n debug('recv data', channelId, message)\n const ch = this.remote[channelId]\n if (ch && ch.handlers && ch.handlers.ondata) ch.handlers.ondata(message)\n }\n\n onextension (channelId, id, buf) {\n debug('recv extension', channelId, id)\n const ch = this.remote[channelId]\n if (ch && ch.handlers && ch.handlers.onextension) ch.handlers.onextension(id, buf)\n else if (channelId === 0 && !ch) this.stream.remoteExtensions.onmessage(id, buf)\n }\n\n onclose (channelId, message) {\n debug('recv close', channelId, message)\n let ch = channelId < this.remote.length ? this.remote[channelId] : null\n\n if (ch) {\n this.remote[channelId] = null\n } else if (message.discoveryKey) {\n ch = this.getChannel(message.discoveryKey)\n }\n\n if (!ch) return\n\n if (ch.localId > -1 && this.local[ch.localId] === ch) {\n this.local[ch.localId] = null\n ch.state.close(ch.localId, {})\n ch.localId = -1\n if (ch.handlers && ch.handlers.onclose) ch.handlers.onclose()\n }\n\n if (this.stream.handlers && this.stream.handlers.onchannelclose) {\n this.stream.handlers.onchannelclose(ch.discoveryKey, ch.key)\n }\n\n const hex = ch.discoveryKey.toString('hex')\n if (this.created.get(hex) === ch) this.created.delete(hex)\n this.stream._prefinalize()\n }\n\n onmissing (bytes) {\n if (this.stream._utp === null) return\n this.stream._utp.setContentSize(bytes)\n }\n\n // called by the state machine\n send (data) {\n if (this.stream.keepAlive !== null) this.stream.keepAlive.refresh()\n this.stream.bytesSent += data.length\n return this.stream.push(data)\n }\n\n // called by the state machine\n destroy (err) {\n this.stream.destroy(err)\n this.local = []\n this.remote = []\n for (const ch of this.created.values()) {\n const closed = ch.localId === -1\n ch.localId = ch.remoteId = -1\n if (!closed && ch.handlers && ch.handlers.onclose) ch.handlers.onclose()\n\n if (this.stream.handlers && this.stream.handlers.onchannelclose) {\n this.stream.handlers.onchannelclose(ch.discoveryKey, ch.key)\n }\n }\n this.created.clear()\n }\n}\n\nclass Channel {\n constructor (state, stream, dk) {\n this.key = null\n this.discoveryKey = dk\n this.localId = -1\n this.remoteId = -1\n this.remoteCapability = null\n this.handlers = null\n this.state = state\n this.stream = stream\n }\n\n get opened () {\n return this.localId > -1\n }\n\n get closed () {\n return this.localId === -1\n }\n\n get remoteOpened () {\n return this.remoteId > -1\n }\n\n get remoteVerified () {\n return this.localId > -1 &&\n this.remoteId > -1 &&\n !!this.remoteCapability &&\n this.remoteCapability.equals(this.state.remoteCapability(this.key))\n }\n\n options (message) {\n debug('send options', message)\n return this.state.options(this.localId, message)\n }\n\n status (message) {\n debug('send status', message)\n return this.state.status(this.localId, message)\n }\n\n have (message) {\n debug('send have', message)\n return this.state.have(this.localId, message)\n }\n\n unhave (message) {\n debug('send unhave', message)\n return this.state.unhave(this.localId, message)\n }\n\n want (message) {\n debug('send want', message)\n return this.state.want(this.localId, message)\n }\n\n unwant (message) {\n debug('send unwant', message)\n return this.state.unwant(this.localId, message)\n }\n\n request (message) {\n debug('send request', message)\n return this.state.request(this.localId, message)\n }\n\n cancel (message) {\n debug('send cancel', message)\n return this.state.cancel(this.localId, message)\n }\n\n data (message) {\n debug('send data', message)\n return this.state.data(this.localId, message)\n }\n\n extension (id, buf) {\n debug('send extension', id)\n return this.state.extension(this.localId, id, buf)\n }\n\n close () {\n debug('send close')\n if (this.closed) return\n\n const localId = this.localId\n this.stream.channelizer.detachChannel(this)\n this.state.close(localId, {})\n this.stream._prefinalize()\n }\n\n destroy (err) {\n this.stream.destroy(err)\n }\n}\n\nmodule.exports = class ProtocolStream extends Duplex {\n constructor (initiator, handlers = {}) {\n super()\n\n if (typeof initiator !== 'boolean') throw new Error('Must specify initiator boolean in replication stream')\n\n this.initiator = initiator\n this.handlers = handlers\n this.channelizer = new Channelizer(this, {\n encrypted: handlers.encrypted,\n noise: handlers.noise,\n keyPair: handlers.keyPair\n })\n this.state = new SHP(initiator, this.channelizer)\n this.live = !!handlers.live\n this.timeout = null\n this.keepAlive = null\n this.prefinalize = new Nanoguard()\n this.bytesSent = 0\n this.bytesReceived = 0\n this.extensions = StreamExtension.createLocal(this)\n this.remoteExtensions = this.extensions.remote()\n\n this._utp = null\n this._changes = 0\n\n this.once('finish', this.push.bind(this, null))\n this.on('pipe', this._onpipe)\n\n if (handlers.timeout !== false && handlers.timeout !== 0) {\n const timeout = handlers.timeout || 20000\n this.setTimeout(timeout, () => this.destroy(new Error('ETIMEDOUT')))\n this.setKeepAlive(Math.ceil(timeout / 2))\n }\n }\n\n registerExtension (name, handlers) {\n return this.extensions.add(name, handlers)\n }\n\n [inspect] (depth, opts) {\n let indent = ''\n if (typeof opts.indentationLvl === 'number') {\n while (indent.length < opts.indentationLvl) indent += ' '\n }\n\n return 'HypercoreProtocolStream(\\n' +\n indent + ' publicKey: ' + opts.stylize((this.publicKey && pretty(this.publicKey)), 'string') + '\\n' +\n indent + ' remotePublicKey: ' + opts.stylize((this.remotePublicKey && pretty(this.remotePublicKey)), 'string') + '\\n' +\n indent + ' remoteAddress: ' + opts.stylize(this.remoteAddress, 'string') + '\\n' +\n indent + ' remoteType: ' + opts.stylize(this.remoteType, 'string') + '\\n' +\n indent + ' live: ' + opts.stylize(this.live, 'boolean') + '\\n' +\n indent + ' initiator: ' + opts.stylize(this.initiator, 'boolean') + '\\n' +\n indent + ' channelCount: ' + opts.stylize(this.channelCount, 'number') + '\\n' +\n indent + ' destroyed: ' + opts.stylize(this.destroyed, 'boolean') + '\\n' +\n indent + ' prefinalized: ' + opts.stylize(!this.prefinalize.waiting, 'boolean') + '\\n' +\n indent + ' bytesSent: ' + opts.stylize(this.bytesSent, 'number') + '\\n' +\n indent + ' bytesReceived: ' + opts.stylize(this.bytesReceived, 'number') + '\\n' +\n indent + ')'\n }\n\n static isProtocolStream (s) {\n return !!(s && typeof s.initiator === 'boolean' && typeof s.pipe === 'function' && s.state)\n }\n\n static keyPair (seed) {\n return SHP.keyPair(seed)\n }\n\n get remoteAddress () {\n const to = this._readableState.pipeTo\n if (!to) return null\n if (ProtocolStream.isProtocolStream(to)) return null\n return to.remoteAddress\n }\n\n get remoteType () {\n const to = this._readableState.pipeTo\n if (!to) return null\n if (to._utp) return 'utp'\n if (to.remoteAddress) return 'tcp'\n return 'unknown'\n }\n\n get publicKey () {\n return this.state.publicKey\n }\n\n get remotePublicKey () {\n return this.state.remotePublicKey\n }\n\n _onpipe (dest) {\n if (typeof dest.setContentSize === 'function') this._utp = dest\n }\n\n _write (data, cb) {\n if (this.timeout !== null) this.timeout.refresh()\n this.bytesReceived += data.length\n this.state.recv(data)\n cb(null)\n }\n\n _destroy (cb) {\n this._predestroy() // make sure this always runs\n this.channelizer.destroy()\n this.state.destroy()\n cb(null)\n }\n\n _predestroy () {\n if (this.timeout !== null) {\n this.timeout.destroy()\n this.timeout = null\n }\n if (this.keepAlive !== null) {\n this.keepAlive.destroy()\n this.keepAlive = null\n }\n this.prefinalize.destroy()\n }\n\n _prefinalize () {\n this.emit('prefinalize')\n this.prefinalize.ready(() => {\n if (this.destroyed) return\n if (this.channelCount) return\n if (this.live) return\n this.finalize()\n })\n }\n\n _updateExtensions (names) {\n this.remoteExtensions.update(names)\n if (this.handlers.onextensions) this.handlers.onextensions(names)\n this.emit('extensions', names)\n }\n\n remoteOpened (key) {\n const ch = this.channelizer.getChannel(crypto.discoveryKey(key))\n return !!(ch && ch.remoteId > -1)\n }\n\n remoteVerified (key) {\n const ch = this.channelizer.getChannel(crypto.discoveryKey(key))\n return !!ch && !!ch.remoteCapability && ch.remoteCapability.equals(this.state.remoteCapability(key))\n }\n\n opened (key) {\n const ch = this.channelizer.getChannel(crypto.discoveryKey(key))\n return !!(ch && ch.localId > -1)\n }\n\n ping () {\n return this.state.ping()\n }\n\n setKeepAlive (ms) {\n if (this.keepAlive) this.keepAlive.destroy()\n if (!ms) {\n this.keepAlive = null\n return\n }\n this.keepAlive = timeout(ms, ping, this)\n\n function ping () {\n this.ping()\n this.keepAlive = timeout(ms, ping, this)\n }\n }\n\n setTimeout (ms, ontimeout) {\n if (this.timeout) this.timeout.destroy()\n if (!ms) {\n this.timeout = null\n return\n }\n this.timeout = timeout(ms, this.emit.bind(this, 'timeout'))\n if (ontimeout) this.once('timeout', ontimeout)\n }\n\n get channelCount () {\n return this.channelizer.created.size\n }\n\n get channels () {\n return this.channelizer.created.values()\n }\n\n open (key, handlers) {\n const discoveryKey = crypto.discoveryKey(key)\n const ch = this.channelizer.createChannel(discoveryKey)\n\n if (ch.key === null) {\n ch.key = key\n this.channelizer.attachLocal(ch)\n this.state.open(ch.localId, { key, discoveryKey })\n }\n\n if (handlers) ch.handlers = handlers\n\n if (ch.remoteId > -1) this.emit('duplex-channel', ch)\n\n return ch\n }\n\n close (discoveryKey) {\n const ch = this.channelizer.getChannel(discoveryKey)\n\n if (ch && ch.localId > -1) {\n ch.close()\n return\n }\n\n this.state.close(this.channelizer.allocLocal(), { discoveryKey })\n }\n\n finalize () {\n this.push(null)\n }\n}\n", "module.exports = function(v) {\n var c = 32\n v &= -v\n if (v) c--\n if (v & 0x0000FFFF) c -= 16\n if (v & 0x00FF00FF) c -= 8\n if (v & 0x0F0F0F0F) c -= 4\n if (v & 0x33333333) c -= 2\n if (v & 0x55555555) c -= 1\n return c\n}\n", "'use strict'\n\nconst ctz = require('count-trailing-zeros')\n\nmodule.exports = () => new Bitfield()\n\nclass Page {\n constructor (level) {\n const buf = new Uint8Array(level ? 8456 : 4360)\n const b = buf.byteOffset\n\n this.buffer = buf\n this.bits = level ? null : new Uint32Array(buf.buffer, b, 1024)\n this.children = level ? new Array(32768) : null\n this.level = level\n\n this.allOne = level\n ? [\n new Uint32Array(buf.buffer, b, 1024),\n new Uint32Array(buf.buffer, b + 4096, 32),\n new Uint32Array(buf.buffer, b + 4224, 1)\n ]\n : [\n this.bits,\n new Uint32Array(buf.buffer, b + 4096, 32),\n new Uint32Array(buf.buffer, b + 4224, 1)\n ]\n\n this.oneOne = level\n ? [\n new Uint32Array(buf.buffer, b + 4228, 1024),\n new Uint32Array(buf.buffer, b + 8324, 32),\n new Uint32Array(buf.buffer, b + 8452, 1)\n ]\n : [\n this.bits,\n new Uint32Array(buf.buffer, b + 4228, 32),\n new Uint32Array(buf.buffer, b + 4356, 1)\n ]\n }\n}\n\nconst ZEROS = [new Page(0), new Page(1), new Page(2), new Page(3)]\nconst MASK = new Uint32Array(32)\nconst MASK_INCL = new Uint32Array(32)\n\nfor (var i = 0; i < 32; i++) {\n MASK[i] = Math.pow(2, 31 - i) - 1\n MASK_INCL[i] = Math.pow(2, 32 - i) - 1\n}\n\nconst LITTLE_ENDIAN = new Uint8Array(MASK.buffer, MASK.byteOffset, 1)[0] === 0xff\n\nclass Bitfield {\n constructor () {\n this.length = 32768\n this.littleEndian = LITTLE_ENDIAN\n\n this._path = new Uint16Array(5)\n this._offsets = new Uint16Array(this._path.buffer, this._path.byteOffset + 2, 4)\n this._parents = new Array(4).fill(null)\n this._page = new Page(0)\n this._allocs = 1\n }\n\n last () {\n var page = this._page\n var b = 0\n\n while (true) {\n for (var i = 2; i >= 0; i--) {\n const c = ctz(page.oneOne[i][b])\n if (c === 32) return -1\n b = (b << 5) + (31 - c)\n }\n\n this._path[page.level] = b\n if (!page.level) return defactor(this._path)\n page = page.children[b]\n b = 0\n }\n }\n\n set (index, bit) {\n const page = this._getPage(index, bit)\n if (!page) return false\n\n const i = this._path[0]\n const r = i & 31\n const b = i >>> 5\n const prev = page.bits[b]\n\n page.bits[b] = bit\n ? (prev | (0x80000000 >>> r))\n : (prev & ~(0x80000000 >>> r))\n\n const upd = page.bits[b]\n if (upd === prev) return false\n\n this._updateAllOne(page, b, upd)\n this._updateOneOne(page, b, upd)\n\n return true\n }\n\n get (index) {\n const page = this._getPage(index, false)\n if (!page) return false\n\n const i = this._path[0]\n const r = i & 31\n\n return (page.bits[i >>> 5] & (0x80000000 >>> r)) !== 0\n }\n\n iterator () {\n return new Iterator(this)\n }\n\n fill (val, start, end) {\n if (!start) start = 0\n if (val === true) return this._fillBit(true, start, end === 0 ? end : (end || this.length))\n if (val === false) return this._fillBit(false, start, end === 0 ? end : (end || this.length))\n this._fillBuffer(val, start, end === 0 ? end : (end || (start + 8 * val.length)))\n }\n\n grow () {\n if (this._page.level === 3) throw new Error('Cannot grow beyond ' + this.length)\n const page = this._page\n this._page = new Page(page.level + 1)\n this._page.children[0] = page\n if (this._page.level === 3) this.length = Number.MAX_SAFE_INTEGER\n else this.length *= 32768\n }\n\n _fillBuffer (buf, start, end) {\n if ((start & 7) || (end & 7)) throw new Error('Offsets must be a multiple of 8')\n\n start /= 8\n while (end > this.length) this.grow()\n end /= 8\n\n const offset = start\n var page = this._getPage(8 * start, true)\n\n while (start < end) {\n const delta = end - start < 4096 ? end - start : 4096\n const s = start - offset\n\n start += this._setPageBuffer(page, buf.subarray(s, s + delta), start & 1023)\n if (start !== end) page = this._nextPage(page, 8 * start)\n }\n }\n\n _fillBit (bit, start, end) {\n var page = this._getPage(start, bit)\n\n // TODO: this can be optimised a lot in the case of end - start > 32768\n // in that case clear levels of 32768 ** 2 instead etc\n\n while (start < end) {\n const delta = end - start < 32768 ? end - start : 32768\n start += this._setPageBits(page, bit, start & 32767, delta)\n if (start !== end) page = this._nextPage(page, start)\n }\n }\n\n _nextPage (page, start) {\n const i = ++this._offsets[page.level]\n return i === 32768\n ? this._getPage(start, true)\n : this._parents[page.level].children[i] || this._addPage(this._parents[page.level], i)\n }\n\n _setPageBuffer (page, buf, start) {\n new Uint8Array(page.bits.buffer, page.bits.byteOffset, page.bits.length * 4).set(buf, start)\n start >>>= 2\n this._update(page, start, start + (buf.length >>> 2) + (buf.length & 3 ? 1 : 0))\n return buf.length\n }\n\n _setPageBits (page, bit, start, end) {\n const s = start >>> 5\n const e = end >>> 5\n const sm = 0xffffffff >>> (start & 31)\n const em = ~(0xffffffff >>> (end & 31))\n\n if (s === e) {\n page.bits[s] = bit\n ? page.bits[s] | (sm & em)\n : page.bits[s] & ~(sm & em)\n this._update(page, s, s + 1)\n return end - start\n }\n\n page.bits[s] = bit\n ? page.bits[s] | sm\n : page.bits[s] & (~sm)\n\n if (e - s > 2) page.bits.fill(bit ? 0xffffffff : 0, s + 1, e - 1)\n\n if (e === 1024) {\n page.bits[e - 1] = bit ? 0xffffffff : 0\n this._update(page, s, e)\n return end - start\n }\n\n page.bits[e] = bit\n ? page.bits[e] | em\n : page.bits[e] & (~em)\n\n this._update(page, s, e + 1)\n return end - start\n }\n\n _update (page, start, end) {\n for (; start < end; start++) {\n const upd = page.bits[start]\n this._updateAllOne(page, start, upd)\n this._updateOneOne(page, start, upd)\n }\n }\n\n _updateAllOne (page, b, upd) {\n var i = 1\n\n do {\n for (; i < 3; i++) {\n const buf = page.allOne[i]\n const r = b & 31\n const prev = buf[b >>>= 5]\n buf[b] = upd === 0xffffffff\n ? (prev | (0x80000000 >>> r))\n : (prev & ~(0x80000000 >>> r))\n upd = buf[b]\n if (upd === prev) return\n }\n\n b += this._offsets[page.level]\n page = this._parents[page.level]\n i = 0\n } while (page)\n }\n\n _updateOneOne (page, b, upd) {\n var i = 1\n\n do {\n for (; i < 3; i++) {\n const buf = page.oneOne[i]\n const r = b & 31\n const prev = buf[b >>>= 5]\n buf[b] = upd !== 0\n ? (prev | (0x80000000 >>> r))\n : (prev & ~(0x80000000 >>> r))\n upd = buf[b]\n if (upd === prev) return\n }\n\n b += this._offsets[page.level]\n page = this._parents[page.level]\n i = 0\n\n if (upd === 0 && page) {\n // all zeros, non root -> free page\n page.children[this._offsets[page.level - 1]] = undefined\n }\n } while (page)\n }\n\n _getPage (index, createIfMissing) {\n factor(index, this._path)\n\n while (index >= this.length) {\n if (!createIfMissing) return null\n this.grow()\n }\n\n var page = this._page\n\n for (var i = page.level; i > 0 && page; i--) {\n const p = this._path[i]\n this._parents[i - 1] = page\n page = page.children[p] || (createIfMissing ? this._addPage(page, p) : null)\n }\n\n return page\n }\n\n _addPage (page, i) {\n this._allocs++\n page = page.children[i] = new Page(page.level - 1)\n return page\n }\n}\n\nclass Iterator {\n constructor (bitfield) {\n this._bitfield = bitfield\n this._path = new Uint16Array(5)\n this._offsets = new Uint16Array(this._path.buffer, this._path.byteOffset + 2, 4)\n this._parents = new Array(4).fill(null)\n this._page = null\n this._allocs = bitfield._allocs\n\n this.seek(0)\n }\n\n seek (index) {\n this._allocs = this._bitfield._allocs\n\n if (index >= this._bitfield.length) {\n this._page = null\n return this\n }\n\n factor(index, this._path)\n\n this._page = this._bitfield._page\n for (var i = this._page.level; i > 0; i--) {\n this._parents[i - 1] = this._page\n this._page = this._page.children[this._path[i]] || ZEROS[i - 1]\n }\n\n return this\n }\n\n next (bit) {\n return bit ? this.nextTrue() : this.nextFalse()\n }\n\n nextFalse () {\n if (this._allocs !== this._bitfield._allocs) {\n // If a page has been alloced while we are iterating\n // and we have a zero page in our path we need to reseek\n // in case that page has been overwritten\n this.seek(defactor(this._path))\n }\n\n var page = this._page\n var b = this._path[0]\n var mask = MASK_INCL\n\n while (page) {\n for (var i = 0; i < 3; i++) {\n const r = b & 31\n const clz = Math.clz32((~page.allOne[i][b >>>= 5]) & mask[r])\n if (clz !== 32) return this._downLeftFalse(page, i, b, clz)\n mask = MASK\n }\n\n b = this._offsets[page.level]\n page = this._parents[page.level]\n }\n\n return -1\n }\n\n _downLeftFalse (page, i, b, clz) {\n while (true) {\n while (i) {\n b = (b << 5) + clz\n clz = Math.clz32(~page.allOne[--i][b])\n }\n\n b = (b << 5) + clz\n\n if (!page.level) break\n\n this._parents[page.level - 1] = page\n this._path[page.level] = b\n\n page = page.children[b]\n i = 3\n clz = b = 0\n }\n\n this._page = page\n this._path[0] = b\n\n return this._inc()\n }\n\n nextTrue () {\n var page = this._page\n var b = this._path[0]\n var mask = MASK_INCL\n\n while (page) {\n for (var i = 0; i < 3; i++) {\n const r = b & 31\n const clz = Math.clz32(page.oneOne[i][b >>>= 5] & mask[r])\n if (clz !== 32) return this._downLeftTrue(page, i, b, clz)\n mask = MASK\n }\n\n b = this._offsets[page.level]\n page = this._parents[page.level]\n }\n\n return -1\n }\n\n _downLeftTrue (page, i, b, clz) {\n while (true) {\n while (i) {\n b = (b << 5) + clz\n clz = Math.clz32(page.oneOne[--i][b])\n }\n\n b = (b << 5) + clz\n\n if (!page.level) break\n\n this._parents[page.level - 1] = page\n this._path[page.level] = b\n\n page = page.children[b]\n i = 3\n clz = b = 0\n }\n\n this._page = page\n this._path[0] = b\n\n return this._inc()\n }\n\n _inc () {\n const n = defactor(this._path)\n if (this._path[0] < 32767) this._path[0]++\n else this.seek(n + 1)\n return n\n }\n}\n\nfunction defactor (out) {\n return ((((out[3] * 32768 + out[2]) * 32768) + out[1]) * 32768) + out[0]\n}\n\nfunction factor (n, out) {\n n = (n - (out[0] = (n & 32767))) / 32768\n n = (n - (out[1] = (n & 32767))) / 32768\n out[3] = ((n - (out[2] = (n & 32767))) / 32768) & 32767\n}\n", "var Protocol = require('hypercore-protocol')\nvar timeout = require('timeout-refresh')\nvar bitfield = require('fast-bitfield')\nvar set = require('unordered-set')\nvar rle = require('bitfield-rle').align(4)\nvar treeIndex = require('./tree-index')\n\nvar EMPTY = new Uint8Array(1024)\n\nmodule.exports = replicate\n\nfunction replicate (feed, initiator, opts) {\n feed.ifAvailable.wait()\n var stream = Protocol.isProtocolStream(initiator) ? initiator : opts.stream\n\n if (!stream) {\n if (!opts.keyPair) opts.keyPair = feed.noiseKeyPair\n stream = new Protocol(initiator, opts)\n }\n\n if (feed.opened) onready(null)\n else feed.ready(onready)\n\n return stream\n\n function onready (err) {\n feed.ifAvailable.continue()\n\n if (err) return stream.destroy(err)\n if (stream.destroyed) return\n if (stream.opened(feed.key)) return\n\n if (opts.noise !== false && opts.onfeedauthenticate) {\n if (!stream.remotePublicKey) {\n feed.ifAvailable.wait()\n stream.setMaxListeners(0)\n stream.on('close', onhandshake)\n stream.on('handshake', onhandshake)\n return\n }\n feedauthenticate()\n return\n }\n replicatePeer()\n }\n\n function onhandshake () {\n feed.ifAvailable.continue()\n stream.off('close', onhandshake)\n stream.off('handshake', onhandshake)\n feedauthenticate()\n }\n\n function feedauthenticate () {\n if (stream.destroyed) return\n if (stream.opened(feed.key)) return\n feed.ifAvailable.wait()\n opts.onfeedauthenticate(feed, stream.remotePublicKey, function (err) {\n feed.ifAvailable.continue()\n if (stream.destroyed) return\n if (stream.opened(feed.key)) return\n if (err) {\n stream.close(feed.discoveryKey)\n return\n }\n replicatePeer()\n })\n }\n\n function replicatePeer () {\n if (opts.noise !== false) {\n if (stream.remoteOpened(feed.key) && !stream.remoteVerified(feed.key)) {\n stream.close(feed.discoveryKey)\n return\n }\n }\n\n var peer = new Peer(feed, opts)\n\n peer.feed = feed\n peer.stream = stream.open(feed.key, peer)\n\n stream.setMaxListeners(0)\n peer.ready()\n feed.emit('replicating', stream)\n }\n}\n\nfunction Peer (feed, opts) {\n if (opts.extensions) throw new Error('Per peer extensions is not supported. Use feed.registerExtension instead')\n\n this.feed = feed\n this.stream = null // set by replicate just after creation\n this.wants = bitfield()\n this.remoteBitfield = bitfield()\n this.remoteLength = 0\n this.remoteWant = false\n this.remoteTree = null\n this.remoteAck = false\n this.remoteOpened = false\n this.live = !!opts.live\n this.sparse = feed.sparse\n this.ack = !!opts.ack\n\n this.remoteDownloading = true\n this.remoteUploading = true\n this.remoteExtensions = feed.extensions.remote()\n this.downloading = typeof opts.download === 'boolean' ? opts.download : feed.downloading\n this.uploading = typeof opts.upload === 'boolean' ? opts.upload : feed.uploading\n\n this.updated = false\n\n this.maxRequests = opts.maxRequests || feed.maxRequests || 16\n this.urgentRequests = this.maxRequests + 16\n this.inflightRequests = []\n this.inflightWants = 0\n\n this._index = -1\n this._lastBytes = 0\n this._first = true\n this._closed = false\n this._destroyed = false\n this._defaultDownloading = this.downloading\n this._iterator = this.remoteBitfield.iterator()\n this._requestTimeout = null\n\n this.stats = !opts.stats ? null : {\n uploadedBytes: 0,\n uploadedBlocks: 0,\n downloadedBytes: 0,\n downloadedBlocks: 0\n }\n}\n\nObject.defineProperty(Peer.prototype, 'remoteAddress', {\n enumerable: true,\n get: function () {\n return this.stream.stream.remoteAddress\n }\n})\n\nObject.defineProperty(Peer.prototype, 'remoteType', {\n enumerable: true,\n get: function () {\n return this.stream.stream.remoteType\n }\n})\n\nObject.defineProperty(Peer.prototype, 'remotePublicKey', {\n enumerable: true,\n get: function () {\n return this.stream.state.remotePublicKey\n }\n})\n\nPeer.prototype.onwant = function (want) {\n if (!this.uploading) return\n // We only reploy to multipla of 8192 in terms of offsets and lengths for want messages\n // since this is much easier for the bitfield, in terms of paging.\n if ((want.start & 8191) || (want.length & 8191)) return\n if (!this.remoteWant && this.feed.length && this.feed.bitfield.get(this.feed.length - 1)) {\n // Eagerly send the length of the feed to the otherside\n // TODO: only send this if the remote is not wanting a region\n // where this is contained in\n this.stream.have({ start: this.feed.length - 1 })\n }\n this.remoteWant = true\n var rle = this.feed.bitfield.compress(want.start, want.length)\n this.stream.have({ start: want.start, length: want.length, bitfield: rle })\n}\n\nPeer.prototype.ondata = function (data) {\n var self = this\n\n // Ignore unrequested messages unless we allow push\n // TODO: would be better to check if the byte range was requested instead, but this works fine\n var allowPush = this.feed.allowPush || !data.value\n if (!allowPush && !this.feed._reserved.get(data.index)) {\n // If we do not have this block, send back unhave message for this index,\n // to let the remote know we rejected it.\n // TODO: we might want to have some \"unwanted push\" threshold to punish spammers\n if (!self.feed.bitfield.get(data.index)) self.unhave({ start: data.index })\n self._clear(data.index, !data.value)\n return\n }\n\n this.feed._putBuffer(data.index, data.value, data, this, function (err) {\n if (err) return self.destroy(err)\n if (data.value) self.remoteBitfield.set(data.index, false)\n if (self.remoteAck) {\n // Send acknowledgement.\n // In the future this could batch several ACKs at once\n self.stream.have({ start: data.index, length: 1, ack: true })\n }\n if (self.stats && data.value) {\n self.stats.downloadedBlocks += 1\n self.stats.downloadedBytes += data.value.length\n }\n self._clear(data.index, !data.value)\n })\n}\n\nPeer.prototype._clear = function (index, hash) {\n // TODO: optimize me (no splice and do not run through all ...)\n for (var i = 0; i < this.inflightRequests.length; i++) {\n if (this.inflightRequests[i].index === index) {\n if (this._requestTimeout !== null) this._requestTimeout.refresh()\n this.inflightRequests.splice(i, 1)\n i--\n }\n }\n\n this.feed._reserved.set(index, false)\n // TODO: only update all if we have overlapping selections\n this.feed._updatePeers()\n\n if (this.inflightRequests.length === 0 && this._requestTimeout !== null) {\n this._requestTimeout.destroy()\n this._requestTimeout = null\n }\n}\n\nPeer.prototype.onrequest = function (request) {\n if (!this.uploading) return\n if (request.bytes) return this._onbytes(request)\n\n // lazily instantiate the remote tree\n if (!this.remoteTree) this.remoteTree = treeIndex()\n\n var self = this\n var opts = { digest: request.nodes, hash: request.hash, tree: this.remoteTree }\n\n this.feed.proof(request.index, opts, onproof)\n\n function onproof (err, proof) {\n if (err) return self.destroy(err)\n if (request.hash) onvalue(null, null)\n else if (self.feed.bitfield.get(request.index)) self.feed._getBuffer(request.index, onvalue)\n\n function onvalue (err, value) {\n if (!self.uploading) return\n if (err) return self.destroy(err)\n\n if (value) {\n if (self.stats) {\n self.stats.uploadedBlocks += 1\n self.stats.uploadedBytes += value.length\n self.feed._stats.uploadedBlocks += 1\n self.feed._stats.uploadedBytes += value.length\n }\n self.feed.emit('upload', request.index, value, self)\n }\n\n // TODO: prob not needed with new bitfield\n if (request.index + 1 > self.remoteLength) {\n self.remoteLength = request.index + 1\n self._updateEnd()\n }\n\n self.stream.data({\n index: request.index,\n value: value,\n nodes: proof.nodes,\n signature: proof.signature\n })\n }\n }\n}\n\nPeer.prototype._updateOptions = function () {\n if (this.ack || this.feed.extensions.length) {\n this.stream.options({\n ack: this.ack,\n extensions: this.feed.extensions.names()\n })\n }\n}\n\nPeer.prototype.setDownloading = function (downloading) {\n if (downloading === this.downloading) return\n this.downloading = downloading\n this.stream.status({\n downloading,\n uploading: this.uploading\n })\n this.update()\n}\n\nPeer.prototype.setUploading = function (uploading) {\n if (uploading === this.uploading) return\n this.uploading = uploading\n this.stream.status({\n downloading: this.downloading,\n uploading\n })\n this.update()\n}\n\nPeer.prototype._onbytes = function (request) {\n var self = this\n\n this.feed.seek(request.bytes, { wait: false }, function (err, index) {\n if (err) {\n request.bytes = 0\n self.onrequest(request)\n return\n }\n\n // quick'n'dirty filter for parallel bytes requests\n // it does not matter that this doesn't catch ALL parallel requests - just a bandwidth optimization\n if (self._lastBytes === request.bytes) return\n self._lastBytes = request.bytes\n\n request.bytes = 0\n request.index = index\n request.nodes = 0\n\n self.onrequest(request)\n })\n}\n\nPeer.prototype._onrequesttimeout = function () {\n this._requestTimeout = null\n if (!this.inflightRequests.length) return\n\n var first = this.inflightRequests[0]\n\n if (first.hash ? this.feed.tree.get(2 * first.index) : this.feed.bitfield.get(first.index)) {\n // prob a bytes response\n this.inflightRequests.shift()\n this.feed._reserved.set(first.index, false)\n\n if (this.stream.stream.timeout) {\n this._requestTimeout = timeout(this.stream.stream.timeout.ms, this._onrequesttimeout, this)\n }\n return\n }\n\n this.destroy(new Error('Request timeout'))\n}\n\nPeer.prototype.onhave = function (have) {\n this.feed.emit('peer-ack', this, have)\n\n if (this.ack && have.ack && !have.bitfield && this.feed.bitfield.get(have.start)) {\n this.stream.stream.emit('ack', have)\n return\n }\n\n var updated = this._first\n if (this._first) this._first = false\n\n // In this impl, we only sent WANTs for 1024 * 1024 length ranges\n // so if we get a HAVE for that it is a reply to a WANT.\n if (have.length === 1024 * 1024 && this.inflightWants > 0) {\n this.feed.ifAvailable.continue()\n this.inflightWants--\n }\n\n if (have.bitfield) { // TODO: handle start !== 0\n if (have.length === 0 || have.length === 1) { // length === 1 is for backwards compat\n this.wants = null // we are in backwards compat mode where we subscribe everything\n }\n var buf = rle.decode(have.bitfield)\n var bits = buf.length * 8\n remoteAndNotLocal(this.feed.bitfield, buf, this.remoteBitfield.littleEndian, have.start)\n this.remoteBitfield.fill(buf, have.start)\n if (bits > this.remoteLength) {\n this.remoteLength = this.remoteBitfield.last() + 1\n updated = true\n }\n } else {\n // TODO: if len > something simply copy a 0b1111... buffer to the bitfield\n\n var start = have.start\n var len = have.length || 1\n\n while (len--) this.remoteBitfield.set(start, !this.feed.bitfield.get(start++))\n if (start > this.remoteLength) {\n this.remoteLength = start\n updated = true\n }\n }\n\n if (updated) {\n this.updated = true\n this.feed.emit('remote-update', this)\n }\n\n this._updateEnd()\n this.update()\n}\n\nPeer.prototype._updateEnd = function () {\n if (this.live || this.feed.sparse || !this.feed._selections.length) return\n\n var sel = this.feed._selections[0]\n var remoteLength = this.feed.length || -1\n\n for (var i = 0; i < this.feed.peers.length; i++) {\n if (this.feed.peers[i].remoteLength > remoteLength) {\n remoteLength = this.feed.peers[i].remoteLength\n }\n }\n\n sel.end = remoteLength\n}\n\nPeer.prototype.onextension = function (id, message) {\n this.remoteExtensions.onmessage(id, message, this)\n}\n\nPeer.prototype.onstatus = function (info) {\n this.remoteUploading = info.uploading\n this.remoteDownloading = info.downloading\n\n if (!info.uploading) {\n while (this.inflightRequests.length) {\n const data = this.inflightRequests[0]\n this._clear(data.index, !data.value)\n }\n for (var i = 0; i < this.inflightWants; i++) {\n this.feed.ifAvailable.continue()\n }\n this.inflightWants = 0\n this.wants = bitfield()\n }\n this.update()\n if (info.downloading || this.live) return\n if (this.feed._selections.length && this.downloading) return\n this._autoEnd()\n}\n\nPeer.prototype._autoEnd = function () {\n if (this.uploading && this.remoteDownloading) return\n if ((this.sparse || this.live) && (this.remoteUploading || this.downloading)) return\n this.end()\n}\n\nPeer.prototype.onunhave = function (unhave) {\n var start = unhave.start\n var len = unhave.length || 1\n\n if (start === 0 && len >= this.remoteLength) {\n this.remoteLength = 0\n this.remoteBitfield = bitfield()\n return\n }\n\n while (len--) this.remoteBitfield.set(start++, false)\n}\n\nPeer.prototype.onunwant =\nPeer.prototype.oncancel = function () {\n // TODO: impl all of me\n}\n\nPeer.prototype.onclose = function () {\n this._close()\n}\n\nPeer.prototype.have = function (have) { // called by feed\n if (this.stream && this.remoteWant) this.stream.have(have)\n var start = have.start\n var len = have.length\n while (len--) this.remoteBitfield.set(start++, false)\n}\n\nPeer.prototype.unhave = function (unhave) { // called by feed\n if (this.stream && this.remoteWant) this.stream.unhave(unhave)\n}\n\nPeer.prototype.haveBytes = function (bytes) { // called by feed\n for (var i = 0; i < this.inflightRequests.length; i++) {\n if (this.inflightRequests[i].bytes === bytes) {\n this.feed._reserved.set(this.inflightRequests[i].index, false)\n this.inflightRequests.splice(i, 1)\n i--\n }\n }\n\n this.update()\n\n if (this.inflightRequests.length === 0 && this._requestTimeout !== null) {\n this._requestTimeout.destroy()\n this._requestTimeout = null\n }\n}\n\nPeer.prototype.update = function () {\n // do nothing\n while (this._update()) {}\n this._sendWantsMaybe()\n}\n\nPeer.prototype._update = function () {\n // should return true if mutated false if not\n if (!this.downloading || !this.remoteUploading) return false\n var selections = this.feed._selections\n var waiting = this.feed._waiting\n var wlen = waiting.length\n var slen = selections.length\n var inflight = this.inflightRequests.length\n var offset = 0\n var i = 0\n\n // TODO: less duplicate code here\n // TODO: re-add priority levels\n\n while (inflight < this.urgentRequests) {\n offset = Math.floor(Math.random() * waiting.length)\n\n for (i = 0; i < waiting.length; i++) {\n var w = waiting[offset++]\n if (offset === waiting.length) offset = 0\n\n this._downloadWaiting(w)\n if (waiting.length !== wlen) return true // mutated\n if (this.inflightRequests.length >= this.urgentRequests) return false\n }\n if (inflight === this.inflightRequests.length) break\n inflight = this.inflightRequests.length\n }\n\n while (inflight < this.maxRequests) {\n offset = Math.floor(Math.random() * selections.length)\n\n for (i = 0; i < selections.length; i++) {\n var s = selections[offset++]\n if (offset === selections.length) offset = 0\n\n if (!s.iterator) s.iterator = this.feed.bitfield.iterator(s.start, s.end)\n if (s.blocks) this._downloadBlocks(s)\n else this._downloadRange(s)\n if (selections.length !== slen) return true // mutated\n if (this.inflightRequests.length >= this.maxRequests) return false\n }\n\n if (inflight === this.inflightRequests.length) return false\n inflight = this.inflightRequests.length\n }\n\n return false\n}\n\nPeer.prototype.onopen = function () {\n this.feed.ifAvailable.continue()\n this.remoteOpened = true\n\n this._updateOptions()\n\n if (!this.uploading || !this.downloading) {\n this.stream.status({\n uploading: this.uploading,\n downloading: this.downloading\n })\n }\n\n this._sendWants()\n this.feed.emit('peer-open', this)\n}\n\nPeer.prototype.onoptions = function (options) {\n this.remoteAck = options.ack\n this.remoteExtensions.update(options.extensions)\n}\n\nPeer.prototype.ready = function () {\n this.feed.ifAvailable.wait() // continued by onopen or close\n set.add(this.feed.peers, this)\n this.feed.emit('peer-add', this)\n if (this.stream.remoteOpened) this.onopen()\n}\n\nPeer.prototype.end = function () {\n if (!this.downloading && !this.remoteDownloading && !this.live) {\n if (!this._defaultDownloading) {\n this.stream.status({ downloading: false, uploading: false })\n }\n this._close()\n return\n }\n if (!this._closed) {\n this._closed = true\n this.downloading = false\n this.stream.status({ downloading: false, uploading: true })\n } else {\n if (!this.live) this._close()\n }\n}\n\nPeer.prototype._close = function () {\n if (!this._destroyed) {\n this._destroyed = true\n this.stream.close()\n }\n if (this._index === -1) return\n set.remove(this.feed.peers, this)\n this._index = -1\n for (var i = 0; i < this.inflightRequests.length; i++) {\n this.feed._reserved.set(this.inflightRequests[i].index, false)\n }\n if (this._requestTimeout !== null) {\n this._requestTimeout.destroy()\n this._requestTimeout = null\n }\n this._updateEnd()\n this.remoteWant = false\n this.feed._updatePeers()\n this.feed.emit('peer-remove', this)\n for (i = 0; i < this.inflightWants; i++) {\n this.feed.ifAvailable.continue()\n }\n if (!this.remoteOpened) {\n this.feed.ifAvailable.continue()\n }\n}\n\nPeer.prototype.destroy = function (err) {\n if (this._index === -1 || this._destroyed) return\n this.stream.destroy(err)\n this._destroyed = true\n this._close()\n}\n\nPeer.prototype._sendWantsMaybe = function () {\n if (this.inflightRequests.length < this.urgentRequests) this._sendWants()\n}\n\nPeer.prototype._sendWants = function () {\n if (!this.wants || !this.downloading || !this.remoteOpened || !this.remoteUploading) return\n if (this.inflightWants >= 16) return\n\n var i\n\n for (i = 0; i < this.feed._waiting.length; i++) {\n var w = this.feed._waiting[i]\n if (w.index === -1) this._sendWantRange(w)\n else this._sendWant(w.index)\n if (this.inflightWants >= 16) return\n }\n\n for (i = 0; i < this.feed._selections.length; i++) {\n var s = this.feed._selections[i]\n this._sendWantRange(s)\n if (this.inflightWants >= 16) return\n }\n\n // always sub to the first range for now, usually what you want\n this._sendWant(0)\n}\n\nPeer.prototype._sendWantRange = function (s) {\n if (s.blocks) {\n if (!s.selected) s.selected = new WeakSet()\n if (s.selected.has(this)) return\n s.selected.add(this)\n for (const block of s.blocks) {\n this._sendWant(block)\n }\n return\n }\n\n var want = s.start ? 1024 * 1024 * Math.floor(s.start / 1024 / 1024) : 0\n\n while (true) {\n if (want >= this.remoteLength) return\n if (s.end !== -1 && want >= s.end) return\n\n if (this._sendWant(want)) return\n\n // check if region is already selected - if so try next one\n if (!this.wants.get(Math.floor(want / 1024 / 1024))) return\n want += 1024 * 1024\n }\n}\n\nPeer.prototype._sendWant = function (index) {\n var len = 1024 * 1024\n var j = Math.floor(index / len)\n if (this.wants.get(j)) return false\n this.wants.set(j, true)\n this.inflightWants++\n this.feed.ifAvailable.wait()\n this.stream.want({ start: j * len, length: len })\n return true\n}\n\nPeer.prototype._downloadWaiting = function (wait) {\n if (!wait.bytes) {\n if (!this.remoteBitfield.get(wait.index) || !this.feed._reserved.set(wait.index, true)) {\n if (!wait.update || this.feed._reserved.get(wait.index)) return\n const i = this._iterator.seek(wait.index).next(true)\n if (i === -1 || !this.feed._reserved.set(i, true)) return\n wait.index = i\n }\n this._request(wait.index, 0, wait.hash === true)\n return\n }\n\n this._downloadRange(wait)\n}\n\nPeer.prototype._downloadBlocks = function (range) {\n while (range.blocksDownloaded < range.blocks.length) {\n const blk = range.blocks[range.blocksDownloaded]\n if (!this.feed.bitfield.get(blk)) break\n range.blocksDownloaded++\n }\n\n if (range.blocksDownloaded >= range.blocks.length) {\n set.remove(this.feed._selections, range)\n range.callback(null)\n return\n }\n\n for (var i = range.blocksDownloaded; i < range.blocks.length; i++) {\n const blk = range.blocks[i]\n if (this.remoteBitfield.get(blk) && this.feed._reserved.set(blk, true)) {\n range.requested++\n this._request(blk, 0, false)\n return\n }\n }\n}\n\nPeer.prototype._downloadRange = function (range) {\n if (!range.iterator) range.iterator = this.feed.bitfield.iterator(range.start, range.end)\n\n var reserved = this.feed._reserved\n var ite = this._iterator\n var wantedEnd = Math.min(range.end === -1 ? this.remoteLength : range.end, this.remoteLength)\n\n var i = range.linear ? ite.seek(range.start).next(true) : nextRandom(ite, range.start, wantedEnd)\n var start = i\n\n if (i === -1 || i >= wantedEnd) {\n if (!range.bytes && range.end > -1 && this.feed.length >= range.end && range.iterator.seek(0).next() === -1) {\n set.remove(this.feed._selections, range)\n range.callback(null)\n if (!this.live && !this.sparse && !this.feed._selections.length) this.end()\n }\n return\n }\n\n while ((range.hash && this.feed.tree.get(2 * i)) || !reserved.set(i, true)) {\n i = ite.next(true)\n\n if (i > -1 && i < wantedEnd) {\n // check this index\n continue\n }\n\n if (!range.linear && start !== 0) {\n // retry from the beginning since we are iterating randomly and started !== 0\n i = ite.seek(range.start).next(true)\n start = 0\n if (i > -1 && i < wantedEnd) continue\n }\n\n // we have checked all indexes.\n // if we are looking for hashes we should check if we have all now (first check only checks blocks)\n if (range.hash) {\n // quick'n'dirty check if have all hashes - can be optimized be checking only tree roots\n // but we don't really request long ranges of hashes so yolo\n for (var j = range.start; j < wantedEnd; j++) {\n if (!this.feed.tree.get(2 * j)) return\n }\n if (!range.bytes) {\n set.remove(this.feed._selections, range)\n range.callback(null)\n }\n }\n\n // exit the update loop - nothing to do\n return\n }\n\n range.requested++\n this._request(i, range.bytes || 0, range.hash)\n}\n\nPeer.prototype._request = function (index, bytes, hash) {\n var request = {\n bytes: bytes,\n index: index,\n hash: hash,\n nodes: this.feed.digest(index)\n }\n\n if (this._requestTimeout === null && this.stream.stream.timeout) {\n this._requestTimeout = timeout(this.stream.stream.timeout.ms, this._onrequesttimeout, this)\n }\n this.inflightRequests.push(request)\n this.stream.request(request)\n}\n\nPeer.prototype.extension = function (id, message) {\n this.stream.extension(id, message)\n}\n\nfunction createView (page) {\n var buf = page ? page.buffer : EMPTY\n return new DataView(buf.buffer, buf.byteOffset, 1024)\n}\n\nfunction remoteAndNotLocal (local, buf, le, start) {\n var remote = new DataView(buf.buffer, buf.byteOffset)\n var len = Math.floor(buf.length / 4)\n var arr = new Uint32Array(buf.buffer, buf.byteOffset, len)\n var p = start / 8192 // 8192 is bits per bitfield page\n var l = 0\n var page = createView(local.pages.get(p++, true))\n\n for (var i = 0; i < len; i++) {\n arr[i] = remote.getUint32(4 * i, !le) & ~page.getUint32(4 * (l++), !le)\n\n if (l === 256) {\n page = createView(local.pages.get(p++, true))\n l = 0\n }\n }\n}\n\nfunction nextRandom (ite, start, end) {\n var len = end - start\n var i = ite.seek(Math.floor(Math.random() * len) + start).next(true)\n return i === -1 || i >= end ? ite.seek(start).next(true) : i\n}\n", "// Copy of index.js that extends from EventEmitter\n\nconst events = require('events')\nconst inherits = require('inherits')\n\nconst opening = Symbol('opening queue')\nconst preclosing = Symbol('closing when inactive')\nconst closing = Symbol('closing queue')\nconst sync = Symbol('sync')\nconst fastClose = Symbol('fast close')\n\nmodule.exports = Nanoresource\n\nfunction Nanoresource (opts) {\n if (!(this instanceof Nanoresource)) return new Nanoresource(opts)\n events.EventEmitter.call(this)\n\n if (!opts) opts = {}\n if (opts.open) this._open = opts.open\n if (opts.close) this._close = opts.close\n\n this.opening = false\n this.opened = false\n this.closing = false\n this.closed = false\n this.actives = 0\n\n this[opening] = null\n this[preclosing] = null\n this[closing] = null\n this[sync] = false\n this[fastClose] = true\n}\n\ninherits(Nanoresource, events.EventEmitter)\n\nNanoresource.prototype._open = function (cb) {\n cb(null)\n}\n\nNanoresource.prototype._close = function (cb) {\n cb(null)\n}\n\nNanoresource.prototype.open = function (cb) {\n if (!cb) cb = noop\n\n if (this[closing] || this.closed) return process.nextTick(cb, new Error('Resource is closed'))\n if (this.opened) return process.nextTick(cb)\n\n if (this[opening]) {\n this[opening].push(cb)\n return\n }\n\n this.opening = true\n this[opening] = [cb]\n this[sync] = true\n this._open(onopen.bind(this))\n this[sync] = false\n}\n\nNanoresource.prototype.active = function (cb) {\n if ((this[fastClose] && this[preclosing]) || this[closing] || this.closed) {\n if (cb) process.nextTick(cb, new Error('Resource is closed'))\n return false\n }\n this.actives++\n return true\n}\n\nNanoresource.prototype.inactive = function (cb, err, val) {\n if (!--this.actives) {\n const queue = this[preclosing]\n if (queue) {\n this[preclosing] = null\n while (queue.length) this.close(queue.shift())\n }\n }\n\n if (cb) cb(err, val)\n}\n\nNanoresource.prototype.close = function (allowActive, cb) {\n if (typeof allowActive === 'function') return this.close(false, allowActive)\n if (!cb) cb = noop\n\n if (allowActive) this[fastClose] = false\n\n if (this.closed) return process.nextTick(cb)\n\n if (this.actives || this[opening]) {\n if (!this[preclosing]) this[preclosing] = []\n this[preclosing].push(cb)\n return\n }\n\n if (!this.opened) {\n this.closed = true\n process.nextTick(cb)\n return\n }\n\n if (this[closing]) {\n this[closing].push(cb)\n return\n }\n\n this.closing = true\n this[closing] = [cb]\n this[sync] = true\n this._close(onclose.bind(this))\n this[sync] = false\n}\n\nfunction onopen (err) {\n if (this[sync]) return process.nextTick(onopen.bind(this), err)\n\n const oqueue = this[opening]\n this[opening] = null\n this.opening = false\n this.opened = !err\n\n while (oqueue.length) oqueue.shift()(err)\n\n const cqueue = this[preclosing]\n if (cqueue && !this.actives) {\n this[preclosing] = null\n while (cqueue.length) this.close(cqueue.shift())\n }\n}\n\nfunction onclose (err) {\n if (this[sync]) return process.nextTick(onclose.bind(this), err)\n const queue = this[closing]\n this.closing = false\n this[closing] = null\n this.closed = !err\n while (queue.length) queue.shift()(err)\n}\n\nfunction noop () {}\n", "//\n// Copyright 2023 DXOS.org\n//\n\n// Empty module to stub packages that we know won't be used at runtime and can be replaces with a mock like this.\nmodule.exports = new Proxy(\n {},\n {\n get: (target, prop) => {\n throw new Error('Package has been stripped');\n },\n },\n);\n", "const { Writable, Readable } = require('streamx')\n\nclass WriteStream extends Writable {\n constructor (feed, opts) {\n super()\n\n this.feed = feed\n this.maxBlockSize = (opts && opts.maxBlockSize) || 0\n }\n\n _writev (batch, cb) {\n this.feed.append(this.maxBlockSize ? this._ensureMaxSize(batch) : batch, cb)\n }\n\n _ensureMaxSize (batch) {\n for (let i = 0; i < batch.length; i++) {\n let blk = batch[i]\n if (blk.length > this.maxBlockSize) {\n const chunked = []\n while (blk.length > this.maxBlockSize) {\n chunked.push(blk.slice(0, this.maxBlockSize))\n blk = blk.slice(this.maxBlockSize)\n }\n if (blk.length) chunked.push(blk)\n batch.splice(i, 1, ...chunked)\n i += chunked.length - 1\n }\n }\n return batch\n }\n}\n\nclass ReadStream extends Readable {\n constructor (feed, opts = {}) {\n super()\n\n this.feed = feed\n this.start = opts.start || 0\n this.end = typeof opts.end === 'number' ? opts.end : -1\n this.live = !!opts.live\n this.snapshot = opts.snapshot !== false\n this.tail = !!opts.tail\n this.index = this.start\n this.options = { wait: opts.wait !== false, ifAvailable: !!opts.ifAvailable, valueEncoding: opts.valueEncoding }\n }\n\n _open (cb) {\n this.feed.ready((err) => {\n if (err) return cb(err)\n if (this.end === -1) {\n if (this.live) this.end = Infinity\n else if (this.snapshot) this.end = this.feed.length\n if (this.start > this.end) this.push(null)\n }\n if (this.tail) this.start = this.feed.length\n this.index = this.start\n cb(null)\n })\n }\n\n _read (cb) {\n if (this.index === this.end || (this.end === -1 && this.index >= this.feed.length)) {\n this.push(null)\n return cb(null)\n }\n this.feed.get(this.index++, this.options, (err, block) => {\n if (err) return cb(err)\n this.push(block)\n cb(null)\n })\n }\n}\n\nmodule.exports = { WriteStream, ReadStream }\n", "var low = require('last-one-wins')\nvar remove = require('unordered-array-remove')\nvar set = require('unordered-set')\nvar MerkleGenerator = require('merkle-tree-stream/generator')\nvar flat = require('flat-tree')\nvar codecs = require('codecs')\nvar batcher = require('atomic-batcher')\nvar inherits = require('inherits')\nvar bitfield = require('./lib/bitfield')\nvar sparseBitfield = require('sparse-bitfield')\nvar treeIndex = require('./lib/tree-index')\nvar storage = require('./lib/storage')\nvar crypto = require('hypercore-crypto')\nvar inspect = require('inspect-custom-symbol')\nvar pretty = require('pretty-hash')\nvar Nanoguard = require('nanoguard')\nvar safeBufferEquals = require('./lib/safe-buffer-equals')\nvar replicate = require('./lib/replicate')\nvar Protocol = require('hypercore-protocol')\nvar Message = require('abstract-extension')\nvar Nanoresource = require('nanoresource/emitter')\nvar defaultStorage = require('hypercore-default-storage')\nvar { WriteStream, ReadStream } = require('hypercore-streams')\n\nclass Extension extends Message {\n broadcast (message) {\n const feed = this.local.handlers\n const buf = this.encoding.encode(message)\n let broadcasted = false\n for (const peer of feed.peers) {\n broadcasted = true\n peer.extension(this.id, buf)\n }\n return broadcasted\n }\n\n send (message, peer) {\n peer.extension(this.id, this.encode(message))\n }\n}\n\nvar defaultCrypto = {\n sign (data, sk, cb) {\n return cb(null, crypto.sign(data, sk))\n },\n verify (sig, data, pk, cb) {\n return cb(null, crypto.verify(sig, data, pk))\n }\n}\n\nmodule.exports = Feed\n\nfunction Feed (createStorage, key, opts) {\n if (!(this instanceof Feed)) return new Feed(createStorage, key, opts)\n Nanoresource.call(this)\n\n if (typeof createStorage === 'string') createStorage = defaultStorageDir(createStorage)\n if (typeof createStorage !== 'function') throw new Error('Storage should be a function or string')\n\n if (typeof key === 'string') key = Buffer.from(key, 'hex')\n\n if (!Buffer.isBuffer(key) && !opts) {\n opts = key\n key = null\n }\n\n if (!opts) opts = {}\n\n var self = this\n\n var secretKey = opts.secretKey || null\n if (typeof secretKey === 'string') secretKey = Buffer.from(secretKey, 'hex')\n\n this.noiseKeyPair = opts.noiseKeyPair || Protocol.keyPair()\n this.live = opts.live !== false\n this.sparse = !!opts.sparse\n this.length = 0\n this.byteLength = 0\n this.maxRequests = opts.maxRequests || 16\n this.key = key || opts.key || null\n this.discoveryKey = this.key && crypto.discoveryKey(this.key)\n this.secretKey = secretKey\n this.bitfield = null\n this.tree = null\n this.writable = !!opts.writable\n this.readable = true\n this.downloading = opts.downloading !== false\n this.uploading = opts.uploading !== false\n this.allowPush = !!opts.allowPush\n this.peers = []\n this.ifAvailable = new Nanoguard()\n this.extensions = Extension.createLocal(this) // set Feed as the handlers\n\n this.crypto = opts.crypto || defaultCrypto\n\n // hooks\n this._onwrite = opts.onwrite || null\n\n this._force = !!opts.force\n this._expectedLength = -1\n this._indexing = !!opts.indexing\n this._createIfMissing = opts.createIfMissing !== false\n this._overwrite = !!opts.overwrite\n this._storeSecretKey = opts.storeSecretKey !== false\n this._alwaysIfAvailable = !!opts.ifAvailable\n this._merkle = null\n this._storage = storage(createStorage, opts)\n this._batch = batcher(this._onwrite ? workHook : work)\n\n this.timeouts = opts.timeouts || {\n get (cb) {\n cb(null)\n },\n update (cb) {\n cb(null)\n }\n }\n\n this._seq = 0\n this._waiting = []\n this._selections = []\n this._reserved = sparseBitfield()\n this._synced = null\n this._downloadingSet = typeof opts.downloading === 'boolean'\n\n this._stats = (typeof opts.stats !== 'undefined' && !opts.stats) ? null : {\n downloadedBlocks: 0,\n downloadedBytes: 0,\n uploadedBlocks: 0,\n uploadedBytes: 0\n }\n\n this._codec = toCodec(opts.valueEncoding)\n this._sync = low(sync)\n if (!this.sparse) this.download({ start: 0, end: -1 })\n\n if (this.sparse && opts.eagerUpdate) {\n this.update(function loop (err) {\n if (err) self.emit('update-error', err)\n self.update(loop)\n })\n }\n\n // open it right away\n this.open(onerror)\n\n function onerror (err) {\n if (err) self.emit('error', err)\n }\n\n function workHook (values, cb) {\n if (!self._merkle) return self._reloadMerkleStateBeforeAppend(workHook, values, cb)\n self._appendHook(values, cb)\n }\n\n function work (values, cb) {\n if (!self._merkle) return self._reloadMerkleStateBeforeAppend(work, values, cb)\n self._append(values, cb)\n }\n\n function sync (_, cb) {\n self._syncBitfield(cb)\n }\n}\n\ninherits(Feed, Nanoresource)\n\nFeed.discoveryKey = crypto.discoveryKey\n\nFeed.prototype[inspect] = function (depth, opts) {\n var indent = ''\n if (typeof opts.indentationLvl === 'number') {\n while (indent.length < opts.indentationLvl) indent += ' '\n }\n return 'Hypercore(\\n' +\n indent + ' key: ' + opts.stylize((this.key && pretty(this.key)), 'string') + '\\n' +\n indent + ' discoveryKey: ' + opts.stylize((this.discoveryKey && pretty(this.discoveryKey)), 'string') + '\\n' +\n indent + ' opened: ' + opts.stylize(this.opened, 'boolean') + '\\n' +\n indent + ' sparse: ' + opts.stylize(this.sparse, 'boolean') + '\\n' +\n indent + ' writable: ' + opts.stylize(this.writable, 'boolean') + '\\n' +\n indent + ' length: ' + opts.stylize(this.length, 'number') + '\\n' +\n indent + ' byteLength: ' + opts.stylize(this.byteLength, 'number') + '\\n' +\n indent + ' peers: ' + opts.stylize(this.peers.length, 'number') + '\\n' +\n indent + ')'\n}\n\n// TODO: instead of using a getter, update on remote-update/add/remove\nObject.defineProperty(Feed.prototype, 'remoteLength', {\n enumerable: true,\n get: function () {\n var len = 0\n for (var i = 0; i < this.peers.length; i++) {\n var remoteLength = this.peers[i].remoteLength\n if (remoteLength > len) len = remoteLength\n }\n return len\n }\n})\n\nObject.defineProperty(Feed.prototype, 'stats', {\n enumerable: true,\n get: function () {\n if (!this._stats) return null\n var peerStats = []\n for (var i = 0; i < this.peers.length; i++) {\n var peer = this.peers[i]\n peerStats[i] = peer.stats\n }\n return {\n peers: peerStats,\n totals: this._stats\n }\n }\n})\n\nFeed.prototype.replicate = function (initiator, opts) {\n if ((!this._selections.length || this._selections[0].end !== -1) && !this.sparse && !(opts && opts.live)) {\n // hack!! proper fix is to refactor ./replicate to *not* clear our non-sparse selection\n this.download({ start: 0, end: -1 })\n }\n\n if (isOptions(initiator) && !opts) {\n opts = initiator\n initiator = opts.initiator\n }\n\n opts = opts || {}\n opts.stats = !!this._stats\n opts.noise = !(opts.noise === false && opts.encrypted === false)\n\n return replicate(this, initiator, opts)\n}\n\nFeed.prototype.registerExtension = function (name, handlers) {\n return this.extensions.add(name, handlers)\n}\n\nFeed.prototype.onextensionupdate = function () {\n for (const peer of this.peers) peer._updateOptions()\n}\n\nFeed.prototype.setDownloading = function (downloading) {\n if (this.downloading === downloading && this._downloadingSet) return\n this.downloading = downloading\n this._downloadingSet = true\n this.ready((err) => {\n if (err) return\n for (const peer of this.peers) peer.setDownloading(this.downloading)\n })\n}\n\nFeed.prototype.setUploading = function (uploading) {\n if (uploading === this.uploading) return\n this.uploading = uploading\n this.ready((err) => {\n if (err) return\n for (const peer of this.peers) peer.setUploading(this.uploading)\n })\n}\n\n// Alias the nanoresource open method\nFeed.prototype.ready = Feed.prototype.open\n\nFeed.prototype.update = function (opts, cb) {\n if (typeof opts === 'function') return this.update(-1, opts)\n if (typeof opts === 'number') opts = { minLength: opts }\n if (!opts) opts = {}\n if (!cb) cb = noop\n\n var self = this\n var len = typeof opts.minLength === 'number' ? opts.minLength : -1\n\n this.ready(function (err) {\n if (err) return cb(err)\n if (len === -1) len = self.length + 1\n if (self.length >= len) return cb(null)\n\n const ifAvailable = typeof opts.ifAvailable === 'boolean'\n ? opts.ifAvailable\n : self._alwaysIfAvailable\n\n if (ifAvailable && self.writable && !opts.force) return cb(new Error('No update available from peers'))\n if (self.writable) cb = self._writeStateReloader(cb)\n\n var w = {\n hash: opts.hash !== false,\n bytes: 0,\n index: len - 1,\n options: opts,\n update: true,\n callback: cb\n }\n\n self._waiting.push(w)\n if (ifAvailable) self._ifAvailable(w, len)\n self._updatePeers()\n })\n}\n\n// Used to hint to the update guard if it can bail early\nFeed.prototype.setExpectedLength = function (len) {\n this._expectedLength = len\n this.ready((err) => {\n if (err) return\n\n this.ifAvailable.ready(() => {\n this._expectedLength = -1\n })\n\n if (this._expectedLength === -1 || this._expectedLength > this.length) return\n\n for (const w of this._waiting) {\n if (w.update && w.ifAvailable) w.callback(new Error('Expected length is less than current length'))\n }\n })\n}\n\n// Beware! This might break your core if you share forks with other people through replication\nFeed.prototype.truncate = function (newLength, cb) {\n if (!cb) cb = noop\n const self = this\n\n this.ready(function (err) {\n if (err) return cb(err)\n\n self._roots(newLength, function (err, roots) {\n if (err) return cb(err)\n\n const oldLength = self.length\n if (oldLength <= newLength) return cb(null)\n\n let byteLength = 0\n for (const { size } of roots) byteLength += size\n\n for (let i = oldLength; i < newLength; i++) self.data.set(i, false)\n self.byteLength = byteLength\n self.length = newLength\n self.tree.truncate(2 * newLength)\n self._merkle = new MerkleGenerator(crypto, roots)\n\n self._sync(null, function (err) {\n if (err) return cb(err)\n self._storage.deleteSignatures(newLength, oldLength, cb)\n })\n })\n })\n}\n\nFeed.prototype._ifAvailable = function (w, minLength) {\n var cb = w.callback\n var called = false\n var self = this\n\n w.callback = done\n w.ifAvailable = true\n\n if (this._expectedLength > -1 && this._expectedLength <= this.length) {\n return process.nextTick(w.callback, new Error('Expected length is less than current length'))\n }\n\n this.timeouts.update(function () {\n if (self.closed) return done(new Error('Closed'))\n\n process.nextTick(readyNT, self.ifAvailable, function () {\n if (self.closed) return done(new Error('Closed'))\n if (self.length >= minLength || self.remoteLength >= minLength) return\n done(new Error('No update available from peers'))\n })\n })\n\n function done (err) {\n if (called) return\n called = true\n\n var i = self._waiting.indexOf(w)\n if (i > -1) remove(self._waiting, i)\n cb(err)\n }\n}\n\nFeed.prototype._ifAvailableGet = function (w) {\n var cb = w.callback\n var called = false\n var self = this\n\n w.callback = done\n\n self.timeouts.get(function () {\n if (self.closed) return done(new Error('Closed'))\n\n process.nextTick(readyNT, self.ifAvailable, function () {\n if (self.closed) return done(new Error('Closed'))\n\n for (var i = 0; i < self.peers.length; i++) {\n var peer = self.peers[i]\n if (peer.remoteBitfield.get(w.index)) return\n }\n done(new Error('Block not available from peers'))\n })\n })\n\n function done (err, data) {\n if (called) return\n called = true\n\n var i = self._waiting.indexOf(w)\n if (i > -1) remove(self._waiting, i)\n cb(err, data)\n }\n}\n\n// will reload the writable state. used by .update on a writable peer\nFeed.prototype._writeStateReloader = function (cb) {\n var self = this\n return function (err) {\n if (err) return cb(err)\n self._reloadMerkleState(cb)\n }\n}\n\nFeed.prototype._reloadMerkleState = function (cb) {\n var self = this\n\n this._roots(self.length, function (err, roots) {\n if (err) return cb(err)\n self._merkle = new MerkleGenerator(crypto, roots)\n cb(null)\n })\n}\n\nFeed.prototype._reloadMerkleStateBeforeAppend = function (work, values, cb) {\n this._reloadMerkleState(function (err) {\n if (err) return cb(err)\n work(values, cb)\n })\n}\n\nFeed.prototype._open = function (cb) {\n var self = this\n var generatedKey = false\n var retryOpen = true\n\n // TODO: clean up the duplicate code below ...\n\n this._storage.openKey(function (_, key) {\n if (key && !self._overwrite && !self.key) self.key = key\n\n if (!self.key && self.live) {\n var keyPair = crypto.keyPair()\n self.secretKey = keyPair.secretKey\n self.key = keyPair.publicKey\n generatedKey = true\n }\n\n self.discoveryKey = self.key && crypto.discoveryKey(self.key)\n self._storage.open({ key: self.key, discoveryKey: self.discoveryKey }, onopen)\n })\n\n function onopen (err, state) {\n if (err) return cb(err)\n\n // if no key but we have data do a bitfield reset since we cannot verify the data.\n if (!state.key && state.bitfield.length) {\n self._overwrite = true\n }\n\n if (self._force && state.key && self.key && Buffer.compare(state.key, self.key) !== 0) {\n self._overwrite = true\n }\n\n if (self._overwrite) {\n state.bitfield = []\n state.key = state.secretKey = null\n }\n\n self.bitfield = bitfield(state.bitfieldPageSize, state.bitfield)\n self.tree = treeIndex(self.bitfield.tree)\n self.length = self.tree.blocks()\n self._seq = self.length\n\n if (state.key && self.key && Buffer.compare(state.key, self.key) !== 0) {\n return self._forceClose(cb, new Error('Another hypercore is stored here'))\n }\n\n if (state.key) self.key = state.key\n if (state.secretKey) self.secretKey = state.secretKey\n\n if (!self.length) return onsignature(null, null)\n self._storage.getSignature(self.length - 1, onsignature)\n\n function onsignature (_, sig) {\n if (self.length) self.live = !!sig\n\n if ((generatedKey || !self.key) && !self._createIfMissing) {\n return self._forceClose(cb, new Error('No hypercore is stored here'))\n }\n\n if (!self.key && self.live) {\n var keyPair = crypto.keyPair()\n self.secretKey = keyPair.secretKey\n self.key = keyPair.publicKey\n }\n\n var writable = !!self.secretKey || self.key === null\n\n if (!writable && self.writable) return self._forceClose(cb, new Error('Feed is not writable'))\n self.writable = writable\n if (!self._downloadingSet) self.downloading = !writable\n self.discoveryKey = self.key && crypto.discoveryKey(self.key)\n\n if (self._storeSecretKey && !self.secretKey) {\n self._storeSecretKey = false\n }\n\n var shouldWriteKey = generatedKey || !safeBufferEquals(self.key, state.key)\n var shouldWriteSecretKey = self._storeSecretKey && (generatedKey || !safeBufferEquals(self.secretKey, state.secretKey))\n\n var missing = 1 +\n (shouldWriteKey ? 1 : 0) +\n (shouldWriteSecretKey ? 1 : 0) +\n (self._overwrite ? 1 : 0)\n var error = null\n\n if (shouldWriteKey) self._storage.key.write(0, self.key, done)\n if (shouldWriteSecretKey) self._storage.secretKey.write(0, self.secretKey, done)\n\n if (self._overwrite) {\n self._storage.bitfield.del(32, Infinity, done)\n }\n\n done(null)\n\n function done (err) {\n if (err) error = err\n if (--missing) return\n if (error) return self._forceClose(cb, error)\n self._roots(self.length, onroots)\n }\n\n function onroots (err, roots) {\n if (err && retryOpen) {\n retryOpen = false\n self.length--\n self._storage.getSignature(self.length - 1, onsignature)\n return\n }\n\n if (err) return self._forceClose(cb, err)\n\n self._merkle = new MerkleGenerator(crypto, roots)\n self.byteLength = roots.reduce(addSize, 0)\n self.emit('ready')\n\n cb(null)\n }\n }\n }\n}\n\nFeed.prototype.download = function (range, cb) {\n if (typeof range === 'function') return this.download(null, range)\n if (typeof range === 'number') range = { start: range, end: range + 1 }\n if (Array.isArray(range)) range = { blocks: range }\n if (!range) range = {}\n if (!cb) cb = noop\n if (!this.readable) return cb(new Error('Feed is closed'))\n\n // TODO: if no peers, check if range is already satisfied and nextTick(cb) if so\n // this._updatePeers does this for us when there is a peer though, so not critical\n\n // We need range.start, end for the want messages so make sure to infer these\n // when blocks are passed and start,end is not set\n if (range.blocks && typeof range.start !== 'number') {\n var min = -1\n var max = 0\n\n for (var i = 0; i < range.blocks.length; i++) {\n const blk = range.blocks[i]\n if (min === -1 || blk < min) min = blk\n if (blk >= max) max = blk + 1\n }\n\n range.start = min === -1 ? 0 : min\n range.end = max\n }\n\n var sel = {\n _index: this._selections.length,\n hash: !!range.hash,\n iterator: null,\n start: range.start || 0,\n end: range.end || -1,\n want: 0,\n linear: !!range.linear,\n blocks: range.blocks || null,\n blocksDownloaded: 0,\n requested: 0,\n callback: cb\n }\n\n sel.want = toWantRange(sel.start)\n\n this._selections.push(sel)\n this._updatePeers()\n\n return sel\n}\n\nFeed.prototype.undownload = function (range) {\n if (typeof range === 'number') range = { start: range, end: range + 1 }\n if (!range) range = {}\n\n if (range.callback && range._index > -1) {\n set.remove(this._selections, range)\n process.nextTick(range.callback, createError('ECANCELED', -11, 'Download was cancelled'))\n return\n }\n\n var start = range.start || 0\n var end = range.end || -1\n var hash = !!range.hash\n var linear = !!range.linear\n\n for (var i = 0; i < this._selections.length; i++) {\n var s = this._selections[i]\n\n if (s.start === start && s.end === end && s.hash === hash && s.linear === linear) {\n set.remove(this._selections, s)\n process.nextTick(range.callback, createError('ECANCELED', -11, 'Download was cancelled'))\n return\n }\n }\n}\n\nFeed.prototype.digest = function (index) {\n return this.tree.digest(2 * index)\n}\n\nFeed.prototype.proof = function (index, opts, cb) {\n if (typeof opts === 'function') return this.proof(index, null, opts)\n if (!this.opened) return this._readyAndProof(index, opts, cb)\n if (!opts) opts = {}\n\n var proof = this.tree.proof(2 * index, opts)\n if (!proof) return cb(new Error('No proof available for this index'))\n\n var needsSig = this.live && !!proof.verifiedBy\n var pending = proof.nodes.length + (needsSig ? 1 : 0)\n var error = null\n var signature = null\n var nodes = new Array(proof.nodes.length)\n\n if (!pending) return cb(null, { nodes: nodes, signature: null })\n\n for (var i = 0; i < proof.nodes.length; i++) {\n this._storage.getNode(proof.nodes[i], onnode)\n }\n if (needsSig) {\n this._storage.getSignature(proof.verifiedBy / 2 - 1, onsignature)\n }\n\n function onsignature (err, sig) {\n if (sig) signature = sig\n onnode(err, null)\n }\n\n function onnode (err, node) {\n if (err) error = err\n\n if (node) {\n nodes[proof.nodes.indexOf(node.index)] = node\n }\n\n if (--pending) return\n if (error) return cb(error)\n cb(null, { nodes: nodes, signature: signature })\n }\n}\n\nFeed.prototype._readyAndProof = function (index, opts, cb) {\n var self = this\n this.ready(function (err) {\n if (err) return cb(err)\n self.proof(index, opts, cb)\n })\n}\n\nFeed.prototype.put = function (index, data, proof, cb) {\n if (!this.opened) return this._readyAndPut(index, data, proof, cb)\n this._putBuffer(index, data === null ? null : this._codec.encode(data), proof, null, cb)\n}\n\nFeed.prototype.cancel = function (start, end) { // TODO: use same argument scheme as download\n if (typeof start !== 'symbol') {\n if (!end) end = start + 1\n\n // cancel these right away as .download does not wait for ready\n for (var i = this._selections.length - 1; i >= 0; i--) {\n var sel = this._selections[i]\n if (start <= sel.start && sel.end <= end) {\n this.undownload(sel)\n }\n }\n }\n\n // defer the last part until after ready as .get does that as well\n if (this.opened) this._cancel(start, end)\n else this._readyAndCancel(start, end)\n}\n\nFeed.prototype._cancel = function (start, end) {\n var i = 0\n\n if (typeof start === 'symbol') {\n for (i = this._waiting.length - 1; i >= 0; i--) {\n const w = this._waiting[i]\n if (w.options.cancel === start) {\n remove(this._waiting, i)\n this._reserved.set(w.index, false)\n if (w.callback) process.nextTick(w.callback, new Error('Request cancelled'))\n this._updatePeers()\n return\n }\n }\n return\n }\n\n for (i = start; i < end; i++) {\n this._reserved.set(i, false) // TODO: send cancel message if set returns true\n }\n\n for (i = this._waiting.length - 1; i >= 0; i--) {\n var w = this._waiting[i]\n if ((start <= w.start && w.end <= end) || (start <= w.index && w.index < end)) {\n remove(this._waiting, i)\n if (w.callback) process.nextTick(w.callback, new Error('Request cancelled'))\n }\n }\n}\n\nFeed.prototype.clear = function (start, end, opts, cb) { // TODO: use same argument scheme as download\n if (typeof end === 'function') return this.clear(start, start + 1, null, end)\n if (typeof opts === 'function') return this.clear(start, end, null, opts)\n if (!opts) opts = {}\n if (!end) end = start + 1\n if (!cb) cb = noop\n\n // TODO: this needs some work. fx we can only calc byte offset for blocks we know about\n // so internally we should make sure to only do that. We should use the merkle tree for this\n\n var self = this\n var byteOffset = start === 0 ? 0 : (typeof opts.byteOffset === 'number' ? opts.byteOffset : -1)\n var byteLength = typeof opts.byteLength === 'number' ? opts.byteLength : -1\n\n this.ready(function (err) {\n if (err) return cb(err)\n\n var modified = false\n\n // TODO: use a buffer.fill thing here to speed this up!\n\n for (var i = start; i < end; i++) {\n if (self.bitfield.set(i, false)) modified = true\n }\n\n if (!modified) return process.nextTick(cb)\n\n // TODO: write to a tmp/update file that we want to del this incase it crashes will del'ing\n\n self._unannounce({ start: start, length: end - start })\n if (opts.delete === false || self._indexing) return sync()\n if (byteOffset > -1) return onstartbytes(null, byteOffset)\n self._storage.dataOffset(start, [], onstartbytes)\n\n function sync () {\n self.emit('clear', start, end)\n self._sync(null, cb)\n }\n\n function onstartbytes (err, offset) {\n if (err) return cb(err)\n byteOffset = offset\n if (byteLength > -1) return onendbytes(null, byteLength + byteOffset)\n if (end === self.length) return onendbytes(null, self.byteLength)\n self._storage.dataOffset(end, [], onendbytes)\n }\n\n function onendbytes (err, end) {\n if (err) return cb(err)\n if (!self._storage.data.del) return sync() // Not all data storage impls del\n self._storage.data.del(byteOffset, end - byteOffset, sync)\n }\n })\n}\n\nFeed.prototype.signature = function (index, cb) {\n if (typeof index === 'function') return this.signature(this.length - 1, index)\n\n if (index < 0 || index >= this.length) return cb(new Error('No signature available for this index'))\n\n this._storage.nextSignature(index, cb)\n}\n\nFeed.prototype.verify = function (index, signature, cb) {\n var self = this\n\n this.rootHashes(index, function (err, roots) {\n if (err) return cb(err)\n\n var checksum = crypto.signable(roots, index + 1)\n\n verifyCompat(self, checksum, signature, function (err, valid) {\n if (err) return cb(err)\n\n if (!valid) return cb(new Error('Signature verification failed'))\n\n return cb(null, true)\n })\n })\n}\n\nFeed.prototype.rootHashes = function (index, cb) {\n this._getRootsToVerify(index * 2 + 2, {}, [], cb)\n}\n\nFeed.prototype.seek = function (bytes, opts, cb) {\n if (typeof opts === 'function') return this.seek(bytes, null, opts)\n if (!opts) opts = {}\n if (!this.opened) return this._readyAndSeek(bytes, opts, cb)\n\n var self = this\n\n if (bytes === this.byteLength) return process.nextTick(cb, null, this.length, 0)\n\n this._seek(bytes, function (err, index, offset) {\n if (!err && isBlock(index)) return done(index / 2, offset)\n if (opts.wait === false) return cb(err || new Error('Unable to seek to this offset'))\n\n var start = opts.start || 0\n var end = opts.end || -1\n\n if (!err) {\n var left = flat.leftSpan(index) / 2\n var right = flat.rightSpan(index) / 2 + 1\n\n if (left > start) start = left\n if (right < end || end === -1) end = right\n }\n\n if (end > -1 && end <= start) return cb(new Error('Unable to seek to this offset'))\n\n var w = {\n hash: opts.hash !== false,\n bytes: bytes,\n index: -1,\n ifAvailable: opts && typeof opts.ifAvailable === 'boolean' ? opts.ifAvailable : self._alwaysIfAvailable,\n start: start,\n end: end,\n want: toWantRange(start),\n requested: 0,\n callback: cb || noop\n }\n\n self._waiting.push(w)\n self._updatePeers()\n if (w.ifAvailable) self._ifAvailableSeek(w)\n })\n\n function done (index, offset) {\n for (var i = 0; i < self.peers.length; i++) {\n self.peers[i].haveBytes(bytes)\n }\n cb(null, index, offset)\n }\n}\n\nFeed.prototype._ifAvailableSeek = function (w) {\n var self = this\n var cb = w.callback\n\n self.timeouts.get(function () {\n if (self.closed) return done(new Error('Closed'))\n\n process.nextTick(readyNT, self.ifAvailable, function () {\n if (self.closed) return done(new Error('Closed'))\n\n let available = false\n for (const peer of self.peers) {\n const ite = peer._iterator\n let i = ite.seek(w.start).next(true)\n while (self.tree.get(i * 2) && i > -1) i = ite.next(true)\n if (i > -1 && (w.end === -1 || i < w.end)) {\n available = true\n break\n }\n }\n\n if (!available) done(new Error('Seek not available from peers'))\n })\n })\n\n function done (err) {\n var i = self._waiting.indexOf(w)\n if (i > -1) {\n remove(self._waiting, i)\n w.callback = noop\n cb(err)\n }\n }\n}\n\nFeed.prototype._seek = function (offset, cb) {\n if (offset === 0) return cb(null, 0, 0)\n\n var self = this\n var roots = flat.fullRoots(this.length * 2)\n var nearestRoot = 0\n\n loop(null, null)\n\n function onroot (top) {\n if (isBlock(top)) return cb(null, nearestRoot, offset)\n\n var left = flat.leftChild(top)\n while (!self.tree.get(left)) {\n if (isBlock(left)) return cb(null, nearestRoot, offset)\n left = flat.leftChild(left)\n }\n\n self._storage.getNode(left, onleftchild)\n }\n\n function onleftchild (err, node) {\n if (err) return cb(err)\n\n if (node.size > offset) {\n nearestRoot = node.index\n onroot(node.index)\n } else {\n offset -= node.size\n if (flat.parent(node.index) === nearestRoot) {\n nearestRoot = flat.sibling(node.index)\n onroot(nearestRoot)\n } else {\n onroot(flat.sibling(node.index))\n }\n }\n }\n\n function loop (err, node) {\n if (err) return cb(err)\n\n if (node) {\n if (node.size > offset) {\n nearestRoot = node.index\n return onroot(node.index)\n }\n offset -= node.size\n }\n\n if (!roots.length) return cb(new Error('Out of bounds'))\n self._storage.getNode(roots.shift(), loop)\n }\n}\n\nFeed.prototype._readyAndSeek = function (bytes, opts, cb) {\n var self = this\n this.ready(function (err) {\n if (err) return cb(err)\n self.seek(bytes, opts, cb)\n })\n}\n\nFeed.prototype._getBuffer = function (index, cb) {\n this._storage.getData(index, cb)\n}\n\nFeed.prototype._putBuffer = function (index, data, proof, from, cb) {\n // TODO: this nodes in proof are not instances of our Node prototype\n // but just similar. Check if this has any v8 perf implications.\n\n // TODO: if the proof contains a valid signature BUT fails, emit a critical error\n // --> feed should be considered dead\n\n var self = this\n var trusted = -1\n var missing = []\n var next = 2 * index\n var i = data ? 0 : 1\n\n while (true) {\n if (this.tree.get(next)) {\n trusted = next\n break\n }\n\n var sib = flat.sibling(next)\n next = flat.parent(next)\n\n if (i < proof.nodes.length && proof.nodes[i].index === sib) {\n i++\n continue\n }\n\n if (!this.tree.get(sib)) break\n missing.push(sib)\n }\n\n if (trusted === -1 && this.tree.get(next)) trusted = next\n\n var error = null\n var trustedNode = null\n var missingNodes = new Array(missing.length)\n var pending = missing.length + (trusted > -1 ? 1 : 0)\n\n for (i = 0; i < missing.length; i++) this._storage.getNode(missing[i], onmissing)\n if (trusted > -1) this._storage.getNode(trusted, ontrusted)\n if (!missing.length && trusted === -1) onmissingloaded(null)\n\n function ontrusted (err, node) {\n if (err) error = err\n if (node) trustedNode = node\n if (!--pending) onmissingloaded(error)\n }\n\n function onmissing (err, node) {\n if (err) error = err\n if (node) missingNodes[missing.indexOf(node.index)] = node\n if (!--pending) onmissingloaded(error)\n }\n\n function onmissingloaded (err) {\n if (err) return cb(err)\n self._verifyAndWrite(index, data, proof, missingNodes, trustedNode, from, cb)\n }\n}\n\nFeed.prototype._readyAndPut = function (index, data, proof, cb) {\n var self = this\n this.ready(function (err) {\n if (err) return cb(err)\n self.put(index, data, proof, cb)\n })\n}\n\nFeed.prototype._write = function (index, data, nodes, sig, from, cb) {\n if (!this._onwrite) return this._writeAfterHook(index, data, nodes, sig, from, cb)\n this._onwrite(index, data, from, writeHookDone(this, index, data, nodes, sig, from, cb))\n}\n\nfunction writeHookDone (self, index, data, nodes, sig, from, cb) {\n return function (err) {\n if (err) return cb(err)\n self._writeAfterHook(index, data, nodes, sig, from, cb)\n }\n}\n\nFeed.prototype._writeAfterHook = function (index, data, nodes, sig, from, cb) {\n var self = this\n var pending = nodes.length + 1 + (sig ? 1 : 0)\n var error = null\n\n for (var i = 0; i < nodes.length; i++) this._storage.putNode(nodes[i].index, nodes[i], ondone)\n if (data) this._storage.putData(index, data, nodes, ondone)\n else ondone()\n if (sig) this._storage.putSignature(sig.index, sig.signature, ondone)\n\n function ondone (err) {\n if (err) error = err\n if (--pending) return\n if (error) return cb(error)\n self._writeDone(index, data, nodes, from, cb)\n }\n}\n\nFeed.prototype._writeDone = function (index, data, nodes, from, cb) {\n for (var i = 0; i < nodes.length; i++) this.tree.set(nodes[i].index)\n this.tree.set(2 * index)\n\n if (data) {\n if (this.bitfield.set(index, true)) {\n if (this._stats) {\n this._stats.downloadedBlocks += 1\n this._stats.downloadedBytes += data.length\n }\n this.emit('download', index, data, from)\n }\n if (this.peers.length) this._announce({ start: index }, from)\n\n if (!this.writable) {\n if (!this._synced) this._synced = this.bitfield.iterator(0, this.length)\n if (this._synced.next() === -1) {\n this._synced.range(0, this.length)\n this._synced.seek(0)\n if (this._synced.next() === -1) {\n this.emit('sync')\n }\n }\n }\n }\n\n this._sync(null, cb)\n}\n\nFeed.prototype._verifyAndWrite = function (index, data, proof, localNodes, trustedNode, from, cb) {\n var visited = []\n var remoteNodes = proof.nodes\n var top = data ? new storage.Node(2 * index, crypto.data(data), data.length) : remoteNodes.shift()\n\n // check if we already have the hash for this node\n if (verifyNode(trustedNode, top)) {\n this._write(index, data, visited, null, from, cb)\n return\n }\n\n // keep hashing with siblings until we reach or trusted node\n while (true) {\n var node = null\n var next = flat.sibling(top.index)\n\n if (remoteNodes.length && remoteNodes[0].index === next) {\n node = remoteNodes.shift()\n visited.push(node)\n } else if (localNodes.length && localNodes[0].index === next) {\n node = localNodes.shift()\n } else {\n // we cannot create another parent, i.e. these nodes must be roots in the tree\n this._verifyRootsAndWrite(index, data, top, proof, visited, from, cb)\n return\n }\n\n visited.push(top)\n top = new storage.Node(flat.parent(top.index), crypto.parent(top, node), top.size + node.size)\n\n // the tree checks out, write the data and the visited nodes\n if (verifyNode(trustedNode, top)) {\n this._write(index, data, visited, null, from, cb)\n return\n }\n }\n}\n\nFeed.prototype._verifyRootsAndWrite = function (index, data, top, proof, nodes, from, cb) {\n var remoteNodes = proof.nodes\n var lastNode = remoteNodes.length ? remoteNodes[remoteNodes.length - 1].index : top.index\n var verifiedBy = Math.max(flat.rightSpan(top.index), flat.rightSpan(lastNode)) + 2\n var length = verifiedBy / 2\n var self = this\n\n this._getRootsToVerify(verifiedBy, top, remoteNodes, function (err, roots, extraNodes) {\n if (err) return cb(err)\n\n var checksum = crypto.signable(roots, length)\n var signature = null\n\n if (self.length && self.live && !proof.signature) {\n return cb(new Error('Remote did not include a signature'))\n }\n\n if (proof.signature) { // check signatures\n verifyCompat(self, checksum, proof.signature, function (err, valid) {\n if (err) return cb(err)\n if (!valid) return cb(new Error('Remote signature could not be verified'))\n\n signature = { index: verifiedBy / 2 - 1, signature: proof.signature }\n write()\n })\n } else { // check tree root\n if (Buffer.compare(checksum.slice(0, 32), self.key) !== 0) {\n return cb(new Error('Remote checksum failed'))\n }\n\n write()\n }\n\n function write () {\n self.live = !!signature\n\n if (length > self.length) {\n // TODO: only emit this after the info has been flushed to storage\n if (self.writable) self._merkle = null // We need to reload merkle state now\n self.length = length\n self._seq = length\n self.byteLength = roots.reduce(addSize, 0)\n if (self._synced) self._synced.seek(0, self.length)\n self.emit('append')\n }\n\n self._write(index, data, nodes.concat(extraNodes), signature, from, cb)\n }\n })\n}\n\nFeed.prototype._getRootsToVerify = function (verifiedBy, top, remoteNodes, cb) {\n var indexes = flat.fullRoots(verifiedBy)\n var roots = new Array(indexes.length)\n var nodes = []\n var error = null\n var pending = roots.length\n\n for (var i = 0; i < indexes.length; i++) {\n if (indexes[i] === top.index) {\n nodes.push(top)\n onnode(null, top)\n } else if (remoteNodes.length && indexes[i] === remoteNodes[0].index) {\n nodes.push(remoteNodes[0])\n onnode(null, remoteNodes.shift())\n } else if (this.tree.get(indexes[i])) {\n this._storage.getNode(indexes[i], onnode)\n } else {\n onnode(new Error('Missing tree roots needed for verify'))\n }\n }\n\n function onnode (err, node) {\n if (err) error = err\n if (node) roots[indexes.indexOf(node.index)] = node\n if (!--pending) done(error)\n }\n\n function done (err) {\n if (err) return cb(err)\n\n cb(null, roots, nodes)\n }\n}\n\nFeed.prototype._announce = function (message, from) {\n for (var i = 0; i < this.peers.length; i++) {\n var peer = this.peers[i]\n if (peer !== from) peer.have(message)\n }\n}\n\nFeed.prototype._unannounce = function (message) {\n for (var i = 0; i < this.peers.length; i++) this.peers[i].unhave(message)\n}\n\nFeed.prototype.downloaded = function (start, end, cb) {\n const count = this.bitfield.total(start, end)\n if (cb) process.nextTick(cb, null, count) // prepare async interface for this\n return count\n}\n\nFeed.prototype.has = function (start, end, cb) {\n if (typeof end === 'function') return this.has(start, undefined, end)\n if (end === undefined) {\n const res = this.bitfield.get(start)\n if (cb) process.nextTick(cb, null, res)\n return res\n }\n const total = end - start\n const res = total === this.bitfield.total(start, end)\n if (cb) process.nextTick(cb, null, res)\n return res\n}\n\nFeed.prototype.getBlockInfo = function (index, cb) {\n var self = this\n this.ready(function (err) {\n if (err) return cb(err)\n self._storage.getNode(2 * index, cb)\n })\n}\n\nFeed.prototype.head = function (opts, cb) {\n if (typeof opts === 'function') return this.head({}, opts)\n var self = this\n this.ready(function (err) {\n if (err) return cb(err)\n if (opts && opts.update) self.update(opts, onupdate)\n else process.nextTick(onupdate)\n })\n\n function onupdate () {\n if (self.length === 0) cb(new Error('feed is empty'))\n else self.get(self.length - 1, opts, cb)\n }\n}\n\nFeed.prototype.get = function (index, opts, cb) {\n if (typeof opts === 'function') return this.get(index, null, opts)\n\n opts = { ...opts }\n if (!opts.cancel) opts.cancel = Symbol('hypercore-get')\n\n if (!this.opened) return this._readyAndGet(index, opts, cb)\n\n if (!this.readable) {\n process.nextTick(cb, new Error('Feed is closed'))\n return opts.cancel\n }\n\n if (opts.timeout) cb = timeoutCallback(cb, opts.timeout)\n\n if (!this.bitfield.get(index)) {\n if (opts && opts.wait === false) return process.nextTick(cb, new Error('Block not downloaded'))\n\n var w = { bytes: 0, hash: false, index: index, options: opts, requested: 0, callback: cb }\n this._waiting.push(w)\n\n if (opts && typeof opts.ifAvailable === 'boolean' ? opts.ifAvailable : this._alwaysIfAvailable) this._ifAvailableGet(w)\n\n this._updatePeers()\n if (opts.onwait) {\n const onwait = opts.onwait\n opts.onwait = null\n onwait(index)\n }\n return opts.cancel\n }\n\n if (opts && opts.valueEncoding) cb = wrapCodec(toCodec(opts.valueEncoding), cb)\n else if (this._codec !== codecs.binary) cb = wrapCodec(this._codec, cb)\n\n this._getBuffer(index, cb)\n return opts.cancel\n}\n\nFeed.prototype._readyAndGet = function (index, opts, cb) {\n var self = this\n this.ready(function (err) {\n if (err) return cb(err)\n self.get(index, opts, cb)\n })\n return opts.cancel\n}\n\nFeed.prototype.getBatch = function (start, end, opts, cb) {\n if (typeof opts === 'function') return this.getBatch(start, end, null, opts)\n if (!this.opened) return this._readyAndGetBatch(start, end, opts, cb)\n\n var self = this\n var wait = !opts || opts.wait !== false\n\n if (this.has(start, end)) return this._getBatch(start, end, opts, cb)\n if (!wait) return process.nextTick(cb, new Error('Block not downloaded'))\n\n if (opts && opts.timeout) cb = timeoutCallback(cb, opts.timeout)\n\n this.download({ start: start, end: end }, function (err) {\n if (err) return cb(err)\n self._getBatch(start, end, opts, cb)\n })\n}\n\nFeed.prototype._getBatch = function (start, end, opts, cb) {\n var enc = opts && opts.valueEncoding\n var codec = enc ? toCodec(enc) : this._codec\n\n this._storage.getDataBatch(start, end - start, onbatch)\n\n function onbatch (err, buffers) {\n if (err) return cb(err)\n\n var batch = new Array(buffers.length)\n\n for (var i = 0; i < buffers.length; i++) {\n try {\n batch[i] = codec ? codec.decode(buffers[i]) : buffers[i]\n } catch (err) {\n return cb(err)\n }\n }\n\n cb(null, batch)\n }\n}\n\nFeed.prototype._readyAndGetBatch = function (start, end, opts, cb) {\n var self = this\n this.ready(function (err) {\n if (err) return cb(err)\n self.getBatch(start, end, opts, cb)\n })\n}\n\nFeed.prototype._updatePeers = function () {\n for (var i = 0; i < this.peers.length; i++) this.peers[i].update()\n}\n\nFeed.prototype.createWriteStream = function (opts) {\n return new WriteStream(this, opts)\n}\n\nFeed.prototype.createReadStream = function (opts) {\n return new ReadStream(this, opts)\n}\n\n// TODO: when calling finalize on a live feed write an END_OF_FEED block (length === 0?)\nFeed.prototype.finalize = function (cb) {\n if (!this.key) {\n this.key = crypto.tree(this._merkle.roots)\n this.discoveryKey = crypto.discoveryKey(this.key)\n }\n this._storage.key.write(0, this.key, cb)\n}\n\nFeed.prototype.append = function (batch, cb) {\n if (!cb) cb = noop\n\n var self = this\n var list = Array.isArray(batch) ? batch : [batch]\n this._batch(list, onappend)\n\n function onappend (err) {\n if (err) return cb(err)\n var seq = self._seq\n self._seq += list.length\n cb(null, seq)\n }\n}\n\nFeed.prototype.flush = function (cb) {\n this.append([], cb)\n}\n\nFeed.prototype.destroyStorage = function (cb) {\n const self = this\n\n this.close(function (err) {\n if (err) cb(err)\n else self._storage.destroy(cb)\n })\n}\n\nFeed.prototype._close = function (cb) {\n const self = this\n\n for (const peer of this.peers) {\n if (!peer._destroyed) peer._close()\n }\n\n this._forceClose(onclose, null)\n\n function onclose (err) {\n if (!err) self.emit('close')\n cb(err)\n }\n}\n\nFeed.prototype._forceClose = function (cb, error) {\n var self = this\n\n this.writable = false\n this.readable = false\n\n this._storage.close(function (err) {\n if (!err) err = error\n self._destroy(err || new Error('Feed is closed'))\n cb(err)\n })\n}\n\nFeed.prototype._destroy = function (err) {\n this.ifAvailable.destroy()\n\n while (this._waiting.length) {\n this._waiting.pop().callback(err)\n }\n while (this._selections.length) {\n this._selections.pop().callback(err)\n }\n}\n\nFeed.prototype._appendHook = function (batch, cb) {\n var self = this\n var missing = batch.length\n var error = null\n\n if (!missing) return this._append(batch, cb)\n for (var i = 0; i < batch.length; i++) {\n this._onwrite(i + this.length, batch[i], null, done)\n }\n\n function done (err) {\n if (err) error = err\n if (--missing) return\n if (error) return cb(error)\n self._append(batch, cb)\n }\n}\n\nFeed.prototype._append = function (batch, cb) {\n if (!this.opened) return this._readyAndAppend(batch, cb)\n if (!this.writable) return cb(new Error('This feed is not writable. Did you create it?'))\n\n var self = this\n var pending = 1\n var offset = 0\n var error = null\n var nodeBatch = new Array(batch.length ? batch.length * 2 - 1 : 0)\n var nodeOffset = this.length * 2\n var dataBatch = new Array(batch.length)\n\n if (!pending) return cb()\n\n for (var i = 0; i < batch.length; i++) {\n var data = this._codec.encode(batch[i])\n var nodes = this._merkle.next(data)\n\n // the replication stream rejects frames >8MB for DOS defense. Is configurable there, so\n // we could bubble that up here. For now just hardcode it so you can't accidentally \"brick\" your core\n // note: this is *only* for individual blocks and is just a sanity check. most blocks are <1MB\n if (data.length > 8388608) return cb(new Error('Individual blocks has be less than 8MB'))\n\n offset += data.length\n dataBatch[i] = data\n\n for (var j = 0; j < nodes.length; j++) {\n var node = nodes[j]\n if (node.index >= nodeOffset && node.index - nodeOffset < nodeBatch.length) {\n nodeBatch[node.index - nodeOffset] = node\n } else {\n pending++\n this._storage.putNode(node.index, node, done)\n }\n }\n }\n\n if (this.live && batch.length) {\n pending++\n this.crypto.sign(crypto.signable(this._merkle.roots, self.length + batch.length), this.secretKey, function (err, sig) {\n if (err) return done(err)\n self._storage.putSignature(self.length + batch.length - 1, sig, done)\n })\n }\n\n if (!this._indexing) {\n pending++\n if (dataBatch.length === 1) this._storage.data.write(this.byteLength, dataBatch[0], done)\n else this._storage.data.write(this.byteLength, Buffer.concat(dataBatch), done)\n }\n\n this._storage.putNodeBatch(nodeOffset, nodeBatch, done)\n\n function done (err) {\n if (err) error = err\n if (--pending) return\n if (error) return cb(error)\n\n var start = self.length\n\n // TODO: only emit append and update length / byteLength after the info has been flushed to storage\n self.byteLength += offset\n for (var i = 0; i < batch.length; i++) {\n self.bitfield.set(self.length, true)\n self.tree.set(2 * self.length++)\n }\n self.emit('append')\n\n var message = self.length - start > 1 ? { start: start, length: self.length - start } : { start: start }\n if (self.peers.length) self._announce(message)\n\n self._sync(null, cb)\n }\n}\n\nFeed.prototype._readyAndAppend = function (batch, cb) {\n var self = this\n this.ready(function (err) {\n if (err) return cb(err)\n self._append(batch, cb)\n })\n}\n\nFeed.prototype._readyAndCancel = function (start, end) {\n var self = this\n this.ready(function () {\n self._cancel(start, end)\n })\n}\n\nFeed.prototype._pollWaiting = function () {\n var len = this._waiting.length\n\n for (var i = 0; i < len; i++) {\n var next = this._waiting[i]\n if (!next.bytes && !this.bitfield.get(next.index) && (!next.hash || !this.tree.get(next.index * 2))) {\n continue\n }\n\n remove(this._waiting, i--)\n len--\n\n if (next.bytes) this.seek(next.bytes, next, next.callback)\n else if (next.update) this.update(next.index + 1, next.callback)\n else this.get(next.index, next.options, next.callback)\n }\n}\n\nFeed.prototype._syncBitfield = function (cb) {\n var missing = this.bitfield.pages.updates.length\n var next = null\n var error = null\n\n // All data / nodes have been written now. We still need to update the bitfields though\n\n // TODO 1: if the program fails during this write the bitfield might not have been fully written\n // HOWEVER, we can easily recover from this by traversing the tree and checking if the nodes exists\n // on disk. So if a get fails, it should try and recover once.\n\n // TODO 2: if .writable append bitfield updates into a single buffer for extra perf\n // Added benefit is that if the program exits while flushing the bitfield the feed will only get\n // truncated and not have missing chunks which is what you expect.\n\n if (!missing) {\n this._pollWaiting()\n return cb(null)\n }\n\n while ((next = this.bitfield.pages.lastUpdate()) !== null) {\n this._storage.putBitfield(next.offset, next.buffer, ondone)\n }\n\n this._pollWaiting()\n\n function ondone (err) {\n if (err) error = err\n if (--missing) return\n cb(error)\n }\n}\n\nFeed.prototype._roots = function (index, cb) {\n var roots = flat.fullRoots(2 * index)\n var result = new Array(roots.length)\n var pending = roots.length\n var error = null\n\n if (!pending) return cb(null, result)\n\n for (var i = 0; i < roots.length; i++) {\n this._storage.getNode(roots[i], onnode)\n }\n\n function onnode (err, node) {\n if (err) error = err\n if (node) result[roots.indexOf(node.index)] = node\n if (--pending) return\n if (error) return cb(error)\n cb(null, result)\n }\n}\n\nFeed.prototype.audit = function (cb) {\n if (!cb) cb = noop\n\n var self = this\n var report = {\n valid: 0,\n invalid: 0\n }\n\n this.ready(function (err) {\n if (err) return cb(err)\n\n var block = 0\n var max = self.length\n\n next()\n\n function onnode (err, node) {\n if (err) return ondata(null, null)\n self._storage.getData(block, ondata)\n\n function ondata (_, data) {\n var verified = data && crypto.data(data).equals(node.hash)\n if (verified) report.valid++\n else report.invalid++\n self.bitfield.set(block, verified)\n block++\n next()\n }\n }\n\n function next () {\n while (block < max && !self.bitfield.get(block)) block++\n if (block >= max) return done()\n self._storage.getNode(2 * block, onnode)\n }\n\n function done () {\n self._sync(null, function (err) {\n if (err) return cb(err)\n cb(null, report)\n })\n }\n })\n}\n\nFeed.prototype.extension = function (name, message) {\n var peers = this.peers\n\n for (var i = 0; i < peers.length; i++) {\n peers[i].extension(name, message)\n }\n}\n\nfunction noop () {}\n\nfunction verifyNode (trusted, node) {\n return trusted && trusted.index === node.index && Buffer.compare(trusted.hash, node.hash) === 0\n}\n\nfunction addSize (size, node) {\n return size + node.size\n}\n\nfunction isBlock (index) {\n return (index & 1) === 0\n}\n\nfunction toCodec (enc) {\n // Switch to ndjson encoding if JSON is used. That way data files parse like ndjson \\o/\n return codecs(enc === 'json' ? 'ndjson' : enc)\n}\n\nfunction wrapCodec (enc, cb) {\n return function (err, buf) {\n if (err) return cb(err)\n try {\n buf = enc.decode(buf)\n } catch (err) {\n return cb(err)\n }\n cb(null, buf)\n }\n}\n\nfunction timeoutCallback (cb, timeout) {\n var failed = false\n var id = setTimeout(ontimeout, timeout)\n return done\n\n function ontimeout () {\n failed = true\n // TODO: make libs/errors for all this stuff\n var err = new Error('ETIMEDOUT')\n err.code = 'ETIMEDOUT'\n cb(err)\n }\n\n function done (err, val) {\n if (failed) return\n clearTimeout(id)\n cb(err, val)\n }\n}\n\nfunction toWantRange (i) {\n return Math.floor(i / 1024 / 1024) * 1024 * 1024\n}\n\nfunction createError (code, errno, msg) {\n var err = new Error(msg)\n err.code = code\n err.errno = errno\n return err\n}\n\nfunction defaultStorageDir (directory) {\n return function (name) {\n return defaultStorage(name, { directory })\n }\n}\n\nfunction isOptions (initiator) {\n return !Protocol.isProtocolStream(initiator) &&\n typeof initiator === 'object' &&\n !!initiator &&\n typeof initiator.initiator === 'boolean'\n}\n\nfunction readyNT (ifAvailable, fn) {\n ifAvailable.ready(fn)\n}\n\nfunction verifyCompat (self, checksum, signature, cb) {\n self.crypto.verify(checksum, signature, self.key, function (err, valid) {\n if (err || valid) return cb(err, valid)\n // compat mode, will be removed in a later version\n self.crypto.verify(checksum.slice(0, 32), signature, self.key, cb)\n })\n}\n", "export * from 'hypercore';\nexport { default } from 'hypercore';\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["exports", "i", "bitfield", "b", "err", "node", "clone", "parent", "depth", "require_nanoassert", "err", "require_encode", "require_decode", "require_length", "require_varint", "require_encode", "require_decode", "require_length", "require_varint", "enc", "encodingLength", "encode", "decode", "length", "data", "onerror", "require_browser", "useColors", "timeout", "i", "rle", "err", "err", "w", "end", "res", "i"]
|
|
7
7
|
}
|