@opaquecash/stellar 0.1.0

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.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../node_modules/base64-js/index.js","../../node_modules/ieee754/index.js","../../node_modules/buffer/index.js","../../src/crypto/bytes.ts","../../src/crypto/amount.ts","../../src/crypto/dksap.ts","../../src/crypto/scan.ts","../../src/crypto/notes.ts","../../src/crypto/schema-codec.ts","../../src/crypto/backup.ts","../../src/crypto/payment-link.ts","../../src/crypto/memo.ts"],"names":["len","i","len2","Buffer","base64ToBytes","byteLength"],"mappings":"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","file":"index.js","sourcesContent":["'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh <https://feross.org>\n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nconst base64 = require('base64-js')\nconst ieee754 = require('ieee754')\nconst customInspectSymbol =\n (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nconst K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n const arr = new Uint8Array(1)\n const proto = { foo: function () { return 42 } }\n Object.setPrototypeOf(proto, Uint8Array.prototype)\n Object.setPrototypeOf(arr, proto)\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n const buf = new Uint8Array(length)\n Object.setPrototypeOf(buf, Buffer.prototype)\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayView(value)\n }\n\n if (value == null) {\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof SharedArrayBuffer !== 'undefined' &&\n (isInstance(value, SharedArrayBuffer) ||\n (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n const valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n const b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(value[Symbol.toPrimitive]('string'), encodingOrOffset, length)\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpreted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n const length = byteLength(string, encoding) | 0\n let buf = createBuffer(length)\n\n const actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n const length = array.length < 0 ? 0 : checked(array.length) | 0\n const buf = createBuffer(length)\n for (let i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayView (arrayView) {\n if (isInstance(arrayView, Uint8Array)) {\n const copy = new Uint8Array(arrayView)\n return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n }\n return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n let buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(buf, Buffer.prototype)\n\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n const len = checked(obj.length) | 0\n const buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n let x = a.length\n let y = b.length\n\n for (let i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n let i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n const buffer = Buffer.allocUnsafe(length)\n let pos = 0\n for (i = 0; i < list.length; ++i) {\n let buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n buf.copy(buffer, pos)\n } else {\n Uint8Array.prototype.set.call(\n buffer,\n buf,\n pos\n )\n }\n } else if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n } else {\n buf.copy(buffer, pos)\n }\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n const len = string.length\n const mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n let loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n const i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n const len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (let i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n const len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (let i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n const len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (let i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n const length = this.length\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n let str = ''\n const max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return '<Buffer ' + str + '>'\n}\nif (customInspectSymbol) {\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n let x = thisEnd - thisStart\n let y = end - start\n const len = Math.min(x, y)\n\n const thisCopy = this.slice(thisStart, thisEnd)\n const targetCopy = target.slice(start, end)\n\n for (let i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n let indexSize = 1\n let arrLength = arr.length\n let valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n let i\n if (dir) {\n let foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n let found = true\n for (let j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n const remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n const strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n let i\n for (i = 0; i < length; ++i) {\n const parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0\n if (isFinite(length)) {\n length = length >>> 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n const remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n case 'latin1':\n case 'binary':\n return asciiWrite(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n const res = []\n\n let i = start\n while (i < end) {\n const firstByte = buf[i]\n let codePoint = null\n let bytesPerSequence = (firstByte > 0xEF)\n ? 4\n : (firstByte > 0xDF)\n ? 3\n : (firstByte > 0xBF)\n ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n let secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nconst MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n const len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n let res = ''\n let i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n const len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n let out = ''\n for (let i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]]\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n const bytes = buf.slice(start, end)\n let res = ''\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (let i = 0; i < bytes.length - 1; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n const len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n const newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(newBuf, Buffer.prototype)\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUintLE =\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n let val = this[offset + --byteLength]\n let mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUint32BE =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const lo = first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24\n\n const hi = this[++offset] +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n last * 2 ** 24\n\n return BigInt(lo) + (BigInt(hi) << BigInt(32))\n})\n\nBuffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const hi = first * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n const lo = this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last\n\n return (BigInt(hi) << BigInt(32)) + BigInt(lo)\n})\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let i = byteLength\n let mul = 1\n let val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = this[offset + 4] +\n this[offset + 5] * 2 ** 8 +\n this[offset + 6] * 2 ** 16 +\n (last << 24) // Overflow\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24)\n})\n\nBuffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = (first << 24) + // Overflow\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last)\n})\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUintLE =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let mul = 1\n let i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let i = byteLength - 1\n let mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUint8 =\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction wrtBigUInt64LE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n return offset\n}\n\nfunction wrtBigUInt64BE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset + 7] = lo\n lo = lo >> 8\n buf[offset + 6] = lo\n lo = lo >> 8\n buf[offset + 5] = lo\n lo = lo >> 8\n buf[offset + 4] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset + 3] = hi\n hi = hi >> 8\n buf[offset + 2] = hi\n hi = hi >> 8\n buf[offset + 1] = hi\n hi = hi >> 8\n buf[offset] = hi\n return offset + 8\n}\n\nBuffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = 0\n let mul = 1\n let sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = byteLength - 1\n let mul = 1\n let sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nBuffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n const len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n if (val.length === 1) {\n const code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n } else if (typeof val === 'boolean') {\n val = Number(val)\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n let i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n const bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n const len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// CUSTOM ERRORS\n// =============\n\n// Simplified versions from Node, changed for Buffer-only usage\nconst errors = {}\nfunction E (sym, getMessage, Base) {\n errors[sym] = class NodeError extends Base {\n constructor () {\n super()\n\n Object.defineProperty(this, 'message', {\n value: getMessage.apply(this, arguments),\n writable: true,\n configurable: true\n })\n\n // Add the error code to the name to include it in the stack trace.\n this.name = `${this.name} [${sym}]`\n // Access the stack to generate the error message including the error code\n // from the name.\n this.stack // eslint-disable-line no-unused-expressions\n // Reset the name to the actual name.\n delete this.name\n }\n\n get code () {\n return sym\n }\n\n set code (value) {\n Object.defineProperty(this, 'code', {\n configurable: true,\n enumerable: true,\n value,\n writable: true\n })\n }\n\n toString () {\n return `${this.name} [${sym}]: ${this.message}`\n }\n }\n}\n\nE('ERR_BUFFER_OUT_OF_BOUNDS',\n function (name) {\n if (name) {\n return `${name} is outside of buffer bounds`\n }\n\n return 'Attempt to access memory outside buffer bounds'\n }, RangeError)\nE('ERR_INVALID_ARG_TYPE',\n function (name, actual) {\n return `The \"${name}\" argument must be of type number. Received type ${typeof actual}`\n }, TypeError)\nE('ERR_OUT_OF_RANGE',\n function (str, range, input) {\n let msg = `The value of \"${str}\" is out of range.`\n let received = input\n if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n received = addNumericalSeparator(String(input))\n } else if (typeof input === 'bigint') {\n received = String(input)\n if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) {\n received = addNumericalSeparator(received)\n }\n received += 'n'\n }\n msg += ` It must be ${range}. Received ${received}`\n return msg\n }, RangeError)\n\nfunction addNumericalSeparator (val) {\n let res = ''\n let i = val.length\n const start = val[0] === '-' ? 1 : 0\n for (; i >= start + 4; i -= 3) {\n res = `_${val.slice(i - 3, i)}${res}`\n }\n return `${val.slice(0, i)}${res}`\n}\n\n// CHECK FUNCTIONS\n// ===============\n\nfunction checkBounds (buf, offset, byteLength) {\n validateNumber(offset, 'offset')\n if (buf[offset] === undefined || buf[offset + byteLength] === undefined) {\n boundsError(offset, buf.length - (byteLength + 1))\n }\n}\n\nfunction checkIntBI (value, min, max, buf, offset, byteLength) {\n if (value > max || value < min) {\n const n = typeof min === 'bigint' ? 'n' : ''\n let range\n if (byteLength > 3) {\n if (min === 0 || min === BigInt(0)) {\n range = `>= 0${n} and < 2${n} ** ${(byteLength + 1) * 8}${n}`\n } else {\n range = `>= -(2${n} ** ${(byteLength + 1) * 8 - 1}${n}) and < 2 ** ` +\n `${(byteLength + 1) * 8 - 1}${n}`\n }\n } else {\n range = `>= ${min}${n} and <= ${max}${n}`\n }\n throw new errors.ERR_OUT_OF_RANGE('value', range, value)\n }\n checkBounds(buf, offset, byteLength)\n}\n\nfunction validateNumber (value, name) {\n if (typeof value !== 'number') {\n throw new errors.ERR_INVALID_ARG_TYPE(name, 'number', value)\n }\n}\n\nfunction boundsError (value, length, type) {\n if (Math.floor(value) !== value) {\n validateNumber(value, type)\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset', 'an integer', value)\n }\n\n if (length < 0) {\n throw new errors.ERR_BUFFER_OUT_OF_BOUNDS()\n }\n\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset',\n `>= ${type ? 1 : 0} and <= ${length}`,\n value)\n}\n\n// HELPER FUNCTIONS\n// ================\n\nconst INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n let codePoint\n const length = string.length\n let leadSurrogate = null\n const bytes = []\n\n for (let i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n let c, hi, lo\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n let i\n for (i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nconst hexSliceLookupTable = (function () {\n const alphabet = '0123456789abcdef'\n const table = new Array(256)\n for (let i = 0; i < 16; ++i) {\n const i16 = i * 16\n for (let j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j]\n }\n }\n return table\n})()\n\n// Return not function with Error if BigInt not supported\nfunction defineBigIntMethod (fn) {\n return typeof BigInt === 'undefined' ? BufferBigIntNotDefined : fn\n}\n\nfunction BufferBigIntNotDefined () {\n throw new Error('BigInt not supported')\n}\n","/**\n * Byte and hex helpers shared across the crypto layer.\n *\n * These are intentionally dependency-free and isomorphic (Node + browser).\n */\n\n/** Parse a hex string (with or without `0x`) into bytes. */\nexport function hexToBytes(hex: string): Uint8Array {\n const h = hex.startsWith(\"0x\") ? hex.slice(2) : hex;\n if (h.length % 2) throw new Error(\"Invalid hex length\");\n const out = new Uint8Array(h.length / 2);\n for (let i = 0; i < out.length; i++) {\n out[i] = parseInt(h.slice(i * 2, i * 2 + 2), 16);\n }\n return out;\n}\n\n/** Encode bytes as a lowercase hex string (no `0x` prefix). */\nexport function bytesToHex(b: Uint8Array): string {\n return Array.from(b)\n .map((x) => x.toString(16).padStart(2, \"0\"))\n .join(\"\");\n}\n\n/** Interpret bytes as a big-endian unsigned integer. */\nexport function bytesToBigInt(b: Uint8Array): bigint {\n let x = 0n;\n for (let i = 0; i < b.length; i++) x = (x << 8n) | BigInt(b[i]);\n return x;\n}\n\n/** Encode a bigint as a fixed 32-byte big-endian array. */\nexport function bigIntToBytes32(value: bigint): Uint8Array {\n const out = new Uint8Array(32);\n let x = value;\n for (let i = 31; i >= 0; i--) {\n out[i] = Number(x & 0xffn);\n x >>= 8n;\n }\n return out;\n}\n\n/** bigint -> 0x-prefixed 32-byte big-endian hex. */\nexport function toHex32(v: bigint): string {\n return \"0x\" + v.toString(16).padStart(64, \"0\");\n}\n\n/** Concatenate byte arrays into one. */\nexport function concatBytes(...arrays: Uint8Array[]): Uint8Array {\n const total = arrays.reduce((n, a) => n + a.length, 0);\n const out = new Uint8Array(total);\n let off = 0;\n for (const a of arrays) {\n out.set(a, off);\n off += a.length;\n }\n return out;\n}\n","/**\n * String-based decimal parsing for XLM amounts to avoid floating-point precision\n * issues. XLM uses 7 decimal places (1 XLM = 10^7 stroops).\n */\n\nconst MAX_DECIMALS = 7;\n\n/**\n * Parse an XLM string into stroops. Enforces at most 7 decimal places and\n * rejects malformed input.\n *\n * @throws if the input is empty, non-numeric, or has more than 7 decimals.\n */\nexport function parseXlmToStroops(xlmString: string): bigint {\n const trimmed = xlmString.trim();\n if (!trimmed) {\n throw new Error(\"XLM amount cannot be empty\");\n }\n if (!/^-?\\d+\\.?\\d*$/.test(trimmed)) {\n throw new Error(`Invalid XLM amount: ${trimmed}`);\n }\n\n const isNegative = trimmed.startsWith(\"-\");\n const absolute = isNegative ? trimmed.slice(1) : trimmed;\n\n const parts = absolute.split(\".\");\n const integerPart = parts[0] || \"0\";\n const decimalPart = parts[1] || \"\";\n\n if (decimalPart.length > MAX_DECIMALS) {\n throw new Error(\n `XLM amount has too many decimal places (max ${MAX_DECIMALS}): ${trimmed}`,\n );\n }\n\n const paddedDecimal = decimalPart.padEnd(MAX_DECIMALS, \"0\");\n const stroops = BigInt(integerPart + paddedDecimal);\n return isNegative ? -stroops : stroops;\n}\n\n/**\n * Parse a Horizon balance string into stroops. Returns 0 for empty or malformed\n * input (defensive against unexpected API responses).\n */\nexport function parseHorizonBalanceToStroops(\n balanceString: string | undefined,\n): bigint {\n if (!balanceString || balanceString.trim() === \"\") return 0n;\n try {\n return parseXlmToStroops(balanceString);\n } catch {\n return 0n;\n }\n}\n\n/** Format stroops as an XLM string with trailing zeros removed. */\nexport function formatStroopsToXlm(stroops: bigint): string {\n const isNegative = stroops < 0n;\n const absolute = isNegative ? -stroops : stroops;\n\n const stroopsString = absolute.toString().padStart(MAX_DECIMALS + 1, \"0\");\n const integerPart = stroopsString.slice(0, -MAX_DECIMALS) || \"0\";\n const decimalPart = stroopsString.slice(-MAX_DECIMALS);\n const trimmedDecimal = decimalPart.replace(/0+$/, \"\");\n\n if (trimmedDecimal === \"\") {\n return isNegative ? `-${integerPart}` : integerPart;\n }\n return isNegative\n ? `-${integerPart}.${trimmedDecimal}`\n : `${integerPart}.${trimmedDecimal}`;\n}\n\n/** Alias for {@link formatStroopsToXlm}. */\nexport const formatXlm = formatStroopsToXlm;\n","/**\n * Dual-Key Stealth Address Protocol (DKSAP) — client-side crypto.\n *\n * Senders derive a one-time stealth address from a recipient's meta-address\n * (viewing + spending public keys). Recipients use their viewing key to detect\n * incoming transfers (view-tag prefilter) and their spending key to reconstruct\n * the one-time private key and sweep.\n *\n * Uses @noble/curves secp256k1 and is byte-compatible with the Rust WASM scanner.\n *\n * Stellar adaptation: scanning matches on the 20-byte Keccak \"stealth id\"; funds\n * are held on a deterministic Ed25519 Stellar account derived from the stealth\n * secp256k1 point.\n */\n\nimport { secp256k1 } from \"@noble/curves/secp256k1\";\nimport { keccak_256 } from \"@noble/hashes/sha3\";\nimport { hkdf } from \"@noble/hashes/hkdf\";\nimport { sha256 } from \"@noble/hashes/sha2\";\nimport { Keypair } from \"@stellar/stellar-sdk\";\nimport { bigIntToBytes32, bytesToBigInt, bytesToHex, hexToBytes } from \"./bytes\";\n\nconst CURVE = secp256k1;\nconst DOMAIN = \"opaque-cash-v1\";\nconst PROTOCOL_VERSION = \"1\";\n\n/** 0x-prefixed hex string. */\nexport type Hex = `0x${string}`;\n\nexport type DomainSeparationOpts = {\n origin: string;\n networkPassphrase: string;\n walletPublicKey: string;\n purpose: string;\n};\n\n/**\n * Build the human-readable, domain-separated message a wallet signs to derive\n * its Opaque stealth keys. Signing it is not a transaction and moves no funds.\n */\nexport function buildDomainSeparatedMessage(opts: DomainSeparationOpts): string {\n return [\n `--- Opaque Protocol Key Derivation ---`,\n `App: Opaque Stellar`,\n `Origin: ${opts.origin}`,\n `Network: ${opts.networkPassphrase}`,\n `Wallet: ${opts.walletPublicKey}`,\n `Version: ${PROTOCOL_VERSION}`,\n `Purpose: ${opts.purpose}`,\n ``,\n `Warning: Signing this message authorizes key derivation for the Opaque protocol.`,\n `This is not a transaction and does not move funds.`,\n `Do not sign this message on untrusted sites or applications.`,\n ].join(\"\\n\");\n}\n\nexport const LEGACY_SETUP_MESSAGE =\n \"Sign this message to derive your Opaque Cash stealth keys on Stellar. This is not a transaction and does not move funds.\";\n\n// -----------------------------------------------------------------------------\n// Key derivation from wallet signature (entropy)\n// -----------------------------------------------------------------------------\n\n/**\n * Derive viewing key (v) and spending key (s) from a wallet signature used as\n * entropy. Expands the signature into 64 bytes via HKDF-SHA256, then splits into\n * two 32-byte private keys. Domain string is \"opaque-cash-v1\".\n */\nexport function deriveKeysFromSignature(signatureHex: Hex | string): {\n viewingKey: Uint8Array;\n spendingKey: Uint8Array;\n} {\n const sigBytes =\n typeof signatureHex === \"string\"\n ? signatureHex.startsWith(\"0x\")\n ? signatureHex.slice(2)\n : signatureHex\n : signatureHex;\n const sig = typeof sigBytes === \"string\" ? hexToBytes(sigBytes) : sigBytes;\n const okm = hkdf(sha256, sig, undefined, DOMAIN, 64);\n return { viewingKey: okm.slice(0, 32), spendingKey: okm.slice(32, 64) };\n}\n\n/**\n * Build the stealth meta-address from viewing and spending private keys.\n * Meta-address = compressed(V) || compressed(S) (66 bytes).\n */\nexport function keysToStealthMetaAddress(\n viewingKey: Uint8Array,\n spendingKey: Uint8Array,\n): { V: Uint8Array; S: Uint8Array; metaAddress: Uint8Array } {\n const V = CURVE.getPublicKey(viewingKey, true);\n const S = CURVE.getPublicKey(spendingKey, true);\n const metaAddress = new Uint8Array(V.length + S.length);\n metaAddress.set(V, 0);\n metaAddress.set(S, V.length);\n return { V, S, metaAddress };\n}\n\n/** Encode the 66-byte stealth meta-address as 0x-prefixed hex. */\nexport function stealthMetaAddressToHex(metaAddress: Uint8Array): Hex {\n return (\"0x\" + bytesToHex(metaAddress)) as Hex;\n}\n\n/**\n * Parse a recipient stealth meta-address into viewing and spending public keys.\n * Format: first 33 bytes = compressed viewing key V, next 33 = compressed S.\n */\nexport function parseStealthMetaAddress(metaHex: Hex | string): {\n viewPubKey: Uint8Array;\n spendPubKey: Uint8Array;\n} {\n const raw =\n typeof metaHex === \"string\" && metaHex.startsWith(\"0x\")\n ? metaHex.slice(2)\n : metaHex;\n const bytes = hexToBytes(raw as string);\n if (bytes.length < 66) {\n throw new Error(\"Invalid stealth meta-address: expected 66 bytes\");\n }\n return { viewPubKey: bytes.slice(0, 33), spendPubKey: bytes.slice(33, 66) };\n}\n\n// -----------------------------------------------------------------------------\n// Shared secret + stealth point (DKSAP core)\n// -----------------------------------------------------------------------------\n\nfunction sharedSecretFromScalarAndPoint(\n privScalar: Uint8Array,\n pointBytes: Uint8Array,\n): Uint8Array {\n const P = CURVE.ProjectivePoint.fromHex(pointBytes);\n const scalar = bytesToBigInt(privScalar) % CURVE.CURVE.n;\n if (scalar === 0n) throw new Error(\"Invalid scalar\");\n return P.multiply(scalar).toRawBytes(true);\n}\n\nfunction hashSharedSecret(sharedSecret: Uint8Array): {\n sH: Uint8Array;\n viewTag: number;\n} {\n const sH = keccak_256(sharedSecret);\n return { sH, viewTag: sH[0] };\n}\n\nfunction stealthPointAndAddress(\n spendPubKey: Uint8Array,\n sH: Uint8Array,\n): { stealthAddress: string; stealthPubKeyUncompressed: Uint8Array } {\n const n = CURVE.CURVE.n;\n const sHMod = bytesToBigInt(sH) % n;\n if (sHMod === 0n) throw new Error(\"Invalid scalar from hash\");\n const S_h = CURVE.ProjectivePoint.BASE.multiply(sHMod);\n const P_spend = CURVE.ProjectivePoint.fromHex(spendPubKey);\n const P_stealth = P_spend.add(S_h);\n const uncompressed = P_stealth.toRawBytes(false);\n const hash = keccak_256(uncompressed.slice(1));\n const addr = \"0x\" + bytesToHex(hash.slice(12));\n return { stealthAddress: addr, stealthPubKeyUncompressed: uncompressed };\n}\n\n/**\n * Sender-side: compute a one-time stealth address and view tag for a recipient\n * meta-address. Generates a fresh ephemeral key per call.\n */\nexport function computeStealthAddressAndViewTag(\n recipientMetaAddressHex: Hex | string,\n): {\n ephemeralPriv: Uint8Array;\n ephemeralPubKey: Uint8Array;\n stealthAddress: string;\n stealthStellarAddress: string;\n viewTag: number;\n metadata: Uint8Array;\n} {\n const { viewPubKey, spendPubKey } = parseStealthMetaAddress(\n recipientMetaAddressHex as Hex,\n );\n const ephemeralPriv = CURVE.utils.randomPrivateKey();\n const ephemeralPubKey = CURVE.getPublicKey(ephemeralPriv, true);\n\n const shared = sharedSecretFromScalarAndPoint(ephemeralPriv, viewPubKey);\n const { sH, viewTag } = hashSharedSecret(shared);\n const { stealthAddress, stealthPubKeyUncompressed } = stealthPointAndAddress(\n spendPubKey,\n sH,\n );\n const stealthStellarAddress = deriveStealthStellarAddress(\n stealthPubKeyUncompressed,\n );\n\n return {\n ephemeralPriv,\n ephemeralPubKey,\n stealthAddress,\n stealthStellarAddress,\n viewTag,\n metadata: new Uint8Array([viewTag]),\n };\n}\n\n/**\n * Rebuild announce() parameters for a manual ghost receive using a stored\n * ephemeral private key (deterministic re-derivation of a prior send).\n */\nexport function buildGhostAnnouncementPayload(\n recipientMetaAddressHex: Hex | string,\n ephemeralPrivKeyHex: Hex | string,\n): {\n stealthAddress: string;\n ephemeralPubKey: Uint8Array;\n metadata: Uint8Array;\n viewTag: number;\n} {\n const { viewPubKey, spendPubKey } = parseStealthMetaAddress(\n recipientMetaAddressHex as Hex,\n );\n const h = (ephemeralPrivKeyHex as string).startsWith(\"0x\")\n ? (ephemeralPrivKeyHex as string).slice(2)\n : ephemeralPrivKeyHex;\n const ephemeralPriv = hexToBytes(h as string);\n if (ephemeralPriv.length !== 32) {\n throw new Error(\"Ephemeral private key must be 32 bytes.\");\n }\n const ephemeralPubKey = CURVE.getPublicKey(ephemeralPriv, true);\n const shared = sharedSecretFromScalarAndPoint(ephemeralPriv, viewPubKey);\n const { sH, viewTag } = hashSharedSecret(shared);\n const { stealthAddress } = stealthPointAndAddress(spendPubKey, sH);\n return {\n stealthAddress,\n ephemeralPubKey,\n metadata: new Uint8Array([viewTag]),\n viewTag,\n };\n}\n\n// -----------------------------------------------------------------------------\n// Recipient-side detection + reconstruction (pure-TS reference for the scanner)\n// -----------------------------------------------------------------------------\n\n/**\n * Recipient-side: recompute the DKSAP shared-secret hash and view tag from the\n * sender's ephemeral public key and the recipient's viewing key. Mirrors the\n * sender computation via ECDH symmetry (viewPriv·EphPub == ephPriv·ViewPub).\n */\nexport function recipientSharedSecretHash(\n viewingKey: Uint8Array,\n ephemeralPubKey: Uint8Array,\n): { sH: Uint8Array; viewTag: number } {\n const shared = sharedSecretFromScalarAndPoint(viewingKey, ephemeralPubKey);\n return hashSharedSecret(shared);\n}\n\n/**\n * Cheap recipient-side prefilter: does this announcement's view tag match?\n * Lets a recipient skip the expensive point math for non-matching transfers.\n */\nexport function checkViewTagMatch(opts: {\n viewingKey: Uint8Array;\n ephemeralPubKey: Uint8Array;\n viewTag: number;\n}): boolean {\n return (\n recipientSharedSecretHash(opts.viewingKey, opts.ephemeralPubKey).viewTag ===\n opts.viewTag\n );\n}\n\n/**\n * Recipient-side: reconstruct the one-time stealth private key for a transfer.\n * stealthPriv = (spendingKey + sH) mod n, where sH = keccak(viewPriv·EphPub).\n * The returned key controls the same secp256k1 point the sender derived, hence\n * the same deterministic Stellar account.\n */\nexport function reconstructStealthPrivateKey(opts: {\n viewingKey: Uint8Array;\n spendingKey: Uint8Array;\n ephemeralPubKey: Uint8Array;\n}): Uint8Array {\n const n = CURVE.CURVE.n;\n const { sH } = recipientSharedSecretHash(opts.viewingKey, opts.ephemeralPubKey);\n const sHMod = bytesToBigInt(sH) % n;\n const spend = bytesToBigInt(opts.spendingKey) % n;\n const stealth = (spend + sHMod) % n;\n if (stealth === 0n) throw new Error(\"Reconstructed stealth key is zero\");\n return bigIntToBytes32(stealth);\n}\n\n// -----------------------------------------------------------------------------\n// Deterministic ephemeral key for the \"Announcer\" stealth signer\n// -----------------------------------------------------------------------------\n\nconst ANNOUNCER_SALT = \"opaque-announcer-v1\";\n\n/** Deterministic ephemeral scalar for the \"Announcer\" stealth signer. */\nexport function deriveAnnouncerEphemeralKey(\n metaAddressHex: Hex | string,\n): Uint8Array {\n const raw =\n typeof metaAddressHex === \"string\" && metaAddressHex.startsWith(\"0x\")\n ? metaAddressHex.slice(2)\n : metaAddressHex;\n const seed = new TextEncoder().encode(raw + ANNOUNCER_SALT);\n const okm = hkdf(sha256, seed, undefined, \"opaque-announcer-ephemeral\", 32);\n const n = CURVE.CURVE.n;\n let scalar = bytesToBigInt(okm) % n;\n if (scalar === 0n) scalar = 1n;\n return bigIntToBytes32(scalar);\n}\n\n// -----------------------------------------------------------------------------\n// Deterministic Stellar account from a stealth point\n// -----------------------------------------------------------------------------\n\n/** Derive the deterministic Ed25519 Stellar keypair from a stealth secp256k1 point. */\nexport function deriveStealthStellarKeypair(\n stealthPubKeyUncompressed: Uint8Array,\n): Keypair {\n const domain = new TextEncoder().encode(\"opaque-stellar-stealth-v1\");\n const input = new Uint8Array(domain.length + stealthPubKeyUncompressed.length);\n input.set(domain, 0);\n input.set(stealthPubKeyUncompressed, domain.length);\n const seed = sha256(input);\n return Keypair.fromRawEd25519Seed(Buffer.from(seed.slice(0, 32)));\n}\n\n/** Derive the deterministic Stellar G-address from a stealth secp256k1 point. */\nexport function deriveStealthStellarAddress(\n stealthPubKeyUncompressed: Uint8Array,\n): string {\n return deriveStealthStellarKeypair(stealthPubKeyUncompressed).publicKey();\n}\n\n/**\n * Recompute the 20-byte EVM-style stealth id (`0x` + 40 hex) from a stealth\n * private key. Used to confirm a view-tag match against an announcement.\n */\nexport function stealthIdFromPrivateKey(stealthPrivKey: Uint8Array): string {\n const uncompressed = CURVE.getPublicKey(stealthPrivKey, false);\n const hash = keccak_256(uncompressed.slice(1));\n return \"0x\" + bytesToHex(hash.slice(12));\n}\n\n/** Derive the deterministic Stellar G-address from a stealth private key. */\nexport function deriveStealthStellarAddressFromStealthPrivKey(\n stealthPrivKey: Uint8Array,\n): string {\n return deriveStealthStellarAddress(CURVE.getPublicKey(stealthPrivKey, false));\n}\n\n/** Derive the deterministic Stellar keypair from a stealth private key. */\nexport function deriveStealthStellarKeypairFromStealthPrivKey(\n stealthPrivKey: Uint8Array,\n): Keypair {\n return deriveStealthStellarKeypair(CURVE.getPublicKey(stealthPrivKey, false));\n}\n","/**\n * Pure-TS DKSAP announcement scanner. Given a set of announcements and the\n * recipient's viewing/spending keys, returns the transfers addressed to the\n * recipient with their reconstructed one-time keys. No WASM, no network: the\n * caller supplies the announcements (e.g. read from the stealth-announcer\n * contract events).\n */\nimport {\n checkViewTagMatch,\n deriveStealthStellarAddressFromStealthPrivKey,\n reconstructStealthPrivateKey,\n stealthIdFromPrivateKey,\n} from \"./dksap\";\n\nexport interface StealthAnnouncement {\n /** 20-byte EVM-style stealth id (`0x` + 40 hex). */\n stealthAddress: string;\n /** Sender's compressed ephemeral public key (33 bytes). */\n ephemeralPubKey: Uint8Array;\n /** View tag byte from the announcement metadata. */\n viewTag: number;\n}\n\nexport interface ScanMatch {\n announcement: StealthAnnouncement;\n /** Reconstructed one-time stealth private key (32 bytes). */\n stealthPrivKey: Uint8Array;\n /** Deterministic Stellar account holding the funds. */\n stealthStellarAddress: string;\n}\n\n/**\n * Scan announcements for transfers to the recipient. Each candidate is\n * view-tag prefiltered, then confirmed by reconstructing the one-time key and\n * checking its stealth id equals the announced one (so a coincidental tag match\n * is rejected).\n */\nexport function scanAnnouncements(opts: {\n announcements: StealthAnnouncement[];\n viewingKey: Uint8Array;\n spendingKey: Uint8Array;\n}): ScanMatch[] {\n const matches: ScanMatch[] = [];\n for (const announcement of opts.announcements) {\n if (\n !checkViewTagMatch({\n viewingKey: opts.viewingKey,\n ephemeralPubKey: announcement.ephemeralPubKey,\n viewTag: announcement.viewTag,\n })\n ) {\n continue;\n }\n const stealthPrivKey = reconstructStealthPrivateKey({\n viewingKey: opts.viewingKey,\n spendingKey: opts.spendingKey,\n ephemeralPubKey: announcement.ephemeralPubKey,\n });\n if (\n stealthIdFromPrivateKey(stealthPrivKey).toLowerCase() !==\n announcement.stealthAddress.toLowerCase()\n ) {\n continue;\n }\n matches.push({\n announcement,\n stealthPrivKey,\n stealthStellarAddress: deriveStealthStellarAddressFromStealthPrivKey(stealthPrivKey),\n });\n }\n return matches;\n}\n","/**\n * Privacy-pool note model and cryptographic derivation.\n *\n * A note is the client-side spending material for one pooled commitment. Losing\n * it loses the funds, so notes must be persisted and backed up. A note holds only\n * the depositor's own secrets and reveals nothing on-chain (the commitment is a\n * hash).\n *\n * Derivations (byte-match circuits/v3 + the privacy-pool contract):\n * label = Poseidon(scope, leafIndex)\n * precommitment = Poseidon(nullifier, secret)\n * commitment = Poseidon(value, label, precommitment)\n * nullifierHash = Poseidon(nullifier)\n */\nimport { buildPoseidon } from \"circomlibjs\";\n\nexport const POOL_TREE_DEPTH = 20;\nexport const BN254_R =\n 21888242871839275222246405745257275088548364400416034343698204186575808495617n;\n\nexport type PoolNote = {\n /** Network cluster this note belongs to. */\n cluster: string;\n /** Privacy-pool contract this note belongs to. Legacy notes may omit this. */\n poolId?: string;\n /** Deposited value, in stroops, as a decimal string. */\n value: string;\n /** Domain separator the deposit was made under. */\n scope: number;\n /** Leaf index assigned by the contract at deposit time. */\n leafIndex: number;\n /** Field-element secrets (decimal strings). */\n nullifier: string;\n secret: string;\n /** Derived commitment (0x-prefixed 32-byte hex), the state-tree leaf. */\n commitment: string;\n /** Whether this note has been spent (withdrawn). */\n spent: boolean;\n createdAt: number;\n};\n\ntype PoseidonFn = { F: { toObject: (x: unknown) => bigint } } & ((\n i: bigint[],\n) => unknown);\n\nlet _poseidon: PoseidonFn | null = null;\n\n/** Lazily build (and cache) the circomlibjs Poseidon instance. */\nexport async function getPoseidon(): Promise<PoseidonFn> {\n if (!_poseidon) {\n // circomlibjs touches Buffer; ensure it exists before loading (browsers).\n if (typeof globalThis !== \"undefined\" && !(\"Buffer\" in globalThis)) {\n const bufferPkg = await import(\"buffer/index.js\");\n (globalThis as Record<string, unknown>).Buffer = bufferPkg.Buffer;\n }\n _poseidon = (await buildPoseidon()) as PoseidonFn;\n }\n return _poseidon;\n}\n\n/** Hash a list of field elements with Poseidon, returning the field result. */\nexport function hashFields(poseidon: PoseidonFn, inputs: bigint[]): bigint {\n return poseidon.F.toObject(poseidon(inputs));\n}\n\n/** Cryptographically-random field element < r (decimal string). */\nexport function randomFieldElement(): string {\n const bytes = new Uint8Array(31);\n crypto.getRandomValues(bytes);\n let v = 0n;\n for (const b of bytes) v = (v << 8n) + BigInt(b);\n return (v % BN254_R).toString();\n}\n\nexport type DerivedDeposit = {\n label: bigint;\n precommitment: bigint;\n commitment: bigint;\n nullifierHash: bigint;\n};\n\n/** Derive the commitment material for one deposit from its secrets. */\nexport async function deriveDeposit(opts: {\n value: bigint;\n scope: number;\n leafIndex: number;\n nullifier: bigint;\n secret: bigint;\n}): Promise<DerivedDeposit> {\n const poseidon = await getPoseidon();\n const h = (xs: bigint[]) => hashFields(poseidon, xs);\n const label = h([BigInt(opts.scope), BigInt(opts.leafIndex)]);\n const precommitment = h([opts.nullifier, opts.secret]);\n const commitment = h([opts.value, label, precommitment]);\n const nullifierHash = h([opts.nullifier]);\n return { label, precommitment, commitment, nullifierHash };\n}\n\n/** Build a fresh note's secrets (commitment is filled once the leaf index is known). */\nexport function newNoteSecrets(): { nullifier: string; secret: string } {\n return { nullifier: randomFieldElement(), secret: randomFieldElement() };\n}\n\n/** Unspent total across notes, in stroops. */\nexport function unspentTotal(notes: PoolNote[]): bigint {\n return notes\n .filter((n) => !n.spent)\n .reduce((sum, n) => sum + BigInt(n.value), 0n);\n}\n","/**\n * Canonical schema / attestation encoding. Mirrors the `opaque-schema-core`\n * crate and the Soroban schema/attestation contracts byte-for-byte.\n */\n\nimport { StrKey } from \"@stellar/stellar-sdk\";\nimport type { FieldDef, FieldType } from \"./schema-types\";\n\nexport const MAX_FIELDS = 16;\nexport const MAX_FIELD_NAME_LEN = 32;\nexport const MAX_STRING_VALUE_LEN = 128;\nexport const MAX_ATTESTATION_DATA_LEN = 512;\n\nconst FIELD_TYPE_IDS: Record<FieldType, number> = {\n bool: 0,\n u8: 1,\n u16: 2,\n u32: 3,\n u64: 4,\n string: 5,\n pubkey: 6,\n};\n\nexport class SchemaParseError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"SchemaParseError\";\n }\n}\n\nexport class AttestationDataError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"AttestationDataError\";\n }\n}\n\nfunction isValidFieldName(name: string): boolean {\n if (!name || name.length > MAX_FIELD_NAME_LEN) return false;\n return /^[a-zA-Z_][a-zA-Z0-9_]*$/.test(name);\n}\n\n/** Parse and validate `\"type name\"` comma-separated field definitions. */\nexport function parseFieldDefinitions(fieldDefs: string): FieldDef[] {\n const trimmed = fieldDefs.trim();\n if (!trimmed) throw new SchemaParseError(\"Field definitions cannot be empty\");\n\n const fields: FieldDef[] = [];\n for (const segment of trimmed.split(\",\")) {\n const seg = segment.trim();\n if (!seg) throw new SchemaParseError(\"Malformed field segment\");\n const spaceIdx = seg.indexOf(\" \");\n if (spaceIdx === -1) {\n throw new SchemaParseError(\n 'Expected \"type name\" format (legacy \"name:type\" is not supported)',\n );\n }\n const type = seg.slice(0, spaceIdx).trim() as FieldType;\n const name = seg.slice(spaceIdx + 1).trim();\n if (name.includes(\" \") || !Object.hasOwn(FIELD_TYPE_IDS, type)) {\n throw new SchemaParseError(`Invalid field type: ${type}`);\n }\n if (!isValidFieldName(name)) {\n throw new SchemaParseError(`Invalid field name: ${name}`);\n }\n if (fields.some((f) => f.name === name)) {\n throw new SchemaParseError(`Duplicate field name: ${name}`);\n }\n fields.push({ id: String(fields.length), name, type });\n if (fields.length > MAX_FIELDS) throw new SchemaParseError(\"Too many fields\");\n }\n\n const canonical = fieldDefsToCanonicalString(fields);\n if (canonical.length > 256) {\n throw new SchemaParseError(\"Field definitions too long\");\n }\n return fields;\n}\n\nexport function fieldDefsToCanonicalString(fields: FieldDef[]): string {\n return fields\n .filter((f) => f.name.trim())\n .map((f) => `${f.type} ${f.name.trim()}`)\n .join(\",\");\n}\n\nexport function encodeCanonicalFieldDefs(fields: FieldDef[]): Uint8Array {\n const parts: number[] = [fields.length];\n for (const f of fields) {\n const nameBytes = new TextEncoder().encode(f.name);\n parts.push(FIELD_TYPE_IDS[f.type], nameBytes.length, ...nameBytes);\n }\n return new Uint8Array(parts);\n}\n\nexport function addressToAuthorityBytes(address: string): Uint8Array {\n return Uint8Array.from(StrKey.decodeEd25519PublicKey(address));\n}\n\n/** Compute a schema id (SHA-256 of authority || name || version || canonical defs). */\nexport async function computeSchemaIdFromBytes(\n authorityBytes: Uint8Array,\n name: string,\n fieldDefinitions: string,\n version: number = 1,\n): Promise<Uint8Array> {\n const fields = parseFieldDefinitions(fieldDefinitions);\n const canonical = encodeCanonicalFieldDefs(fields);\n const encoder = new TextEncoder();\n const nameBytes = encoder.encode(name);\n const versionBytes = new Uint8Array(4);\n new DataView(versionBytes.buffer).setUint32(0, version, false);\n\n const combined = new Uint8Array(\n authorityBytes.length +\n nameBytes.length +\n versionBytes.length +\n canonical.length,\n );\n let off = 0;\n combined.set(authorityBytes, off);\n off += authorityBytes.length;\n combined.set(nameBytes, off);\n off += nameBytes.length;\n combined.set(versionBytes, off);\n off += versionBytes.length;\n combined.set(canonical, off);\n\n const hashBuffer = await crypto.subtle.digest(\"SHA-256\", combined);\n return new Uint8Array(hashBuffer);\n}\n\nexport async function computeSchemaId(\n authority: string,\n name: string,\n fieldDefinitions: string,\n version: number = 1,\n): Promise<Uint8Array> {\n return computeSchemaIdFromBytes(\n addressToAuthorityBytes(authority),\n name,\n fieldDefinitions,\n version,\n );\n}\n\nfunction parseBool(value: string): boolean {\n const v = value.trim();\n if (v === \"true\" || v === \"1\") return true;\n if (v === \"false\" || v === \"0\" || v === \"\") return false;\n throw new AttestationDataError(`Invalid bool: ${value}`);\n}\n\nfunction parseUint(value: string, max: bigint): bigint {\n const v = value.trim();\n if (!v) return 0n;\n if (!/^\\d+$/.test(v)) throw new AttestationDataError(`Invalid integer: ${value}`);\n const n = BigInt(v);\n if (n < 0n || n > max) {\n throw new AttestationDataError(`Integer out of range: ${value}`);\n }\n return n;\n}\n\nfunction parsePubkeyHex(value: string): Uint8Array {\n const hex = value.trim().replace(/^0x/i, \"\");\n if (hex.length !== 64) throw new AttestationDataError(\"Invalid pubkey hex\");\n const out = new Uint8Array(32);\n for (let i = 0; i < 32; i++) {\n out[i] = parseInt(hex.slice(i * 2, i * 2 + 2), 16);\n }\n return out;\n}\n\n/** Encode attestation payload bytes in schema field order. */\nexport function encodeAttestationData(\n fieldValues: Record<string, string>,\n fieldDefs: FieldDef[],\n): Uint8Array {\n const parts: Uint8Array[] = [];\n for (const field of fieldDefs) {\n const value = fieldValues[field.name] ?? \"\";\n switch (field.type) {\n case \"bool\":\n parts.push(new Uint8Array([parseBool(value) ? 1 : 0]));\n break;\n case \"u8\":\n parts.push(new Uint8Array([Number(parseUint(value, 255n))]));\n break;\n case \"u16\": {\n const buf = new Uint8Array(2);\n new DataView(buf.buffer).setUint16(0, Number(parseUint(value, 65535n)), false);\n parts.push(buf);\n break;\n }\n case \"u32\": {\n const buf = new Uint8Array(4);\n new DataView(buf.buffer).setUint32(0, Number(parseUint(value, 4294967295n)), false);\n parts.push(buf);\n break;\n }\n case \"u64\": {\n const buf = new Uint8Array(8);\n new DataView(buf.buffer).setBigUint64(\n 0,\n parseUint(value, 18446744073709551615n),\n false,\n );\n parts.push(buf);\n break;\n }\n case \"string\": {\n const bytes = new TextEncoder().encode(value);\n if (bytes.length > MAX_STRING_VALUE_LEN) {\n throw new AttestationDataError(\"String value too long\");\n }\n const len = new Uint8Array(2);\n new DataView(len.buffer).setUint16(0, bytes.length, false);\n parts.push(len, bytes);\n break;\n }\n case \"pubkey\":\n parts.push(parsePubkeyHex(value));\n break;\n default:\n throw new AttestationDataError(`Unsupported type: ${field.type}`);\n }\n }\n\n const total = parts.reduce((a, p) => a + p.length, 0);\n if (total > MAX_ATTESTATION_DATA_LEN) {\n throw new AttestationDataError(\"Attestation data too large\");\n }\n const out = new Uint8Array(total);\n let offset = 0;\n for (const p of parts) {\n out.set(p, offset);\n offset += p.length;\n }\n return out;\n}\n\n/** Decode canonical attestation bytes into a field-value map. */\nexport function decodeAttestationData(\n data: Uint8Array,\n fieldDefs: FieldDef[],\n): Record<string, string> {\n const dec = new TextDecoder();\n const result: Record<string, string> = {};\n let offset = 0;\n\n for (const field of fieldDefs) {\n switch (field.type) {\n case \"bool\":\n if (offset >= data.length) throw new AttestationDataError(\"Truncated bool\");\n result[field.name] = data[offset] === 1 ? \"true\" : \"false\";\n offset += 1;\n break;\n case \"u8\":\n if (offset >= data.length) throw new AttestationDataError(\"Truncated u8\");\n result[field.name] = String(data[offset]);\n offset += 1;\n break;\n case \"u16\": {\n if (offset + 2 > data.length) throw new AttestationDataError(\"Truncated u16\");\n result[field.name] = String(\n new DataView(data.buffer, data.byteOffset + offset, 2).getUint16(0, false),\n );\n offset += 2;\n break;\n }\n case \"u32\": {\n if (offset + 4 > data.length) throw new AttestationDataError(\"Truncated u32\");\n result[field.name] = String(\n new DataView(data.buffer, data.byteOffset + offset, 4).getUint32(0, false),\n );\n offset += 4;\n break;\n }\n case \"u64\": {\n if (offset + 8 > data.length) throw new AttestationDataError(\"Truncated u64\");\n result[field.name] = String(\n new DataView(data.buffer, data.byteOffset + offset, 8).getBigUint64(0, false),\n );\n offset += 8;\n break;\n }\n case \"string\": {\n if (offset + 2 > data.length) {\n throw new AttestationDataError(\"Truncated string length\");\n }\n const len = new DataView(data.buffer, data.byteOffset + offset, 2).getUint16(0, false);\n offset += 2;\n if (offset + len > data.length) throw new AttestationDataError(\"Truncated string\");\n result[field.name] = dec.decode(data.slice(offset, offset + len));\n offset += len;\n break;\n }\n case \"pubkey\": {\n if (offset + 32 > data.length) throw new AttestationDataError(\"Truncated pubkey\");\n const slice = data.slice(offset, offset + 32);\n result[field.name] =\n \"0x\" + Array.from(slice).map((b) => b.toString(16).padStart(2, \"0\")).join(\"\");\n offset += 32;\n break;\n }\n default:\n throw new AttestationDataError(`Unsupported type: ${field.type}`);\n }\n }\n if (offset !== data.length) {\n throw new AttestationDataError(\"Trailing bytes in attestation data\");\n }\n return result;\n}\n","/**\n * Encrypted backup of stealth ephemeral private keys (\"ghost entries\").\n * PBKDF2-SHA256 key derivation + AES-256-GCM, using the Web Crypto API\n * (available in browsers and Node 18+).\n *\n * Threat model: protects key material at rest against read-only exfiltration of\n * stored backups. It does NOT protect against capture of the password at entry\n * time, runtime memory inspection while decrypted, or a fully compromised host.\n */\n\nconst PBKDF2_ITERATIONS = 600_000;\nconst SALT_BYTES = 16;\nconst IV_BYTES = 12;\n\nfunction toArrayBuffer(bytes: Uint8Array): ArrayBuffer {\n const copy = new Uint8Array(bytes.byteLength);\n copy.set(bytes);\n return copy.buffer;\n}\n\nfunction bytesToBase64(bytes: Uint8Array): string {\n let binary = \"\";\n for (let i = 0; i < bytes.length; i += 1) binary += String.fromCharCode(bytes[i] ?? 0);\n return btoa(binary);\n}\n\nfunction base64ToBytes(base64: string): Uint8Array {\n const binary = atob(base64);\n const out = new Uint8Array(binary.length);\n for (let i = 0; i < binary.length; i += 1) out[i] = binary.charCodeAt(i);\n return out;\n}\n\nasync function deriveKeyFromPassword(\n password: string,\n salt: Uint8Array,\n): Promise<CryptoKey> {\n const encoder = new TextEncoder();\n const passwordKey = await crypto.subtle.importKey(\n \"raw\",\n toArrayBuffer(encoder.encode(password)),\n \"PBKDF2\",\n false,\n [\"deriveKey\"],\n );\n return crypto.subtle.deriveKey(\n {\n name: \"PBKDF2\",\n salt: toArrayBuffer(salt),\n iterations: PBKDF2_ITERATIONS,\n hash: \"SHA-256\",\n },\n passwordKey,\n { name: \"AES-GCM\", length: 256 },\n false,\n [\"encrypt\", \"decrypt\"],\n );\n}\n\nasync function encryptField(plaintext: string, key: CryptoKey): Promise<string> {\n const iv = crypto.getRandomValues(new Uint8Array(IV_BYTES));\n const encoded = new TextEncoder().encode(plaintext);\n const ciphertext = new Uint8Array(\n await crypto.subtle.encrypt(\n { name: \"AES-GCM\", iv: toArrayBuffer(iv) },\n key,\n encoded,\n ),\n );\n return `${bytesToBase64(iv)}:${bytesToBase64(ciphertext)}`;\n}\n\nasync function decryptField(packed: string, key: CryptoKey): Promise<string> {\n const [ivB64, ctB64] = packed.split(\":\");\n if (!ivB64 || !ctB64) throw new Error(\"Invalid encrypted field format\");\n const iv = base64ToBytes(ivB64);\n const ciphertext = base64ToBytes(ctB64);\n const decrypted = await crypto.subtle.decrypt(\n { name: \"AES-GCM\", iv: toArrayBuffer(iv) },\n key,\n toArrayBuffer(ciphertext),\n );\n return new TextDecoder().decode(new Uint8Array(decrypted));\n}\n\nexport type GhostEntryLike = {\n cluster: string;\n stealthAddress: string;\n ephemeralPrivKeyHex?: string;\n createdAt: number;\n};\n\nexport type EncryptedGhostPayload = {\n version: 1;\n salt: string;\n entries: Array<{\n cluster: string;\n stealthAddress: string;\n ephemeralPrivKeyEncrypted?: string;\n createdAt: number;\n }>;\n};\n\n/**\n * Encrypt ghost entries. Only `ephemeralPrivKeyHex` is encrypted; metadata\n * (cluster, stealth address, timestamp) stays readable.\n */\nexport async function encryptGhostEntries(\n entries: GhostEntryLike[],\n password: string,\n): Promise<EncryptedGhostPayload> {\n const salt = crypto.getRandomValues(new Uint8Array(SALT_BYTES));\n const key = await deriveKeyFromPassword(password, salt);\n\n const encrypted = [];\n for (const entry of entries) {\n encrypted.push({\n cluster: entry.cluster,\n stealthAddress: entry.stealthAddress,\n ephemeralPrivKeyEncrypted: entry.ephemeralPrivKeyHex\n ? await encryptField(entry.ephemeralPrivKeyHex, key)\n : undefined,\n createdAt: entry.createdAt,\n });\n }\n return { version: 1, salt: bytesToBase64(salt), entries: encrypted };\n}\n\n/** Decrypt ghost entries produced by {@link encryptGhostEntries}. */\nexport async function decryptGhostEntries(\n payload: EncryptedGhostPayload,\n password: string,\n): Promise<GhostEntryLike[]> {\n if (payload.version !== 1) {\n throw new Error(\"Unsupported encrypted payload version\");\n }\n const salt = base64ToBytes(payload.salt);\n const key = await deriveKeyFromPassword(password, salt);\n\n const decrypted = [];\n for (const entry of payload.entries) {\n decrypted.push({\n cluster: entry.cluster,\n stealthAddress: entry.stealthAddress,\n ephemeralPrivKeyHex: entry.ephemeralPrivKeyEncrypted\n ? await decryptField(entry.ephemeralPrivKeyEncrypted, key)\n : undefined,\n createdAt: entry.createdAt,\n });\n }\n return decrypted;\n}\n\n/** Export ghost entries as an encrypted JSON string. */\nexport async function exportEncryptedBackup(\n entries: GhostEntryLike[],\n password: string,\n): Promise<string> {\n return JSON.stringify(await encryptGhostEntries(entries, password));\n}\n\n/** Import ghost entries from an encrypted backup string. */\nexport async function importEncryptedBackup(\n backupJson: string,\n password: string,\n): Promise<GhostEntryLike[]> {\n const payload = JSON.parse(backupJson) as EncryptedGhostPayload;\n return decryptGhostEntries(payload, password);\n}\n","/**\n * Opaque payment-link format: `opaque://v{version}/{network}/{metaAddress}?{params}`\n * with versioning, network binding, and optional SEP-compatible parameters.\n */\n\nexport type Network = \"testnet\" | \"mainnet\" | \"futurenet\" | \"local\";\n\nexport interface PaymentLinkParams {\n amount?: string;\n asset?: string;\n issuer?: string;\n memo?: string;\n sep?: string;\n callback?: string;\n label?: string;\n expires?: string;\n}\n\nexport interface PaymentLink {\n version: number;\n network: Network;\n metaAddress: string;\n params: PaymentLinkParams;\n}\n\nexport interface PaymentLinkError {\n type:\n | \"INVALID_FORMAT\"\n | \"UNSUPPORTED_VERSION\"\n | \"NETWORK_MISMATCH\"\n | \"INVALID_META_ADDRESS\"\n | \"INVALID_PARAMETER\";\n message: string;\n details?: unknown;\n}\n\n/** Validate a DKSAP meta-address: `0x` + 132 hex chars (66 bytes). */\nexport function isValidMetaAddress(metaAddress: string): boolean {\n if (metaAddress.length !== 134) return false;\n if (!metaAddress.startsWith(\"0x\")) return false;\n return /^[0-9a-fA-F]{132}$/.test(metaAddress.slice(2));\n}\n\nexport function isValidNetwork(network: string): network is Network {\n return [\"testnet\", \"mainnet\", \"futurenet\", \"local\"].includes(network);\n}\n\n/** Validate a Stellar public key (G..., 56 chars, base32). */\nexport function isValidStellarPublicKey(publicKey: string): boolean {\n if (publicKey.length !== 56) return false;\n if (!publicKey.startsWith(\"G\")) return false;\n return /^[A-Z2-7]{55}$/.test(publicKey);\n}\n\nexport function isValidAssetCode(assetCode: string): boolean {\n if (assetCode.length < 1 || assetCode.length > 12) return false;\n return /^[a-zA-Z0-9]+$/.test(assetCode);\n}\n\nexport function isValidAmount(amount: string): boolean {\n if (!amount) return false;\n const num = parseFloat(amount);\n if (isNaN(num) || num <= 0) return false;\n return /^[0-9]+(\\.[0-9]+)?$/.test(amount);\n}\n\nexport function isValidIso8601(timestamp: string): boolean {\n try {\n return !isNaN(new Date(timestamp).getTime());\n } catch {\n return false;\n }\n}\n\nexport function isValidUrl(url: string): boolean {\n try {\n return new URL(url).protocol === \"https:\";\n } catch {\n return false;\n }\n}\n\n/** Encode a payment link from components. Throws on invalid input. */\nexport function encodePaymentLink(link: PaymentLink): string {\n if (!isValidMetaAddress(link.metaAddress)) {\n throw new Error(\"Invalid meta-address format\");\n }\n if (!isValidNetwork(link.network)) {\n throw new Error(\"Invalid network identifier\");\n }\n\n const uri = `opaque://v${link.version}/${link.network}/${link.metaAddress}`;\n const params = new URLSearchParams();\n\n if (link.params.amount) {\n if (!isValidAmount(link.params.amount)) throw new Error(\"Invalid amount format\");\n params.set(\"amount\", link.params.amount);\n }\n if (link.params.asset) {\n if (!isValidAssetCode(link.params.asset)) throw new Error(\"Invalid asset code\");\n params.set(\"asset\", link.params.asset);\n }\n if (link.params.issuer) {\n if (!isValidStellarPublicKey(link.params.issuer)) {\n throw new Error(\"Invalid issuer address\");\n }\n params.set(\"issuer\", link.params.issuer);\n }\n if (link.params.memo) params.set(\"memo\", link.params.memo);\n if (link.params.sep) params.set(\"sep\", link.params.sep);\n if (link.params.callback) {\n if (!isValidUrl(link.params.callback)) throw new Error(\"Invalid callback URL\");\n params.set(\"callback\", link.params.callback);\n }\n if (link.params.label) params.set(\"label\", link.params.label);\n if (link.params.expires) {\n if (!isValidIso8601(link.params.expires)) {\n throw new Error(\"Invalid expiration timestamp\");\n }\n params.set(\"expires\", link.params.expires);\n }\n\n const queryString = params.toString();\n return queryString ? `${uri}?${queryString}` : uri;\n}\n\n/** Decode a payment-link string into components, or a structured error. */\nexport function decodePaymentLink(\n linkString: string,\n configuredNetwork?: Network,\n): { link: PaymentLink } | { error: PaymentLinkError } {\n try {\n const url = new URL(linkString);\n if (url.protocol !== \"opaque:\") {\n return { error: { type: \"INVALID_FORMAT\", message: \"Invalid protocol: must be opaque://\" } };\n }\n\n // `opaque:` is a non-special scheme, so a strict WHATWG URL parser (Node and\n // browsers) treats the first segment after `//` as the host. Reconstruct the\n // logical path as [version, network, metaAddress] from hostname + pathname so\n // decoding is environment-independent.\n const pathParts = [\n url.hostname,\n ...url.pathname.split(\"/\").filter(Boolean),\n ].filter(Boolean);\n if (pathParts.length < 3) {\n return {\n error: {\n type: \"INVALID_FORMAT\",\n message: \"Invalid path format: expected opaque://v{version}/{network}/{meta-address}\",\n },\n };\n }\n\n const versionMatch = pathParts[0].match(/^v(\\d+)$/);\n if (!versionMatch) {\n return { error: { type: \"INVALID_FORMAT\", message: \"Invalid version format: expected v{number}\" } };\n }\n const version = parseInt(versionMatch[1], 10);\n if (version !== 1) {\n return {\n error: {\n type: \"UNSUPPORTED_VERSION\",\n message: `Unsupported version: v${version}. Only v1 is currently supported.`,\n },\n };\n }\n\n const network = pathParts[1];\n if (!isValidNetwork(network)) {\n return {\n error: {\n type: \"INVALID_FORMAT\",\n message: `Invalid network: ${network}. Must be one of: testnet, mainnet, futurenet, local`,\n },\n };\n }\n if (configuredNetwork && network !== configuredNetwork) {\n return {\n error: {\n type: \"NETWORK_MISMATCH\",\n message: `Network mismatch: link is for ${network}, but app is configured for ${configuredNetwork}`,\n details: { linkNetwork: network, configuredNetwork },\n },\n };\n }\n\n const metaAddress = pathParts[2];\n if (!isValidMetaAddress(metaAddress)) {\n return {\n error: {\n type: \"INVALID_META_ADDRESS\",\n message: `Invalid meta-address format: ${metaAddress}. Expected 0x + 132 hex chars.`,\n },\n };\n }\n\n const params: PaymentLinkParams = {};\n const searchParams = url.searchParams;\n\n if (searchParams.has(\"amount\")) {\n const amount = searchParams.get(\"amount\")!;\n if (!isValidAmount(amount)) {\n return { error: { type: \"INVALID_PARAMETER\", message: `Invalid amount parameter: ${amount}`, details: { parameter: \"amount\", value: amount } } };\n }\n params.amount = amount;\n }\n if (searchParams.has(\"asset\")) {\n const asset = searchParams.get(\"asset\")!;\n if (!isValidAssetCode(asset)) {\n return { error: { type: \"INVALID_PARAMETER\", message: `Invalid asset code: ${asset}`, details: { parameter: \"asset\", value: asset } } };\n }\n params.asset = asset;\n }\n if (searchParams.has(\"issuer\")) {\n const issuer = searchParams.get(\"issuer\")!;\n if (!isValidStellarPublicKey(issuer)) {\n return { error: { type: \"INVALID_PARAMETER\", message: `Invalid issuer address: ${issuer}`, details: { parameter: \"issuer\", value: issuer } } };\n }\n params.issuer = issuer;\n }\n if (searchParams.has(\"memo\")) params.memo = searchParams.get(\"memo\")!;\n if (searchParams.has(\"sep\")) params.sep = searchParams.get(\"sep\")!;\n if (searchParams.has(\"callback\")) {\n const callback = searchParams.get(\"callback\")!;\n if (!isValidUrl(callback)) {\n return { error: { type: \"INVALID_PARAMETER\", message: `Invalid callback URL: ${callback}`, details: { parameter: \"callback\", value: callback } } };\n }\n params.callback = callback;\n }\n if (searchParams.has(\"label\")) params.label = searchParams.get(\"label\")!;\n if (searchParams.has(\"expires\")) {\n const expires = searchParams.get(\"expires\")!;\n if (!isValidIso8601(expires)) {\n return { error: { type: \"INVALID_PARAMETER\", message: `Invalid expiration timestamp: ${expires}`, details: { parameter: \"expires\", value: expires } } };\n }\n params.expires = expires;\n }\n\n if (params.expires && new Date(params.expires) < new Date()) {\n return { error: { type: \"INVALID_PARAMETER\", message: `Payment link has expired: ${params.expires}`, details: { parameter: \"expires\", value: params.expires } } };\n }\n\n return { link: { version, network, metaAddress, params } };\n } catch (error) {\n return {\n error: {\n type: \"INVALID_FORMAT\",\n message: `Failed to parse payment link: ${error instanceof Error ? error.message : String(error)}`,\n details: error,\n },\n };\n }\n}\n\n/** Create a v1 payment link from a meta-address and network. */\nexport function createPaymentLink(\n metaAddress: string,\n network: Network,\n params: PaymentLinkParams = {},\n): string {\n return encodePaymentLink({ version: 1, network, metaAddress, params });\n}\n\n/** True when the string parses as a valid opaque payment link. */\nexport function isOpaquePaymentLink(linkString: string): boolean {\n try {\n return \"link\" in decodePaymentLink(linkString);\n } catch {\n return false;\n }\n}\n\n/** Convert a legacy `https://host/pay/{metaAddress}` link into opaque format. */\nexport function convertLegacyLink(\n legacyLink: string,\n network: Network,\n params: PaymentLinkParams = {},\n): string | null {\n try {\n const url = new URL(legacyLink);\n const pathParts = url.pathname.split(\"/\").filter(Boolean);\n const metaAddress = pathParts[pathParts.length - 1];\n if (!isValidMetaAddress(metaAddress)) return null;\n return createPaymentLink(metaAddress, network, params);\n } catch {\n return null;\n }\n}\n","/**\n * Destination memo risk + validation.\n *\n * Many Stellar custodians share one deposit address across users and rely on the\n * transaction memo to disambiguate. Sending to such an address without a memo can\n * lose funds. This module exposes a small allowlist of well-known custodial\n * addresses and validators that match the Stellar memo spec.\n */\n\nexport type MemoType = \"none\" | \"text\" | \"id\" | \"hash\" | \"return\";\n\nconst CUSTODIAL_ADDRESSES: Readonly<\n Record<string, { name: string; recommendedMemoType: MemoType }>\n> = Object.freeze({\n GA5XIGA5C7QTPTWXQHY6MCJRMTRZDOSHR6EFIBNDQTCQHG262N4GGKTM: {\n name: \"Kraken\",\n recommendedMemoType: \"id\",\n },\n GCGNWKCJ3KHRLPM3TMQN7IPVUMRPMYIPGKDPELDPRBMVUPLNZAJDK4VG: {\n name: \"Binance\",\n recommendedMemoType: \"text\",\n },\n GBJ65CCWNPGFNXIVRZMNQSGNXHJYM3O3HFK2CIHWXVKAFEWZNUQOH53I: {\n name: \"Coinbase\",\n recommendedMemoType: \"text\",\n },\n GDXBP3R6N62YR4MTEGEHDIJWQ6BIRYNG6UCV4XQEFKQGGYS7QUDXMJSX: {\n name: \"KuCoin\",\n recommendedMemoType: \"text\",\n },\n});\n\nexport interface MemoRisk {\n isKnownCustodian: boolean;\n custodianName?: string;\n recommendedMemoType?: MemoType;\n}\n\n/** Look up the memo risk for a destination. Safe for any input. */\nexport function memoRiskFor(destination: string | undefined | null): MemoRisk {\n if (!destination) return { isKnownCustodian: false };\n const entry = CUSTODIAL_ADDRESSES[destination.trim()];\n if (!entry) return { isKnownCustodian: false };\n return {\n isKnownCustodian: true,\n custodianName: entry.name,\n recommendedMemoType: entry.recommendedMemoType,\n };\n}\n\nexport interface MemoValidationResult {\n ok: boolean;\n error?: string;\n}\n\n/** Validate a memo value against the Stellar memo spec for the given type. */\nexport function validateMemo(\n memoType: MemoType,\n memo: string | undefined,\n): MemoValidationResult {\n const value = (memo ?? \"\").trim();\n if (memoType === \"none\") {\n if (value.length > 0) {\n return { ok: false, error: \"Memo must be empty when memo type is 'none'.\" };\n }\n return { ok: true };\n }\n if (value.length === 0) {\n return { ok: false, error: \"Memo is required for this memo type.\" };\n }\n switch (memoType) {\n case \"text\": {\n const bytes = new TextEncoder().encode(value).byteLength;\n if (bytes > 28) {\n return { ok: false, error: \"Text memo must be 28 UTF-8 bytes or fewer.\" };\n }\n return { ok: true };\n }\n case \"id\": {\n if (!/^\\d+$/.test(value)) {\n return { ok: false, error: \"ID memo must be a non-negative integer.\" };\n }\n try {\n const n = BigInt(value);\n if (n < 0n || n > 0xffffffffffffffffn) {\n return { ok: false, error: \"ID memo must fit in an unsigned 64-bit integer.\" };\n }\n } catch {\n return { ok: false, error: \"ID memo must be a non-negative integer.\" };\n }\n return { ok: true };\n }\n case \"hash\":\n case \"return\": {\n if (!/^[0-9a-fA-F]{64}$/.test(value)) {\n return { ok: false, error: \"Hash/return memo must be 64 hexadecimal characters.\" };\n }\n return { ok: true };\n }\n }\n}\n\n/** Warning copy for the inline banner, or null when no warning is needed. */\nexport function memoWarningCopy(\n risk: MemoRisk,\n memo: string | undefined,\n): string | null {\n if (!risk.isKnownCustodian) return null;\n if (memo && memo.trim().length > 0) return null;\n return `Destination looks like ${risk.custodianName ?? \"an exchange or custodian\"}. Sending without a memo may result in lost funds.`;\n}\n"]}