essential-eth 0.6.1 → 0.6.2

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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.umd.js","sources":["../../node_modules/base64-js/index.js","../../node_modules/ieee754/index.js","../../node_modules/sha3/node_modules/buffer/index.js","../../node_modules/sha3/sponge/permute/copy/index.js","../../node_modules/sha3/sponge/permute/chi/index.js","../../node_modules/sha3/sponge/permute/iota/round-constants/index.js","../../node_modules/sha3/sponge/permute/iota/index.js","../../node_modules/sha3/sponge/permute/rho-pi/pi-shuffles/index.js","../../node_modules/sha3/sponge/permute/rho-pi/rho-offsets/index.js","../../node_modules/sha3/sponge/permute/rho-pi/index.js","../../node_modules/sha3/sponge/permute/theta/index.js","../../node_modules/sha3/sponge/permute/index.js","../../node_modules/sha3/sponge/index.js","../../node_modules/sha3/index.js","../../src/classes/utils/hex-to-decimal.ts","../../src/classes/utils/encode-decode-transaction.ts","../../node_modules/unfetch/dist/unfetch.module.js","../../node_modules/isomorphic-unfetch/browser.js","../../src/classes/utils/fetchers.ts","../../src/classes/Contract.ts","../../src/logger/logger.ts","../../src/logger/package-version.ts","../../node_modules/big.js/big.mjs","../../src/shared/tiny-big/helpers.ts","../../src/shared/tiny-big/tiny-big.ts","../../src/classes/utils/clean-transaction.ts","../../src/shared/validate-type.ts","../../src/utils/to-checksum-address.ts","../../src/classes/utils/clean-log.ts","../../src/utils/bytes.ts","../../src/classes/utils/prepare-transaction.ts","../../src/providers/utils/chains-info.ts","../../src/providers/BaseProvider.ts","../../src/classes/utils/clean-transaction-receipt.ts","../../src/classes/utils/clean-block.ts","../../src/providers/FallthroughProvider.ts","../../src/providers/JsonRpcProvider.ts","../../src/utils/keccak256.ts","../../node_modules/@noble/secp256k1/lib/esm/index.js","../../src/utils/compute-public-key.ts","../../src/utils/to-utf8-bytes.ts","../../node_modules/buffer/index.js","../../src/utils/solidity-keccak256.ts","../../src/utils/compute-address.ts","../../src/utils/ether-to-gwei.ts","../../src/utils/ether-to-wei.ts","../../src/utils/gwei-to-ether.ts","../../src/utils/hash-message.ts","../../src/utils/is-address.ts","../../src/utils/split-signature.ts","../../src/utils/wei-to-ether.ts"],"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","\"use strict\";var copy=function copy(I,i){return function(O,o){var oi=o*2;var ii=i*2;O[oi]=I[ii];O[oi+1]=I[ii+1]}};module.exports=copy;","\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});exports[\"default\"]=void 0;var _copy=_interopRequireDefault(require(\"../copy\"));function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{\"default\":obj}}var chi=function chi(_ref){var A=_ref.A,C=_ref.C;for(var y=0;y<25;y+=5){for(var x=0;x<5;x++){(0,_copy[\"default\"])(A,y+x)(C,x)}for(var _x=0;_x<5;_x++){var xy=(y+_x)*2;var x1=(_x+1)%5*2;var x2=(_x+2)%5*2;A[xy]^=~C[x1]&C[x2];A[xy+1]^=~C[x1+1]&C[x2+1]}}};var _default=chi;exports[\"default\"]=_default;","\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});exports[\"default\"]=void 0;var ROUND_CONSTANTS=new Uint32Array([0,1,0,32898,2147483648,32906,2147483648,2147516416,0,32907,0,2147483649,2147483648,2147516545,2147483648,32777,0,138,0,136,0,2147516425,0,2147483658,0,2147516555,2147483648,139,2147483648,32905,2147483648,32771,2147483648,32770,2147483648,128,0,32778,2147483648,2147483658,2147483648,2147516545,2147483648,32896,0,2147483649,2147483648,2147516424]);var _default=ROUND_CONSTANTS;exports[\"default\"]=_default;","\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});exports[\"default\"]=void 0;var _roundConstants=_interopRequireDefault(require(\"./round-constants\"));function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{\"default\":obj}}var iota=function iota(_ref){var A=_ref.A,roundIndex=_ref.roundIndex;var i=roundIndex*2;A[0]^=_roundConstants[\"default\"][i];A[1]^=_roundConstants[\"default\"][i+1]};var _default=iota;exports[\"default\"]=_default;","\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});exports[\"default\"]=void 0;var PI_SHUFFLES=[10,7,11,17,18,3,5,16,8,21,24,4,15,23,19,13,12,2,20,14,22,9,6,1];var _default=PI_SHUFFLES;exports[\"default\"]=_default;","\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});exports[\"default\"]=void 0;var RHO_OFFSETS=[1,3,6,10,15,21,28,36,45,55,2,14,27,41,56,8,25,43,62,18,39,61,20,44];var _default=RHO_OFFSETS;exports[\"default\"]=_default;","\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});exports[\"default\"]=void 0;var _piShuffles=_interopRequireDefault(require(\"./pi-shuffles\"));var _rhoOffsets=_interopRequireDefault(require(\"./rho-offsets\"));var _copy=_interopRequireDefault(require(\"../copy\"));function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{\"default\":obj}}var rhoPi=function rhoPi(_ref){var A=_ref.A,C=_ref.C,W=_ref.W;(0,_copy[\"default\"])(A,1)(W,0);var H=0;var L=0;var Wi=0;var ri=32;for(var i=0;i<24;i++){var j=_piShuffles[\"default\"][i];var r=_rhoOffsets[\"default\"][i];(0,_copy[\"default\"])(A,j)(C,0);H=W[0];L=W[1];ri=32-r;Wi=r<32?0:1;W[Wi]=H<<r|L>>>ri;W[(Wi+1)%2]=L<<r|H>>>ri;(0,_copy[\"default\"])(W,0)(A,j);(0,_copy[\"default\"])(C,0)(W,0)}};var _default=rhoPi;exports[\"default\"]=_default;","\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});exports[\"default\"]=void 0;var _copy=_interopRequireDefault(require(\"../copy\"));function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{\"default\":obj}}var theta=function theta(_ref){var A=_ref.A,C=_ref.C,D=_ref.D,W=_ref.W;var H=0;var L=0;for(var x=0;x<5;x++){var x20=x*2;var x21=(x+5)*2;var x22=(x+10)*2;var x23=(x+15)*2;var x24=(x+20)*2;C[x20]=A[x20]^A[x21]^A[x22]^A[x23]^A[x24];C[x20+1]=A[x20+1]^A[x21+1]^A[x22+1]^A[x23+1]^A[x24+1]}for(var _x=0;_x<5;_x++){(0,_copy[\"default\"])(C,(_x+1)%5)(W,0);H=W[0];L=W[1];W[0]=H<<1|L>>>31;W[1]=L<<1|H>>>31;D[_x*2]=C[(_x+4)%5*2]^W[0];D[_x*2+1]=C[(_x+4)%5*2+1]^W[1];for(var y=0;y<25;y+=5){A[(y+_x)*2]^=D[_x*2];A[(y+_x)*2+1]^=D[_x*2+1]}}};var _default=theta;exports[\"default\"]=_default;","\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});exports[\"default\"]=void 0;var _chi=_interopRequireDefault(require(\"./chi\"));var _iota=_interopRequireDefault(require(\"./iota\"));var _rhoPi=_interopRequireDefault(require(\"./rho-pi\"));var _theta=_interopRequireDefault(require(\"./theta\"));function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{\"default\":obj}}var permute=function permute(){var C=new Uint32Array(10);var D=new Uint32Array(10);var W=new Uint32Array(2);return function(A){for(var roundIndex=0;roundIndex<24;roundIndex++){(0,_theta[\"default\"])({A:A,C:C,D:D,W:W});(0,_rhoPi[\"default\"])({A:A,C:C,W:W});(0,_chi[\"default\"])({A:A,C:C});(0,_iota[\"default\"])({A:A,roundIndex:roundIndex})}C.fill(0);D.fill(0);W.fill(0)}};var _default=permute;exports[\"default\"]=_default;","\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});exports[\"default\"]=void 0;var _buffer=require(\"buffer\");var _permute=_interopRequireDefault(require(\"./permute\"));function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{\"default\":obj}}var xorWords=function xorWords(I,O){for(var i=0;i<I.length;i+=8){var o=i/4;O[o]^=I[i+7]<<24|I[i+6]<<16|I[i+5]<<8|I[i+4];O[o+1]^=I[i+3]<<24|I[i+2]<<16|I[i+1]<<8|I[i]}return O};var readWords=function readWords(I,O){for(var o=0;o<O.length;o+=8){var i=o/4;O[o]=I[i+1];O[o+1]=I[i+1]>>>8;O[o+2]=I[i+1]>>>16;O[o+3]=I[i+1]>>>24;O[o+4]=I[i];O[o+5]=I[i]>>>8;O[o+6]=I[i]>>>16;O[o+7]=I[i]>>>24}return O};var Sponge=function Sponge(_ref){var _this=this;var capacity=_ref.capacity,padding=_ref.padding;var keccak=(0,_permute[\"default\"])();var stateSize=200;var blockSize=capacity/8;var queueSize=stateSize-capacity/4;var queueOffset=0;var state=new Uint32Array(stateSize/4);var queue=_buffer.Buffer.allocUnsafe(queueSize);this.absorb=function(buffer){for(var i=0;i<buffer.length;i++){queue[queueOffset]=buffer[i];queueOffset+=1;if(queueOffset>=queueSize){xorWords(queue,state);keccak(state);queueOffset=0}}return _this};this.squeeze=function(){var options=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};var output={buffer:options.buffer||_buffer.Buffer.allocUnsafe(blockSize),padding:options.padding||padding,queue:_buffer.Buffer.allocUnsafe(queue.length),state:new Uint32Array(state.length)};queue.copy(output.queue);for(var i=0;i<state.length;i++){output.state[i]=state[i]}output.queue.fill(0,queueOffset);output.queue[queueOffset]|=output.padding;output.queue[queueSize-1]|=128;xorWords(output.queue,output.state);for(var offset=0;offset<output.buffer.length;offset+=queueSize){keccak(output.state);readWords(output.state,output.buffer.slice(offset,offset+queueSize))}return output.buffer};this.reset=function(){queue.fill(0);state.fill(0);queueOffset=0;return _this};return this};var _default=Sponge;exports[\"default\"]=_default;","\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});exports[\"default\"]=exports.SHAKE=exports.SHA3Hash=exports.SHA3=exports.Keccak=void 0;var _buffer=require(\"buffer\");var _sponge=_interopRequireDefault(require(\"./sponge\"));function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{\"default\":obj}}var createHash=function createHash(_ref){var allowedSizes=_ref.allowedSizes,defaultSize=_ref.defaultSize,padding=_ref.padding;return function Hash(){var _this=this;var size=arguments.length>0&&arguments[0]!==undefined?arguments[0]:defaultSize;if(!this||this.constructor!==Hash){return new Hash(size)}if(allowedSizes&&!allowedSizes.includes(size)){throw new Error(\"Unsupported hash length\")}var sponge=new _sponge[\"default\"]({capacity:size});this.update=function(input){var encoding=arguments.length>1&&arguments[1]!==undefined?arguments[1]:\"utf8\";if(_buffer.Buffer.isBuffer(input)){sponge.absorb(input);return _this}if(typeof input===\"string\"){return _this.update(_buffer.Buffer.from(input,encoding))}throw new TypeError(\"Not a string or buffer\")};this.digest=function(){var formatOrOptions=arguments.length>0&&arguments[0]!==undefined?arguments[0]:\"binary\";var options=typeof formatOrOptions===\"string\"?{format:formatOrOptions}:formatOrOptions;var buffer=sponge.squeeze({buffer:options.buffer,padding:options.padding||padding});if(options.format&&options.format!==\"binary\"){return buffer.toString(options.format)}return buffer};this.reset=function(){sponge.reset();return _this};return this}};var Keccak=createHash({allowedSizes:[224,256,384,512],defaultSize:512,padding:1});exports.Keccak=Keccak;var SHA3=createHash({allowedSizes:[224,256,384,512],defaultSize:512,padding:6});exports.SHA3=SHA3;var SHAKE=createHash({allowedSizes:[128,256],defaultSize:256,padding:31});exports.SHAKE=SHAKE;var SHA3Hash=Keccak;exports.SHA3Hash=SHA3Hash;SHA3.SHA3Hash=SHA3Hash;var _default=SHA3;exports[\"default\"]=_default;","/**\n * Converts a hexadecimal string it's decimal equivalent.\n * This is needed instead of parseInt because parseInt loses precision.\n *\n * @param hex the hex string to be converted to decimal\n * @returns a decimal value equivalent to the hex string given\n * @example\n * ```javascript\n * hexToDecimal('0x34');\n * // 52\n * ```\n * @example\n * ```javascript\n * hexToDecimal('0x628608');\n * // 6456840\n * ```\n */\nexport function hexToDecimal(hex: string) {\n return BigInt(hex).toString();\n}\n","import { Keccak } from 'sha3';\nimport { tinyBig, toChecksumAddress } from '../..';\nimport type {\n ContractTypes,\n JSONABIArgument,\n} from '../../types/Contract.types';\nimport { hexToDecimal } from './hex-to-decimal';\n\nexport const hexFalse = '0'.repeat(64);\nconst hexTrue = '0'.repeat(63) + '1';\n\n/**\n * Expands an integer type to use a default of 256 bits. Used for consistency; not required in Solidity\n *\n * @see https://ethereum.stackexchange.com/questions/43241/why-write-uint256-instead-of-uint-if-theyre-the-same-thing\n * @param type the type to explicitly define as 256 bits\n * @returns the integer type expanded to explicitly be 256 bits when possible\n * @example\n * ```javascript\n * expandType('uint[]');\n * // 'uint256[]'\n * ```\n */\nfunction expandType(type: ContractTypes) {\n // https://docs.soliditylang.org/en/v0.8.7/types.html#integers\n if (type === 'uint[]') {\n return 'uint256[]';\n } else if (type === 'int[]') {\n return 'int256[]';\n }\n return type;\n}\n/**\n *\n * @param jsonABIArgument\n * @param args\n * @example\n */\nexport function encodeData(jsonABIArgument: JSONABIArgument, args: any[]) {\n const hash = new Keccak(256);\n /* first 4 bytes will create the data parameter */\n const functionString = `${jsonABIArgument.name}(${jsonABIArgument.inputs.map(\n (input) => expandType(input.type),\n )})`;\n\n // encoding learnt from https://ethereum.stackexchange.com/questions/3514/how-to-call-a-contract-method-using-the-eth-call-json-rpc-api\n const functionHash = hash.update(functionString).digest('hex');\n // no arrays\n const jsonABIInputsLength = jsonABIArgument.inputs.length;\n let shouldValidateInputLength = true;\n\n // inputs contains 1 or more arrays\n if (jsonABIArgument.inputs.find((input) => input.type.includes('['))) {\n shouldValidateInputLength = false;\n }\n if (shouldValidateInputLength && args.length !== jsonABIInputsLength) {\n throw new Error(\n `args inputs of \"${args.length}\" does not match expected length of \"${jsonABIArgument.inputs.length}\"`,\n );\n }\n\n const argsWithTypes: [arg: any, type: ContractTypes][] = (\n jsonABIArgument.inputs || []\n ).reduce((acc, input, i) => {\n if (input.type.includes('[')) {\n // strip array and length like \"[2]\" from type\n const basicType = /([^[]*)\\[.*$/g.exec(input.type)?.[1] as string;\n args.forEach((arg: any) => {\n acc = acc.concat([[arg, basicType]]);\n });\n return acc;\n } else {\n return acc.concat([[args[i], input.type]]);\n }\n }, [] as [arg: any, type: ContractTypes][]);\n\n const encodedArgs = argsWithTypes.map(([arg, inputType]) => {\n let rawArg = arg;\n switch (inputType) {\n case 'bool':\n return arg ? hexTrue : hexFalse;\n case 'address':\n // remove leading \"0x\"\n rawArg = arg.replace(/^0x/g, '').toLowerCase();\n break;\n default:\n if (inputType.startsWith('bytes')) {\n // encode each character to hex\n const argEncoded = rawArg\n .split('')\n .map((character: string) => character.charCodeAt(0).toString(16))\n .join('');\n const paddedEncodedArg = argEncoded.padEnd(64, '0');\n return paddedEncodedArg;\n } else if (inputType === 'uint256') {\n const argEncoded = BigInt(arg).toString(16);\n const paddedEncodedArg = argEncoded.padStart(64, '0');\n return paddedEncodedArg;\n } else if (inputType.startsWith('uint')) {\n break;\n } else {\n throw new Error(\n `essential-eth does not yet support \"${inputType}\" inputs. Make a PR today!\"`,\n );\n }\n }\n const argEncoded = rawArg.toString(16) as string;\n const paddedEncodedArg = argEncoded.padStart(64, '0');\n return paddedEncodedArg;\n });\n const functionEncoded = functionHash.slice(0, 8);\n const data = `0x${functionEncoded}${encodedArgs.join('')}`;\n return data;\n}\n\n/**\n * @internal\n * @param jsonABIArgument\n * @param nodeResponse\n * @example\n */\nexport function decodeRPCResponse(\n jsonABIArgument: JSONABIArgument,\n nodeResponse: string,\n) {\n const rawOutputs = jsonABIArgument.outputs;\n // chunk response every 64 characters\n const encodedOutputs = nodeResponse.slice(2).match(/.{1,64}/g);\n const outputs = (encodedOutputs || []).map((output: string, i: number) => {\n const outputType = (rawOutputs || [])[i].type;\n switch (outputType) {\n case 'bool':\n return output === hexTrue;\n case 'address':\n /* address types have 26 leading zeroes to remove */\n return toChecksumAddress(`0x${output.slice(24)}`);\n case 'uint256':\n case 'uint120':\n return tinyBig(hexToDecimal(`0x${output}`));\n case 'bytes32':\n return `0x${output}`;\n case 'uint8':\n return Number(hexToDecimal(`0x${output}`));\n default:\n throw new Error(\n `essential-eth does not yet support \"${outputType}\" outputs. Make a PR today!\"`,\n );\n }\n });\n\n return outputs.length === 1 ? outputs[0] : outputs;\n}\n","export default function(e,n){return n=n||{},new Promise(function(t,r){var s=new XMLHttpRequest,o=[],u=[],i={},a=function(){return{ok:2==(s.status/100|0),statusText:s.statusText,status:s.status,url:s.responseURL,text:function(){return Promise.resolve(s.responseText)},json:function(){return Promise.resolve(s.responseText).then(JSON.parse)},blob:function(){return Promise.resolve(new Blob([s.response]))},clone:a,headers:{keys:function(){return o},entries:function(){return u},get:function(e){return i[e.toLowerCase()]},has:function(e){return e.toLowerCase()in i}}}};for(var l in s.open(n.method||\"get\",e,!0),s.onload=function(){s.getAllResponseHeaders().replace(/^(.*?):[^\\S\\n]*([\\s\\S]*?)$/gm,function(e,n,t){o.push(n=n.toLowerCase()),u.push([n,t]),i[n]=i[n]?i[n]+\",\"+t:t}),t(a())},s.onerror=r,s.withCredentials=\"include\"==n.credentials,n.headers)s.setRequestHeader(l,n.headers[l]);s.send(n.body||null)})}\n//# sourceMappingURL=unfetch.module.js.map\n","module.exports = self.fetch || (self.fetch = require('unfetch').default || require('unfetch'));\n","import unfetch from 'isomorphic-unfetch';\n/**\n * Makes a post request with the specified JSON data, normally to the a Ethereum JSON RPC API endpoint\n *\n * @param url the URL to send the request to\n * @param body the body data (JSON) to send with the request\n * @returns the JSON response from the server\n * @example\n * ```javascript\n * post('https://free-eth-node.com/api/eth', { jsonrpc: '2.0', id: 1, method: 'eth_gasPrice', params: [] });\n * // '0x66fa8dbfd'\n *\n * post('https://free-eth-node.com/api/eth', { jsonrpc: '2.0', id: 1, method: 'eth_getBalance', params: [ '0x4a986a6dCA6dbf99bC3d17F8D71aFb0d60e740f8', 'latest' ] });\n * // '0x312faeb995df61d4'\n * ```\n */\nexport function post(url: string, body: Record<string, unknown>) {\n return unfetch(url, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(body),\n })\n .then(async (r) => {\n const t = await r.text();\n try {\n return JSON.parse(t);\n } catch {\n throw new Error(`Invalid JSON RPC response: \"${t}\"`);\n }\n })\n .then((response) => {\n const result = response?.result;\n if (!result) {\n throw new Error(\n `Invalid JSON RPC response: ${JSON.stringify(response)}`,\n );\n }\n return response.result;\n });\n}\n\ntype RPCMethodName =\n | 'eth_getBlockByNumber'\n | 'eth_getBlockByHash'\n | 'eth_call'\n | 'eth_chainId'\n | 'eth_gasPrice'\n | 'eth_getBalance'\n | 'eth_getTransactionByHash'\n | 'eth_getTransactionReceipt'\n | 'eth_getTransactionCount'\n | 'eth_getCode'\n | 'eth_blockNumber'\n | 'eth_estimateGas'\n | 'eth_getLogs';\n\n/**\n * Prepares data to be sent using the {@link post} function. Data is prepared per the {@link https://en.wikipedia.org/wiki/JSON-RPC#Examples JSON RPC v2 spec}\n *\n * @param method the RPC method to be invoked\n * @param params the parameters to be passed to the defined method\n * @returns a POST method body matching the {@link https://en.wikipedia.org/wiki/JSON-RPC#Examples JSON RPC v2 spec}\n * @example\n * ```javascript\n * buildRPCPostBody('eth_gasPrice', []);\n * // { jsonrpc: '2.0', id: 1, method: 'eth_gasPrice', params: [] }\n *\n * buildRPCPostBody('eth_getBalance', ['0x407d73d8a49eeb85d32cf465507dd71d507100c1', 'latest']);\n * // { jsonrpc: '2.0', id: 1, method: 'eth_getBalance', params: [ '0x4a986a6dCA6dbf99bC3d17F8D71aFb0d60e740f8', 'latest' ] }\n * ```\n */\nexport function buildRPCPostBody(method: RPCMethodName, params: unknown[]) {\n return {\n jsonrpc: '2.0',\n id: 1,\n method,\n params,\n };\n}\n","import type { JsonRpcProvider } from '../providers/JsonRpcProvider';\nimport type { ContractInterface } from '../types/Contract.types';\nimport {\n decodeRPCResponse,\n encodeData,\n} from './utils/encode-decode-transaction';\nimport { buildRPCPostBody, post } from './utils/fetchers';\n/**\n *\n * @param txnData\n * @example\n */\nfunction estimateGas(txnData: string) {\n // https://ethereum.stackexchange.com/questions/1570/what-does-intrinsic-gas-too-low-mean/1694\n txnData.split('').reduce((previousValue, currentValue) => {\n // 0 characters are 4 gwei, all others are 48 gwei\n const characterCost = currentValue === '0' ? 4 : 68;\n return previousValue + characterCost;\n }, 0);\n}\ninterface Options {\n gasLimit?: number;\n}\nexport class BaseContract {\n /**\n * The URL to your Eth node. Consider POKT or Infura\n */\n private readonly _address: string;\n private readonly _provider: JsonRpcProvider;\n\n /**\n * @param addressOrName The ethereum address of the smart-contract\n * @param contractInterface The JSON ABI of the smart-contract (like http://api.etherscan.io/api?module=contract&action=getabi&address=0x090d4613473dee047c3f2706764f49e0821d256e&format=raw)\n * @param signerOrProvider An instantiated essential-eth provider\n * @example\n */\n constructor(\n addressOrName: string,\n contractInterface: ContractInterface,\n signerOrProvider: JsonRpcProvider,\n ) {\n this._address = addressOrName;\n this._provider = signerOrProvider;\n contractInterface\n .filter((jsonABIArgument) => jsonABIArgument.type === 'function')\n .forEach((jsonABIArgument) => {\n if (\n 'name' in jsonABIArgument &&\n typeof jsonABIArgument.name === 'string'\n ) {\n defineReadOnly(\n this,\n jsonABIArgument.name,\n async (..._args: any[]) => {\n let functionArguments = _args;\n let options: Options = {};\n // remove options from encoding\n const lastArg = _args[_args.length - 1];\n if (!Array.isArray(lastArg) && typeof lastArg === 'object') {\n options = lastArg;\n functionArguments = _args.slice(0, _args.length - 1);\n }\n\n const data = encodeData(jsonABIArgument, functionArguments);\n\n const decimalGas =\n typeof options.gasLimit === 'number'\n ? options.gasLimit /* user passed in \"gasLimit\" directly */\n : typeof jsonABIArgument?.gas ===\n 'number' /* ABI specified \"gas\". */\n ? estimateGas(data)\n : null;\n const req = async (): Promise<string> => {\n return await post(\n this._provider.selectRpcUrl(),\n buildRPCPostBody('eth_call', [\n {\n to: this._address.toLowerCase(),\n data,\n // sometimes gas is defined in the ABI\n ...(decimalGas\n ? { gas: `0x${decimalGas.toString(16)}` }\n : {}),\n },\n 'latest',\n ]),\n );\n };\n const nodeResponse = await req();\n return decodeRPCResponse(jsonABIArgument, nodeResponse);\n },\n );\n }\n });\n }\n}\n\n/**\n * Applies the unique contract's methods to the instantiated Contract in the constructor based-upon the provided ABI\n *\n * @param object\n * @param name\n * @param value\n * @example\n */\nexport function defineReadOnly<T>(object: T, name: string, value: any): void {\n Object.defineProperty(object, name, {\n enumerable: true,\n value: value,\n writable: false,\n });\n}\n\n/**\n * @alpha\n * Only accepts ABIS in JSON format. This allows for stronger typing and assurances of data-types\n * Only read-only function calls currently supported.\n * @example\n * ```typescript\n * import { Contract, JsonRpcProvider } from 'essential-eth';\n * // UNI airdrop contract\n * const contractAddress = '0x090D4613473dEE047c3f2706764f49E0821D256e';\n * const provider = new JsonRpcProvider();\n *\n * const JSONABI = [\n * {\n * inputs: [\n * {\n * internalType: 'uint256',\n * name: 'index',\n * type: 'uint256',\n * },\n * ],\n * name: 'isClaimed',\n * outputs: [\n * {\n * internalType: 'bool',\n * name: '',\n * type: 'bool',\n * },\n * ],\n * stateMutability: 'view',\n * type: 'function',\n * },\n * ]\n *\n * const contract = new Contract(\n * contractAddress,\n * JSONABI,\n * provider,\n * );\n *\n * (async () => {\n * // prints boolean as to whether index 0 has claimed airdrop or not\n * console.log(await contract.isClaimed(0));\n * })()\n *\n *\n * ```\n */\nexport class Contract extends BaseContract {\n // The dynamic function names within a given smart-contract\n /**\n * The function names on any given contract. Like \"isClaimed\", \"merkleRoot\", etc.\n */\n readonly [key: string]: any;\n // readonly [key: string]: ContractFunction | any;\n}\n","import { version } from './package-version';\nclass Logger {\n private packageVersion: string;\n constructor() {\n this.packageVersion = version;\n }\n public throwError(message: string, args: { [key: string]: any }): never {\n const argsLength = Object.keys(args).length;\n throw new Error(\n `${message} (${Object.entries(args).map(\n ([key, value], index) =>\n `${key}=${value}${index < argsLength - 1 && ', '}`,\n )}, version=essential-eth@${this.packageVersion})`,\n );\n }\n public throwArgumentError(message: string, arg: string, value: any): never {\n throw new Error(\n `${message} (argument=\"${arg}\" value=${value}, version=essential-eth@${this.packageVersion})`,\n );\n }\n public checkSafeUint53(value: number, message = 'value not safe'): void {\n if (typeof value !== 'number') {\n return;\n }\n\n if (value < 0 || value >= 0x1fffffffffffff) {\n this.throwError(message, {\n operation: 'checkSafeInteger',\n fault: 'out-of-safe-range',\n value: value,\n });\n }\n\n if (value % 1) {\n this.throwError(message, {\n operation: 'checkSafeInteger',\n fault: 'non-integer',\n value: value,\n });\n }\n }\n}\n\nexport const logger = new Logger();\n","// Generated by genversion.\nexport const version = '0.6.1';\n","/*\r\n * big.js v6.2.1\r\n * A small, fast, easy-to-use library for arbitrary-precision decimal arithmetic.\r\n * Copyright (c) 2022 Michael Mclaughlin\r\n * https://github.com/MikeMcl/big.js/LICENCE.md\r\n */\r\n\r\n\r\n/************************************** EDITABLE DEFAULTS *****************************************/\r\n\r\n\r\n // The default values below must be integers within the stated ranges.\r\n\r\n /*\r\n * The maximum number of decimal places (DP) of the results of operations involving division:\r\n * div and sqrt, and pow with negative exponents.\r\n */\r\nvar DP = 20, // 0 to MAX_DP\r\n\r\n /*\r\n * The rounding mode (RM) used when rounding to the above decimal places.\r\n *\r\n * 0 Towards zero (i.e. truncate, no rounding). (ROUND_DOWN)\r\n * 1 To nearest neighbour. If equidistant, round up. (ROUND_HALF_UP)\r\n * 2 To nearest neighbour. If equidistant, to even. (ROUND_HALF_EVEN)\r\n * 3 Away from zero. (ROUND_UP)\r\n */\r\n RM = 1, // 0, 1, 2 or 3\r\n\r\n // The maximum value of DP and Big.DP.\r\n MAX_DP = 1E6, // 0 to 1000000\r\n\r\n // The maximum magnitude of the exponent argument to the pow method.\r\n MAX_POWER = 1E6, // 1 to 1000000\r\n\r\n /*\r\n * The negative exponent (NE) at and beneath which toString returns exponential notation.\r\n * (JavaScript numbers: -7)\r\n * -1000000 is the minimum recommended exponent value of a Big.\r\n */\r\n NE = -7, // 0 to -1000000\r\n\r\n /*\r\n * The positive exponent (PE) at and above which toString returns exponential notation.\r\n * (JavaScript numbers: 21)\r\n * 1000000 is the maximum recommended exponent value of a Big, but this limit is not enforced.\r\n */\r\n PE = 21, // 0 to 1000000\r\n\r\n /*\r\n * When true, an error will be thrown if a primitive number is passed to the Big constructor,\r\n * or if valueOf is called, or if toNumber is called on a Big which cannot be converted to a\r\n * primitive number without a loss of precision.\r\n */\r\n STRICT = false, // true or false\r\n\r\n\r\n/**************************************************************************************************/\r\n\r\n\r\n // Error messages.\r\n NAME = '[big.js] ',\r\n INVALID = NAME + 'Invalid ',\r\n INVALID_DP = INVALID + 'decimal places',\r\n INVALID_RM = INVALID + 'rounding mode',\r\n DIV_BY_ZERO = NAME + 'Division by zero',\r\n\r\n // The shared prototype object.\r\n P = {},\r\n UNDEFINED = void 0,\r\n NUMERIC = /^-?(\\d+(\\.\\d*)?|\\.\\d+)(e[+-]?\\d+)?$/i;\r\n\r\n\r\n/*\r\n * Create and return a Big constructor.\r\n */\r\nfunction _Big_() {\r\n\r\n /*\r\n * The Big constructor and exported function.\r\n * Create and return a new instance of a Big number object.\r\n *\r\n * n {number|string|Big} A numeric value.\r\n */\r\n function Big(n) {\r\n var x = this;\r\n\r\n // Enable constructor usage without new.\r\n if (!(x instanceof Big)) return n === UNDEFINED ? _Big_() : new Big(n);\r\n\r\n // Duplicate.\r\n if (n instanceof Big) {\r\n x.s = n.s;\r\n x.e = n.e;\r\n x.c = n.c.slice();\r\n } else {\r\n if (typeof n !== 'string') {\r\n if (Big.strict === true && typeof n !== 'bigint') {\r\n throw TypeError(INVALID + 'value');\r\n }\r\n\r\n // Minus zero?\r\n n = n === 0 && 1 / n < 0 ? '-0' : String(n);\r\n }\r\n\r\n parse(x, n);\r\n }\r\n\r\n // Retain a reference to this Big constructor.\r\n // Shadow Big.prototype.constructor which points to Object.\r\n x.constructor = Big;\r\n }\r\n\r\n Big.prototype = P;\r\n Big.DP = DP;\r\n Big.RM = RM;\r\n Big.NE = NE;\r\n Big.PE = PE;\r\n Big.strict = STRICT;\r\n Big.roundDown = 0;\r\n Big.roundHalfUp = 1;\r\n Big.roundHalfEven = 2;\r\n Big.roundUp = 3;\r\n\r\n return Big;\r\n}\r\n\r\n\r\n/*\r\n * Parse the number or string value passed to a Big constructor.\r\n *\r\n * x {Big} A Big number instance.\r\n * n {number|string} A numeric value.\r\n */\r\nfunction parse(x, n) {\r\n var e, i, nl;\r\n\r\n if (!NUMERIC.test(n)) {\r\n throw Error(INVALID + 'number');\r\n }\r\n\r\n // Determine sign.\r\n x.s = n.charAt(0) == '-' ? (n = n.slice(1), -1) : 1;\r\n\r\n // Decimal point?\r\n if ((e = n.indexOf('.')) > -1) n = n.replace('.', '');\r\n\r\n // Exponential form?\r\n if ((i = n.search(/e/i)) > 0) {\r\n\r\n // Determine exponent.\r\n if (e < 0) e = i;\r\n e += +n.slice(i + 1);\r\n n = n.substring(0, i);\r\n } else if (e < 0) {\r\n\r\n // Integer.\r\n e = n.length;\r\n }\r\n\r\n nl = n.length;\r\n\r\n // Determine leading zeros.\r\n for (i = 0; i < nl && n.charAt(i) == '0';) ++i;\r\n\r\n if (i == nl) {\r\n\r\n // Zero.\r\n x.c = [x.e = 0];\r\n } else {\r\n\r\n // Determine trailing zeros.\r\n for (; nl > 0 && n.charAt(--nl) == '0';);\r\n x.e = e - i - 1;\r\n x.c = [];\r\n\r\n // Convert string to array of digits without leading/trailing zeros.\r\n for (e = 0; i <= nl;) x.c[e++] = +n.charAt(i++);\r\n }\r\n\r\n return x;\r\n}\r\n\r\n\r\n/*\r\n * Round Big x to a maximum of sd significant digits using rounding mode rm.\r\n *\r\n * x {Big} The Big to round.\r\n * sd {number} Significant digits: integer, 0 to MAX_DP inclusive.\r\n * rm {number} Rounding mode: 0 (down), 1 (half-up), 2 (half-even) or 3 (up).\r\n * [more] {boolean} Whether the result of division was truncated.\r\n */\r\nfunction round(x, sd, rm, more) {\r\n var xc = x.c;\r\n\r\n if (rm === UNDEFINED) rm = x.constructor.RM;\r\n if (rm !== 0 && rm !== 1 && rm !== 2 && rm !== 3) {\r\n throw Error(INVALID_RM);\r\n }\r\n\r\n if (sd < 1) {\r\n more =\r\n rm === 3 && (more || !!xc[0]) || sd === 0 && (\r\n rm === 1 && xc[0] >= 5 ||\r\n rm === 2 && (xc[0] > 5 || xc[0] === 5 && (more || xc[1] !== UNDEFINED))\r\n );\r\n\r\n xc.length = 1;\r\n\r\n if (more) {\r\n\r\n // 1, 0.1, 0.01, 0.001, 0.0001 etc.\r\n x.e = x.e - sd + 1;\r\n xc[0] = 1;\r\n } else {\r\n\r\n // Zero.\r\n xc[0] = x.e = 0;\r\n }\r\n } else if (sd < xc.length) {\r\n\r\n // xc[sd] is the digit after the digit that may be rounded up.\r\n more =\r\n rm === 1 && xc[sd] >= 5 ||\r\n rm === 2 && (xc[sd] > 5 || xc[sd] === 5 &&\r\n (more || xc[sd + 1] !== UNDEFINED || xc[sd - 1] & 1)) ||\r\n rm === 3 && (more || !!xc[0]);\r\n\r\n // Remove any digits after the required precision.\r\n xc.length = sd;\r\n\r\n // Round up?\r\n if (more) {\r\n\r\n // Rounding up may mean the previous digit has to be rounded up.\r\n for (; ++xc[--sd] > 9;) {\r\n xc[sd] = 0;\r\n if (sd === 0) {\r\n ++x.e;\r\n xc.unshift(1);\r\n break;\r\n }\r\n }\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (sd = xc.length; !xc[--sd];) xc.pop();\r\n }\r\n\r\n return x;\r\n}\r\n\r\n\r\n/*\r\n * Return a string representing the value of Big x in normal or exponential notation.\r\n * Handles P.toExponential, P.toFixed, P.toJSON, P.toPrecision, P.toString and P.valueOf.\r\n */\r\nfunction stringify(x, doExponential, isNonzero) {\r\n var e = x.e,\r\n s = x.c.join(''),\r\n n = s.length;\r\n\r\n // Exponential notation?\r\n if (doExponential) {\r\n s = s.charAt(0) + (n > 1 ? '.' + s.slice(1) : '') + (e < 0 ? 'e' : 'e+') + e;\r\n\r\n // Normal notation.\r\n } else if (e < 0) {\r\n for (; ++e;) s = '0' + s;\r\n s = '0.' + s;\r\n } else if (e > 0) {\r\n if (++e > n) {\r\n for (e -= n; e--;) s += '0';\r\n } else if (e < n) {\r\n s = s.slice(0, e) + '.' + s.slice(e);\r\n }\r\n } else if (n > 1) {\r\n s = s.charAt(0) + '.' + s.slice(1);\r\n }\r\n\r\n return x.s < 0 && isNonzero ? '-' + s : s;\r\n}\r\n\r\n\r\n// Prototype/instance methods\r\n\r\n\r\n/*\r\n * Return a new Big whose value is the absolute value of this Big.\r\n */\r\nP.abs = function () {\r\n var x = new this.constructor(this);\r\n x.s = 1;\r\n return x;\r\n};\r\n\r\n\r\n/*\r\n * Return 1 if the value of this Big is greater than the value of Big y,\r\n * -1 if the value of this Big is less than the value of Big y, or\r\n * 0 if they have the same value.\r\n */\r\nP.cmp = function (y) {\r\n var isneg,\r\n x = this,\r\n xc = x.c,\r\n yc = (y = new x.constructor(y)).c,\r\n i = x.s,\r\n j = y.s,\r\n k = x.e,\r\n l = y.e;\r\n\r\n // Either zero?\r\n if (!xc[0] || !yc[0]) return !xc[0] ? !yc[0] ? 0 : -j : i;\r\n\r\n // Signs differ?\r\n if (i != j) return i;\r\n\r\n isneg = i < 0;\r\n\r\n // Compare exponents.\r\n if (k != l) return k > l ^ isneg ? 1 : -1;\r\n\r\n j = (k = xc.length) < (l = yc.length) ? k : l;\r\n\r\n // Compare digit by digit.\r\n for (i = -1; ++i < j;) {\r\n if (xc[i] != yc[i]) return xc[i] > yc[i] ^ isneg ? 1 : -1;\r\n }\r\n\r\n // Compare lengths.\r\n return k == l ? 0 : k > l ^ isneg ? 1 : -1;\r\n};\r\n\r\n\r\n/*\r\n * Return a new Big whose value is the value of this Big divided by the value of Big y, rounded,\r\n * if necessary, to a maximum of Big.DP decimal places using rounding mode Big.RM.\r\n */\r\nP.div = function (y) {\r\n var x = this,\r\n Big = x.constructor,\r\n a = x.c, // dividend\r\n b = (y = new Big(y)).c, // divisor\r\n k = x.s == y.s ? 1 : -1,\r\n dp = Big.DP;\r\n\r\n if (dp !== ~~dp || dp < 0 || dp > MAX_DP) {\r\n throw Error(INVALID_DP);\r\n }\r\n\r\n // Divisor is zero?\r\n if (!b[0]) {\r\n throw Error(DIV_BY_ZERO);\r\n }\r\n\r\n // Dividend is 0? Return +-0.\r\n if (!a[0]) {\r\n y.s = k;\r\n y.c = [y.e = 0];\r\n return y;\r\n }\r\n\r\n var bl, bt, n, cmp, ri,\r\n bz = b.slice(),\r\n ai = bl = b.length,\r\n al = a.length,\r\n r = a.slice(0, bl), // remainder\r\n rl = r.length,\r\n q = y, // quotient\r\n qc = q.c = [],\r\n qi = 0,\r\n p = dp + (q.e = x.e - y.e) + 1; // precision of the result\r\n\r\n q.s = k;\r\n k = p < 0 ? 0 : p;\r\n\r\n // Create version of divisor with leading zero.\r\n bz.unshift(0);\r\n\r\n // Add zeros to make remainder as long as divisor.\r\n for (; rl++ < bl;) r.push(0);\r\n\r\n do {\r\n\r\n // n is how many times the divisor goes into current remainder.\r\n for (n = 0; n < 10; n++) {\r\n\r\n // Compare divisor and remainder.\r\n if (bl != (rl = r.length)) {\r\n cmp = bl > rl ? 1 : -1;\r\n } else {\r\n for (ri = -1, cmp = 0; ++ri < bl;) {\r\n if (b[ri] != r[ri]) {\r\n cmp = b[ri] > r[ri] ? 1 : -1;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n // If divisor < remainder, subtract divisor from remainder.\r\n if (cmp < 0) {\r\n\r\n // Remainder can't be more than 1 digit longer than divisor.\r\n // Equalise lengths using divisor with extra leading zero?\r\n for (bt = rl == bl ? b : bz; rl;) {\r\n if (r[--rl] < bt[rl]) {\r\n ri = rl;\r\n for (; ri && !r[--ri];) r[ri] = 9;\r\n --r[ri];\r\n r[rl] += 10;\r\n }\r\n r[rl] -= bt[rl];\r\n }\r\n\r\n for (; !r[0];) r.shift();\r\n } else {\r\n break;\r\n }\r\n }\r\n\r\n // Add the digit n to the result array.\r\n qc[qi++] = cmp ? n : ++n;\r\n\r\n // Update the remainder.\r\n if (r[0] && cmp) r[rl] = a[ai] || 0;\r\n else r = [a[ai]];\r\n\r\n } while ((ai++ < al || r[0] !== UNDEFINED) && k--);\r\n\r\n // Leading zero? Do not remove if result is simply zero (qi == 1).\r\n if (!qc[0] && qi != 1) {\r\n\r\n // There can't be more than one zero.\r\n qc.shift();\r\n q.e--;\r\n p--;\r\n }\r\n\r\n // Round?\r\n if (qi > p) round(q, p, Big.RM, r[0] !== UNDEFINED);\r\n\r\n return q;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Big is equal to the value of Big y, otherwise return false.\r\n */\r\nP.eq = function (y) {\r\n return this.cmp(y) === 0;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Big is greater than the value of Big y, otherwise return\r\n * false.\r\n */\r\nP.gt = function (y) {\r\n return this.cmp(y) > 0;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Big is greater than or equal to the value of Big y, otherwise\r\n * return false.\r\n */\r\nP.gte = function (y) {\r\n return this.cmp(y) > -1;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Big is less than the value of Big y, otherwise return false.\r\n */\r\nP.lt = function (y) {\r\n return this.cmp(y) < 0;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Big is less than or equal to the value of Big y, otherwise\r\n * return false.\r\n */\r\nP.lte = function (y) {\r\n return this.cmp(y) < 1;\r\n};\r\n\r\n\r\n/*\r\n * Return a new Big whose value is the value of this Big minus the value of Big y.\r\n */\r\nP.minus = P.sub = function (y) {\r\n var i, j, t, xlty,\r\n x = this,\r\n Big = x.constructor,\r\n a = x.s,\r\n b = (y = new Big(y)).s;\r\n\r\n // Signs differ?\r\n if (a != b) {\r\n y.s = -b;\r\n return x.plus(y);\r\n }\r\n\r\n var xc = x.c.slice(),\r\n xe = x.e,\r\n yc = y.c,\r\n ye = y.e;\r\n\r\n // Either zero?\r\n if (!xc[0] || !yc[0]) {\r\n if (yc[0]) {\r\n y.s = -b;\r\n } else if (xc[0]) {\r\n y = new Big(x);\r\n } else {\r\n y.s = 1;\r\n }\r\n return y;\r\n }\r\n\r\n // Determine which is the bigger number. Prepend zeros to equalise exponents.\r\n if (a = xe - ye) {\r\n\r\n if (xlty = a < 0) {\r\n a = -a;\r\n t = xc;\r\n } else {\r\n ye = xe;\r\n t = yc;\r\n }\r\n\r\n t.reverse();\r\n for (b = a; b--;) t.push(0);\r\n t.reverse();\r\n } else {\r\n\r\n // Exponents equal. Check digit by digit.\r\n j = ((xlty = xc.length < yc.length) ? xc : yc).length;\r\n\r\n for (a = b = 0; b < j; b++) {\r\n if (xc[b] != yc[b]) {\r\n xlty = xc[b] < yc[b];\r\n break;\r\n }\r\n }\r\n }\r\n\r\n // x < y? Point xc to the array of the bigger number.\r\n if (xlty) {\r\n t = xc;\r\n xc = yc;\r\n yc = t;\r\n y.s = -y.s;\r\n }\r\n\r\n /*\r\n * Append zeros to xc if shorter. No need to add zeros to yc if shorter as subtraction only\r\n * needs to start at yc.length.\r\n */\r\n if ((b = (j = yc.length) - (i = xc.length)) > 0) for (; b--;) xc[i++] = 0;\r\n\r\n // Subtract yc from xc.\r\n for (b = i; j > a;) {\r\n if (xc[--j] < yc[j]) {\r\n for (i = j; i && !xc[--i];) xc[i] = 9;\r\n --xc[i];\r\n xc[j] += 10;\r\n }\r\n\r\n xc[j] -= yc[j];\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (; xc[--b] === 0;) xc.pop();\r\n\r\n // Remove leading zeros and adjust exponent accordingly.\r\n for (; xc[0] === 0;) {\r\n xc.shift();\r\n --ye;\r\n }\r\n\r\n if (!xc[0]) {\r\n\r\n // n - n = +0\r\n y.s = 1;\r\n\r\n // Result must be zero.\r\n xc = [ye = 0];\r\n }\r\n\r\n y.c = xc;\r\n y.e = ye;\r\n\r\n return y;\r\n};\r\n\r\n\r\n/*\r\n * Return a new Big whose value is the value of this Big modulo the value of Big y.\r\n */\r\nP.mod = function (y) {\r\n var ygtx,\r\n x = this,\r\n Big = x.constructor,\r\n a = x.s,\r\n b = (y = new Big(y)).s;\r\n\r\n if (!y.c[0]) {\r\n throw Error(DIV_BY_ZERO);\r\n }\r\n\r\n x.s = y.s = 1;\r\n ygtx = y.cmp(x) == 1;\r\n x.s = a;\r\n y.s = b;\r\n\r\n if (ygtx) return new Big(x);\r\n\r\n a = Big.DP;\r\n b = Big.RM;\r\n Big.DP = Big.RM = 0;\r\n x = x.div(y);\r\n Big.DP = a;\r\n Big.RM = b;\r\n\r\n return this.minus(x.times(y));\r\n};\r\n\r\n\r\n/*\r\n * Return a new Big whose value is the value of this Big negated.\r\n */\r\nP.neg = function () {\r\n var x = new this.constructor(this);\r\n x.s = -x.s;\r\n return x;\r\n};\r\n\r\n\r\n/*\r\n * Return a new Big whose value is the value of this Big plus the value of Big y.\r\n */\r\nP.plus = P.add = function (y) {\r\n var e, k, t,\r\n x = this,\r\n Big = x.constructor;\r\n\r\n y = new Big(y);\r\n\r\n // Signs differ?\r\n if (x.s != y.s) {\r\n y.s = -y.s;\r\n return x.minus(y);\r\n }\r\n\r\n var xe = x.e,\r\n xc = x.c,\r\n ye = y.e,\r\n yc = y.c;\r\n\r\n // Either zero?\r\n if (!xc[0] || !yc[0]) {\r\n if (!yc[0]) {\r\n if (xc[0]) {\r\n y = new Big(x);\r\n } else {\r\n y.s = x.s;\r\n }\r\n }\r\n return y;\r\n }\r\n\r\n xc = xc.slice();\r\n\r\n // Prepend zeros to equalise exponents.\r\n // Note: reverse faster than unshifts.\r\n if (e = xe - ye) {\r\n if (e > 0) {\r\n ye = xe;\r\n t = yc;\r\n } else {\r\n e = -e;\r\n t = xc;\r\n }\r\n\r\n t.reverse();\r\n for (; e--;) t.push(0);\r\n t.reverse();\r\n }\r\n\r\n // Point xc to the longer array.\r\n if (xc.length - yc.length < 0) {\r\n t = yc;\r\n yc = xc;\r\n xc = t;\r\n }\r\n\r\n e = yc.length;\r\n\r\n // Only start adding at yc.length - 1 as the further digits of xc can be left as they are.\r\n for (k = 0; e; xc[e] %= 10) k = (xc[--e] = xc[e] + yc[e] + k) / 10 | 0;\r\n\r\n // No need to check for zero, as +x + +y != 0 && -x + -y != 0\r\n\r\n if (k) {\r\n xc.unshift(k);\r\n ++ye;\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (e = xc.length; xc[--e] === 0;) xc.pop();\r\n\r\n y.c = xc;\r\n y.e = ye;\r\n\r\n return y;\r\n};\r\n\r\n\r\n/*\r\n * Return a Big whose value is the value of this Big raised to the power n.\r\n * If n is negative, round to a maximum of Big.DP decimal places using rounding\r\n * mode Big.RM.\r\n *\r\n * n {number} Integer, -MAX_POWER to MAX_POWER inclusive.\r\n */\r\nP.pow = function (n) {\r\n var x = this,\r\n one = new x.constructor('1'),\r\n y = one,\r\n isneg = n < 0;\r\n\r\n if (n !== ~~n || n < -MAX_POWER || n > MAX_POWER) {\r\n throw Error(INVALID + 'exponent');\r\n }\r\n\r\n if (isneg) n = -n;\r\n\r\n for (;;) {\r\n if (n & 1) y = y.times(x);\r\n n >>= 1;\r\n if (!n) break;\r\n x = x.times(x);\r\n }\r\n\r\n return isneg ? one.div(y) : y;\r\n};\r\n\r\n\r\n/*\r\n * Return a new Big whose value is the value of this Big rounded to a maximum precision of sd\r\n * significant digits using rounding mode rm, or Big.RM if rm is not specified.\r\n *\r\n * sd {number} Significant digits: integer, 1 to MAX_DP inclusive.\r\n * rm? {number} Rounding mode: 0 (down), 1 (half-up), 2 (half-even) or 3 (up).\r\n */\r\nP.prec = function (sd, rm) {\r\n if (sd !== ~~sd || sd < 1 || sd > MAX_DP) {\r\n throw Error(INVALID + 'precision');\r\n }\r\n return round(new this.constructor(this), sd, rm);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Big whose value is the value of this Big rounded to a maximum of dp decimal places\r\n * using rounding mode rm, or Big.RM if rm is not specified.\r\n * If dp is negative, round to an integer which is a multiple of 10**-dp.\r\n * If dp is not specified, round to 0 decimal places.\r\n *\r\n * dp? {number} Integer, -MAX_DP to MAX_DP inclusive.\r\n * rm? {number} Rounding mode: 0 (down), 1 (half-up), 2 (half-even) or 3 (up).\r\n */\r\nP.round = function (dp, rm) {\r\n if (dp === UNDEFINED) dp = 0;\r\n else if (dp !== ~~dp || dp < -MAX_DP || dp > MAX_DP) {\r\n throw Error(INVALID_DP);\r\n }\r\n return round(new this.constructor(this), dp + this.e + 1, rm);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Big whose value is the square root of the value of this Big, rounded, if\r\n * necessary, to a maximum of Big.DP decimal places using rounding mode Big.RM.\r\n */\r\nP.sqrt = function () {\r\n var r, c, t,\r\n x = this,\r\n Big = x.constructor,\r\n s = x.s,\r\n e = x.e,\r\n half = new Big('0.5');\r\n\r\n // Zero?\r\n if (!x.c[0]) return new Big(x);\r\n\r\n // Negative?\r\n if (s < 0) {\r\n throw Error(NAME + 'No square root');\r\n }\r\n\r\n // Estimate.\r\n s = Math.sqrt(x + '');\r\n\r\n // Math.sqrt underflow/overflow?\r\n // Re-estimate: pass x coefficient to Math.sqrt as integer, then adjust the result exponent.\r\n if (s === 0 || s === 1 / 0) {\r\n c = x.c.join('');\r\n if (!(c.length + e & 1)) c += '0';\r\n s = Math.sqrt(c);\r\n e = ((e + 1) / 2 | 0) - (e < 0 || e & 1);\r\n r = new Big((s == 1 / 0 ? '5e' : (s = s.toExponential()).slice(0, s.indexOf('e') + 1)) + e);\r\n } else {\r\n r = new Big(s + '');\r\n }\r\n\r\n e = r.e + (Big.DP += 4);\r\n\r\n // Newton-Raphson iteration.\r\n do {\r\n t = r;\r\n r = half.times(t.plus(x.div(t)));\r\n } while (t.c.slice(0, e).join('') !== r.c.slice(0, e).join(''));\r\n\r\n return round(r, (Big.DP -= 4) + r.e + 1, Big.RM);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Big whose value is the value of this Big times the value of Big y.\r\n */\r\nP.times = P.mul = function (y) {\r\n var c,\r\n x = this,\r\n Big = x.constructor,\r\n xc = x.c,\r\n yc = (y = new Big(y)).c,\r\n a = xc.length,\r\n b = yc.length,\r\n i = x.e,\r\n j = y.e;\r\n\r\n // Determine sign of result.\r\n y.s = x.s == y.s ? 1 : -1;\r\n\r\n // Return signed 0 if either 0.\r\n if (!xc[0] || !yc[0]) {\r\n y.c = [y.e = 0];\r\n return y;\r\n }\r\n\r\n // Initialise exponent of result as x.e + y.e.\r\n y.e = i + j;\r\n\r\n // If array xc has fewer digits than yc, swap xc and yc, and lengths.\r\n if (a < b) {\r\n c = xc;\r\n xc = yc;\r\n yc = c;\r\n j = a;\r\n a = b;\r\n b = j;\r\n }\r\n\r\n // Initialise coefficient array of result with zeros.\r\n for (c = new Array(j = a + b); j--;) c[j] = 0;\r\n\r\n // Multiply.\r\n\r\n // i is initially xc.length.\r\n for (i = b; i--;) {\r\n b = 0;\r\n\r\n // a is yc.length.\r\n for (j = a + i; j > i;) {\r\n\r\n // Current sum of products at this digit position, plus carry.\r\n b = c[j] + yc[i] * xc[j - i - 1] + b;\r\n c[j--] = b % 10;\r\n\r\n // carry\r\n b = b / 10 | 0;\r\n }\r\n\r\n c[j] = b;\r\n }\r\n\r\n // Increment result exponent if there is a final carry, otherwise remove leading zero.\r\n if (b) ++y.e;\r\n else c.shift();\r\n\r\n // Remove trailing zeros.\r\n for (i = c.length; !c[--i];) c.pop();\r\n y.c = c;\r\n\r\n return y;\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Big in exponential notation rounded to dp fixed\r\n * decimal places using rounding mode rm, or Big.RM if rm is not specified.\r\n *\r\n * dp? {number} Decimal places: integer, 0 to MAX_DP inclusive.\r\n * rm? {number} Rounding mode: 0 (down), 1 (half-up), 2 (half-even) or 3 (up).\r\n */\r\nP.toExponential = function (dp, rm) {\r\n var x = this,\r\n n = x.c[0];\r\n\r\n if (dp !== UNDEFINED) {\r\n if (dp !== ~~dp || dp < 0 || dp > MAX_DP) {\r\n throw Error(INVALID_DP);\r\n }\r\n x = round(new x.constructor(x), ++dp, rm);\r\n for (; x.c.length < dp;) x.c.push(0);\r\n }\r\n\r\n return stringify(x, true, !!n);\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Big in normal notation rounded to dp fixed\r\n * decimal places using rounding mode rm, or Big.RM if rm is not specified.\r\n *\r\n * dp? {number} Decimal places: integer, 0 to MAX_DP inclusive.\r\n * rm? {number} Rounding mode: 0 (down), 1 (half-up), 2 (half-even) or 3 (up).\r\n *\r\n * (-0).toFixed(0) is '0', but (-0.1).toFixed(0) is '-0'.\r\n * (-0).toFixed(1) is '0.0', but (-0.01).toFixed(1) is '-0.0'.\r\n */\r\nP.toFixed = function (dp, rm) {\r\n var x = this,\r\n n = x.c[0];\r\n\r\n if (dp !== UNDEFINED) {\r\n if (dp !== ~~dp || dp < 0 || dp > MAX_DP) {\r\n throw Error(INVALID_DP);\r\n }\r\n x = round(new x.constructor(x), dp + x.e + 1, rm);\r\n\r\n // x.e may have changed if the value is rounded up.\r\n for (dp = dp + x.e + 1; x.c.length < dp;) x.c.push(0);\r\n }\r\n\r\n return stringify(x, false, !!n);\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Big.\r\n * Return exponential notation if this Big has a positive exponent equal to or greater than\r\n * Big.PE, or a negative exponent equal to or less than Big.NE.\r\n * Omit the sign for negative zero.\r\n */\r\nP[Symbol.for('nodejs.util.inspect.custom')] = P.toJSON = P.toString = function () {\r\n var x = this,\r\n Big = x.constructor;\r\n return stringify(x, x.e <= Big.NE || x.e >= Big.PE, !!x.c[0]);\r\n};\r\n\r\n\r\n/*\r\n * Return the value of this Big as a primitve number.\r\n */\r\nP.toNumber = function () {\r\n var n = Number(stringify(this, true, true));\r\n if (this.constructor.strict === true && !this.eq(n.toString())) {\r\n throw Error(NAME + 'Imprecise conversion');\r\n }\r\n return n;\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Big rounded to sd significant digits using\r\n * rounding mode rm, or Big.RM if rm is not specified.\r\n * Use exponential notation if sd is less than the number of digits necessary to represent\r\n * the integer part of the value in normal notation.\r\n *\r\n * sd {number} Significant digits: integer, 1 to MAX_DP inclusive.\r\n * rm? {number} Rounding mode: 0 (down), 1 (half-up), 2 (half-even) or 3 (up).\r\n */\r\nP.toPrecision = function (sd, rm) {\r\n var x = this,\r\n Big = x.constructor,\r\n n = x.c[0];\r\n\r\n if (sd !== UNDEFINED) {\r\n if (sd !== ~~sd || sd < 1 || sd > MAX_DP) {\r\n throw Error(INVALID + 'precision');\r\n }\r\n x = round(new Big(x), sd, rm);\r\n for (; x.c.length < sd;) x.c.push(0);\r\n }\r\n\r\n return stringify(x, sd <= x.e || x.e <= Big.NE || x.e >= Big.PE, !!n);\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Big.\r\n * Return exponential notation if this Big has a positive exponent equal to or greater than\r\n * Big.PE, or a negative exponent equal to or less than Big.NE.\r\n * Include the sign for negative zero.\r\n */\r\nP.valueOf = function () {\r\n var x = this,\r\n Big = x.constructor;\r\n if (Big.strict === true) {\r\n throw Error(NAME + 'valueOf disallowed');\r\n }\r\n return stringify(x, x.e <= Big.NE || x.e >= Big.PE, true);\r\n};\r\n\r\n\r\n// Export\r\n\r\n\r\nexport var Big = _Big_();\r\n\r\n/// <reference types=\"https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/big.js/index.d.ts\" />\r\nexport default Big;\r\n","/**\n * Strips both leading and trailing zeroes from a number string\n *\n * @param numberString the string of numbers to strip zeros from\n * @returns a string of numbers without leading or trailing zeros\n * @example\n * ```javascript\n * stripTrailingZeros('0005280');\n * // '5280'\n * ```\n */\nfunction stripTrailingZeroes(numberString: string) {\n const isNegative = numberString.startsWith('-');\n numberString = numberString.replace('-', '');\n\n numberString = numberString.replace(\n /\\.0*$/g,\n '' /* for numbers like \"1.0\" -> \"1\" */,\n );\n numberString = numberString.replace(/^0+/, '');\n // for numbers like \"1.10\" -> \"1.1\"\n if (numberString.includes('.')) {\n numberString = numberString.replace(/0+$/, '');\n }\n if (numberString.startsWith('.')) {\n // so that \".1\" returns as \"0.1\"\n numberString = `0${numberString}`;\n }\n return `${isNegative ? '-' : ''}${numberString}`;\n}\n\n/**\n * Converts a string in scientific notation formatting to string in decimal format\n *\n * @param scientificString a string in scientific format to convert to decimal\n * @returns a string of a decimal number equivalent to the specified scientificString\n * @example\n * ```javascript\n * scientificStrToDecimalStr('2.3e-5');\n * // '0.000023'\n * ```\n * @example\n * ```javascript\n * scientificStrToDecimalStr('2.3e+5');\n * // '230000'\n * ```\n */\nexport function scientificStrToDecimalStr(scientificString: string): string {\n // Does not contain \"e\" nor \"E\"\n if (!scientificString.match(/e/i /* lowercase and uppercase E */)) {\n return stripTrailingZeroes(scientificString);\n }\n\n // eslint-disable-next-line prefer-const\n let [base, power] = scientificString.split(\n /e/i /* lowercase and uppercase E */,\n );\n\n // remove the leading \"-\" if negative\n const isNegative = Number(base) < 0;\n base = base.replace('-', '');\n\n base = stripTrailingZeroes(base);\n const [wholeNumber, fraction /* move decimal this many places */ = ''] =\n base.split('.');\n if (Number(power) === 0) {\n return `${isNegative ? '-' : ''}${stripTrailingZeroes(base)}`;\n } else {\n const includesDecimal = base.includes('.');\n if (!includesDecimal) {\n base = `${base}.`;\n }\n base = base.replace('.', '');\n const baseLength = base.length;\n let splitPaddedNumber;\n if (Number(power) < 0) {\n // move decimal left\n if (wholeNumber.length < Math.abs(Number(power))) {\n base = base.padStart(\n baseLength + Math.abs(Number(power)) - wholeNumber.length,\n '0',\n );\n }\n splitPaddedNumber = base.split('');\n if (wholeNumber.length < Math.abs(Number(power))) {\n // starts with zeroes\n splitPaddedNumber = ['.', ...splitPaddedNumber];\n } else {\n splitPaddedNumber.splice(\n splitPaddedNumber.length - Math.abs(Number(power)),\n 0,\n '.',\n );\n }\n } else {\n // move decimal right\n if (fraction.length < Math.abs(Number(power))) {\n base = base.padEnd(\n baseLength + Math.abs(Number(power)) - fraction.length,\n '0',\n );\n }\n splitPaddedNumber = base.split('');\n if (fraction.length > Math.abs(Number(power))) {\n splitPaddedNumber.splice(\n splitPaddedNumber.length - Math.abs(Number(power)),\n 0,\n '.',\n );\n }\n }\n const toReturn = stripTrailingZeroes(splitPaddedNumber.join(''));\n return `${isNegative ? '-' : ''}${toReturn}`;\n }\n}\n","import Big from 'big.js';\nimport { hexToDecimal } from '../../classes/utils/hex-to-decimal';\nimport { scientificStrToDecimalStr } from './helpers';\n\n/**\n * A wrapper around [big.js](https://github.com/MikeMcl/big.js) which expands scientific notation and creates a \"toHexString\" function.\n * This is the return type of every operation on ether, wei, etc.\n */\nexport class TinyBig extends Big {\n constructor(value: string | number | TinyBig | Big) {\n if (typeof value === 'string' && value.startsWith('0x')) {\n value = hexToDecimal(value);\n }\n super(value);\n }\n /**\n * Used anytime you're passing in \"value\" to ethers or web3\n * For now, TypeScript will complain that `TinyBig` is not a `BigNumberish`. You can // @ts-ignore or call this\n *\n * @returns the TinyBig represented as a hex string\n * @example\n * ```javascript\n * tinyBig(293).toHexString();\n * // '0x125'\n * ```\n * @example\n * ```javascript\n * tinyBig(681365874).toHexString();\n * // '0x289cd172'\n */\n toHexString(): string {\n return `0x${BigInt(this.toString()).toString(16)}`;\n }\n toNumber(): number {\n return Number(scientificStrToDecimalStr(super.toString()));\n }\n\n toString(): string {\n if (this.toNumber() === 0) {\n return '0';\n }\n return scientificStrToDecimalStr(super.toString());\n }\n\n /**\n * Eithers pads or shortens a string to a specified length\n *\n * @param str the string to pad or chop\n * @param padChar the character to pad the string with\n * @param length the desired length of the given string\n * @returns a string of the desired length, either padded with the specified padChar or with the beginning of the string chopped off\n * @example\n * ```javascript\n * padAndChop('essential-eth', 'a', 8);\n * // 'tial-eth'\n * ```\n * @example\n * ```javascript\n * padAndChop('essential-eth', 'A', 20);\n * // 'AAAAAAAessential-eth'\n * ```\n */\n private padAndChop = (\n str: string,\n padChar: string,\n length: number,\n ): string => {\n return (Array(length).fill(padChar).join('') + str).slice(length * -1);\n };\n\n public toTwos(bitCount: number): Big {\n let binaryStr;\n\n if (this.gte(0)) {\n const twosComp = this.toNumber().toString(2);\n binaryStr = this.padAndChop(twosComp, '0', bitCount || twosComp.length);\n } else {\n binaryStr = this.plus(Math.pow(2, bitCount)).toNumber().toString(2);\n\n if (Number(binaryStr) < 0) {\n throw new Error('Cannot calculate twos complement');\n }\n }\n\n const binary = `0b${binaryStr}`;\n const decimal = Number(binary);\n return tinyBig(decimal);\n }\n}\n\n/**\n * Helper factory function so that you don't have to type \"new\" when instantiating a new TinyBig\n *\n * @param value the value to initiate the TinyBig with\n * @returns an initiated {@link TinyBig}\n * @example\n * ```javascript\n * tinyBig(10).times(3).toNumber()\n * // 30\n * ```\n */\nexport function tinyBig(value: string | number | TinyBig | Big): TinyBig {\n return new TinyBig(value);\n}\n","import { tinyBig, toChecksumAddress } from '../..';\nimport type {\n RPCTransaction,\n TransactionResponse,\n} from '../../types/Transaction.types';\nimport { hexToDecimal } from './hex-to-decimal';\n\n/**\n * Converts RPC transaction response to more JS-friendly format\n *\n * @param transaction the transaction to clean\n * @returns a cleaned transaction\n * @example\n * ```javascript\n * const RPCTransaction = { accessList: [], blockHash: '0x03ddc6a835462f750fcaf5ab511d8c48121b0813e3e80de84d7adc3ef192b7bf', blockNumber: '0xe28f62', chainId: '0x1', from: '0x642824fab1d0141073ed74326332950bec4701e3', gas: '0x274b7', gasPrice: '0x62df1c62c', hash: '0xd0befcb9d10a89aba2d488534811bf5c62a889e2499d23cdd83c2a2200cde873', input: '0xa0712d68000000000000000000000000000000000000000000000000000000000000000a', maxFeePerGas: '0x98808e3f0', maxPriorityFeePerGas: '0x3b9aca00', nonce: '0x42', r: '0x304682f8b22006dd1347c3722f6e43a5ad8e3a1ae51939cc0d6f07981602f5c0', s: '0x207ad110eb5c014cb628814b92396785fabfbe74542293300eeadf156f50f105', to: '0x84f80ea01e26b7c11bdd241970982c7eeab6ddcc', transactionIndex: '0x29', type: '0x2', v: '0x1', value: '0x470de4df820000' }\n * cleanTransaction(RPCTransaction);\n * // { accessList: [], blockHash: '0x03ddc6a835462f750fcaf5ab511d8c48121b0813e3e80de84d7adc3ef192b7bf', blockNumber: 14847842, chainId: 1, from: '0x642824FaB1D0141073ed74326332950bEc4701e3', gas: Big { s: 1, e: 5, c: [ 1, 6, 0, 9, 5, 1 ], constructor: { [λ: Big] DP: 20, RM: 1, NE: -7, PE: 21, strict: false, roundDown: 0, roundHalfUp: 1, roundHalfEven: 2, roundUp: 3, Big: [Circular], default: [Circular] }, padAndChop: [λ] }, gasPrice: Big { s: 1, e: 10, c: [ 2, 6, 5, 4, 0, 6, 2, 3, 4, 0, 4 ], constructor: { [λ: Big] DP: 20, RM: 1, NE: -7, PE: 21, strict: false, roundDown: 0, roundHalfUp: 1, roundHalfEven: 2, roundUp: 3, Big: [Circular], default: [Circular] }, padAndChop: [λ] }, hash: '0xd0befcb9d10a89aba2d488534811bf5c62a889e2499d23cdd83c2a2200cde873', input: '0xa0712d68000000000000000000000000000000000000000000000000000000000000000a', maxFeePerGas: Big { s: 1, e: 10, c: [ 4, 0, 9, 3, 6, 9, 8, 9, 6, 8 ], constructor: { [λ: Big] DP: 20, RM: 1, NE: -7, PE: 21, strict: false, roundDown: 0, roundHalfUp: 1, roundHalfEven: 2, roundUp: 3, Big: [Circular], default: [Circular] }, padAndChop: [λ] }, maxPriorityFeePerGas: Big { s: 1, e: 9, c: [ 1 ], constructor: { [λ: Big] DP: 20, RM: 1, NE: -7, PE: 21, strict: false, roundDown: 0, roundHalfUp: 1, roundHalfEven: 2, roundUp: 3, Big: [Circular], default: [Circular] }, padAndChop: [λ] }, nonce: 66, r: '0x304682f8b22006dd1347c3722f6e43a5ad8e3a1ae51939cc0d6f07981602f5c0', s: '0x207ad110eb5c014cb628814b92396785fabfbe74542293300eeadf156f50f105', to: '0x84F80EA01e26B7C11bdd241970982C7EEAb6DdcC', transactionIndex: 41, type: 2, v: 1, value: Big { s: 1, e: 16, c: [ 2 ], constructor: { [λ: Big] DP: 20, RM: 1, NE: -7, PE: 21, strict: false, roundDown: 0, roundHalfUp: 1, roundHalfEven: 2, roundUp: 3, Big: [Circular], default: [Circular] }, padAndChop: [λ] }, confirmations: 53 }\n * ```\n */\nexport function cleanTransaction(\n transaction: RPCTransaction,\n): TransactionResponse {\n const cleanedTransaction = {\n ...transaction,\n } as unknown as TransactionResponse;\n (Object.keys(transaction) as Array<keyof RPCTransaction>).forEach((key) => {\n // pending blocks have null instead of a difficulty\n // pending blocks have null instead of a miner address\n if (!transaction[key]) return;\n switch (key) {\n case 'blockNumber':\n case 'chainId':\n case 'transactionIndex':\n case 'type':\n case 'v':\n cleanedTransaction[key] = Number(hexToDecimal(transaction[key]));\n break;\n case 'from':\n case 'to':\n if (transaction[key]) {\n cleanedTransaction[key] = toChecksumAddress(transaction[key]);\n }\n break;\n case 'value':\n case 'gas':\n case 'gasPrice':\n case 'maxFeePerGas':\n case 'maxPriorityFeePerGas':\n case 'nonce':\n cleanedTransaction[key] = tinyBig(hexToDecimal(transaction[key]));\n break;\n }\n });\n return cleanedTransaction;\n}\n","type JSPrimitiveTypes =\n | 'string'\n | 'number'\n | 'bigint'\n | 'boolean'\n | 'symbol'\n | 'undefined'\n | 'object'\n | 'function';\n\nexport const validateType = (\n value: unknown,\n allowedTypes: JSPrimitiveTypes[],\n) => {\n if (!allowedTypes.includes(typeof value)) {\n throw new Error(\n `${allowedTypes.join(' or ')} required. Received ${typeof value}`,\n );\n }\n};\n","import { Keccak } from 'sha3';\nimport { validateType } from '../shared/validate-type';\n\n/**\n * Returns an Ethereum address in proper mixed-case checksum.\n * Does NOT support ICAP\n *\n * @param address An Ethereum address. Mixed, lower, and uppercase are all valid\n * @returns a valid checksum address\n * @example\n * ```javascript\n * toChecksumAddress('0xfB6916095ca1df60bB79Ce92cE3Ea74c37c5d359');\n * // '0xfB6916095ca1df60bB79Ce92cE3Ea74c37c5d359'\n * ```\n *\n * Similar to [\"getAddress\" in ethers.js](https://docs.ethers.io/v5/api/utils/address/#utils-getAddress)\n *\n * Similar to [\"toChecksumAddress\" in web3.js](https://web3js.readthedocs.io/en/v1.7.1/web3-utils.html#tochecksumaddress)\n */\nexport function toChecksumAddress(address: string) {\n validateType(address, ['string']);\n if (!/^(0x)?[0-9a-f]{40}$/i.test(address)) {\n throw new Error(`Invalid Ethereum address \"${address}\"`);\n }\n\n const _address = address.toLowerCase().replace(/^0x/i, '');\n const keccak = new Keccak(256);\n const addressHash = keccak.update(_address).digest('hex').replace(/^0x/i, '');\n let checksumAddress = '0x';\n\n for (let i = 0; i < _address.length; i++) {\n // If ith character is 8 to f then make it uppercase\n if (parseInt(addressHash[i], 16) > 7) {\n checksumAddress += _address[i].toUpperCase();\n } else {\n checksumAddress += _address[i];\n }\n }\n\n if (\n address.match(/([A-F].*[a-f])|([a-f].*[A-F])/) &&\n checksumAddress !== address\n ) {\n throw new Error(`Invalid Checksum address for \"${address}\"`);\n }\n return checksumAddress;\n}\n","import { toChecksumAddress } from '../../utils/to-checksum-address';\nimport type { Log, RPCLog } from './../../types/Transaction.types';\nimport { hexToDecimal } from './hex-to-decimal';\n\n/**\n * Converts RPC log receipt response to more JS-friendly format\n *\n * @param log the log to clean\n * @param receiptLog if the log is part of a transaction receipt. Used to remove certain keys from log\n * @example\n */\nexport function cleanLog(log: RPCLog, receiptLog: boolean): Log {\n const cleanedLog = {\n ...log,\n } as unknown as Log;\n\n (Object.keys(log) as Array<keyof RPCLog>).forEach((key) => {\n switch (key) {\n case 'address':\n cleanedLog[key] = toChecksumAddress(log[key]);\n break;\n case 'blockNumber':\n case 'logIndex':\n case 'transactionIndex':\n cleanedLog[key] = Number(hexToDecimal(log[key]));\n break;\n case 'removed':\n if (receiptLog) {\n delete cleanedLog[key];\n } else if (log[key] == null) {\n cleanedLog[key] === false;\n }\n break;\n }\n });\n\n return cleanedLog;\n}\n","// primarily duplicate code from https://github.com/ethers-io/ethers.js/blob/f599d6f23dad0d0acaa3828d6b7acaab2d5e455b/packages/bytes/src.ts/index.ts\nimport { logger } from '../logger/logger';\n\n///////////////////////////////\n// Exported Types\n\nexport type Bytes = ArrayLike<number>;\n\n/**\n * @example\n * [1,2,3]\n * @example\n * 0x123\n * @example\n * '0x123'\n */\n\nexport type BytesLike = Bytes | string;\nexport type BytesLikeWithNumber = BytesLike | number;\n\nexport interface DataOptions {\n allowMissingPrefix?: boolean;\n hexPad?: 'left' | 'right' | null;\n}\n\nexport interface Hexable {\n toHexString(): string;\n}\n\nexport type SignatureLike =\n | {\n r: string;\n s?: string;\n _vs?: string;\n recoveryParam?: number;\n v?: number;\n }\n | BytesLike;\n\nexport interface Signature {\n r: string;\n\n s: string;\n _vs: string;\n\n recoveryParam: number;\n v: number;\n\n yParityAndS: string;\n compact: string;\n}\n\n/**\n * Check if a value can be converted to a hex string\n *\n * @param value the value to check whether or not it's Hexable\n * @returns whether or not the value is Hexable\n * @example\n * ```javascript\n * const val = tinyBig(203);\n * isHexable(val);\n * // true\n * ```\n */\nfunction isHexable(value: any): value is Hexable {\n return !!value.toHexString;\n}\n\n/**\n * Returns true if and only if value is a valid [Bytes](#bytes) or DataHexString\n * Same as [`ethers.utils.isBytesLike`](https://docs.ethers.io/v5/api/utils/bytes/#utils-isBytesLike)\n *\n * @param value the value to check whether or not it matches BytesLike\n * @returns whether or not the value matches BytesLike\n * @example\n * ```javascript\n * isBytesLike([1,2,3]);\n * // true\n * ```\n * @example\n * ```javascript\n * isBytesLike(false);\n * // false\n * ```\n * @example\n * ```javascript\n * isBytesLike(new Uint8Array(1));\n * // true\n * ```\n */\nexport function isBytesLike(value: any): value is BytesLike {\n return (isHexString(value) && !(value.length % 2)) || isBytes(value);\n}\n\n/**\n * Checks if a value is an integer\n *\n * @param value the value to check whether or not it's an integer\n * @returns whether or not value is an integer\n * @example\n * ```javascript\n * isInteger(4)\n * // true\n * ```\n * @example\n * ```javascript\n * isInteger(6.2)\n * // false\n * ```\n */\nfunction isInteger(value: number) {\n return typeof value === 'number' && value == value && value % 1 === 0;\n}\n\n/**\n * Returns true if and only if value is a valid [Bytes](#bytes)\n * Same as [`ethers.utils.isBytes`](https://docs.ethers.io/v5/api/utils/bytes/#utils-isBytes)\n *\n * @param value the value to check whether or not it matches Bytes\n * @returns whether or not the value matches Bytes\n * @example\n * ```javascript\n * isBytes([1,2,3]);\n * // true\n * ```\n * @example\n * ```javascript\n * isBytes(false);\n * // false\n * ```\n * @example\n * ```javascript\n * isBytes(new Uint8Array(1));\n * // true\n * ```\n */\nexport function isBytes(value: any): value is Bytes {\n if (value == null) {\n return false;\n }\n\n if (value.constructor === Uint8Array) {\n return true;\n }\n if (typeof value === 'string') {\n return false;\n }\n if (!isInteger(value.length) || value.length < 0) {\n return false;\n }\n\n for (let i = 0; i < value.length; i++) {\n const v = value[i];\n if (!isInteger(v) || v < 0 || v >= 256) {\n return false;\n }\n }\n return true;\n}\n\n/**\n * Converts DataHexStringOrArrayish to a Uint8Array\n * Same as [`ethers.utils.arrayify`](https://docs.ethers.io/v5/api/utils/bytes/#utils-arrayify)\n *\n * @param value the value to convert to a Uint8Array\n * @param options options to use when converting the value to a Uint8Array\n * @returns the value represented as a Uint8Array\n * @example\n * ```javascript\n * arrayify(1);\n * // Uint8Array(1) [ 1 ]\n * ```\n * @example\n * ```javascript\n * arrayify(0x1234);\n * // Uint8Array(2) [ 18, 52 ]\n * ```\n * @example\n * ```javascript\n * arrayify('0x1', { hexPad: 'right' });\n * // Uint8Array(1) [ 16 ]\n * ```\n */\nexport function arrayify(\n value: BytesLike | Hexable | number,\n options?: DataOptions,\n): Uint8Array {\n if (!options) {\n options = {};\n }\n\n if (typeof value === 'number') {\n logger.checkSafeUint53(value, 'invalid arrayify value');\n\n const result = [];\n while (value) {\n result.unshift(value & 0xff);\n value = parseInt(String(value / 256));\n }\n if (result.length === 0) {\n result.push(0);\n }\n\n return new Uint8Array(result);\n }\n\n if (\n options.allowMissingPrefix &&\n typeof value === 'string' &&\n value.substring(0, 2) !== '0x'\n ) {\n value = '0x' + value;\n }\n\n if (isHexable(value)) {\n value = value.toHexString();\n }\n\n if (isHexString(value)) {\n let hex = (<string>value).substring(2);\n if (hex.length % 2) {\n if (options.hexPad === 'left') {\n hex = '0' + hex;\n } else if (options.hexPad === 'right') {\n hex += '0';\n } else {\n logger.throwArgumentError('hex data is odd-length', 'value', value);\n }\n }\n\n const result = [];\n for (let i = 0; i < hex.length; i += 2) {\n result.push(parseInt(hex.substring(i, i + 2), 16));\n }\n\n return new Uint8Array(result);\n }\n\n if (isBytes(value)) {\n return new Uint8Array(value);\n }\n\n return logger.throwArgumentError('invalid arrayify value', 'value', value);\n}\n\n/**\n * Concatenates all the BytesLike in arrayOfBytesLike into a single Uint8Array.\n * Same as [`ethers.utils.concat`](https://docs.ethers.io/v5/api/utils/bytes/#utils-concat)\n *\n * @param arrayOfBytesLike the array of {@link BytesLike} to concatenate together\n * @returns a concatenated Uint8Array\n * @example\n * ```javascript\n * concat([0, 1]);\n * // Uint8Array(2) [ 0, 1 ]\n * ```\n */\nexport function concat(\n arrayOfBytesLike: ReadonlyArray<BytesLikeWithNumber>,\n): Uint8Array {\n const objects = arrayOfBytesLike.map((item) => arrayify(item));\n const length = objects.reduce((accum, item) => accum + item.length, 0);\n const result = new Uint8Array(length);\n objects.reduce((offset, object) => {\n result.set(object, offset);\n return offset + object.length;\n }, 0);\n return result;\n}\n\n/**\n * Strips leading zeros from a BytesLike object\n *\n * @param value the value to strip leading zeros from\n * @returns value without leading zeroes, expressed as a Uint8Array\n * @example\n * ```javascript\n * stripZeros('0x00002834');\n * // Uint8Array { [Iterator] 0: 40, 1: 52 }\n * // Equivalent to '0x2834'\n * ```\n */\nexport function stripZeros(value: BytesLike): Uint8Array {\n let result: Uint8Array = arrayify(value);\n\n if (result.length === 0) {\n return result;\n }\n\n // Find the first non-zero entry\n let start = 0;\n while (start < result.length && result[start] === 0) {\n start++;\n }\n\n // If we started with zeros, strip them\n if (start) {\n result = result.slice(start);\n }\n\n return result;\n}\n\n/**\n * Pads the beginning of a {@link BytesLike} with zeros so it's the specified length as a Uint8Array\n *\n * @param value the value to pad\n * @param length the desired length of the value\n * @returns the value padded with zeros to the specified length\n * @example\n * ```javascript\n * zeroPad('0x039284');\n * // Uint8Array { [Iterator] 0: 0, 1: 0, 2: 0, 3: 3, 4: 146, 5: 132 }\n * // Equivalent to 0x000000039284\n * ```\n * @example\n * ```javascript\n * zeroPad([39, 25, 103, 45], 5);\n * // Uint8Array { [Iterator] 0: 0, 1: 39, 2: 25, 3: 103, 4: 45 }\n * ```\n */\nexport function zeroPad(value: BytesLike, length: number): Uint8Array {\n value = arrayify(value);\n\n if (value.length > length) {\n logger.throwArgumentError('value out of range', 'value', value);\n }\n\n const result = new Uint8Array(length);\n result.set(value, length - value.length);\n return result;\n}\n\n/**\n * Returns true if and only if object is a valid hex string.\n * If length is specified and object is not a valid DataHexString of length bytes, an InvalidArgument error is thrown.\n * Same as [`ethers.utils.isHexString`](https://docs.ethers.io/v5/api/utils/bytes/#utils-isHexString)\n *\n * @param value the value to check whether or not it's a hex string\n * @param length a length of bytes that the value should be equal to\n * @returns whether the value is a valid hex string (and optionally, whether it matches the length specified)\n * @example\n * ```javascript\n * isHexString('0x4924');\n * // true\n * ```\n * @example\n * ```javascript\n * isHexString('0x4924', 4);\n * // false\n * // length of 4 in bytes would mean a hex string with 8 characters\n * ```\n */\nexport function isHexString(value: any, length?: number): boolean {\n if (typeof value !== 'string' || !value.match(/^0x[0-9A-Fa-f]*$/)) {\n return false;\n }\n if (length && value.length !== 2 + 2 * length) {\n return false;\n }\n return true;\n}\n\nconst HexCharacters = '0123456789abcdef';\n\n/**\n * Converts a value into a hex string\n *\n * @param value the value to convert\n * @param options options to use when converting the value to a hex string\n * @returns the value represented as a hex string\n * @example\n * ```javascript\n * hexlify(4);\n * // '0x04'\n * ```\n * @example\n * ```javascript\n * hexlify(14);\n * // '0x0e'\n * ```\n */\nexport function hexlify(\n value: BytesLike | Hexable | number | bigint,\n options?: DataOptions,\n): string {\n if (!options) {\n options = {};\n }\n\n if (typeof value === 'number') {\n logger.checkSafeUint53(value, 'invalid hexlify value');\n\n let hex = '';\n while (value) {\n hex = HexCharacters[value & 0xf] + hex;\n value = Math.floor(value / 16);\n }\n\n if (hex.length) {\n if (hex.length % 2) {\n hex = '0' + hex;\n }\n return '0x' + hex;\n }\n\n return '0x00';\n }\n\n if (typeof value === 'bigint') {\n value = value.toString(16);\n if (value.length % 2) {\n return '0x0' + value;\n }\n return '0x' + value;\n }\n\n if (\n options.allowMissingPrefix &&\n typeof value === 'string' &&\n value.substring(0, 2) !== '0x'\n ) {\n value = '0x' + value;\n }\n\n if (isHexable(value)) {\n return value.toHexString();\n }\n\n if (isHexString(value)) {\n if ((<string>value).length % 2) {\n if (options.hexPad === 'left') {\n value = '0x0' + (<string>value).substring(2);\n } else if (options.hexPad === 'right') {\n value += '0';\n } else {\n logger.throwArgumentError('hex data is odd-length', 'value', value);\n }\n }\n return (<string>value).toLowerCase();\n }\n\n if (isBytes(value)) {\n let result = '0x';\n for (let i = 0; i < value.length; i++) {\n const v = value[i];\n result += HexCharacters[(v & 0xf0) >> 4] + HexCharacters[v & 0x0f];\n }\n return result;\n }\n\n return logger.throwArgumentError('invalid hexlify value', 'value', value);\n}\n\n/**\n * Gets the length of data represented as a hex string\n *\n * @param data the data to check the length of\n * @returns the length of the data\n * @example\n * ```javascript\n * hexDataLength([2, 4, 0, 1]);\n * // 4\n * ```\n * @example\n * ```javascript\n * hexDataLength('0x3925');\n * // 2\n * ```\n */\nexport function hexDataLength(data: BytesLike) {\n if (typeof data !== 'string') {\n data = hexlify(data);\n } else if (!isHexString(data) || data.length % 2) {\n return null;\n }\n\n return (data.length - 2) / 2;\n}\n\n/**\n * Slices a {@link BytesLike} to extract a certain part of the input\n *\n * @param data the data to slice from\n * @param offset the index to start extraction at\n * @param endOffset the index to end extraction at\n * @returns the extracted data as a hex string\n * @example\n * ```javascript\n * hexDataSlice([20, 6, 48], 0, 2);\n * // '0x1406'\n * ```\n */\nexport function hexDataSlice(\n data: BytesLikeWithNumber,\n offset: number,\n endOffset?: number,\n): string {\n if (typeof data !== 'string') {\n data = hexlify(data);\n } else if (!isHexString(data) || data.length % 2) {\n logger.throwArgumentError('invalid hexData', 'value', data);\n }\n\n offset = 2 + 2 * offset;\n\n if (endOffset != null) {\n return '0x' + data.substring(offset, 2 + 2 * endOffset);\n }\n\n return '0x' + data.substring(offset);\n}\n\n/**\n * Concatenates values together into one hex string\n *\n * @param items the items to concatenate together\n * @returns a single hex string including all of the items to be concatenated\n * @example\n * ```javascript\n * hexConcat([[2, 4, 0, 1], 9, '0x2934', '0x3947']);\n * // '0x020400010929343947'\n * ```\n */\nexport function hexConcat(items: ReadonlyArray<BytesLike>): string {\n let result = '0x';\n items.forEach((item) => {\n result += hexlify(item).substring(2);\n });\n return result;\n}\n\n/**\n * Converts a number of different types into a hex string\n *\n * @param value the value to convert into a hex string\n * @returns the value represented as a hex string\n * @example\n * ```javascript\n * hexValue(39);\n * // '0x27'\n * ```\n * @example\n * ```javascript\n * hexValue([9, 4, 19, 4]);\n * // '0x9041304'\n * ```\n */\nexport function hexValue(value: BytesLike | Hexable | number | bigint): string {\n const trimmed = hexStripZeros(hexlify(value, { hexPad: 'left' }));\n if (trimmed === '0x') {\n return '0x0';\n }\n return trimmed;\n}\n\n/**\n * Strips the leading zeros from a value and returns it as a hex string\n *\n * @param value the value to strip zeros from\n * @returns a hex string representation of the value, without leading zeros\n * @example\n * ```javascript\n * hexStripZeros([0,0,0,48]);\n * // '0x30'\n * ```\n */\nexport function hexStripZeros(value: BytesLike): string {\n if (typeof value !== 'string') {\n value = hexlify(value);\n }\n\n if (!isHexString(value)) {\n logger.throwArgumentError('invalid hex string', 'value', value);\n }\n value = value.substring(2);\n let offset = 0;\n while (offset < value.length && value[offset] === '0') {\n offset++;\n }\n return '0x' + value.substring(offset);\n}\n\n/**\n * Returns a hex string padded to a specified length of bytes.\n *\n * Similar to [\"hexZeroPad\" in ethers.js](https://docs.ethers.io/v5/api/utils/bytes/#utils-hexZeroPad)\n *\n * Differs from [\"padLeft\" in web3.js](https://web3js.readthedocs.io/en/v1.7.1/web3-utils.html#padleft) because web3 counts by characters, not bytes.\n *\n * @param value A hex-string, hex-number, or decimal number (auto-converts to base-16) to be padded\n * @param length The final length in bytes\n * @returns A hex string padded to the specified length\n * @throws If the value is not a hex string or number\n * @throws If the value is longer than the length\n * @example\n * ```javascript\n * hexZeroPad('0x60', 2);\n * // '0x0060'\n * ```\n * @example\n * ```javascript\n * hexZeroPad(0x60, 3);\n * // '0x000060'\n * ```\n * @example\n * ```javascript\n * hexZeroPad('12345', 1);\n * // Throws\n * ```\n */\nexport function hexZeroPad(value: BytesLikeWithNumber, length: number): string {\n if (typeof value !== 'string') {\n value = hexlify(value);\n } else if (!isHexString(value)) {\n logger.throwArgumentError('invalid hex string', 'value', value);\n }\n\n if (value.length > 2 * length + 2) {\n logger.throwError('value out of range', { value, length });\n }\n\n while (value.length < 2 * length + 2) {\n value = '0x0' + value.substring(2);\n }\n\n return value;\n}\n\n// export function splitSignature(signature: SignatureLike): Signature {\n// const result: Signature = {\n// r: '0x',\n// s: '0x',\n// _vs: '0x',\n// recoveryParam: 0,\n// v: 0,\n// yParityAndS: '0x',\n// compact: '0x',\n// };\n\n// if (isBytesLike(signature)) {\n// const bytes: Uint8Array = arrayify(signature);\n\n// // Get the r, s and v\n// if (bytes.length === 64) {\n// // EIP-2098; pull the v from the top bit of s and clear it\n// result.v = 27 + (bytes[32] >> 7);\n// bytes[32] &= 0x7f;\n\n// result.r = hexlify(bytes.slice(0, 32));\n// result.s = hexlify(bytes.slice(32, 64));\n// } else if (bytes.length === 65) {\n// result.r = hexlify(bytes.slice(0, 32));\n// result.s = hexlify(bytes.slice(32, 64));\n// result.v = bytes[64];\n// } else {\n// logger.throwArgumentError(\n// 'invalid signature string',\n// 'signature',\n// signature,\n// );\n// }\n\n// // Allow a recid to be used as the v\n// if (result.v < 27) {\n// if (result.v === 0 || result.v === 1) {\n// result.v += 27;\n// } else {\n// logger.throwArgumentError(\n// 'signature invalid v byte',\n// 'signature',\n// signature,\n// );\n// }\n// }\n\n// // Compute recoveryParam from v\n// result.recoveryParam = 1 - (result.v % 2);\n\n// // Compute _vs from recoveryParam and s\n// if (result.recoveryParam) {\n// bytes[32] |= 0x80;\n// }\n// result._vs = hexlify(bytes.slice(32, 64));\n// } else {\n// result.r = signature.r;\n// result.s = signature.s;\n// result.v = signature.v;\n// result.recoveryParam = signature.recoveryParam;\n// result._vs = signature._vs;\n\n// // If the _vs is available, use it to populate missing s, v and recoveryParam\n// // and verify non-missing s, v and recoveryParam\n// if (result._vs != null) {\n// const vs = zeroPad(arrayify(result._vs), 32);\n// result._vs = hexlify(vs);\n\n// // Set or check the recid\n// const recoveryParam = vs[0] >= 128 ? 1 : 0;\n// if (result.recoveryParam == null) {\n// result.recoveryParam = recoveryParam;\n// } else if (result.recoveryParam !== recoveryParam) {\n// logger.throwArgumentError(\n// 'signature recoveryParam mismatch _vs',\n// 'signature',\n// signature,\n// );\n// }\n\n// // Set or check the s\n// vs[0] &= 0x7f;\n// const s = hexlify(vs);\n// if (result.s == null) {\n// result.s = s;\n// } else if (result.s !== s) {\n// logger.throwArgumentError(\n// 'signature v mismatch _vs',\n// 'signature',\n// signature,\n// );\n// }\n// }\n\n// // Use recid and v to populate each other\n// if (result.recoveryParam == null) {\n// if (result.v == null) {\n// logger.throwArgumentError(\n// 'signature missing v and recoveryParam',\n// 'signature',\n// signature,\n// );\n// } else if (result.v === 0 || result.v === 1) {\n// result.recoveryParam = result.v;\n// } else {\n// result.recoveryParam = 1 - (result.v % 2);\n// }\n// } else {\n// if (result.v == null) {\n// result.v = 27 + result.recoveryParam;\n// } else {\n// const recId =\n// result.v === 0 || result.v === 1 ? result.v : 1 - (result.v % 2);\n// if (result.recoveryParam !== recId) {\n// logger.throwArgumentError(\n// 'signature recoveryParam mismatch v',\n// 'signature',\n// signature,\n// );\n// }\n// }\n// }\n\n// if (result.r == null || !isHexString(result.r)) {\n// logger.throwArgumentError(\n// 'signature missing or invalid r',\n// 'signature',\n// signature,\n// );\n// } else {\n// result.r = hexZeroPad(result.r, 32);\n// }\n\n// if (result.s == null || !isHexString(result.s)) {\n// logger.throwArgumentError(\n// 'signature missing or invalid s',\n// 'signature',\n// signature,\n// );\n// } else {\n// result.s = hexZeroPad(result.s, 32);\n// }\n\n// const vs = arrayify(result.s);\n// if (vs[0] >= 128) {\n// logger.throwArgumentError(\n// 'signature s out of range',\n// 'signature',\n// signature,\n// );\n// }\n// if (result.recoveryParam) {\n// vs[0] |= 0x80;\n// }\n// const _vs = hexlify(vs);\n\n// if (result._vs) {\n// if (!isHexString(result._vs)) {\n// logger.throwArgumentError(\n// 'signature invalid _vs',\n// 'signature',\n// signature,\n// );\n// }\n// result._vs = hexZeroPad(result._vs, 32);\n// }\n\n// // Set or check the _vs\n// if (result._vs == null) {\n// result._vs = _vs;\n// } else if (result._vs !== _vs) {\n// logger.throwArgumentError(\n// 'signature _vs mismatch v and s',\n// 'signature',\n// signature,\n// );\n// }\n// }\n\n// result.yParityAndS = result._vs;\n// result.compact = result.r + result.yParityAndS.substring(2);\n\n// return result;\n// }\n\n// export function joinSignature(signature: SignatureLike): string {\n// signature = splitSignature(signature);\n\n// return hexlify(\n// concat([\n// signature.r,\n// signature.s,\n// signature.recoveryParam ? '0x1c' : '0x1b',\n// ]),\n// );\n// }\n","import Big from 'big.js';\nimport { TinyBig } from '../../shared/tiny-big/tiny-big';\nimport { hexlify } from '../../utils/bytes';\nimport type {\n RPCTransactionRequest,\n TransactionRequest,\n} from './../../types/Transaction.types';\nimport type { BytesLike } from './../../utils/bytes';\n\n/**\n * @param transaction\n * @example\n */\nexport function prepareTransaction(\n transaction: TransactionRequest,\n): RPCTransactionRequest {\n const preparedTransaction = {\n ...transaction,\n } as unknown as RPCTransactionRequest;\n (Object.keys(transaction) as Array<keyof TransactionRequest>).forEach(\n (key) => {\n switch (key) {\n case 'gas':\n case 'gasPrice':\n case 'nonce':\n case 'maxFeePerGas':\n case 'maxPriorityFeePerGas':\n case 'value': {\n const value = transaction[key];\n if (value instanceof TinyBig) {\n preparedTransaction[key] = value.toHexString();\n } else if (value instanceof Big) {\n preparedTransaction[key] = `0x${BigInt(value.toString()).toString(\n 16,\n )}`;\n } else if (typeof transaction[key] === 'number')\n preparedTransaction[key] =\n '0x' + (transaction[key] as any).toString(16);\n else preparedTransaction[key] = (transaction[key] as any).toString();\n break;\n }\n case 'data':\n preparedTransaction[key] = hexlify(transaction[key] as BytesLike);\n break;\n }\n },\n );\n return preparedTransaction;\n}\n","// autogenerated in \"fetch-chains-info.ts\"\n// Do not edit directly\nexport default {\n \"1\": [\n \"eth\",\n \"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e\"\n ],\n \"2\": [\n \"exp\"\n ],\n \"3\": [\n \"rop\",\n \"0x112234455c3a32fd11230c42e7bccd4a84e02010\"\n ],\n \"4\": [\n \"rin\",\n \"0xe7410170f87102df0055eb195163a03b7f2bff4a\"\n ],\n \"5\": [\n \"gor\",\n \"0x112234455c3a32fd11230c42e7bccd4a84e02010\"\n ],\n \"6\": [\n \"kot\"\n ],\n \"7\": [\n \"tch\"\n ],\n \"8\": [\n \"ubq\"\n ],\n \"9\": [\n \"tubq\"\n ],\n \"10\": [\n \"oeth\"\n ],\n \"11\": [\n \"meta\"\n ],\n \"12\": [\n \"kal\"\n ],\n \"13\": [\n \"dstg\"\n ],\n \"14\": [\n \"flr\"\n ],\n \"15\": [\n \"diode\"\n ],\n \"16\": [\n \"cflr\"\n ],\n \"17\": [\n \"tfi\"\n ],\n \"18\": [\n \"TST\"\n ],\n \"19\": [\n \"sgb\"\n ],\n \"20\": [\n \"elaeth\"\n ],\n \"21\": [\n \"elaetht\"\n ],\n \"22\": [\n \"eladid\"\n ],\n \"23\": [\n \"eladidt\"\n ],\n \"24\": [\n \"dthmainnet\"\n ],\n \"25\": [\n \"cro\"\n ],\n \"26\": [\n \"L1test\"\n ],\n \"27\": [\n \"shib\"\n ],\n \"28\": [\n \"Boba Rinkeby\"\n ],\n \"29\": [\n \"L1\"\n ],\n \"30\": [\n \"rsk\"\n ],\n \"31\": [\n \"trsk\"\n ],\n \"32\": [\n \"GooDT\"\n ],\n \"33\": [\n \"GooD\"\n ],\n \"34\": [\n \"dth\"\n ],\n \"35\": [\n \"tbwg\"\n ],\n \"36\": [\n \"dx\"\n ],\n \"38\": [\n \"val\"\n ],\n \"40\": [\n \"Telos EVM\"\n ],\n \"41\": [\n \"Telos EVM Testnet\"\n ],\n \"42\": [\n \"kov\"\n ],\n \"43\": [\n \"pangolin\"\n ],\n \"44\": [\n \"crab\"\n ],\n \"45\": [\n \"pangoro\"\n ],\n \"46\": [\n \"darwinia\"\n ],\n \"50\": [\n \"xdc\"\n ],\n \"51\": [\n \"TXDC\"\n ],\n \"52\": [\n \"cet\"\n ],\n \"53\": [\n \"tcet\"\n ],\n \"54\": [\n \"OP\"\n ],\n \"55\": [\n \"ZYX\"\n ],\n \"56\": [\n \"bnb\"\n ],\n \"57\": [\n \"sys\"\n ],\n \"58\": [\n \"Ontology Mainnet\"\n ],\n \"59\": [\n \"EOS Mainnet\"\n ],\n \"60\": [\n \"go\"\n ],\n \"61\": [\n \"etc\"\n ],\n \"62\": [\n \"tetc\"\n ],\n \"63\": [\n \"metc\"\n ],\n \"64\": [\n \"ellaism\"\n ],\n \"65\": [\n \"tokt\"\n ],\n \"66\": [\n \"okt\"\n ],\n \"67\": [\n \"dbm\"\n ],\n \"68\": [\n \"SO1\"\n ],\n \"69\": [\n \"okov\"\n ],\n \"70\": [\n \"hsc\"\n ],\n \"71\": [\n \"cfxtest\"\n ],\n \"72\": [\n \"dxc\"\n ],\n \"74\": [\n \"idchain\"\n ],\n \"76\": [\n \"mix\"\n ],\n \"77\": [\n \"spoa\"\n ],\n \"78\": [\n \"primuschain\"\n ],\n \"79\": [\n \"zenith\"\n ],\n \"80\": [\n \"GeneChain\"\n ],\n \"81\": [\n \"VIL\"\n ],\n \"82\": [\n \"Meter\"\n ],\n \"83\": [\n \"MeterTest\"\n ],\n \"85\": [\n \"gttest\"\n ],\n \"86\": [\n \"gt\"\n ],\n \"87\": [\n \"nnw\"\n ],\n \"88\": [\n \"tomo\"\n ],\n \"89\": [\n \"tomot\"\n ],\n \"90\": [\n \"gar-s0\"\n ],\n \"91\": [\n \"gar-s1\"\n ],\n \"92\": [\n \"gar-s2\"\n ],\n \"93\": [\n \"gar-s3\"\n ],\n \"95\": [\n \"Kylin Testnet\"\n ],\n \"96\": [\n \"nsc\"\n ],\n \"97\": [\n \"bnbt\"\n ],\n \"99\": [\n \"poa\"\n ],\n \"100\": [\n \"gno\"\n ],\n \"101\": [\n \"eti\"\n ],\n \"102\": [\n \"tw3g\"\n ],\n \"104\": [\n \"tklc\"\n ],\n \"105\": [\n \"dw3g\"\n ],\n \"106\": [\n \"vlx\"\n ],\n \"107\": [\n \"ntn\"\n ],\n \"108\": [\n \"TT\"\n ],\n \"110\": [\n \"xpr\"\n ],\n \"111\": [\n \"ETL\"\n ],\n \"122\": [\n \"fuse\"\n ],\n \"123\": [\n \"spark\"\n ],\n \"124\": [\n \"dwu\"\n ],\n \"125\": [\n \"oychain testnet\"\n ],\n \"126\": [\n \"oychain mainnet\"\n ],\n \"127\": [\n \"feth\"\n ],\n \"128\": [\n \"heco\"\n ],\n \"137\": [\n \"MATIC\"\n ],\n \"141\": [\n \"OPtest\"\n ],\n \"142\": [\n \"dax\"\n ],\n \"162\": [\n \"tpht\"\n ],\n \"163\": [\n \"pht\"\n ],\n \"168\": [\n \"aioz\"\n ],\n \"170\": [\n \"hoosmartchain\"\n ],\n \"172\": [\n \"resil\"\n ],\n \"180\": [\n \"ame\"\n ],\n \"186\": [\n \"Seele\"\n ],\n \"188\": [\n \"BMC\"\n ],\n \"189\": [\n \"BMCT\"\n ],\n \"193\": [\n \"cem\"\n ],\n \"199\": [\n \"BTT\"\n ],\n \"200\": [\n \"aox\"\n ],\n \"211\": [\n \"EDI\"\n ],\n \"218\": [\n \"SO1-old\"\n ],\n \"222\": [\n \"ASK\"\n ],\n \"225\": [\n \"LA\"\n ],\n \"226\": [\n \"TLA\"\n ],\n \"246\": [\n \"ewt\"\n ],\n \"250\": [\n \"ftm\"\n ],\n \"256\": [\n \"hecot\"\n ],\n \"258\": [\n \"setm\"\n ],\n \"262\": [\n \"SUR\"\n ],\n \"269\": [\n \"hpb\"\n ],\n \"280\": [\n \"zksync-goerli\"\n ],\n \"288\": [\n \"Boba\"\n ],\n \"300\": [\n \"ogc\"\n ],\n \"321\": [\n \"kcs\"\n ],\n \"322\": [\n \"kcst\"\n ],\n \"333\": [\n \"w3q\"\n ],\n \"335\": [\n \"DFKTEST\"\n ],\n \"336\": [\n \"sdn\"\n ],\n \"338\": [\n \"tcro\"\n ],\n \"361\": [\n \"theta-mainnet\"\n ],\n \"363\": [\n \"theta-sapphire\"\n ],\n \"364\": [\n \"theta-amber\"\n ],\n \"365\": [\n \"theta-testnet\"\n ],\n \"369\": [\n \"pls\"\n ],\n \"385\": [\n \"lisinski\"\n ],\n \"416\": [\n \"SX\"\n ],\n \"420\": [\n \"ogor\"\n ],\n \"499\": [\n \"rupx\"\n ],\n \"512\": [\n \"aac\"\n ],\n \"513\": [\n \"aact\"\n ],\n \"520\": [\n \"xt\"\n ],\n \"530\": [\n \"f(x)Core\"\n ],\n \"534\": [\n \"CNDL\"\n ],\n \"555\": [\n \"CLASS\"\n ],\n \"558\": [\n \"tao\"\n ],\n \"588\": [\n \"metis-stardust\"\n ],\n \"592\": [\n \"astr\"\n ],\n \"595\": [\n \"maca\"\n ],\n \"596\": [\n \"tkar\"\n ],\n \"597\": [\n \"taca\"\n ],\n \"600\": [\n \"mesh-chain-testnet\"\n ],\n \"647\": [\n \"SX-Testnet\"\n ],\n \"666\": [\n \"pixie-chain-testnet\"\n ],\n \"686\": [\n \"kar\"\n ],\n \"700\": [\n \"SNS\"\n ],\n \"707\": [\n \"bcs\"\n ],\n \"708\": [\n \"tbcs\"\n ],\n \"721\": [\n \"tfeth\"\n ],\n \"776\": [\n \"opc\"\n ],\n \"777\": [\n \"cth\"\n ],\n \"787\": [\n \"aca\"\n ],\n \"788\": [\n \"taero\"\n ],\n \"803\": [\n \"haic\"\n ],\n \"808\": [\n \"PFTEST\"\n ],\n \"820\": [\n \"clo\"\n ],\n \"821\": [\n \"tclo\"\n ],\n \"880\": [\n \"ambros\"\n ],\n \"888\": [\n \"wan\"\n ],\n \"900\": [\n \"gar-test-s0\"\n ],\n \"901\": [\n \"gar-test-s1\"\n ],\n \"902\": [\n \"gar-test-s2\"\n ],\n \"903\": [\n \"gar-test-s3\"\n ],\n \"909\": [\n \"PF\"\n ],\n \"940\": [\n \"tpls\"\n ],\n \"941\": [\n \"t2bpls\"\n ],\n \"942\": [\n \"t3pls\"\n ],\n \"977\": [\n \"yeti\"\n ],\n \"980\": [\n \"top_evm\"\n ],\n \"989\": [\n \"top\"\n ],\n \"998\": [\n \"ln\"\n ],\n \"999\": [\n \"twan\"\n ],\n \"1000\": [\n \"gton\"\n ],\n \"1001\": [\n \"Baobab\"\n ],\n \"1007\": [\n \"tnew\"\n ],\n \"1008\": [\n \"eun\"\n ],\n \"1010\": [\n \"EVC\"\n ],\n \"1012\": [\n \"new\"\n ],\n \"1022\": [\n \"sku\"\n ],\n \"1023\": [\n \"tclv\"\n ],\n \"1024\": [\n \"clv\"\n ],\n \"1028\": [\n \"tbtt\"\n ],\n \"1030\": [\n \"cfx\"\n ],\n \"1088\": [\n \"metis-andromeda\"\n ],\n \"1139\": [\n \"MATH\"\n ],\n \"1140\": [\n \"tMATH\"\n ],\n \"1197\": [\n \"iora\"\n ],\n \"1201\": [\n \"avis\"\n ],\n \"1202\": [\n \"wtt\"\n ],\n \"1213\": [\n \"popcat\"\n ],\n \"1214\": [\n \"enter\"\n ],\n \"1246\": [\n \"om\"\n ],\n \"1280\": [\n \"HO\"\n ],\n \"1284\": [\n \"mbeam\"\n ],\n \"1285\": [\n \"mriver\"\n ],\n \"1286\": [\n \"mrock-old\"\n ],\n \"1287\": [\n \"mbase\"\n ],\n \"1288\": [\n \"mrock\"\n ],\n \"1297\": [\n \"Bobabase\"\n ],\n \"1319\": [\n \"aitd\"\n ],\n \"1320\": [\n \"aitdtestnet\"\n ],\n \"1337\": [\n \"cennz-old\"\n ],\n \"1506\": [\n \"Sherpax\"\n ],\n \"1507\": [\n \"Sherpax Testnet\"\n ],\n \"1618\": [\n \"cate\"\n ],\n \"1620\": [\n \"ath\"\n ],\n \"1657\": [\n \"bta\"\n ],\n \"1688\": [\n \"LUDAN\"\n ],\n \"1818\": [\n \"cube\"\n ],\n \"1819\": [\n \"cubet\"\n ],\n \"1856\": [\n \"tsf\"\n ],\n \"1898\": [\n \"boya\"\n ],\n \"1984\": [\n \"euntest\"\n ],\n \"1987\": [\n \"egem\"\n ],\n \"2001\": [\n \"milkAda\"\n ],\n \"2008\": [\n \"cloudwalk_testnet\"\n ],\n \"2009\": [\n \"cloudwalk_mainnet\"\n ],\n \"2020\": [\n \"420\"\n ],\n \"2021\": [\n \"edg\"\n ],\n \"2022\": [\n \"edgt\"\n ],\n \"2023\": [\n \"taycan-testnet\"\n ],\n \"2025\": [\n \"rpg\"\n ],\n \"2100\": [\n \"eco\"\n ],\n \"2101\": [\n \"esp\"\n ],\n \"2152\": [\n \"fra\"\n ],\n \"2153\": [\n \"findora-testnet\"\n ],\n \"2213\": [\n \"evanesco\"\n ],\n \"2221\": [\n \"tkava\"\n ],\n \"2222\": [\n \"kava\"\n ],\n \"2223\": [\n \"VChain\"\n ],\n \"2559\": [\n \"ktoc\"\n ],\n \"2569\": [\n \"tpc\"\n ],\n \"2612\": [\n \"EZChain\"\n ],\n \"2613\": [\n \"Fuji-EZChain\"\n ],\n \"3000\": [\n \"cennz-r\"\n ],\n \"3001\": [\n \"cennz-n\"\n ],\n \"3331\": [\n \"zcrbeach\"\n ],\n \"3333\": [\n \"w3q-t\"\n ],\n \"3334\": [\n \"w3q-g\"\n ],\n \"3400\": [\n \"prb\"\n ],\n \"3500\": [\n \"prbtestnet\"\n ],\n \"3501\": [\n \"jfin\"\n ],\n \"3690\": [\n \"btx\"\n ],\n \"3737\": [\n \"csb\"\n ],\n \"3966\": [\n \"dyno\"\n ],\n \"3967\": [\n \"tdyno\"\n ],\n \"3999\": [\n \"ycc\"\n ],\n \"4002\": [\n \"tftm\"\n ],\n \"4051\": [\n \"Bobaopera Testnet\"\n ],\n \"4102\": [\n \"aioz-testnet\"\n ],\n \"4181\": [\n \"PHI\"\n ],\n \"4689\": [\n \"iotex-mainnet\"\n ],\n \"4690\": [\n \"iotex-testnet\"\n ],\n \"4918\": [\n \"txvm\"\n ],\n \"4919\": [\n \"xvm\"\n ],\n \"5177\": [\n \"tlc\"\n ],\n \"5197\": [\n \"es\"\n ],\n \"5315\": [\n \"UZMI\"\n ],\n \"5551\": [\n \"Nahmii\"\n ],\n \"5553\": [\n \"Nahmii testnet\"\n ],\n \"5700\": [\n \"tsys\"\n ],\n \"5777\": [\n \"dgcc\"\n ],\n \"5851\": [\n \"Ontology Testnet\"\n ],\n \"5869\": [\n \"rbd\"\n ],\n \"6626\": [\n \"pixie-chain\"\n ],\n \"6969\": [\n \"tombchain\"\n ],\n \"7027\": [\n \"ELLA\"\n ],\n \"7341\": [\n \"shyft\"\n ],\n \"7777\": [\n \"Rise of the Warbots Testnet\"\n ],\n \"7878\": [\n \"tscas\"\n ],\n \"8000\": [\n \"teleport\"\n ],\n \"8001\": [\n \"teleport-testnet\"\n ],\n \"8029\": [\n \"mdgl\"\n ],\n \"8080\": [\n \"GeneChainAdn\"\n ],\n \"8217\": [\n \"Cypress\"\n ],\n \"8285\": [\n \"Kortho\"\n ],\n \"8723\": [\n \"olo\"\n ],\n \"8724\": [\n \"tolo\"\n ],\n \"8888\": [\n \"ambrostestnet\"\n ],\n \"8898\": [\n \"mmt\"\n ],\n \"8995\": [\n \"berg\"\n ],\n \"9000\": [\n \"evmos-testnet\"\n ],\n \"9001\": [\n \"evmos\"\n ],\n \"9012\": [\n \"brb\"\n ],\n \"9100\": [\n \"GENEC\"\n ],\n \"9527\": [\n \"trpg\"\n ],\n \"9999\": [\n \"myn\"\n ],\n \"10000\": [\n \"smartbch\"\n ],\n \"10001\": [\n \"smartbchtest\"\n ],\n \"10101\": [\n \"GEN\"\n ],\n \"10823\": [\n \"CCP\"\n ],\n \"10946\": [\n \"quadrans\"\n ],\n \"10947\": [\n \"quadranstestnet\"\n ],\n \"11111\": [\n \"WAGMI\"\n ],\n \"11437\": [\n \"shyftt\"\n ],\n \"12051\": [\n \"tZERO\"\n ],\n \"12052\": [\n \"ZERO\"\n ],\n \"13381\": [\n \"Phoenix\"\n ],\n \"16000\": [\n \"mtt\"\n ],\n \"16001\": [\n \"mtttest\"\n ],\n \"16888\": [\n \"tivar\"\n ],\n \"19845\": [\n \"btcix\"\n ],\n \"21337\": [\n \"cennz-a\"\n ],\n \"21816\": [\n \"omc\"\n ],\n \"22023\": [\n \"SFL\"\n ],\n \"24484\": [\n \"web\"\n ],\n \"24734\": [\n \"mintme\"\n ],\n \"26863\": [\n \"OAC\"\n ],\n \"30067\": [\n \"Piece\"\n ],\n \"31102\": [\n \"esn\"\n ],\n \"31337\": [\n \"got\"\n ],\n \"32520\": [\n \"Brise\"\n ],\n \"32659\": [\n \"fsn\"\n ],\n \"35441\": [\n \"q\"\n ],\n \"35443\": [\n \"q-testnet\"\n ],\n \"39797\": [\n \"nrg\"\n ],\n \"42069\": [\n \"PC\"\n ],\n \"42161\": [\n \"arb1\"\n ],\n \"42170\": [\n \"arb-nova\"\n ],\n \"42220\": [\n \"CELO\"\n ],\n \"42261\": [\n \"emerald\"\n ],\n \"42262\": [\n \"oasis\"\n ],\n \"43110\": [\n \"avaeth\"\n ],\n \"43113\": [\n \"Fuji\"\n ],\n \"43114\": [\n \"avax\"\n ],\n \"44787\": [\n \"ALFA\"\n ],\n \"45000\": [\n \"Autobahn Network\"\n ],\n \"47805\": [\n \"REI\"\n ],\n \"49797\": [\n \"tnrg\"\n ],\n \"50021\": [\n \"tgton\"\n ],\n \"53935\": [\n \"DFK\"\n ],\n \"55555\": [\n \"reichain\"\n ],\n \"55556\": [\n \"trei\"\n ],\n \"60000\": [\n \"TKM-test0\"\n ],\n \"60001\": [\n \"TKM-test1\"\n ],\n \"60002\": [\n \"TKM-test2\"\n ],\n \"60103\": [\n \"TKM-test103\"\n ],\n \"62320\": [\n \"BKLV\"\n ],\n \"62621\": [\n \"mtv\"\n ],\n \"63000\": [\n \"ecs\"\n ],\n \"63001\": [\n \"ecs-testnet\"\n ],\n \"69420\": [\n \"cndr\"\n ],\n \"70000\": [\n \"TKM0\"\n ],\n \"70001\": [\n \"TKM1\"\n ],\n \"70002\": [\n \"TKM2\"\n ],\n \"70103\": [\n \"TKM103\"\n ],\n \"71393\": [\n \"ckb\"\n ],\n \"71401\": [\n \"gw-testnet-v1\"\n ],\n \"71402\": [\n \"gw-mainnet-v1\"\n ],\n \"73799\": [\n \"vt\"\n ],\n \"73927\": [\n \"mvm\"\n ],\n \"75000\": [\n \"resin\"\n ],\n \"78110\": [\n \"firenze\"\n ],\n \"80001\": [\n \"maticmum\"\n ],\n \"88888\": [\n \"ivar\"\n ],\n \"99998\": [\n \"usctest\"\n ],\n \"99999\": [\n \"usc\"\n ],\n \"100000\": [\n \"qkc-r\"\n ],\n \"100001\": [\n \"qkc-s0\"\n ],\n \"100002\": [\n \"qkc-s1\"\n ],\n \"100003\": [\n \"qkc-s2\"\n ],\n \"100004\": [\n \"qkc-s3\"\n ],\n \"100005\": [\n \"qkc-s4\"\n ],\n \"100006\": [\n \"qkc-s5\"\n ],\n \"100007\": [\n \"qkc-s6\"\n ],\n \"100008\": [\n \"qkc-s7\"\n ],\n \"103090\": [\n \"CRFI\"\n ],\n \"108801\": [\n \"bro\"\n ],\n \"110000\": [\n \"qkc-d-r\"\n ],\n \"110001\": [\n \"qkc-d-s0\"\n ],\n \"110002\": [\n \"qkc-d-s1\"\n ],\n \"110003\": [\n \"qkc-d-s2\"\n ],\n \"110004\": [\n \"qkc-d-s3\"\n ],\n \"110005\": [\n \"qkc-d-s4\"\n ],\n \"110006\": [\n \"qkc-d-s5\"\n ],\n \"110007\": [\n \"qkc-d-s6\"\n ],\n \"110008\": [\n \"qkc-d-s7\"\n ],\n \"131419\": [\n \"ETND\"\n ],\n \"200101\": [\n \"milkTAda\"\n ],\n \"200625\": [\n \"aka\"\n ],\n \"201018\": [\n \"alaya\"\n ],\n \"201030\": [\n \"alayadev\"\n ],\n \"210425\": [\n \"platon\"\n ],\n \"234666\": [\n \"hym\"\n ],\n \"246529\": [\n \"ats\"\n ],\n \"246785\": [\n \"atstau\"\n ],\n \"281121\": [\n \"SoChain\"\n ],\n \"333888\": [\n \"sparta\"\n ],\n \"333999\": [\n \"olympus\"\n ],\n \"421611\": [\n \"arb-rinkeby\"\n ],\n \"421613\": [\n \"arb-goerli\"\n ],\n \"432201\": [\n \"Dexalot\"\n ],\n \"444900\": [\n \"wlkt\"\n ],\n \"474142\": [\n \"oc\"\n ],\n \"512512\": [\n \"cmp\"\n ],\n \"666666\": [\n \"vpioneer\"\n ],\n \"846000\": [\n \"bloqs4good\"\n ],\n \"888888\": [\n \"vision\"\n ],\n \"955305\": [\n \"elv\"\n ],\n \"1313114\": [\n \"etho\"\n ],\n \"1313500\": [\n \"xero\"\n ],\n \"1337702\": [\n \"kintsugi\"\n ],\n \"1337802\": [\n \"kiln\"\n ],\n \"2203181\": [\n \"platondev\"\n ],\n \"2206132\": [\n \"platondev2\"\n ],\n \"7762959\": [\n \"music\"\n ],\n \"11155111\": [\n \"sep\"\n ],\n \"13371337\": [\n \"tpep\"\n ],\n \"18289463\": [\n \"ilt\"\n ],\n \"20180430\": [\n \"spectrum\"\n ],\n \"20181205\": [\n \"qki\"\n ],\n \"28945486\": [\n \"auxi\"\n ],\n \"35855456\": [\n \"JOYS\"\n ],\n \"61717561\": [\n \"aqua\"\n ],\n \"99415706\": [\n \"TOYS\"\n ],\n \"192837465\": [\n \"GTH\"\n ],\n \"245022926\": [\n \"neonevm-devnet\"\n ],\n \"245022934\": [\n \"neonevm-mainnet\"\n ],\n \"245022940\": [\n \"neonevm-testnet\"\n ],\n \"311752642\": [\n \"oneledger\"\n ],\n \"356256156\": [\n \"tGTH\"\n ],\n \"486217935\": [\n \"dGTH\"\n ],\n \"1122334455\": [\n \"ipos\"\n ],\n \"1313161554\": [\n \"aurora\"\n ],\n \"1313161555\": [\n \"aurora-testnet\"\n ],\n \"1313161556\": [\n \"aurora-betanet\"\n ],\n \"1666600000\": [\n \"hmy-s0\"\n ],\n \"1666600001\": [\n \"hmy-s1\"\n ],\n \"1666600002\": [\n \"hmy-s2\"\n ],\n \"1666600003\": [\n \"hmy-s3\"\n ],\n \"1666700000\": [\n \"hmy-b-s0\"\n ],\n \"1666700001\": [\n \"hmy-b-s1\"\n ],\n \"1666700002\": [\n \"hmy-b-s2\"\n ],\n \"1666700003\": [\n \"hmy-b-s3\"\n ],\n \"2021121117\": [\n \"hop\"\n ],\n \"3125659152\": [\n \"pirl\"\n ],\n \"4216137055\": [\n \"frankenstein\"\n ],\n \"11297108099\": [\n \"tpalm\"\n ],\n \"11297108109\": [\n \"palm\"\n ],\n \"197710212030\": [\n \"ntt\"\n ],\n \"197710212031\": [\n \"ntt-haradev\"\n ],\n \"6022140761023\": [\n \"mole\"\n ],\n \"868455272153094\": [\n \"gw-testnet-v1-deprecated\"\n ]\n}","import { cleanBlock } from '../classes/utils/clean-block';\nimport { cleanLog } from '../classes/utils/clean-log';\nimport { cleanTransaction } from '../classes/utils/clean-transaction';\nimport { cleanTransactionReceipt } from '../classes/utils/clean-transaction-receipt';\nimport { buildRPCPostBody, post } from '../classes/utils/fetchers';\nimport { hexToDecimal } from '../classes/utils/hex-to-decimal';\nimport { prepareTransaction } from '../classes/utils/prepare-transaction';\nimport { logger } from '../logger/logger';\nimport type { TinyBig } from '../shared/tiny-big/tiny-big';\nimport { tinyBig } from '../shared/tiny-big/tiny-big';\nimport type { BlockResponse, BlockTag, RPCBlock } from '../types/Block.types';\nimport type { Filter, FilterByBlockHash } from '../types/Filter.types';\nimport type { Network } from '../types/Network.types';\nimport type {\n Log,\n RPCLog,\n RPCTransaction,\n RPCTransactionReceipt,\n TransactionReceipt,\n TransactionRequest,\n TransactionResponse,\n} from '../types/Transaction.types';\nimport chainsInfo from './utils/chains-info';\n\n/**\n * Converts a block tag into the right format when needed.\n *\n * * No equivalent in ethers.js\n * * No equivalent in web3.js\n *\n * @internal\n * @param blockTag the block tag to convert/return as a hex string\n * @returns the specified block tag formatted as a hex string\n * @example\n * ```javascript\n * prepBlockTag(14848183);\n * // '0xe290b7'\n * ```\n * @example\n * ```javascript\n * prepBlockTag('0xe290b7');\n * // '0xe290b7'\n * ```\n */\nfunction prepBlockTag(blockTag: BlockTag): string {\n return typeof blockTag === 'number'\n ? tinyBig(blockTag).toHexString()\n : blockTag;\n}\n\nexport abstract class BaseProvider {\n /**\n * ignore\n */\n abstract selectRpcUrl(): string;\n abstract post(body: Record<string, unknown>): Promise<any>;\n\n /**\n * @ignore\n */\n readonly _rpcUrls: string[] = [];\n /**\n * @ignore\n */\n protected _post = (body: Record<string, unknown>) =>\n post(this.selectRpcUrl(), body);\n\n /**\n * @param rpcUrls The URL(s) to your Eth node(s). Consider POKT or Infura\n * @example\n * `https://free-eth-node.com/api/eth`\n * @example\n * `https://mainnet.infura.io/v3/YOUR-PROJECT-ID`\n */\n constructor(rpcUrls: string[]) {\n this._rpcUrls = rpcUrls;\n }\n\n /**\n * Gets information (name, chainId, and ensAddress when applicable) about the network the provider is connected to.\n *\n * * [Identical](/docs/api#isd) to [`ethers.provider.getNetwork`](https://docs.ethers.io/v5/api/providers/provider/#Provider-getNetwork) in ethers.js\n * * [Similar](/docs/api#isd) to [`web3.eth.getChainId`](https://web3js.readthedocs.io/en/v1.7.3/web3-eth.html#getchainid) in web3.js, returns more than just the `chainId`\n *\n * @returns information about the network this provider is currently connected to\n * @example\n * ```javascript\n * jsonRpcProvider('https://free-eth-node.com/api/eth').getNetwork();\n * // { chainId: 1, name: 'eth', ensAddress: '0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e' }\n * ```\n * @example\n * ```javascript\n * jsonRpcProvider('https://free-eth-node.com/api/MATIC').getNetwork();\n * // { chainId: 137, name: 'MATIC', ensAddress: null }\n * ```\n */\n public async getNetwork(): Promise<Network> {\n const hexChainId = (await this.post(\n buildRPCPostBody('eth_chainId', []),\n )) as string;\n\n const chainId = hexToDecimal(hexChainId);\n const info = (chainsInfo as any)[chainId];\n return {\n chainId: Number(chainId),\n name: info[0] || 'unknown',\n ensAddress: info[1] || null, // only send ensAddress if it exists\n };\n }\n\n /**\n * Gets the number of the most recently mined block on the network the provider is connected to.\n *\n * * [Identical](/docs/api#isd) to [`ethers.provider.getBlockNumber`](https://docs.ethers.io/v5/api/providers/provider/#Provider-getBlockNumber) in ethers.js\n * * [Identical](/docs/api#isd) to [`web3.eth.getBlockNumber`](https://web3js.readthedocs.io/en/v1.7.3/web3-eth.html#getblocknumber) in web3.js\n *\n * @returns the number of the most recently mined block\n * @example\n * ```javascript\n * await provider.getBlockNumber();\n * // 1053312\n * ```\n */\n public async getBlockNumber(): Promise<number> {\n const currentBlockNumber = (await this.post(\n buildRPCPostBody('eth_blockNumber', []),\n )) as string;\n return Number(hexToDecimal(currentBlockNumber));\n }\n\n /**\n * Gets information about a specified transaction, even if it hasn't been mined yet.\n *\n * * [Similar](/docs/api#isd) to [`ethers.provider.getTransaction`](https://docs.ethers.io/v5/api/providers/provider/#Provider-getTransaction) in ethers.js, does not have `wait` method that waits until the transaction has been mined\n * * [Similar](/docs/api#isd) to [`web3.eth.getTransaction`](https://web3js.readthedocs.io/en/v1.7.3/web3-eth.html#gettransaction) in web3.js, some information returned using different types\n *\n * @param transactionHash the hash of the transaction to get information about\n * @returns information about the specified transaction\n * @example\n * ```javascript\n * await provider.getTransaction('0x9014ae6ef92464338355a79e5150e542ff9a83e2323318b21f40d6a3e65b4789');\n * // {\n * // accessList: [],\n * // blockHash: \"0x876810a013dbcd140f6fd6048c1dc33abbb901f1f96b394c2fa63aef3cb40b5d\",\n * // blockNumber: 14578286,\n * // chainId: 1,\n * // from: \"0xdfD9dE5f6FA60BD70636c0900752E93a6144AEd4\",\n * // gas: { TinyBig: 112163 },\n * // gasPrice: { TinyBig: 48592426858 },\n * // hash: \"0x9014ae6ef92464338355a79e5150e542ff9a83e2323318b21f40d6a3e65b4789\",\n * // input: \"0x83259f17000000000000000000000000000000000000000000...\",\n * // maxFeePerGas: { TinyBig: 67681261618 },\n * // maxPriorityFeePerGas: { TinyBig: 1500000000 },\n * // nonce: { TinyBig: 129 },\n * // r: \"0x59a7c15b12c18cd68d6c440963d959bff3e73831ffc938e75ecad07f7ee43fbc\",\n * // s: \"0x1ebaf05f0d9273b16c2a7748b150a79d22533a8cd74552611cbe620fee3dcf1c\",\n * // to: \"0x39B72d136ba3e4ceF35F48CD09587ffaB754DD8B\",\n * // transactionIndex: 29,\n * // type: 2,\n * // v: 0,\n * // value: { TinyBig: 0 },\n * // confirmations: 298140,\n * // }\n * ```\n */\n public async getTransaction(\n transactionHash: string,\n ): Promise<TransactionResponse> {\n const [rpcTransaction, blockNumber] = await Promise.all([\n this.post(\n buildRPCPostBody('eth_getTransactionByHash', [transactionHash]),\n ) as Promise<RPCTransaction>,\n this.getBlock('latest'),\n ]);\n const cleanedTransaction = cleanTransaction(rpcTransaction);\n // https://ethereum.stackexchange.com/questions/2881/how-to-get-the-transaction-confirmations-using-the-json-rpc\n cleanedTransaction.confirmations =\n blockNumber.number - cleanedTransaction.blockNumber + 1;\n return cleanedTransaction;\n }\n\n /**\n * Gives information about a transaction that has already been mined. Includes additional information beyond what's provided by [`getTransaction`](/docs/api/modules#gettransaction).\n *\n * * [Identical](/docs/api#isd) to [`ethers.provider.getTransactionReceipt`](https://docs.ethers.io/v5/api/providers/provider/#Provider-getTransactionReceipt) in ethers.js\n * * [Similar](/docs/api#isd) to [`web3.eth.getTransactionReceipt`](https://web3js.readthedocs.io/en/v1.7.3/web3-eth.html#gettransactionreceipt) in web3.js, some information returned using different types\n *\n * @param transactionHash the hash of the transaction to get information about\n * @returns information about the specified transaction that has already been mined\n * @example\n * ```javascript\n * await provider.getTransactionReceipt('0x9014ae6ef92464338355a79e5150e542ff9a83e2323318b21f40d6a3e65b4789');\n * // {\n * // blockHash: \"0x876810a013dbcd140f6fd6048c1dc33abbb901f1f96b394c2fa63aef3cb40b5d\",\n * // blockNumber: 14578286,\n * // contractAddress: null,\n * // cumulativeGasUsed: { TinyBig: 3067973 },\n * // effectiveGasPrice: { TinyBig: 48592426858 },\n * // from: \"0xdfD9dE5f6FA60BD70636c0900752E93a6144AEd4\",\n * // gasUsed: { TinyBig: 112163 },\n * // logs: [\n * // {\n * // address: \"0x0eDF9bc41Bbc1354c70e2107F80C42caE7FBBcA8\",\n * // blockHash: \"0x876810a013dbcd140f6fd6048c1dc33abbb901f1f96b394c2fa63aef3cb40b5d\",\n * // blockNumber: 14578286,\n * // data: \"0x0000000000000000000000000000000000000000000003a12ec797b5484968c1\",\n * // logIndex: 42,\n * // topics: [\n * // \"0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef\",\n * // \"0x00000000000000000000000039b72d136ba3e4cef35f48cd09587ffab754dd8b\",\n * // \"0x000000000000000000000000dfd9de5f6fa60bd70636c0900752e93a6144aed4\",\n * // ],\n * // transactionHash: \"0x9014ae6ef92464338355a79e5150e542ff9a83e2323318b21f40d6a3e65b4789\",\n * // transactionIndex: 29,\n * // },\n * // {\n * // address: \"0x39B72d136ba3e4ceF35F48CD09587ffaB754DD8B\",\n * // blockHash: \"0x876810a013dbcd140f6fd6048c1dc33abbb901f1f96b394c2fa63aef3cb40b5d\",\n * // blockNumber: 14578286,\n * // data: \"0x0000000000000000000000000000000000000000000003a12ec797b5484968c1\",\n * // logIndex: 43,\n * // topics: [\n * // \"0x34fcbac0073d7c3d388e51312faf357774904998eeb8fca628b9e6f65ee1cbf7\",\n * // \"0x000000000000000000000000dfd9de5f6fa60bd70636c0900752e93a6144aed4\",\n * // \"0x0000000000000000000000000000000000000000000000000000000000000003\",\n * // ],\n * // transactionHash: \"0x9014ae6ef92464338355a79e5150e542ff9a83e2323318b21f40d6a3e65b4789\",\n * // transactionIndex: 29,\n * // },\n * // ],\n * // logsBloom: \"0x00000000000000000000000000000...\",\n * // status: 1,\n * // to: \"0x39B72d136ba3e4ceF35F48CD09587ffaB754DD8B\",\n * // transactionHash: \"0x9014ae6ef92464338355a79e5150e542ff9a83e2323318b21f40d6a3e65b4789\",\n * // transactionIndex: 29,\n * // type: 2,\n * // byzantium: true,\n * // confirmations: 298171,\n * // }\n * ```\n */\n public async getTransactionReceipt(\n transactionHash: string,\n ): Promise<TransactionReceipt> {\n const [rpcTransaction, blockNumber] = await Promise.all([\n this.post(\n buildRPCPostBody('eth_getTransactionReceipt', [transactionHash]),\n ) as Promise<RPCTransactionReceipt>,\n this.getBlock('latest'),\n ]);\n const cleanedTransactionReceipt = cleanTransactionReceipt(rpcTransaction);\n cleanedTransactionReceipt.confirmations =\n blockNumber.number - cleanedTransactionReceipt.blockNumber + 1;\n return cleanedTransactionReceipt;\n }\n\n /**\n * Returns the number of sent transactions by an address, from genesis (or as far back as a provider looks) up to specified block.\n *\n * * [Identical](/docs/api#isd) to [`ethers.provider.getTransactionCount`](https://docs.ethers.io/v5/api/providers/provider/#Provider-getTransactionCount) in ethers.js\n * * [Identical](/docs/api#isd) to [`web3.eth.getTransactionCount`](https://web3js.readthedocs.io/en/v1.7.3/web3-eth.html#gettransactioncount) in web3.js\n *\n * @param address the address to count number of sent transactions\n * @param blockTag the block to count transactions up to, inclusive\n * @returns the number of transactions sent by the specified address\n * @example\n * ```javascript\n * await provider.getTransactionCount('0x71660c4005ba85c37ccec55d0c4493e66fe775d3');\n * // 1060000\n * ```\n * @example\n * ```javascript\n * await provider.getTransactionCount('0x71660c4005ba85c37ccec55d0c4493e66fe775d3', 'latest');\n * // 1060000\n * ```\n * @example\n * ```javascript\n * await provider.getTransactionCount('0x71660c4005ba85c37ccec55d0c4493e66fe775d3', 14649390);\n * // 1053312\n * ```\n */\n public async getTransactionCount(\n address: string,\n blockTag: BlockTag = 'latest',\n ): Promise<number> {\n blockTag = prepBlockTag(blockTag);\n const transactionCount = (await this.post(\n buildRPCPostBody('eth_getTransactionCount', [address, blockTag]),\n )) as string;\n return Number(hexToDecimal(transactionCount));\n }\n\n /**\n * Gets information about a certain block, optionally with full transaction objects.\n *\n * * [Similar](/docs/api#isd) to [`ethers.provider.getBlock`](https://docs.ethers.io/v5/api/providers/provider/#Provider-getLogs) in ethers.js, includes some additional information. Can also return block with full transaction objects, similar to [`ethers.providers.getBlockWithTransactions`]\n * * [Identical](/docs/api#isd) to [`web3.eth.getBlock`](https://web3js.readthedocs.io/en/v1.7.3/web3-eth.html#getpastlogs) in web3.js\n *\n * @param timeFrame The number, hash, or text-based description ('latest', 'earliest', or 'pending') of the block to collect information on.\n * @param returnTransactionObjects Whether to also return data about the transactions on the block.\n * @returns A BlockResponse object with information about the specified block\n * @example\n * ```javascript\n * await provider.getBlock(14879862);\n * // {\n * // baseFeePerGas: { TinyBig: 39095728776 },\n * // difficulty: { TinyBig: 14321294455359973 },\n * // extraData: \"0x486976656f6e2073672d6865617679\",\n * // gasLimit: { TinyBig: 29970620 },\n * // gasUsed: { TinyBig: 20951384 },\n * // hash: \"0x563b458ec3c4f87393b53f70bdddc0058497109b784d8cacd9247ddf267049ab\",\n * // logsBloom:\n * // \"0x9f38794fe80b521794df6efad8b0d2e9582f9ec3959a3f9384bda0fa371cfa5fac5af9d515c6bdf1ec325f5b5f7ebdd6a3a9fae17b38a86d4dc4b0971afc68d8086640550f4c156e6f923f4a1bb94fb0bed6cdcc474c5c64bfeff7a4a906f72b9a7b94004ee58efc53d63ac66961acd3a431b2d896cc9fd75f6072960bced45f770587caf130f57504decfcb63c6ca8fbc5bdbd749edd5a99a7375d2b81872289adb775fb3c928259f4be39c6d3f4d5b6217822979bb88c1f1fb62429b1b6d41cf4e3f77f9e1db3f5723108f1e5b1255dd734ad8cdb11e7ea22487c788e67c83777b6f395e504ca59c64f52245ee6de3804cf809e5caa4f0ea6a9aa9eb6ed801\",\n * // miner: \"0x1aD91ee08f21bE3dE0BA2ba6918E714dA6B45836\",\n * // mixHash: \"0x73cc9419bfb89c9d41c3a8c34ce56b5ebe468bdcf870258d2e77262275d580ec\",\n * // nonce: \"0x976f3f5d596ffb08\",\n * // number: 14879862,\n * // parentHash: \"0x95986ae14a71face8d9a6a379edd875b2e8bc73e4de0d9d460e7752bddb0f579\",\n * // receiptsRoot: \"0x8e6ba2fd9bee602b653dae6e3132f16538c2c5df24f1df8c000392053f73defa\",\n * // sha3Uncles: \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n * // size: { TinyBig: 134483 },\n * // stateRoot: \"0xbf2bb67bd1c741f3d00904b8451d7c2cf4e3a2726f5a5884792ede2074747b85\",\n * // timestamp: { TinyBig: 1654016186 },\n * // totalDifficulty: { TinyBig: 50478104614257705213748 },\n * // transactions: [\n * // \"0xb3326a9149809603a2c28545e50e4f7d16e194bf5ee9764e0544603854c4a8d2\",\n * // \"0x8b42095f8d335404a4896b2817b8e5e3d86a5a87cb434a8eec295d5280a7f48e\",\n * // \"0x882f78fcb73f0f7ad0700bb0424a8b4beb366aaa93b88a3562c49a8d0ce4dcff\",\n * // ...\n * // ],\n * // transactionsRoot: \"0x5934902f3dcc263ec34f24318179bf6301f53f4834685792066026f3a4849d72\",\n * // uncles: [],\n * // }\n * ```\n */\n public async getBlock(\n timeFrame: BlockTag = 'latest',\n returnTransactionObjects = false,\n ): Promise<BlockResponse> {\n let type: 'Number' | 'Hash' = 'Number';\n if (typeof timeFrame === 'string' && timeFrame.length === 66) {\n // use endpoint that accepts string\n type = 'Hash';\n } else {\n timeFrame = prepBlockTag(timeFrame);\n }\n\n const rpcBlock = (await this.post(\n buildRPCPostBody(`eth_getBlockBy${type}`, [\n timeFrame,\n returnTransactionObjects,\n ]),\n )) as RPCBlock;\n\n return cleanBlock(rpcBlock, returnTransactionObjects);\n }\n\n /**\n * Gives an estimate of the current gas price in wei.\n *\n * * [Similar](/docs/api#isd) to [`ethers.provider.getGasPrice`](https://docs.ethers.io/v5/api/providers/provider/#Provider-getGasPrice) in ethers.js, does not have a parameter specifying what unit you'd like to return. See also [`weiToEther`](/docs/api/modules#weitoether) and [`etherToGwei`](/docs/api/modules#ethertogwei)\n * * [Identical](/docs/api#isd) to [`web3.eth.getGasPrice`](https://web3js.readthedocs.io/en/v1.7.3/web3-eth.html#getgasprice) in web3.js, returns a number (TinyBig) instead of a string\n *\n * @returns an estimate of the current gas price in wei\n * @example\n * ```javascript\n * await provider.getGasPrice();\n * // 52493941856\n * ```\n */\n public async getGasPrice(): Promise<TinyBig> {\n const hexGasPrice = (await this.post(\n buildRPCPostBody('eth_gasPrice', []),\n )) as string;\n return tinyBig(hexToDecimal(hexGasPrice));\n }\n\n /**\n * Returns the balance of the account in wei.\n *\n * * [Identical](/docs/api#isd) to [`ethers.provider.getBalance`](https://docs.ethers.io/v5/api/providers/provider/#Provider-getBalance) in ethers.js\n * * [Identical](/docs/api#isd) to [`web3.eth.getBalance`](https://web3js.readthedocs.io/en/v1.7.3/web3-eth.html#getbalance) in web3.js, returns a number (TinyBig) instead of a string\n *\n * @param address the address to check the balance of\n * @param blockTag the block to check the specified address' balance on\n * @returns the balance of the network's native token for the specified address on the specified block\n * @example\n * ```javascript\n * await provider.getBalance('0x7cB57B5A97eAbe94205C07890BE4c1aD31E486A8');\n * // 28798127851528138\n * ```\n */\n public async getBalance(\n address: string,\n blockTag: BlockTag = 'latest',\n ): Promise<TinyBig> {\n blockTag = prepBlockTag(blockTag);\n const hexBalance = (await this.post(\n buildRPCPostBody('eth_getBalance', [address, blockTag]),\n )) as string;\n return tinyBig(hexToDecimal(hexBalance));\n }\n\n /**\n * Gets the code of a contract on a specified block.\n *\n * * [Identical](/docs/api#isd) to [`ethers.provider.getCode`](https://docs.ethers.io/v5/api/providers/provider/#Provider-getCode) in ethers.js\n * * [Identical](/docs/api#isd) to [`web3.eth.getCode`](https://web3js.readthedocs.io/en/v1.7.3/web3-eth.html#getcode) in web3.js\n *\n * @param address the contract address to get the contract code from\n * @param blockTag the block height to search for the contract code from. Contract code can change, so this allows for checking a specific block\n * @returns the contract creation code for the specified address at the specified block height\n * @example\n * ```javascript\n * await jsonRpcProvider().getCode('0xaC6095720221C79C6E7C638d260A2eFBC5D8d880', 'latest');\n * // '0x608060405234801561001057600080fd5b506004361061...'\n * ```\n */\n public async getCode(\n address: string,\n blockTag: BlockTag = 'latest',\n ): Promise<string> {\n blockTag = prepBlockTag(blockTag);\n const contractCode = (await this.post(\n buildRPCPostBody('eth_getCode', [address, blockTag]),\n )) as string;\n return contractCode;\n }\n\n /**\n * Returns an estimate of the amount of gas that would be required to submit transaction to the network.\n * An estimate may not be accurate since there could be another transaction on the network that was not accounted for.\n *\n * * [Identical](/docs/api#isd) to [`ethers.provider.estimateGas`](https://docs.ethers.io/v5/api/providers/provider/#Provider-estimateGas) in ethers.js\n * * [Identical](/docs/api#isd) to [`web3.eth.estimateGas`](https://web3js.readthedocs.io/en/v1.7.3/web3-eth.html#estimateGas) in web3.js\n *\n * @param transaction the transaction to check the estimated gas cost for\n * @returns the estimated amount of gas charged for submitting the specified transaction to the blockchain\n * @example\n * ```javascript\n * await provider.estimateGas({\n * // Wrapped ETH address\n * to: \"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2\",\n * data: \"0xd0e30db0\",\n * value: etherToWei('1.0').toHexString(),\n * });\n * // { TinyBig: \"27938\" }\n * ```\n */\n public async estimateGas(transaction: TransactionRequest): Promise<TinyBig> {\n const rpcTransaction = prepareTransaction(transaction);\n const gasUsed = (await this.post(\n buildRPCPostBody('eth_estimateGas', [rpcTransaction]),\n )) as string;\n return tinyBig(hexToDecimal(gasUsed));\n }\n\n /**\n * Returns transaction receipt event logs that match a specified filter.\n * May return `[]` if parameters are too broad, even if logs exist.\n *\n * * [Identical](/docs/api#isd) to [`ethers.provider.getLogs`](https://docs.ethers.io/v5/api/providers/provider/#Provider-getLogs) in ethers.js\n * * [Identical](/docs/api#isd) to [`web3.eth.getPastLogs`](https://web3js.readthedocs.io/en/v1.7.3/web3-eth.html#getpastlogs) in web3.js\n *\n * @param filter parameters to filter the logs by\n * @returns an array of logs matching the specified filter\n * @example\n * ```javascript\n * provider.getLogs({\n * address: \"0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2\",\n * topics: [\n * \"0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef\",\n * \"0x00000000000000000000000021b8065d10f73ee2e260e5b47d3344d3ced7596e\",\n * ],\n * fromBlock: 14825027,\n * toBlock: 14825039,\n * });\n *\n * [\n * {\n * address: '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2',\n * blockHash: '0x8e0dfac2f704851960f866c8708b3bef2f66c0fee0329cf25ff0261b264ca6bc',\n * blockNumber: 14825029,\n * data: '0x000000000000000000000000000000000000000000000000005f862ee352a38a',\n * logIndex: 384,\n * removed: false,\n * topics: [\n * '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef',\n * '0x00000000000000000000000021b8065d10f73ee2e260e5b47d3344d3ced7596e',\n * '0x00000000000000000000000068b3465833fb72a70ecdf485e0e4c7bd8665fc45'\n * ],\n * transactionHash: '0xbd49031be16f8fd1775f4e0fe79b408ffd8ae9c65b2827ee47e3238e3f51f4c0',\n * transactionIndex: 226\n * }\n * ]\n * ```\n */\n public async getLogs(\n filter: Filter | FilterByBlockHash,\n ): Promise<Array<Log>> {\n const filterByRange = filter as Filter;\n if (filterByRange.fromBlock)\n filterByRange.fromBlock = prepBlockTag(filterByRange.fromBlock);\n if (filterByRange.toBlock)\n filterByRange.toBlock = prepBlockTag(filterByRange.toBlock);\n\n const rpcLogs = (await this.post(\n buildRPCPostBody('eth_getLogs', [filter]),\n )) as Array<RPCLog>;\n const logs = rpcLogs.map((log) => cleanLog(log, false));\n return logs;\n }\n\n /**\n * Returns the result of adding a transaction to the blockchain without actually adding that transaction to the blockchain.\n * Does not require any ether as gas.\n *\n * * [Identical](/docs/api#isd) to [`ethers.provider.call`](https://docs.ethers.io/v5/api/providers/provider/#Provider-call) in ethers.js\n * * [Identical](/docs/api#isd) to [`web3.eth.call`](https://web3js.readthedocs.io/en/v1.7.3/web3-eth.html#call) in web3.js\n *\n * @param transaction the transaction object to, in theory, execute. Doesn't actually get added to the blockchain.\n * @param blockTag the block to execute this transaction on\n * @returns the result of executing the transaction on the specified block\n * @example\n * ```javascript\n * await provider.call({ to: \"0x6b175474e89094c44da98b954eedeac495271d0f\", data: \"0x70a082310000000000000000000000006E0d01A76C3Cf4288372a29124A26D4353EE51BE\" });\n * // '0x0000000000000000000000000000000000000000000000000858898f93629000'\n * ```\n */\n public async call(\n transaction: TransactionRequest,\n blockTag: BlockTag = 'latest',\n ): Promise<string> {\n if (\n transaction.gasPrice &&\n (transaction.maxPriorityFeePerGas || transaction.maxFeePerGas)\n ) {\n logger.throwError(\n 'Cannot specify both \"gasPrice\" and (\"maxPriorityFeePerGas\" or \"maxFeePerGas\")',\n {\n gasPrice: transaction.gasPrice,\n maxFeePerGas: transaction.maxFeePerGas,\n maxPriorityFeePerGas: transaction.maxPriorityFeePerGas,\n },\n );\n }\n if (transaction.maxFeePerGas && transaction.maxPriorityFeePerGas) {\n logger.throwError(\n 'Cannot specify both \"maxFeePerGas\" and \"maxPriorityFeePerGas\"',\n {\n maxFeePerGas: transaction.maxFeePerGas,\n maxPriorityFeePerGas: transaction.maxPriorityFeePerGas,\n },\n );\n }\n blockTag = prepBlockTag(blockTag);\n const rpcTransaction = prepareTransaction(transaction);\n const transactionRes = (await this.post(\n buildRPCPostBody('eth_call', [rpcTransaction, blockTag]),\n )) as string;\n return transactionRes;\n }\n}\n","import { tinyBig, toChecksumAddress } from '../..';\nimport type {\n Log,\n RPCLog,\n RPCTransactionReceipt,\n TransactionReceipt,\n} from '../../types/Transaction.types';\nimport { cleanLog } from './clean-log';\nimport { cleanTransaction } from './clean-transaction';\nimport { hexToDecimal } from './hex-to-decimal';\n\n/**\n * Converts RPC transaction receipt response to more JS-friendly format\n *\n * @param transactionReceipt the transaction receipt to clean\n * @returns a cleaned transaction receipt\n * @example\n * ```javascript\n * const RPCTransactionReceipt = { blockHash: '0x03ddc6a835462f750fcaf5ab511d8c48121b0813e3e80de84d7adc3ef192b7bf', blockNumber: '0xe28f62', contractAddress: null, cumulativeGasUsed: '0x37a2b9', effectiveGasPrice: '0x62df1c62c', from: '0x642824fab1d0141073ed74326332950bec4701e3', gasUsed: '0x1a325', logs: [ { address: '0x84F80EA01e26B7C11bdd241970982C7EEAb6DdcC', blockHash: '0x03ddc6a835462f750fcaf5ab511d8c48121b0813e3e80de84d7adc3ef192b7bf', blockNumber: 14847842, data: '0x', logIndex: 84, topics: [ '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef', '0x0000000000000000000000000000000000000000000000000000000000000000', '0x000000000000000000000000642824fab1d0141073ed74326332950bec4701e3', '0x000000000000000000000000000000000000000000000000000000000000074d' ], transactionHash: '0xd0befcb9d10a89aba2d488534811bf5c62a889e2499d23cdd83c2a2200cde873', transactionIndex: 41 }, { address: '0x84F80EA01e26B7C11bdd241970982C7EEAb6DdcC', blockHash: '0x03ddc6a835462f750fcaf5ab511d8c48121b0813e3e80de84d7adc3ef192b7bf', blockNumber: 14847842, data: '0x', logIndex: 85, topics: [ '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef', '0x0000000000000000000000000000000000000000000000000000000000000000', '0x000000000000000000000000642824fab1d0141073ed74326332950bec4701e3', '0x000000000000000000000000000000000000000000000000000000000000074e' ], transactionHash: '0xd0befcb9d10a89aba2d488534811bf5c62a889e2499d23cdd83c2a2200cde873', transactionIndex: 41 }, { address: '0x84F80EA01e26B7C11bdd241970982C7EEAb6DdcC', blockHash: '0x03ddc6a835462f750fcaf5ab511d8c48121b0813e3e80de84d7adc3ef192b7bf', blockNumber: 14847842, data: '0x', logIndex: 86, topics: [ '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef', '0x0000000000000000000000000000000000000000000000000000000000000000', '0x000000000000000000000000642824fab1d0141073ed74326332950bec4701e3', '0x000000000000000000000000000000000000000000000000000000000000074f' ], transactionHash: '0xd0befcb9d10a89aba2d488534811bf5c62a889e2499d23cdd83c2a2200cde873', transactionIndex: 41 }, { address: '0x84F80EA01e26B7C11bdd241970982C7EEAb6DdcC', blockHash: '0x03ddc6a835462f750fcaf5ab511d8c48121b0813e3e80de84d7adc3ef192b7bf', blockNumber: 14847842, data: '0x', logIndex: 87, topics: [ '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef', '0x0000000000000000000000000000000000000000000000000000000000000000', '0x000000000000000000000000642824fab1d0141073ed74326332950bec4701e3', '0x0000000000000000000000000000000000000000000000000000000000000750' ], transactionHash: '0xd0befcb9d10a89aba2d488534811bf5c62a889e2499d23cdd83c2a2200cde873', transactionIndex: 41 }, { address: '0x84F80EA01e26B7C11bdd241970982C7EEAb6DdcC', blockHash: '0x03ddc6a835462f750fcaf5ab511d8c48121b0813e3e80de84d7adc3ef192b7bf', blockNumber: 14847842, data: '0x', logIndex: 88, topics: [ '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef', '0x0000000000000000000000000000000000000000000000000000000000000000', '0x000000000000000000000000642824fab1d0141073ed74326332950bec4701e3', '0x0000000000000000000000000000000000000000000000000000000000000751' ], transactionHash: '0xd0befcb9d10a89aba2d488534811bf5c62a889e2499d23cdd83c2a2200cde873', transactionIndex: 41 }, { address: '0x84F80EA01e26B7C11bdd241970982C7EEAb6DdcC', blockHash: '0x03ddc6a835462f750fcaf5ab511d8c48121b0813e3e80de84d7adc3ef192b7bf', blockNumber: 14847842, data: '0x', logIndex: 89, topics: [ '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef', '0x0000000000000000000000000000000000000000000000000000000000000000', '0x000000000000000000000000642824fab1d0141073ed74326332950bec4701e3', '0x0000000000000000000000000000000000000000000000000000000000000752' ], transactionHash: '0xd0befcb9d10a89aba2d488534811bf5c62a889e2499d23cdd83c2a2200cde873', transactionIndex: 41 }, { address: '0x84F80EA01e26B7C11bdd241970982C7EEAb6DdcC', blockHash: '0x03ddc6a835462f750fcaf5ab511d8c48121b0813e3e80de84d7adc3ef192b7bf', blockNumber: 14847842, data: '0x', logIndex: 90, topics: [ '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef', '0x0000000000000000000000000000000000000000000000000000000000000000', '0x000000000000000000000000642824fab1d0141073ed74326332950bec4701e3', '0x0000000000000000000000000000000000000000000000000000000000000753' ], transactionHash: '0xd0befcb9d10a89aba2d488534811bf5c62a889e2499d23cdd83c2a2200cde873', transactionIndex: 41 }, { address: '0x84F80EA01e26B7C11bdd241970982C7EEAb6DdcC', blockHash: '0x03ddc6a835462f750fcaf5ab511d8c48121b0813e3e80de84d7adc3ef192b7bf', blockNumber: 14847842, data: '0x', logIndex: 91, topics: [ '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef', '0x0000000000000000000000000000000000000000000000000000000000000000', '0x000000000000000000000000642824fab1d0141073ed74326332950bec4701e3', '0x0000000000000000000000000000000000000000000000000000000000000754' ], transactionHash: '0xd0befcb9d10a89aba2d488534811bf5c62a889e2499d23cdd83c2a2200cde873', transactionIndex: 41 }, { address: '0x84F80EA01e26B7C11bdd241970982C7EEAb6DdcC', blockHash: '0x03ddc6a835462f750fcaf5ab511d8c48121b0813e3e80de84d7adc3ef192b7bf', blockNumber: 14847842, data: '0x', logIndex: 92, topics: [ '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef', '0x0000000000000000000000000000000000000000000000000000000000000000', '0x000000000000000000000000642824fab1d0141073ed74326332950bec4701e3', '0x0000000000000000000000000000000000000000000000000000000000000755' ], transactionHash: '0xd0befcb9d10a89aba2d488534811bf5c62a889e2499d23cdd83c2a2200cde873', transactionIndex: 41 }, { address: '0x84F80EA01e26B7C11bdd241970982C7EEAb6DdcC', blockHash: '0x03ddc6a835462f750fcaf5ab511d8c48121b0813e3e80de84d7adc3ef192b7bf', blockNumber: 14847842, data: '0x', logIndex: 93, topics: [ '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef', '0x0000000000000000000000000000000000000000000000000000000000000000', '0x000000000000000000000000642824fab1d0141073ed74326332950bec4701e3', '0x0000000000000000000000000000000000000000000000000000000000000756' ], transactionHash: '0xd0befcb9d10a89aba2d488534811bf5c62a889e2499d23cdd83c2a2200cde873', transactionIndex: 41 } ], logsBloom: '0x20000080004000000000000400000000000001000000000400000000000000000000000000000000000000000008000000000000000000000000000000004000000000000008000000000008000000010080000014000004000000000000000000100000020800000000000000001800000080000000002000000010000000000000000000000200000200000000002000000000000400000000000000000000000000000000000000000040000000000000000100000000000000000000040002100002000000000000080000000000000100000002000000040000001220000000000000000000000000000000000000000000000000000000000000004000', status: '0x1', to: '0x84f80ea01e26b7c11bdd241970982c7eeab6ddcc', transactionHash: '0xd0befcb9d10a89aba2d488534811bf5c62a889e2499d23cdd83c2a2200cde873', transactionIndex: '0x29', type: '0x2' }\n * cleanTransactionReceipt(RPCTransactionReceipt);\n * // { blockHash: '0x03ddc6a835462f750fcaf5ab511d8c48121b0813e3e80de84d7adc3ef192b7bf', blockNumber: 14847842, contractAddress: null, cumulativeGasUsed: Big { s: 1, e: 6, c: [ 3, 6, 4, 6, 1, 3, 7 ], constructor: { [λ: Big] DP: 20, RM: 1, NE: -7, PE: 21, strict: false, roundDown: 0, roundHalfUp: 1, roundHalfEven: 2, roundUp: 3, Big: [Circular], default: [Circular] }, padAndChop: [λ] }, effectiveGasPrice: Big { s: 1, e: 10, c: [ 2, 6, 5, 4, 0, 6, 2, 3, 4, 0, 4 ], constructor: { [λ: Big] DP: 20, RM: 1, NE: -7, PE: 21, strict: false, roundDown: 0, roundHalfUp: 1, roundHalfEven: 2, roundUp: 3, Big: [Circular], default: [Circular] }, padAndChop: [λ] }, from: '0x642824FaB1D0141073ed74326332950bEc4701e3', gasUsed: Big { s: 1, e: 5, c: [ 1, 0, 7, 3, 0, 1 ], constructor: { [λ: Big] DP: 20, RM: 1, NE: -7, PE: 21, strict: false, roundDown: 0, roundHalfUp: 1, roundHalfEven: 2, roundUp: 3, Big: [Circular], default: [Circular] }, padAndChop: [λ] }, logs: [ { address: '0x84F80EA01e26B7C11bdd241970982C7EEAb6DdcC', blockHash: '0x03ddc6a835462f750fcaf5ab511d8c48121b0813e3e80de84d7adc3ef192b7bf', blockNumber: 14847842, data: '0x', logIndex: 84, topics: [ '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef', '0x0000000000000000000000000000000000000000000000000000000000000000', '0x000000000000000000000000642824fab1d0141073ed74326332950bec4701e3', '0x000000000000000000000000000000000000000000000000000000000000074d' ], transactionHash: '0xd0befcb9d10a89aba2d488534811bf5c62a889e2499d23cdd83c2a2200cde873', transactionIndex: 41 }, { address: '0x84F80EA01e26B7C11bdd241970982C7EEAb6DdcC', blockHash: '0x03ddc6a835462f750fcaf5ab511d8c48121b0813e3e80de84d7adc3ef192b7bf', blockNumber: 14847842, data: '0x', logIndex: 85, topics: [ '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef', '0x0000000000000000000000000000000000000000000000000000000000000000', '0x000000000000000000000000642824fab1d0141073ed74326332950bec4701e3', '0x000000000000000000000000000000000000000000000000000000000000074e' ], transactionHash: '0xd0befcb9d10a89aba2d488534811bf5c62a889e2499d23cdd83c2a2200cde873', transactionIndex: 41 }, { address: '0x84F80EA01e26B7C11bdd241970982C7EEAb6DdcC', blockHash: '0x03ddc6a835462f750fcaf5ab511d8c48121b0813e3e80de84d7adc3ef192b7bf', blockNumber: 14847842, data: '0x', logIndex: 86, topics: [ '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef', '0x0000000000000000000000000000000000000000000000000000000000000000', '0x000000000000000000000000642824fab1d0141073ed74326332950bec4701e3', '0x000000000000000000000000000000000000000000000000000000000000074f' ], transactionHash: '0xd0befcb9d10a89aba2d488534811bf5c62a889e2499d23cdd83c2a2200cde873', transactionIndex: 41 }, { address: '0x84F80EA01e26B7C11bdd241970982C7EEAb6DdcC', blockHash: '0x03ddc6a835462f750fcaf5ab511d8c48121b0813e3e80de84d7adc3ef192b7bf', blockNumber: 14847842, data: '0x', logIndex: 87, topics: [ '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef', '0x0000000000000000000000000000000000000000000000000000000000000000', '0x000000000000000000000000642824fab1d0141073ed74326332950bec4701e3', '0x0000000000000000000000000000000000000000000000000000000000000750' ], transactionHash: '0xd0befcb9d10a89aba2d488534811bf5c62a889e2499d23cdd83c2a2200cde873', transactionIndex: 41 }, { address: '0x84F80EA01e26B7C11bdd241970982C7EEAb6DdcC', blockHash: '0x03ddc6a835462f750fcaf5ab511d8c48121b0813e3e80de84d7adc3ef192b7bf', blockNumber: 14847842, data: '0x', logIndex: 88, topics: [ '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef', '0x0000000000000000000000000000000000000000000000000000000000000000', '0x000000000000000000000000642824fab1d0141073ed74326332950bec4701e3', '0x0000000000000000000000000000000000000000000000000000000000000751' ], transactionHash: '0xd0befcb9d10a89aba2d488534811bf5c62a889e2499d23cdd83c2a2200cde873', transactionIndex: 41 }, { address: '0x84F80EA01e26B7C11bdd241970982C7EEAb6DdcC', blockHash: '0x03ddc6a835462f750fcaf5ab511d8c48121b0813e3e80de84d7adc3ef192b7bf', blockNumber: 14847842, data: '0x', logIndex: 89, topics: [ '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef', '0x0000000000000000000000000000000000000000000000000000000000000000', '0x000000000000000000000000642824fab1d0141073ed74326332950bec4701e3', '0x0000000000000000000000000000000000000000000000000000000000000752' ], transactionHash: '0xd0befcb9d10a89aba2d488534811bf5c62a889e2499d23cdd83c2a2200cde873', transactionIndex: 41 }, { address: '0x84F80EA01e26B7C11bdd241970982C7EEAb6DdcC', blockHash: '0x03ddc6a835462f750fcaf5ab511d8c48121b0813e3e80de84d7adc3ef192b7bf', blockNumber: 14847842, data: '0x', logIndex: 90, topics: [ '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef', '0x0000000000000000000000000000000000000000000000000000000000000000', '0x000000000000000000000000642824fab1d0141073ed74326332950bec4701e3', '0x0000000000000000000000000000000000000000000000000000000000000753' ], transactionHash: '0xd0befcb9d10a89aba2d488534811bf5c62a889e2499d23cdd83c2a2200cde873', transactionIndex: 41 }, { address: '0x84F80EA01e26B7C11bdd241970982C7EEAb6DdcC', blockHash: '0x03ddc6a835462f750fcaf5ab511d8c48121b0813e3e80de84d7adc3ef192b7bf', blockNumber: 14847842, data: '0x', logIndex: 91, topics: [ '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef', '0x0000000000000000000000000000000000000000000000000000000000000000', '0x000000000000000000000000642824fab1d0141073ed74326332950bec4701e3', '0x0000000000000000000000000000000000000000000000000000000000000754' ], transactionHash: '0xd0befcb9d10a89aba2d488534811bf5c62a889e2499d23cdd83c2a2200cde873', transactionIndex: 41 }, { address: '0x84F80EA01e26B7C11bdd241970982C7EEAb6DdcC', blockHash: '0x03ddc6a835462f750fcaf5ab511d8c48121b0813e3e80de84d7adc3ef192b7bf', blockNumber: 14847842, data: '0x', logIndex: 92, topics: [ '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef', '0x0000000000000000000000000000000000000000000000000000000000000000', '0x000000000000000000000000642824fab1d0141073ed74326332950bec4701e3', '0x0000000000000000000000000000000000000000000000000000000000000755' ], transactionHash: '0xd0befcb9d10a89aba2d488534811bf5c62a889e2499d23cdd83c2a2200cde873', transactionIndex: 41 }, { address: '0x84F80EA01e26B7C11bdd241970982C7EEAb6DdcC', blockHash: '0x03ddc6a835462f750fcaf5ab511d8c48121b0813e3e80de84d7adc3ef192b7bf', blockNumber: 14847842, data: '0x', logIndex: 93, topics: [ '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef', '0x0000000000000000000000000000000000000000000000000000000000000000', '0x000000000000000000000000642824fab1d0141073ed74326332950bec4701e3', '0x0000000000000000000000000000000000000000000000000000000000000756' ], transactionHash: '0xd0befcb9d10a89aba2d488534811bf5c62a889e2499d23cdd83c2a2200cde873', transactionIndex: 41 } ], logsBloom: '0x20000080004000000000000400000000000001000000000400000000000000000000000000000000000000000008000000000000000000000000000000004000000000000008000000000008000000010080000014000004000000000000000000100000020800000000000000001800000080000000002000000010000000000000000000000200000200000000002000000000000400000000000000000000000000000000000000000040000000000000000100000000000000000000040002100002000000000000080000000000000100000002000000040000001220000000000000000000000000000000000000000000000000000000000000004000', status: 1, to: '0x84F80EA01e26B7C11bdd241970982C7EEAb6DdcC', transactionHash: '0xd0befcb9d10a89aba2d488534811bf5c62a889e2499d23cdd83c2a2200cde873', transactionIndex: 41, type: 2, byzantium: true, confirmations: 40 }\n * ```\n */\nexport function cleanTransactionReceipt(\n transactionReceipt: RPCTransactionReceipt,\n): TransactionReceipt {\n const cleanedTransaction = cleanTransaction(transactionReceipt as any);\n const cleanedTransactionReceipt = {\n ...cleanedTransaction,\n } as unknown as TransactionReceipt;\n (\n Object.keys(transactionReceipt) as Array<keyof RPCTransactionReceipt>\n ).forEach((key) => {\n if (!transactionReceipt[key]) return;\n switch (key) {\n case 'status':\n cleanedTransactionReceipt[key] = Number(\n hexToDecimal(transactionReceipt[key]),\n );\n break;\n case 'contractAddress':\n if (transactionReceipt[key]) {\n cleanedTransactionReceipt[key] = toChecksumAddress(\n transactionReceipt[key],\n );\n }\n break;\n case 'cumulativeGasUsed':\n case 'effectiveGasPrice':\n case 'gasUsed':\n cleanedTransactionReceipt[key] = tinyBig(\n hexToDecimal(transactionReceipt[key]),\n );\n break;\n case 'logs':\n transactionReceipt[key].forEach((log: RPCLog, index: number) => {\n cleanedTransactionReceipt[key][index] = cleanLog(log, true) as Log;\n });\n }\n });\n cleanedTransactionReceipt.byzantium =\n cleanedTransactionReceipt.blockNumber >= 4370000;\n return cleanedTransactionReceipt;\n}\n","import type { BlockResponse } from '../..';\nimport { toChecksumAddress } from '../..';\nimport { tinyBig } from '../../shared/tiny-big/tiny-big';\nimport type { RPCBlock } from '../../types/Block.types';\nimport type { RPCTransaction } from '../../types/Transaction.types';\nimport { cleanTransaction } from './clean-transaction';\nimport { hexToDecimal } from './hex-to-decimal';\n\n/**\n * Converts RPC block response to more JS-friendly format\n *\n * @param block the RPCBlock to clean\n * @param returnTransactionObjects whether or not to return the transactions specified in this block\n * @returns a cleaned block\n * @example\n * ```js\n * const rpcBlock = {\n * number: '0x40f9de',\n * hash: '0x4cbaa942e48a91108f38e2a250f6dbaff7fffe3027f5ebf76701929eed2b2970',\n * parentHash: '0xc8de1e513f74cbc5cc77e2a39e4cada6504469a5d0e87200b708319c1e9ef154',\n * sha3Uncles: '0x04d250716296c9662314b37c112e5ce8b1c9ad7fd7820a39482a3688a2078f2b',\n * logsBloom: '0x0000400004000000040010100200000000000000000000000000000000000000001000000001000000000000000000000004010000000000000a800000000000040000000001000400000000000000000000000000000000000002000000000000000000000004000040000000800000000001000000000000000000000000000000000000000001000000000004200000000000000000000000000124400000000000000200100020000000000000000080000000000080001000000000000000000081000000000000000000008000000020000100000000200020100800000000000000000008002000000080001000020c00000000000000200000000000',\n * transactionsRoot: '0xfc79f4f620cb69861ac67ceee5e1ddf3e45da95be230d4064be234f1ee491aa5',\n * stateRoot: '0xfa5ef7e368997d70670b0ea3172aabefc2dee285786ce69c7165d8d854f8b292',\n * receiptsRoot: '0x7fa0679e88fef8a8f7f5865dc4e6000ddcc267b14d2904948e3b1576a18a3bbd',\n * miner: '0x1b7a75ef070ff49e6b9491a26403d799f2099ebd',\n * difficulty: '0x47ede14fcbe635706e',\n * totalDifficulty: '0x139e1de9b8404dedc5d30959',\n * extraData: '0xce018c495249532d62613031656132',\n * size: '0xb4f',\n * gasLimit: '0x67c280',\n * gasUsed: '0x56e2d',\n * timestamp: '0x62648dc2',\n * transactions: [\n * '0xd53800afc69e55cc7a64b927803b46a5b4c5ddccbaafb6b32fe0ec883739b825',\n * '0x4b8b07f35a1f911a80a0ffeebe3d3c41cd393b4d5e1ce0a408026705913d6760',\n * '0xa50eac0ea8005cb1e4b95be4e64c24035d9c41adb164c49477c3169870f02fb1',\n * '0x413e5293786f8b63e73adf0b74ab56067da4b564d01936b88b138d48cc414a42',\n * '0xd4e4969365d144b0b987632dca36ba9e272254bdc687245987a57666d6afa148'\n * ],\n * uncles: [\n * '0x36cd3869fd17a285b984dea8b705d34096e1fbdfe48df69ae530fbe921ba83fa'\n * ],\n * minimumGasPrice: '0x387ee40',\n * bitcoinMergedMiningHeader: '0x0040502d717ae205da048b0ffb8e110603564d8677ca8bd3a54601000000000000000000e722e86bfebcae00bffb46c663fa0241b63a27f0c98fa710e421d5cc1afa2448d08d6462d9f809172f5e30aa',\n * bitcoinMergedMiningCoinbaseTransaction: '0x00000000000001003f8757a906f0159f882f0968788a2e396b7bf8090e1b926fb2bb46789ac32d55082aca4e0800000000000000002b6a2952534b424c4f434b3a831a30935da1bd1e8631942fc7fa78f7a7b11d51ca39a1684d91a81f0040f9de00000000',\n * bitcoinMergedMiningMerkleProof: '0xb53111a4e11bc19bf90268485d1b957d908ebc6a4cd9862aca3fc6ed3dcf3240b14c316de8521369d55dbfeb2b0116bcc10f40e999c4885e1bd2a08691bdea1c43862d590390a227a379d5677b958f1a23eecc16ac590ad675b8a4cea0c10da3ef597acb9ca1fe0a21fc408f09e0c7169d83aca8ddd636d8cc155f922e1d36c74b7cc11e9ee98dd1bf2100a55d59630c65da3db1575d58f165c5753c1779df90efcff9017b73cc32f4c87178bd0eae6a6dd0357047be70d6c4af17fcef097e80a9f1751447f4eee3831fc79f2d894934694149bcb99840a525f5128215eca6b54642af452ee7568a9281f40560afffd35725df31b98155d7813dea12e42f2a8052c7d98bcf62c9cdc66c40fb12b729b685a31aec4970ea5316640691ae5eb616808656a2bde4e9f5920ff178bf9d1f84e96a0d0bd048a3a8ca0d60970d02aacf7ecfb6e7feaec5c4a764873531cfd630e9430840cfe8b88154da25d6b94b706fe678d0efc1ecafed5a1f539e34552bea65622513b663e17e121f3c4548942584',\n * hashForMergedMining: '0x831a30935da1bd1e8631942fc7fa78f7a7b11d51ca39a1684d91a81f0040f9de',\n * paidFees: '0x1fb451615b58',\n * cumulativeDifficulty: '0x8fdbe015f7248cf993'\n * };\n * const returnTransactionObjects = false;\n *\n * await cleanBlock(rpcBlock, returnTransactionObjects);\n * // {\n * // number: 4258270,\n * // hash: '0x4cbaa942e48a91108f38e2a250f6dbaff7fffe3027f5ebf76701929eed2b2970',\n * // parentHash: '0xc8de1e513f74cbc5cc77e2a39e4cada6504469a5d0e87200b708319c1e9ef154',\n * // sha3Uncles: '0x04d250716296c9662314b37c112e5ce8b1c9ad7fd7820a39482a3688a2078f2b',\n * // logsBloom: '0x0000400004000000040010100200000000000000000000000000000000000000001000000001000000000000000000000004010000000000000a800000000000040000000001000400000000000000000000000000000000000002000000000000000000000004000040000000800000000001000000000000000000000000000000000000000001000000000004200000000000000000000000000124400000000000000200100020000000000000000080000000000080001000000000000000000081000000000000000000008000000020000100000000200020100800000000000000000008002000000080001000020c00000000000000200000000000',\n * // transactionsRoot: '0xfc79f4f620cb69861ac67ceee5e1ddf3e45da95be230d4064be234f1ee491aa5',\n * // stateRoot: '0xfa5ef7e368997d70670b0ea3172aabefc2dee285786ce69c7165d8d854f8b292',\n * // receiptsRoot: '0x7fa0679e88fef8a8f7f5865dc4e6000ddcc267b14d2904948e3b1576a18a3bbd',\n * // miner: '0x1b7A75Ef070Ff49E6B9491a26403D799f2099EbD',\n * // difficulty: Big {\n * // s: 1,\n * // e: 21,\n * // c: [Array],\n * // constructor: [Function],\n * // padAndChop: [Function (anonymous)]\n * // },\n * // totalDifficulty: Big {\n * // s: 1,\n * // e: 27,\n * // c: [Array],\n * // constructor: [Function],\n * // padAndChop: [Function (anonymous)]\n * // },\n * // extraData: '0xce018c495249532d62613031656132',\n * // size: Big {\n * // s: 1,\n * // e: 3,\n * // c: [Array],\n * // constructor: [Function],\n * // padAndChop: [Function (anonymous)]\n * // },\n * // gasLimit: Big {\n * // s: 1,\n * // e: 6,\n * // c: [Array],\n * // constructor: [Function],\n * // padAndChop: [Function (anonymous)]\n * // },\n * // gasUsed: Big {\n * // s: 1,\n * // e: 5,\n * // c: [Array],\n * // constructor: [Function],\n * // padAndChop: [Function (anonymous)]\n * // },\n * // timestamp: Big {\n * // s: 1,\n * // e: 9,\n * // c: [Array],\n * // constructor: [Function],\n * // padAndChop: [Function (anonymous)]\n * // },\n * // transactions: [\n * // '0xd53800afc69e55cc7a64b927803b46a5b4c5ddccbaafb6b32fe0ec883739b825',\n * // '0x4b8b07f35a1f911a80a0ffeebe3d3c41cd393b4d5e1ce0a408026705913d6760',\n * // '0xa50eac0ea8005cb1e4b95be4e64c24035d9c41adb164c49477c3169870f02fb1',\n * // '0x413e5293786f8b63e73adf0b74ab56067da4b564d01936b88b138d48cc414a42',\n * // '0xd4e4969365d144b0b987632dca36ba9e272254bdc687245987a57666d6afa148'\n * // ],\n * // uncles: [\n * // '0x36cd3869fd17a285b984dea8b705d34096e1fbdfe48df69ae530fbe921ba83fa'\n * // ],\n * // minimumGasPrice: '0x387ee40',\n * // bitcoinMergedMiningHeader: '0x0040502d717ae205da048b0ffb8e110603564d8677ca8bd3a54601000000000000000000e722e86bfebcae00bffb46c663fa0241b63a27f0c98fa710e421d5cc1afa2448d08d6462d9f809172f5e30aa',\n * // bitcoinMergedMiningCoinbaseTransaction: '0x00000000000001003f8757a906f0159f882f0968788a2e396b7bf8090e1b926fb2bb46789ac32d55082aca4e0800000000000000002b6a2952534b424c4f434b3a831a30935da1bd1e8631942fc7fa78f7a7b11d51ca39a1684d91a81f0040f9de00000000',\n * // bitcoinMergedMiningMerkleProof: '0xb53111a4e11bc19bf90268485d1b957d908ebc6a4cd9862aca3fc6ed3dcf3240b14c316de8521369d55dbfeb2b0116bcc10f40e999c4885e1bd2a08691bdea1c43862d590390a227a379d5677b958f1a23eecc16ac590ad675b8a4cea0c10da3ef597acb9ca1fe0a21fc408f09e0c7169d83aca8ddd636d8cc155f922e1d36c74b7cc11e9ee98dd1bf2100a55d59630c65da3db1575d58f165c5753c1779df90efcff9017b73cc32f4c87178bd0eae6a6dd0357047be70d6c4af17fcef097e80a9f1751447f4eee3831fc79f2d894934694149bcb99840a525f5128215eca6b54642af452ee7568a9281f40560afffd35725df31b98155d7813dea12e42f2a8052c7d98bcf62c9cdc66c40fb12b729b685a31aec4970ea5316640691ae5eb616808656a2bde4e9f5920ff178bf9d1f84e96a0d0bd048a3a8ca0d60970d02aacf7ecfb6e7feaec5c4a764873531cfd630e9430840cfe8b88154da25d6b94b706fe678d0efc1ecafed5a1f539e34552bea65622513b663e17e121f3c4548942584',\n * // hashForMergedMining: '0x831a30935da1bd1e8631942fc7fa78f7a7b11d51ca39a1684d91a81f0040f9de',\n * // paidFees: '0x1fb451615b58',\n * // cumulativeDifficulty: '0x8fdbe015f7248cf993'\n * // }\n */\nexport function cleanBlock(\n block: RPCBlock,\n returnTransactionObjects: boolean,\n): BlockResponse {\n const cleanedBlock = { ...block } as unknown as BlockResponse;\n (Object.keys(block) as Array<keyof RPCBlock>).forEach((key) => {\n // pending blocks have null instead of a difficulty\n // pending blocks have null instead of a miner address\n if (!block[key]) return;\n switch (key) {\n case 'difficulty':\n case 'totalDifficulty':\n case 'gasLimit':\n case 'gasUsed':\n case 'size':\n case 'timestamp':\n case 'baseFeePerGas':\n cleanedBlock[key] = tinyBig(hexToDecimal(block[key]));\n break;\n case 'number':\n cleanedBlock[key] = Number(hexToDecimal(block[key]));\n break;\n case 'miner':\n cleanedBlock[key] = toChecksumAddress(block[key]);\n break;\n }\n });\n // for all full transactions\n if (returnTransactionObjects) {\n const txns = block.transactions as RPCTransaction[];\n txns.forEach((transaction, index) => {\n cleanedBlock.transactions[index] = cleanTransaction(transaction);\n });\n }\n return cleanedBlock;\n}\n","import { logger } from '../logger/logger';\nimport { BaseProvider } from './BaseProvider';\n\n// https://advancedweb.hu/how-to-add-timeout-to-a-promise-in-javascript/\nconst promiseTimeout = (prom: Promise<any>, time: number) =>\n Promise.race([\n prom,\n new Promise((_r, reject) =>\n setTimeout(() => reject('Promise timed out'), time),\n ),\n ]);\n\nexport interface ConstructorOptions {\n timeoutDuration?: number;\n}\nconst DEFAULT_TIMEOUT_DURATION = 8000;\n\n/**\n * @beta\n * A JSON RPC Provider which moves to the next URL when one fails.\n */\nexport class FallthroughProvider extends BaseProvider {\n // index of current trusted rpc url\n /**\n * @ignore\n */\n private rpcUrlCounter = 0;\n private readonly timeoutDuration: number;\n /**\n * @ignore\n */\n public selectRpcUrl(): string {\n return this._rpcUrls[this.rpcUrlCounter];\n }\n\n constructor(rpcUrls: string[], options: ConstructorOptions = {}) {\n if (!Array.isArray(rpcUrls)) {\n logger.throwError('Array required', { rpcUrls });\n }\n if (rpcUrls.length <= 1) {\n logger.throwError('More than one rpcUrl is required', { rpcUrls });\n }\n super(rpcUrls);\n this.timeoutDuration = options.timeoutDuration || DEFAULT_TIMEOUT_DURATION;\n }\n\n /**\n * @ignore\n */\n public post = (body: Record<string, unknown>): Promise<any> => {\n // while failing post, add to rpcUrlCounter and post again\n const genesisCount = this.rpcUrlCounter;\n\n const recursivePostRetry = (): Promise<any> => {\n // Times out request\n const genesisRpcUrl = this.selectRpcUrl();\n const res = promiseTimeout(this._post(body), this.timeoutDuration).catch(\n (e) => {\n // A mutex: Only add if no other instance has discovered this url as failing yet\n if (genesisRpcUrl === this.selectRpcUrl()) {\n // add one and handle array overflow\n this.rpcUrlCounter =\n (this.rpcUrlCounter + 1) % this._rpcUrls.length;\n }\n // we've already tried this rpc, throw for good\n if (this.rpcUrlCounter === genesisCount) {\n throw e;\n }\n return recursivePostRetry();\n },\n );\n return res;\n };\n return recursivePostRetry();\n };\n}\n","import { BaseProvider } from './BaseProvider';\nexport class JsonRpcProvider extends BaseProvider {\n /**\n * @ignore\n */\n selectRpcUrl(): string {\n return this._rpcUrls[0];\n }\n\n /**\n * @ignore\n */\n post(body: Record<string, unknown>): Promise<any> {\n return this._post(body);\n }\n\n /**\n * @param rpcUrl The URL to your Eth node. Consider POKT or Infura\n * @example\n * `https://free-eth-node.com/api/eth`\n * @example\n * `https://mainnet.infura.io/v3/YOUR-PROJECT-ID`\n */\n constructor(rpcUrl = 'https://free-eth-node.com/api/eth') {\n super([rpcUrl]);\n }\n}\n\n/**\n * Helper function to avoid \"new\"\n *\n * @param rpcUrl the RPC URL to post requests to\n * @returns an initiated {@link JsonRpcProvider}\n * @example\n * ```javascript\n * jsonRpcProvider().getBlock('latest').then(block => {\n * console.log(block.number);\n * })\n * // 14530496\n * ```\n */\nexport function jsonRpcProvider(rpcUrl?: string) {\n return new JsonRpcProvider(rpcUrl);\n}\n","import { Keccak } from 'sha3';\nimport type { BytesLike } from './bytes';\n\n/**\n * Hashes data into a Keccak256 hex string\n *\n * @param data the data to be hashed using Keccak256\n * @returns a hex string with data hashed using Keccak256\n * @example\n * ```javascript\n * keccak256('essential-eth');\n * // '0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470'\n *\n * keccak256('0x123');\n * // '0x5fa2358263196dbbf23d1ca7a509451f7a2f64c15837bfbb81298b1e3e24e4fa'\n * ```\n */\nexport function keccak256(data: BytesLike): string {\n let bufferableData;\n if (typeof data === 'string') {\n bufferableData = Buffer.from(data.replace(/^0x/, ''), 'hex');\n } else {\n bufferableData = Buffer.from(data as any);\n }\n const keccak = new Keccak(256);\n const addressHash = '0x' + keccak.update(bufferableData).digest('hex');\n return addressHash;\n}\n","/*! noble-secp256k1 - MIT License (c) 2019 Paul Miller (paulmillr.com) */\nimport nodeCrypto from 'crypto';\nconst _0n = BigInt(0);\nconst _1n = BigInt(1);\nconst _2n = BigInt(2);\nconst _3n = BigInt(3);\nconst _8n = BigInt(8);\nconst POW_2_256 = _2n ** BigInt(256);\nconst CURVE = {\n a: _0n,\n b: BigInt(7),\n P: POW_2_256 - _2n ** BigInt(32) - BigInt(977),\n n: POW_2_256 - BigInt('432420386565659656852420866394968145599'),\n h: _1n,\n Gx: BigInt('55066263022277343669578718895168534326250603453777594175500187360389116729240'),\n Gy: BigInt('32670510020758816978083085130507043184471273380659243275938904335757337482424'),\n beta: BigInt('0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee'),\n};\nexport { CURVE };\nfunction weistrass(x) {\n const { a, b } = CURVE;\n const x2 = mod(x * x);\n const x3 = mod(x2 * x);\n return mod(x3 + a * x + b);\n}\nconst USE_ENDOMORPHISM = CURVE.a === _0n;\nclass JacobianPoint {\n constructor(x, y, z) {\n this.x = x;\n this.y = y;\n this.z = z;\n }\n static fromAffine(p) {\n if (!(p instanceof Point)) {\n throw new TypeError('JacobianPoint#fromAffine: expected Point');\n }\n return new JacobianPoint(p.x, p.y, _1n);\n }\n static toAffineBatch(points) {\n const toInv = invertBatch(points.map((p) => p.z));\n return points.map((p, i) => p.toAffine(toInv[i]));\n }\n static normalizeZ(points) {\n return JacobianPoint.toAffineBatch(points).map(JacobianPoint.fromAffine);\n }\n equals(other) {\n if (!(other instanceof JacobianPoint))\n throw new TypeError('JacobianPoint expected');\n const { x: X1, y: Y1, z: Z1 } = this;\n const { x: X2, y: Y2, z: Z2 } = other;\n const Z1Z1 = mod(Z1 ** _2n);\n const Z2Z2 = mod(Z2 ** _2n);\n const U1 = mod(X1 * Z2Z2);\n const U2 = mod(X2 * Z1Z1);\n const S1 = mod(mod(Y1 * Z2) * Z2Z2);\n const S2 = mod(mod(Y2 * Z1) * Z1Z1);\n return U1 === U2 && S1 === S2;\n }\n negate() {\n return new JacobianPoint(this.x, mod(-this.y), this.z);\n }\n double() {\n const { x: X1, y: Y1, z: Z1 } = this;\n const A = mod(X1 ** _2n);\n const B = mod(Y1 ** _2n);\n const C = mod(B ** _2n);\n const D = mod(_2n * (mod((X1 + B) ** _2n) - A - C));\n const E = mod(_3n * A);\n const F = mod(E ** _2n);\n const X3 = mod(F - _2n * D);\n const Y3 = mod(E * (D - X3) - _8n * C);\n const Z3 = mod(_2n * Y1 * Z1);\n return new JacobianPoint(X3, Y3, Z3);\n }\n add(other) {\n if (!(other instanceof JacobianPoint))\n throw new TypeError('JacobianPoint expected');\n const { x: X1, y: Y1, z: Z1 } = this;\n const { x: X2, y: Y2, z: Z2 } = other;\n if (X2 === _0n || Y2 === _0n)\n return this;\n if (X1 === _0n || Y1 === _0n)\n return other;\n const Z1Z1 = mod(Z1 ** _2n);\n const Z2Z2 = mod(Z2 ** _2n);\n const U1 = mod(X1 * Z2Z2);\n const U2 = mod(X2 * Z1Z1);\n const S1 = mod(mod(Y1 * Z2) * Z2Z2);\n const S2 = mod(mod(Y2 * Z1) * Z1Z1);\n const H = mod(U2 - U1);\n const r = mod(S2 - S1);\n if (H === _0n) {\n if (r === _0n) {\n return this.double();\n }\n else {\n return JacobianPoint.ZERO;\n }\n }\n const HH = mod(H ** _2n);\n const HHH = mod(H * HH);\n const V = mod(U1 * HH);\n const X3 = mod(r ** _2n - HHH - _2n * V);\n const Y3 = mod(r * (V - X3) - S1 * HHH);\n const Z3 = mod(Z1 * Z2 * H);\n return new JacobianPoint(X3, Y3, Z3);\n }\n subtract(other) {\n return this.add(other.negate());\n }\n multiplyUnsafe(scalar) {\n let n = normalizeScalar(scalar);\n const G = JacobianPoint.BASE;\n const P0 = JacobianPoint.ZERO;\n if (n === _0n)\n return P0;\n if (n === _1n)\n return this;\n if (!USE_ENDOMORPHISM) {\n let p = P0;\n let d = this;\n while (n > _0n) {\n if (n & _1n)\n p = p.add(d);\n d = d.double();\n n >>= _1n;\n }\n return p;\n }\n let { k1neg, k1, k2neg, k2 } = splitScalarEndo(n);\n let k1p = P0;\n let k2p = P0;\n let d = this;\n while (k1 > _0n || k2 > _0n) {\n if (k1 & _1n)\n k1p = k1p.add(d);\n if (k2 & _1n)\n k2p = k2p.add(d);\n d = d.double();\n k1 >>= _1n;\n k2 >>= _1n;\n }\n if (k1neg)\n k1p = k1p.negate();\n if (k2neg)\n k2p = k2p.negate();\n k2p = new JacobianPoint(mod(k2p.x * CURVE.beta), k2p.y, k2p.z);\n return k1p.add(k2p);\n }\n precomputeWindow(W) {\n const windows = USE_ENDOMORPHISM ? 128 / W + 1 : 256 / W + 1;\n const points = [];\n let p = this;\n let base = p;\n for (let window = 0; window < windows; window++) {\n base = p;\n points.push(base);\n for (let i = 1; i < 2 ** (W - 1); i++) {\n base = base.add(p);\n points.push(base);\n }\n p = base.double();\n }\n return points;\n }\n wNAF(n, affinePoint) {\n if (!affinePoint && this.equals(JacobianPoint.BASE))\n affinePoint = Point.BASE;\n const W = (affinePoint && affinePoint._WINDOW_SIZE) || 1;\n if (256 % W) {\n throw new Error('Point#wNAF: Invalid precomputation window, must be power of 2');\n }\n let precomputes = affinePoint && pointPrecomputes.get(affinePoint);\n if (!precomputes) {\n precomputes = this.precomputeWindow(W);\n if (affinePoint && W !== 1) {\n precomputes = JacobianPoint.normalizeZ(precomputes);\n pointPrecomputes.set(affinePoint, precomputes);\n }\n }\n let p = JacobianPoint.ZERO;\n let f = JacobianPoint.ZERO;\n const windows = 1 + (USE_ENDOMORPHISM ? 128 / W : 256 / W);\n const windowSize = 2 ** (W - 1);\n const mask = BigInt(2 ** W - 1);\n const maxNumber = 2 ** W;\n const shiftBy = BigInt(W);\n for (let window = 0; window < windows; window++) {\n const offset = window * windowSize;\n let wbits = Number(n & mask);\n n >>= shiftBy;\n if (wbits > windowSize) {\n wbits -= maxNumber;\n n += _1n;\n }\n if (wbits === 0) {\n let pr = precomputes[offset];\n if (window % 2)\n pr = pr.negate();\n f = f.add(pr);\n }\n else {\n let cached = precomputes[offset + Math.abs(wbits) - 1];\n if (wbits < 0)\n cached = cached.negate();\n p = p.add(cached);\n }\n }\n return { p, f };\n }\n multiply(scalar, affinePoint) {\n let n = normalizeScalar(scalar);\n let point;\n let fake;\n if (USE_ENDOMORPHISM) {\n const { k1neg, k1, k2neg, k2 } = splitScalarEndo(n);\n let { p: k1p, f: f1p } = this.wNAF(k1, affinePoint);\n let { p: k2p, f: f2p } = this.wNAF(k2, affinePoint);\n if (k1neg)\n k1p = k1p.negate();\n if (k2neg)\n k2p = k2p.negate();\n k2p = new JacobianPoint(mod(k2p.x * CURVE.beta), k2p.y, k2p.z);\n point = k1p.add(k2p);\n fake = f1p.add(f2p);\n }\n else {\n const { p, f } = this.wNAF(n, affinePoint);\n point = p;\n fake = f;\n }\n return JacobianPoint.normalizeZ([point, fake])[0];\n }\n toAffine(invZ = invert(this.z)) {\n const { x, y, z } = this;\n const iz1 = invZ;\n const iz2 = mod(iz1 * iz1);\n const iz3 = mod(iz2 * iz1);\n const ax = mod(x * iz2);\n const ay = mod(y * iz3);\n const zz = mod(z * iz1);\n if (zz !== _1n)\n throw new Error('invZ was invalid');\n return new Point(ax, ay);\n }\n}\nJacobianPoint.BASE = new JacobianPoint(CURVE.Gx, CURVE.Gy, _1n);\nJacobianPoint.ZERO = new JacobianPoint(_0n, _1n, _0n);\nconst pointPrecomputes = new WeakMap();\nexport class Point {\n constructor(x, y) {\n this.x = x;\n this.y = y;\n }\n _setWindowSize(windowSize) {\n this._WINDOW_SIZE = windowSize;\n pointPrecomputes.delete(this);\n }\n static fromCompressedHex(bytes) {\n const isShort = bytes.length === 32;\n const x = bytesToNumber(isShort ? bytes : bytes.subarray(1));\n if (!isValidFieldElement(x))\n throw new Error('Point is not on curve');\n const y2 = weistrass(x);\n let y = sqrtMod(y2);\n const isYOdd = (y & _1n) === _1n;\n if (isShort) {\n if (isYOdd)\n y = mod(-y);\n }\n else {\n const isFirstByteOdd = (bytes[0] & 1) === 1;\n if (isFirstByteOdd !== isYOdd)\n y = mod(-y);\n }\n const point = new Point(x, y);\n point.assertValidity();\n return point;\n }\n static fromUncompressedHex(bytes) {\n const x = bytesToNumber(bytes.subarray(1, 33));\n const y = bytesToNumber(bytes.subarray(33, 65));\n const point = new Point(x, y);\n point.assertValidity();\n return point;\n }\n static fromHex(hex) {\n const bytes = ensureBytes(hex);\n const len = bytes.length;\n const header = bytes[0];\n if (len === 32 || (len === 33 && (header === 0x02 || header === 0x03))) {\n return this.fromCompressedHex(bytes);\n }\n if (len === 65 && header === 0x04)\n return this.fromUncompressedHex(bytes);\n throw new Error(`Point.fromHex: received invalid point. Expected 32-33 compressed bytes or 65 uncompressed bytes, not ${len}`);\n }\n static fromPrivateKey(privateKey) {\n return Point.BASE.multiply(normalizePrivateKey(privateKey));\n }\n static fromSignature(msgHash, signature, recovery) {\n msgHash = ensureBytes(msgHash);\n const h = truncateHash(msgHash);\n const { r, s } = normalizeSignature(signature);\n if (recovery !== 0 && recovery !== 1) {\n throw new Error('Cannot recover signature: invalid recovery bit');\n }\n if (h === _0n)\n throw new Error('Cannot recover signature: msgHash cannot be 0');\n const prefix = recovery & 1 ? '03' : '02';\n const R = Point.fromHex(prefix + numTo32bStr(r));\n const { n } = CURVE;\n const rinv = invert(r, n);\n const u1 = mod(-h * rinv, n);\n const u2 = mod(s * rinv, n);\n const Q = Point.BASE.multiplyAndAddUnsafe(R, u1, u2);\n if (!Q)\n throw new Error('Cannot recover signature: point at infinify');\n Q.assertValidity();\n return Q;\n }\n toRawBytes(isCompressed = false) {\n return hexToBytes(this.toHex(isCompressed));\n }\n toHex(isCompressed = false) {\n const x = numTo32bStr(this.x);\n if (isCompressed) {\n const prefix = this.y & _1n ? '03' : '02';\n return `${prefix}${x}`;\n }\n else {\n return `04${x}${numTo32bStr(this.y)}`;\n }\n }\n toHexX() {\n return this.toHex(true).slice(2);\n }\n toRawX() {\n return this.toRawBytes(true).slice(1);\n }\n assertValidity() {\n const msg = 'Point is not on elliptic curve';\n const { x, y } = this;\n if (!isValidFieldElement(x) || !isValidFieldElement(y))\n throw new Error(msg);\n const left = mod(y * y);\n const right = weistrass(x);\n if (mod(left - right) !== _0n)\n throw new Error(msg);\n }\n equals(other) {\n return this.x === other.x && this.y === other.y;\n }\n negate() {\n return new Point(this.x, mod(-this.y));\n }\n double() {\n return JacobianPoint.fromAffine(this).double().toAffine();\n }\n add(other) {\n return JacobianPoint.fromAffine(this).add(JacobianPoint.fromAffine(other)).toAffine();\n }\n subtract(other) {\n return this.add(other.negate());\n }\n multiply(scalar) {\n return JacobianPoint.fromAffine(this).multiply(scalar, this).toAffine();\n }\n multiplyAndAddUnsafe(Q, a, b) {\n const P = JacobianPoint.fromAffine(this);\n const aP = P.multiply(a);\n const bQ = JacobianPoint.fromAffine(Q).multiplyUnsafe(b);\n const sum = aP.add(bQ);\n return sum.equals(JacobianPoint.ZERO) ? undefined : sum.toAffine();\n }\n}\nPoint.BASE = new Point(CURVE.Gx, CURVE.Gy);\nPoint.ZERO = new Point(_0n, _0n);\nfunction sliceDER(s) {\n return Number.parseInt(s[0], 16) >= 8 ? '00' + s : s;\n}\nfunction parseDERInt(data) {\n if (data.length < 2 || data[0] !== 0x02) {\n throw new Error(`Invalid signature integer tag: ${bytesToHex(data)}`);\n }\n const len = data[1];\n const res = data.subarray(2, len + 2);\n if (!len || res.length !== len) {\n throw new Error(`Invalid signature integer: wrong length`);\n }\n if (res[0] === 0x00 && res[1] <= 0x7f) {\n throw new Error('Invalid signature integer: trailing length');\n }\n return { data: bytesToNumber(res), left: data.subarray(len + 2) };\n}\nfunction parseDERSignature(data) {\n if (data.length < 2 || data[0] != 0x30) {\n throw new Error(`Invalid signature tag: ${bytesToHex(data)}`);\n }\n if (data[1] !== data.length - 2) {\n throw new Error('Invalid signature: incorrect length');\n }\n const { data: r, left: sBytes } = parseDERInt(data.subarray(2));\n const { data: s, left: rBytesLeft } = parseDERInt(sBytes);\n if (rBytesLeft.length) {\n throw new Error(`Invalid signature: left bytes after parsing: ${bytesToHex(rBytesLeft)}`);\n }\n return { r, s };\n}\nexport class Signature {\n constructor(r, s) {\n this.r = r;\n this.s = s;\n this.assertValidity();\n }\n static fromCompact(hex) {\n const arr = isUint8a(hex);\n const name = 'Signature.fromCompact';\n if (typeof hex !== 'string' && !arr)\n throw new TypeError(`${name}: Expected string or Uint8Array`);\n const str = arr ? bytesToHex(hex) : hex;\n if (str.length !== 128)\n throw new Error(`${name}: Expected 64-byte hex`);\n return new Signature(hexToNumber(str.slice(0, 64)), hexToNumber(str.slice(64, 128)));\n }\n static fromDER(hex) {\n const arr = isUint8a(hex);\n if (typeof hex !== 'string' && !arr)\n throw new TypeError(`Signature.fromDER: Expected string or Uint8Array`);\n const { r, s } = parseDERSignature(arr ? hex : hexToBytes(hex));\n return new Signature(r, s);\n }\n static fromHex(hex) {\n return this.fromDER(hex);\n }\n assertValidity() {\n const { r, s } = this;\n if (!isWithinCurveOrder(r))\n throw new Error('Invalid Signature: r must be 0 < r < n');\n if (!isWithinCurveOrder(s))\n throw new Error('Invalid Signature: s must be 0 < s < n');\n }\n hasHighS() {\n const HALF = CURVE.n >> _1n;\n return this.s > HALF;\n }\n normalizeS() {\n return this.hasHighS() ? new Signature(this.r, CURVE.n - this.s) : this;\n }\n toDERRawBytes(isCompressed = false) {\n return hexToBytes(this.toDERHex(isCompressed));\n }\n toDERHex(isCompressed = false) {\n const sHex = sliceDER(numberToHexUnpadded(this.s));\n if (isCompressed)\n return sHex;\n const rHex = sliceDER(numberToHexUnpadded(this.r));\n const rLen = numberToHexUnpadded(rHex.length / 2);\n const sLen = numberToHexUnpadded(sHex.length / 2);\n const length = numberToHexUnpadded(rHex.length / 2 + sHex.length / 2 + 4);\n return `30${length}02${rLen}${rHex}02${sLen}${sHex}`;\n }\n toRawBytes() {\n return this.toDERRawBytes();\n }\n toHex() {\n return this.toDERHex();\n }\n toCompactRawBytes() {\n return hexToBytes(this.toCompactHex());\n }\n toCompactHex() {\n return numTo32bStr(this.r) + numTo32bStr(this.s);\n }\n}\nfunction concatBytes(...arrays) {\n if (!arrays.every(isUint8a))\n throw new Error('Uint8Array list expected');\n if (arrays.length === 1)\n return arrays[0];\n const length = arrays.reduce((a, arr) => a + arr.length, 0);\n const result = new Uint8Array(length);\n for (let i = 0, pad = 0; i < arrays.length; i++) {\n const arr = arrays[i];\n result.set(arr, pad);\n pad += arr.length;\n }\n return result;\n}\nfunction isUint8a(bytes) {\n return bytes instanceof Uint8Array;\n}\nconst hexes = Array.from({ length: 256 }, (v, i) => i.toString(16).padStart(2, '0'));\nfunction bytesToHex(uint8a) {\n if (!(uint8a instanceof Uint8Array))\n throw new Error('Expected Uint8Array');\n let hex = '';\n for (let i = 0; i < uint8a.length; i++) {\n hex += hexes[uint8a[i]];\n }\n return hex;\n}\nfunction numTo32bStr(num) {\n if (num > POW_2_256)\n throw new Error('Expected number < 2^256');\n return num.toString(16).padStart(64, '0');\n}\nfunction numTo32b(num) {\n return hexToBytes(numTo32bStr(num));\n}\nfunction numberToHexUnpadded(num) {\n const hex = num.toString(16);\n return hex.length & 1 ? `0${hex}` : hex;\n}\nfunction hexToNumber(hex) {\n if (typeof hex !== 'string') {\n throw new TypeError('hexToNumber: expected string, got ' + typeof hex);\n }\n return BigInt(`0x${hex}`);\n}\nfunction hexToBytes(hex) {\n if (typeof hex !== 'string') {\n throw new TypeError('hexToBytes: expected string, got ' + typeof hex);\n }\n if (hex.length % 2)\n throw new Error('hexToBytes: received invalid unpadded hex' + hex.length);\n const array = new Uint8Array(hex.length / 2);\n for (let i = 0; i < array.length; i++) {\n const j = i * 2;\n const hexByte = hex.slice(j, j + 2);\n const byte = Number.parseInt(hexByte, 16);\n if (Number.isNaN(byte) || byte < 0)\n throw new Error('Invalid byte sequence');\n array[i] = byte;\n }\n return array;\n}\nfunction bytesToNumber(bytes) {\n return hexToNumber(bytesToHex(bytes));\n}\nfunction ensureBytes(hex) {\n return hex instanceof Uint8Array ? Uint8Array.from(hex) : hexToBytes(hex);\n}\nfunction normalizeScalar(num) {\n if (typeof num === 'number' && Number.isSafeInteger(num) && num > 0)\n return BigInt(num);\n if (typeof num === 'bigint' && isWithinCurveOrder(num))\n return num;\n throw new TypeError('Expected valid private scalar: 0 < scalar < curve.n');\n}\nfunction mod(a, b = CURVE.P) {\n const result = a % b;\n return result >= _0n ? result : b + result;\n}\nfunction pow2(x, power) {\n const { P } = CURVE;\n let res = x;\n while (power-- > _0n) {\n res *= res;\n res %= P;\n }\n return res;\n}\nfunction sqrtMod(x) {\n const { P } = CURVE;\n const _6n = BigInt(6);\n const _11n = BigInt(11);\n const _22n = BigInt(22);\n const _23n = BigInt(23);\n const _44n = BigInt(44);\n const _88n = BigInt(88);\n const b2 = (x * x * x) % P;\n const b3 = (b2 * b2 * x) % P;\n const b6 = (pow2(b3, _3n) * b3) % P;\n const b9 = (pow2(b6, _3n) * b3) % P;\n const b11 = (pow2(b9, _2n) * b2) % P;\n const b22 = (pow2(b11, _11n) * b11) % P;\n const b44 = (pow2(b22, _22n) * b22) % P;\n const b88 = (pow2(b44, _44n) * b44) % P;\n const b176 = (pow2(b88, _88n) * b88) % P;\n const b220 = (pow2(b176, _44n) * b44) % P;\n const b223 = (pow2(b220, _3n) * b3) % P;\n const t1 = (pow2(b223, _23n) * b22) % P;\n const t2 = (pow2(t1, _6n) * b2) % P;\n return pow2(t2, _2n);\n}\nfunction invert(number, modulo = CURVE.P) {\n if (number === _0n || modulo <= _0n) {\n throw new Error(`invert: expected positive integers, got n=${number} mod=${modulo}`);\n }\n let a = mod(number, modulo);\n let b = modulo;\n let x = _0n, y = _1n, u = _1n, v = _0n;\n while (a !== _0n) {\n const q = b / a;\n const r = b % a;\n const m = x - u * q;\n const n = y - v * q;\n b = a, a = r, x = u, y = v, u = m, v = n;\n }\n const gcd = b;\n if (gcd !== _1n)\n throw new Error('invert: does not exist');\n return mod(x, modulo);\n}\nfunction invertBatch(nums, p = CURVE.P) {\n const scratch = new Array(nums.length);\n const lastMultiplied = nums.reduce((acc, num, i) => {\n if (num === _0n)\n return acc;\n scratch[i] = acc;\n return mod(acc * num, p);\n }, _1n);\n const inverted = invert(lastMultiplied, p);\n nums.reduceRight((acc, num, i) => {\n if (num === _0n)\n return acc;\n scratch[i] = mod(acc * scratch[i], p);\n return mod(acc * num, p);\n }, inverted);\n return scratch;\n}\nconst divNearest = (a, b) => (a + b / _2n) / b;\nconst POW_2_128 = _2n ** BigInt(128);\nfunction splitScalarEndo(k) {\n const { n } = CURVE;\n const a1 = BigInt('0x3086d221a7d46bcde86c90e49284eb15');\n const b1 = -_1n * BigInt('0xe4437ed6010e88286f547fa90abfe4c3');\n const a2 = BigInt('0x114ca50f7a8e2f3f657c1108d9d44cfd8');\n const b2 = a1;\n const c1 = divNearest(b2 * k, n);\n const c2 = divNearest(-b1 * k, n);\n let k1 = mod(k - c1 * a1 - c2 * a2, n);\n let k2 = mod(-c1 * b1 - c2 * b2, n);\n const k1neg = k1 > POW_2_128;\n const k2neg = k2 > POW_2_128;\n if (k1neg)\n k1 = n - k1;\n if (k2neg)\n k2 = n - k2;\n if (k1 > POW_2_128 || k2 > POW_2_128) {\n throw new Error('splitScalarEndo: Endomorphism failed, k=' + k);\n }\n return { k1neg, k1, k2neg, k2 };\n}\nfunction truncateHash(hash) {\n const { n } = CURVE;\n const byteLength = hash.length;\n const delta = byteLength * 8 - 256;\n let h = bytesToNumber(hash);\n if (delta > 0)\n h = h >> BigInt(delta);\n if (h >= n)\n h -= n;\n return h;\n}\nclass HmacDrbg {\n constructor() {\n this.v = new Uint8Array(32).fill(1);\n this.k = new Uint8Array(32).fill(0);\n this.counter = 0;\n }\n hmac(...values) {\n return utils.hmacSha256(this.k, ...values);\n }\n hmacSync(...values) {\n if (typeof utils.hmacSha256Sync !== 'function')\n throw new Error('utils.hmacSha256Sync is undefined, you need to set it');\n const res = utils.hmacSha256Sync(this.k, ...values);\n if (res instanceof Promise)\n throw new Error('To use sync sign(), ensure utils.hmacSha256 is sync');\n return res;\n }\n incr() {\n if (this.counter >= 1000) {\n throw new Error('Tried 1,000 k values for sign(), all were invalid');\n }\n this.counter += 1;\n }\n async reseed(seed = new Uint8Array()) {\n this.k = await this.hmac(this.v, Uint8Array.from([0x00]), seed);\n this.v = await this.hmac(this.v);\n if (seed.length === 0)\n return;\n this.k = await this.hmac(this.v, Uint8Array.from([0x01]), seed);\n this.v = await this.hmac(this.v);\n }\n reseedSync(seed = new Uint8Array()) {\n this.k = this.hmacSync(this.v, Uint8Array.from([0x00]), seed);\n this.v = this.hmacSync(this.v);\n if (seed.length === 0)\n return;\n this.k = this.hmacSync(this.v, Uint8Array.from([0x01]), seed);\n this.v = this.hmacSync(this.v);\n }\n async generate() {\n this.incr();\n this.v = await this.hmac(this.v);\n return this.v;\n }\n generateSync() {\n this.incr();\n this.v = this.hmacSync(this.v);\n return this.v;\n }\n}\nfunction isWithinCurveOrder(num) {\n return _0n < num && num < CURVE.n;\n}\nfunction isValidFieldElement(num) {\n return _0n < num && num < CURVE.P;\n}\nfunction kmdToSig(kBytes, m, d) {\n const k = bytesToNumber(kBytes);\n if (!isWithinCurveOrder(k))\n return;\n const { n } = CURVE;\n const q = Point.BASE.multiply(k);\n const r = mod(q.x, n);\n if (r === _0n)\n return;\n const s = mod(invert(k, n) * mod(m + d * r, n), n);\n if (s === _0n)\n return;\n const sig = new Signature(r, s);\n const recovery = (q.x === sig.r ? 0 : 2) | Number(q.y & _1n);\n return { sig, recovery };\n}\nfunction normalizePrivateKey(key) {\n let num;\n if (typeof key === 'bigint') {\n num = key;\n }\n else if (typeof key === 'number' && Number.isSafeInteger(key) && key > 0) {\n num = BigInt(key);\n }\n else if (typeof key === 'string') {\n if (key.length !== 64)\n throw new Error('Expected 32 bytes of private key');\n num = hexToNumber(key);\n }\n else if (isUint8a(key)) {\n if (key.length !== 32)\n throw new Error('Expected 32 bytes of private key');\n num = bytesToNumber(key);\n }\n else {\n throw new TypeError('Expected valid private key');\n }\n if (!isWithinCurveOrder(num))\n throw new Error('Expected private key: 0 < key < n');\n return num;\n}\nfunction normalizePublicKey(publicKey) {\n if (publicKey instanceof Point) {\n publicKey.assertValidity();\n return publicKey;\n }\n else {\n return Point.fromHex(publicKey);\n }\n}\nfunction normalizeSignature(signature) {\n if (signature instanceof Signature) {\n signature.assertValidity();\n return signature;\n }\n try {\n return Signature.fromDER(signature);\n }\n catch (error) {\n return Signature.fromCompact(signature);\n }\n}\nexport function getPublicKey(privateKey, isCompressed = false) {\n return Point.fromPrivateKey(privateKey).toRawBytes(isCompressed);\n}\nexport function recoverPublicKey(msgHash, signature, recovery, isCompressed = false) {\n return Point.fromSignature(msgHash, signature, recovery).toRawBytes(isCompressed);\n}\nfunction isPub(item) {\n const arr = isUint8a(item);\n const str = typeof item === 'string';\n const len = (arr || str) && item.length;\n if (arr)\n return len === 33 || len === 65;\n if (str)\n return len === 66 || len === 130;\n if (item instanceof Point)\n return true;\n return false;\n}\nexport function getSharedSecret(privateA, publicB, isCompressed = false) {\n if (isPub(privateA))\n throw new TypeError('getSharedSecret: first arg must be private key');\n if (!isPub(publicB))\n throw new TypeError('getSharedSecret: second arg must be public key');\n const b = normalizePublicKey(publicB);\n b.assertValidity();\n return b.multiply(normalizePrivateKey(privateA)).toRawBytes(isCompressed);\n}\nfunction bits2int(bytes) {\n const slice = bytes.length > 32 ? bytes.slice(0, 32) : bytes;\n return bytesToNumber(slice);\n}\nfunction bits2octets(bytes) {\n const z1 = bits2int(bytes);\n const z2 = mod(z1, CURVE.n);\n return int2octets(z2 < _0n ? z1 : z2);\n}\nfunction int2octets(num) {\n if (typeof num !== 'bigint')\n throw new Error('Expected bigint');\n const hex = numTo32bStr(num);\n return hexToBytes(hex);\n}\nfunction initSigArgs(msgHash, privateKey, extraEntropy) {\n if (msgHash == null)\n throw new Error(`sign: expected valid message hash, not \"${msgHash}\"`);\n const h1 = ensureBytes(msgHash);\n const d = normalizePrivateKey(privateKey);\n const seedArgs = [int2octets(d), bits2octets(h1)];\n if (extraEntropy != null) {\n if (extraEntropy === true)\n extraEntropy = utils.randomBytes(32);\n const e = ensureBytes(extraEntropy);\n if (e.length !== 32)\n throw new Error('sign: Expected 32 bytes of extra data');\n seedArgs.push(e);\n }\n const seed = concatBytes(...seedArgs);\n const m = bits2int(h1);\n return { seed, m, d };\n}\nfunction finalizeSig(recSig, opts) {\n let { sig, recovery } = recSig;\n const { canonical, der, recovered } = Object.assign({ canonical: true, der: true }, opts);\n if (canonical && sig.hasHighS()) {\n sig = sig.normalizeS();\n recovery ^= 1;\n }\n const hashed = der ? sig.toDERRawBytes() : sig.toCompactRawBytes();\n return recovered ? [hashed, recovery] : hashed;\n}\nasync function sign(msgHash, privKey, opts = {}) {\n const { seed, m, d } = initSigArgs(msgHash, privKey, opts.extraEntropy);\n let sig;\n const drbg = new HmacDrbg();\n await drbg.reseed(seed);\n while (!(sig = kmdToSig(await drbg.generate(), m, d)))\n await drbg.reseed();\n return finalizeSig(sig, opts);\n}\nfunction signSync(msgHash, privKey, opts = {}) {\n const { seed, m, d } = initSigArgs(msgHash, privKey, opts.extraEntropy);\n let sig;\n const drbg = new HmacDrbg();\n drbg.reseedSync(seed);\n while (!(sig = kmdToSig(drbg.generateSync(), m, d)))\n drbg.reseedSync();\n return finalizeSig(sig, opts);\n}\nexport { sign, signSync };\nconst vopts = { strict: true };\nexport function verify(signature, msgHash, publicKey, opts = vopts) {\n let sig;\n try {\n sig = normalizeSignature(signature);\n msgHash = ensureBytes(msgHash);\n }\n catch (error) {\n return false;\n }\n const { r, s } = sig;\n if (opts.strict && sig.hasHighS())\n return false;\n const h = truncateHash(msgHash);\n if (h === _0n)\n return false;\n let P;\n try {\n P = normalizePublicKey(publicKey);\n }\n catch (error) {\n return false;\n }\n const { n } = CURVE;\n const sinv = invert(s, n);\n const u1 = mod(h * sinv, n);\n const u2 = mod(r * sinv, n);\n const R = Point.BASE.multiplyAndAddUnsafe(P, u1, u2);\n if (!R)\n return false;\n const v = mod(R.x, n);\n return v === r;\n}\nasync function taggedHash(tag, ...messages) {\n const tagB = new Uint8Array(tag.split('').map((c) => c.charCodeAt(0)));\n const tagH = await utils.sha256(tagB);\n const h = await utils.sha256(concatBytes(tagH, tagH, ...messages));\n return bytesToNumber(h);\n}\nasync function createChallenge(x, P, message) {\n const rx = numTo32b(x);\n const t = await taggedHash('BIP0340/challenge', rx, P.toRawX(), message);\n return mod(t, CURVE.n);\n}\nfunction hasEvenY(point) {\n return (point.y & _1n) === _0n;\n}\nclass SchnorrSignature {\n constructor(r, s) {\n this.r = r;\n this.s = s;\n this.assertValidity();\n }\n static fromHex(hex) {\n const bytes = ensureBytes(hex);\n if (bytes.length !== 64)\n throw new TypeError(`SchnorrSignature.fromHex: expected 64 bytes, not ${bytes.length}`);\n const r = bytesToNumber(bytes.subarray(0, 32));\n const s = bytesToNumber(bytes.subarray(32, 64));\n return new SchnorrSignature(r, s);\n }\n assertValidity() {\n const { r, s } = this;\n if (!isValidFieldElement(r) || !isWithinCurveOrder(s))\n throw new Error('Invalid signature');\n }\n toHex() {\n return numTo32bStr(this.r) + numTo32bStr(this.s);\n }\n toRawBytes() {\n return hexToBytes(this.toHex());\n }\n}\nfunction schnorrGetPublicKey(privateKey) {\n return Point.fromPrivateKey(privateKey).toRawX();\n}\nasync function schnorrSign(message, privateKey, auxRand = utils.randomBytes()) {\n if (message == null)\n throw new TypeError(`sign: Expected valid message, not \"${message}\"`);\n const { n } = CURVE;\n const m = ensureBytes(message);\n const d0 = normalizePrivateKey(privateKey);\n const rand = ensureBytes(auxRand);\n if (rand.length !== 32)\n throw new TypeError('sign: Expected 32 bytes of aux randomness');\n const P = Point.fromPrivateKey(d0);\n const d = hasEvenY(P) ? d0 : n - d0;\n const t0h = await taggedHash('BIP0340/aux', rand);\n const t = d ^ t0h;\n const k0h = await taggedHash('BIP0340/nonce', numTo32b(t), P.toRawX(), m);\n const k0 = mod(k0h, n);\n if (k0 === _0n)\n throw new Error('sign: Creation of signature failed. k is zero');\n const R = Point.fromPrivateKey(k0);\n const k = hasEvenY(R) ? k0 : n - k0;\n const e = await createChallenge(R.x, P, m);\n const sig = new SchnorrSignature(R.x, mod(k + e * d, n)).toRawBytes();\n const isValid = await schnorrVerify(sig, m, P.toRawX());\n if (!isValid)\n throw new Error('sign: Invalid signature produced');\n return sig;\n}\nasync function schnorrVerify(signature, message, publicKey) {\n const raw = signature instanceof SchnorrSignature;\n let sig;\n try {\n sig = raw ? signature : SchnorrSignature.fromHex(signature);\n if (raw)\n sig.assertValidity();\n }\n catch (error) {\n return false;\n }\n const { r, s } = sig;\n const m = ensureBytes(message);\n let P;\n try {\n P = normalizePublicKey(publicKey);\n }\n catch (error) {\n return false;\n }\n const e = await createChallenge(r, P, m);\n const R = Point.BASE.multiplyAndAddUnsafe(P, normalizePrivateKey(s), mod(-e, CURVE.n));\n if (!R || !hasEvenY(R) || R.x !== r)\n return false;\n return true;\n}\nexport const schnorr = {\n Signature: SchnorrSignature,\n getPublicKey: schnorrGetPublicKey,\n sign: schnorrSign,\n verify: schnorrVerify,\n};\nPoint.BASE._setWindowSize(8);\nconst crypto = {\n node: nodeCrypto,\n web: typeof self === 'object' && 'crypto' in self ? self.crypto : undefined,\n};\nexport const utils = {\n isValidPrivateKey(privateKey) {\n try {\n normalizePrivateKey(privateKey);\n return true;\n }\n catch (error) {\n return false;\n }\n },\n hashToPrivateKey: (hash) => {\n hash = ensureBytes(hash);\n if (hash.length < 40 || hash.length > 1024)\n throw new Error('Expected 40-1024 bytes of private key as per FIPS 186');\n const num = mod(bytesToNumber(hash), CURVE.n);\n if (num === _0n || num === _1n)\n throw new Error('Invalid private key');\n return numTo32b(num);\n },\n randomBytes: (bytesLength = 32) => {\n if (crypto.web) {\n return crypto.web.getRandomValues(new Uint8Array(bytesLength));\n }\n else if (crypto.node) {\n const { randomBytes } = crypto.node;\n return Uint8Array.from(randomBytes(bytesLength));\n }\n else {\n throw new Error(\"The environment doesn't have randomBytes function\");\n }\n },\n randomPrivateKey: () => {\n return utils.hashToPrivateKey(utils.randomBytes(40));\n },\n bytesToHex,\n mod,\n sha256: async (message) => {\n if (crypto.web) {\n const buffer = await crypto.web.subtle.digest('SHA-256', message.buffer);\n return new Uint8Array(buffer);\n }\n else if (crypto.node) {\n const { createHash } = crypto.node;\n return Uint8Array.from(createHash('sha256').update(message).digest());\n }\n else {\n throw new Error(\"The environment doesn't have sha256 function\");\n }\n },\n hmacSha256: async (key, ...messages) => {\n if (crypto.web) {\n const ckey = await crypto.web.subtle.importKey('raw', key, { name: 'HMAC', hash: { name: 'SHA-256' } }, false, ['sign']);\n const message = concatBytes(...messages);\n const buffer = await crypto.web.subtle.sign('HMAC', ckey, message);\n return new Uint8Array(buffer);\n }\n else if (crypto.node) {\n const { createHmac } = crypto.node;\n const hash = createHmac('sha256', key);\n messages.forEach((m) => hash.update(m));\n return Uint8Array.from(hash.digest());\n }\n else {\n throw new Error(\"The environment doesn't have hmac-sha256 function\");\n }\n },\n sha256Sync: undefined,\n hmacSha256Sync: undefined,\n precompute(windowSize = 8, point = Point.BASE) {\n const cached = point === Point.BASE ? point : new Point(point.x, point.y);\n cached._setWindowSize(windowSize);\n cached.multiply(_3n);\n return cached;\n },\n};\n","import { Point } from '@noble/secp256k1';\nimport type { BytesLike } from './bytes';\nimport { hexlify } from './bytes';\n\n/**\n * Computes the public key from a given private key\n *\n * @param privKey the private key to find a public key from\n * @returns the public key related to the specified private key\n * @example\n * ```javascript\n * computePublicKey('0xb27cc8dea0177d910110e8d3ec5480d56c723abf433529f4063f261ffdb9297c');\n * // '0x045cd0032015eecfde49f82f4e149d804e8ac6e3a0bface32e37c72a71ceac864fe84da7e8df84342f7b11dfb753c4d158f636142b46b29cf7f0f171ae0aa4fb87'\n * ```\n * @example\n * ```javascript\n * computePublicKey([50,102,50,99,52,49,57,97,99,102,52,97,49,100,97,56,99,49,101,98,101,97,55,53,98,98,51,102,99,102,98,100]);\n * // '0x04a9cea77eca949df84f661cee153426fb51f2294b9364b4fac240df57360b9b0ac9c99e4d7966491ab4c81f8c82e0cd24ec5759832ad4ab736d22c7d90b806ee8'\n * ```\n */\nexport function computePublicKey(privKey: BytesLike): string {\n privKey = hexlify(privKey).slice(2);\n return '0x' + Point.fromPrivateKey(privKey).toHex();\n}\n","/**\n * Converts a string into a UTF-8 Byte Array\n *\n * @param data the input to be converted to a UTF-8 Byte Array\n * @returns the specified data as a UTF-8 Byte Array\n * @example\n * ```javascript\n * toUtf8Bytes('essential-eth');\n * // Uint8Array { [Iterator] 0: 101, 1: 115, 2: 115, 3: 101, 4: 110, 5: 116, 6: 105, 7: 97, 8: 108, 9: 45, 10: 101, 11: 116, 12: 104 }\n *\n * toUtf8Bytes('ethereum');\n * // Uint8Array { [Iterator] 0: 101, 1: 116, 2: 104, 3: 101, 4: 114, 5: 101, 6: 117, 7: 109 }\n * ```\n */\nexport function toUtf8Bytes(data: string): Uint8Array {\n return new Uint8Array(Buffer.from(data));\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\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar 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\nvar 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 var arr = new Uint8Array(1)\n var 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 var 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 var valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n var 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(\n value[Symbol.toPrimitive]('string'), encodingOrOffset, length\n )\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 var length = byteLength(string, encoding) | 0\n var buf = createBuffer(length)\n\n var 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 var length = array.length < 0 ? 0 : checked(array.length) | 0\n var buf = createBuffer(length)\n for (var 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 var 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 var 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 var len = checked(obj.length) | 0\n var 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 var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!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 var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n Buffer.from(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 var len = string.length\n var mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n 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 var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force 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 var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length\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 var str = ''\n var 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 var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (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 var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n var strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (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 var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n 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 var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF)\n ? 4\n : (firstByte > 0xDF)\n ? 3\n : (firstByte > 0xBF)\n ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]]\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (var 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 var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf = 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 var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUint8 =\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.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n 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 var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n 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.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 var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUint8 =\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\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n var limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n var limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (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\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 var 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 var 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 var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n var 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// HELPER FUNCTIONS\n// ================\n\nvar 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 var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\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\nvar hexSliceLookupTable = (function () {\n var alphabet = '0123456789abcdef'\n var table = new Array(256)\n for (var i = 0; i < 16; ++i) {\n var i16 = i * 16\n for (var j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j]\n }\n }\n return table\n})()\n","import { Buffer } from 'buffer';\nimport { hexFalse } from '../classes/utils/encode-decode-transaction';\nimport { logger } from '../logger/logger';\nimport { tinyBig } from '../shared/tiny-big/tiny-big';\nimport { arrayify, concat, hexlify, zeroPad } from './bytes';\nimport { keccak256 } from './keccak256';\n\nconst regexBytes = new RegExp('^bytes([0-9]+)$');\nconst regexNumber = new RegExp('^(u?int)([0-9]*)$');\nconst regexArray = new RegExp('^(.*)\\\\[([0-9]*)\\\\]$');\n\n/**\n * Packs a type and value together into a UTF-8 Byte Array\n *\n * @internal\n * @param type the Solidity type used for the value given\n * @param value the value to pack with its type\n * @param isArray whether the specified data is in an array\n * @returns packed data consisting of the type and value\n * @example N/A - internal function\n */\nfunction _pack(type: string, value: any, isArray?: boolean): Uint8Array {\n switch (type) {\n case 'address':\n if (isArray) {\n return zeroPad(value, 32);\n }\n return arrayify(value);\n case 'string':\n return Buffer.from(value);\n case 'bytes':\n return arrayify(value);\n case 'bool':\n value = value ? '0x01' : '0x00';\n if (isArray) {\n return zeroPad(value, 32);\n }\n return arrayify(value);\n }\n\n let match = type.match(regexNumber);\n if (match) {\n //let signed = (match[1] === \"int\")\n let size = parseInt(match[2] || '256');\n\n if (\n (match[2] && String(size) !== match[2]) ||\n size % 8 !== 0 ||\n size === 0 ||\n size > 256\n ) {\n logger.throwArgumentError('invalid number type', 'type', type);\n }\n\n if (isArray) {\n size = 256;\n }\n\n value = tinyBig(value).toTwos(size).toNumber();\n const hexValue = hexlify(value);\n return zeroPad(hexValue, size / 8);\n }\n\n match = type.match(regexBytes);\n if (match) {\n const size = parseInt(match[1]);\n\n if (String(size) !== match[1] || size === 0 || size > 32) {\n logger.throwArgumentError('invalid bytes type', 'type', type);\n }\n if (arrayify(value).byteLength !== size) {\n logger.throwArgumentError(`invalid value for ${type}`, 'value', value);\n }\n if (isArray) {\n return arrayify((value + hexFalse).substring(0, 66));\n }\n return value;\n }\n\n match = type.match(regexArray);\n if (match && Array.isArray(value)) {\n const baseType = match[1];\n const count = parseInt(match[2] || String(value.length));\n if (count != value.length) {\n logger.throwArgumentError(\n `invalid array length for ${type}`,\n 'value',\n value,\n );\n }\n const result: Array<Uint8Array> = [];\n value.forEach(function (value) {\n result.push(_pack(baseType, value, true));\n });\n return concat(result);\n }\n\n return logger.throwArgumentError('invalid type', 'type', type);\n}\n\n/**\n * Converts arrays with types and values into a hex string that can be hashed\n *\n * @param types array of Solidity types, where `type[0]` is the type for `value[0]`\n * @param values array of values, where `value[0]` is of type `type[0]`\n * @returns a hex string with the data given, packed to include its types\n * @example\n * ```javascript\n * const types = ['bool', 'string', 'uint64'];\n * const values = [true, 'text', 30];\n * pack(types, values);\n * // '0x0174657874000000000000001e'\n * ```\n */\nexport function pack(types: ReadonlyArray<string>, values: ReadonlyArray<any>) {\n if (types.length != values.length) {\n logger.throwArgumentError(\n 'wrong number of values; expected ${ types.length }',\n 'values',\n values,\n );\n }\n const tight: Array<Uint8Array> = [];\n types.forEach(function (type, index) {\n tight.push(_pack(type, values[index]));\n });\n return hexlify(concat(tight));\n}\n\n/**\n * Hashes data from Solidity using the Keccak256 algorithm.\n *\n * Similar to [\"solidityKeccak256\" in ethers.js](https://docs.ethers.io/v5/api/utils/hashing/#utils-solidityKeccak256)\n *\n * @param types Each [Solidity type](https://docs.soliditylang.org/en/v0.8.13/types.html) corresponding to the values passed in. Helps the function parse and pack data properly.\n * @param values Data to be concatenated (combined) and then hashed.\n * @returns A Keccak256 hash (hex string) based on the values provided\n * @example\n * ```javascript\n * const types = ['string', 'bool', 'uint32'];\n * const values = ['essential-eth is great', true, 14];\n * solidityKeccak256(types, values);\n * // '0xe4d4c8e809faac09d58f468f0aeab9474fe8965d554c6c0f868c433c3fd6acab'\n * ```\n * @example\n * ```javascript\n * const types = ['bytes4', 'uint32[5]'];\n * const values = [[116, 101, 115, 116], [5, 3, 4, 9, 18]];\n * solidityKeccak256(types, values);\n * // '0x038707a887f09355dc545412b058e7ba8f3c74047050c7c5e5e52eec608053d9'\n * ```\n */\nexport function solidityKeccak256(\n types: ReadonlyArray<string>,\n values: ReadonlyArray<any>,\n): string {\n return keccak256(pack(types, values));\n}\n","import { computePublicKey, toChecksumAddress } from '..';\nimport { hexDataSlice } from './bytes';\nimport { keccak256 } from './keccak256';\n\n/**\n * Computes the address that corresponds to a specified public or private key\n *\n * @param key the public or private key to find the address related to\n * @returns the address that corresponds to the key specified\n * @example\n * ```javascript\n * computeAddress('0x0458eb591f407aef12936bd2989ca699cf5061de9c4964dd6eb6005fd8f580c407434447e813969a1be6e9954b002cad84dfc67a69e032b273e4695e7d0db2d952'); // public key\n * // '0xA2902059a7BF992f1450BACD7357CCAa5cC8336a'\n * ```\n * @example\n * ```javascript\n * computeAddress('0x2f2c419acf4a1da8c1ebea75bb3fcfbd3ec2aa3bf0162901ccdc2f38b8f92427'); // private key\n * // '0xA2902059a7BF992f1450BACD7357CCAa5cC8336a'\n * ```\n */\nexport function computeAddress(key: string): string {\n // compressed public keys start with 0x04\n // uncompressed public keys start with 0x03 or 0x02\n if (\n !key.startsWith('0x04') &&\n !key.startsWith('0x03') &&\n !key.startsWith('0x02')\n ) {\n key = computePublicKey(key);\n }\n return toChecksumAddress(hexDataSlice(keccak256(hexDataSlice(key, 1)), 12));\n}\n","import type Big from 'big.js';\nimport type { TinyBig } from '../shared/tiny-big/tiny-big';\nimport { tinyBig } from '../shared/tiny-big/tiny-big';\nimport { validateType } from '../shared/validate-type';\n\n/**\n * Convert from Ether to Gwei\n *\n * No direct equivalent in ether.js; requires multiple functions to achieve.\n *\n * No direct equivalent in web3; requires multiple functions to achieve.\n *\n * @param etherQuantity the amount of ether to convert to gwei\n * @returns a number of gwei equivalent to the specified ether\n * @example\n * ```javascript\n * etherToGwei('1000').toString()\n * // '1000000000000'\n * etherToGwei(1000).toString()\n * // '1000000000000'\n * ```\n * @example\n * ```javascript\n * etherToGwei('1000').toNumber()\n * // 1000000000000\n * etherToGwei(1000).toNumber()\n * // 1000000000000\n * ```\n */\nexport function etherToGwei(\n etherQuantity: string | number | TinyBig | Big,\n): TinyBig {\n validateType(etherQuantity, ['string', 'number', 'object']);\n const result = tinyBig(etherQuantity).times('1000000000');\n return tinyBig(result);\n}\n","import type Big from 'big.js';\nimport type { TinyBig } from '../shared/tiny-big/tiny-big';\nimport { tinyBig } from '../shared/tiny-big/tiny-big';\nimport { validateType } from '../shared/validate-type';\n\n/**\n * Convert Ether to Wei\n *\n * Similar to [\"parseEther\" in ethers.js](https://docs.ethers.io/v5/api/utils/display-logic/#utils-parseEther)\n *\n * Similar to [\"toWei\" in web3.js](https://web3js.readthedocs.io/en/v1.7.1/web3-utils.html#towei)\n *\n * @param etherQuantity the amount of ether to convert to wei\n * @returns a number of wei equivalent to the specified ether\n * @example\n * ```javascript\n * etherToWei('1000').toString()\n * // '1000000000000000000000'\n * etherToWei(1000).toString()\n * // '1000000000000000000000'\n * ```\n * @example\n * ```javascript\n * etherToWei('1000').toNumber()\n * // 1000000000000000000000\n * etherToWei(1000).toNumber()\n * // 1000000000000000000000\n * ```\n */\nexport function etherToWei(\n etherQuantity: string | number | TinyBig | Big,\n): TinyBig {\n validateType(etherQuantity, ['string', 'number', 'object']);\n const result = tinyBig(etherQuantity).times('1000000000000000000');\n return tinyBig(result);\n}\n","import type Big from 'big.js';\nimport { tinyBig } from '../shared/tiny-big/tiny-big';\nimport { validateType } from '../shared/validate-type';\nimport type { TinyBig } from './../shared/tiny-big/tiny-big';\n\n/**\n * Convert from Gwei to Ether\n *\n * No direct equivalent in ethers.js; requires multiple functions to achieve.\n *\n * No direct equivalent in web3; requires multiple functions to achieve.\n *\n * @param gweiQuantity the amount of gwei to convert to ether\n * @returns a number of ether equivalent to the specified gwei\n * @example\n * ```javascript\n * gweiToEther('1000000000000').toString()\n * // '1000'\n * gweiToEther(1000000000000).toString()\n * // '1000'\n * ```\n * @example\n * ```javascript\n * gweiToEther('1000000000000').toNumber()\n * // 1000\n * gweiToEther(1000000000000).toNumber()\n * // 1000\n * ```\n */\nexport function gweiToEther(\n gweiQuantity: string | number | TinyBig | Big,\n): TinyBig {\n validateType(gweiQuantity, ['string', 'number', 'object']);\n const result = tinyBig(gweiQuantity).div('1000000000');\n return tinyBig(result);\n}\n","import type { Bytes } from '../index';\nimport { concat, keccak256, toUtf8Bytes } from '../index';\n\nconst messagePrefix = '\\x19Ethereum Signed Message:\\n';\n\n/**\n * Computes the EIP-191 personal message digest of message.\n * Personal messages are converted to UTF-8 bytes and prefixed with \\x19Ethereum Signed Message: and the length of message.\n *\n * @param message the message to hash\n * @returns a message hashed using Keccak256 that matches the EIP-191 standard\n * @example\n * ```javascript\n * hashMessage(\"Hello World\");\n * // '0xa1de988600a42c4b4ab089b619297c17d53cffae5d5120d82d8a92d0bb3b78f2'\n * ```\n */\nexport function hashMessage(message: Bytes | string): string {\n if (typeof message === 'string') {\n message = toUtf8Bytes(message);\n }\n return keccak256(\n concat([\n toUtf8Bytes(messagePrefix),\n toUtf8Bytes(String(message.length)),\n message,\n ]),\n );\n}\n","import { toChecksumAddress } from '..';\nimport { validateType } from '../shared/validate-type';\n\n/**\n * Returns a boolean as to whether the input is a valid address.\n * Does NOT support ICAP addresses\n *\n * @param address the address to check the validity of\n * @returns a boolean for whether the input is a valid address\n * @example\n * ```javascript\n * isAddress('0xc0deaf6bd3f0c6574a6a625ef2f22f62a5150eab');\n * // true\n * ```\n * @example\n * ```javascript\n * isAddress('bad');\n * // false\n * ```\n * @example\n * ```javascript\n * // Does NOT support ENS.\n * isAddress('vitalik.eth');\n * // false\n * ```\n */\nexport function isAddress(address: string): boolean {\n validateType(address, ['string']);\n try {\n toChecksumAddress(address);\n return true;\n } catch (error) {\n return false;\n }\n}\n","import { logger } from './../logger/logger';\nimport type { Signature, SignatureLike } from './bytes';\nimport {\n arrayify,\n hexlify,\n hexZeroPad,\n isBytesLike,\n isHexString,\n zeroPad,\n} from './bytes';\n\n/**\n * Expands a signature into the full signature object and fills in missing properties.\n *\n * Same as [\"splitSignature\" in ethers.js](https://docs.ethers.io/v5/api/utils/bytes/#utils-splitSignature)\n *\n * @param signature the signature object to split, parse, and compute missing properties from\n * @returns a full signature object with all properties filled\n * @example\n * ```javascript\n * const signature = '0x60bc4ed91f2021aefe7045f3f77bd12f87eb733aee24bd1965343b3c27b3971647252185b7d2abb411b01b5d1ac4ab41ea486df1e9b396758c1aec6c1b6eee331b';\n * splitSignature(signature);\n * {\n * r: \"0x60bc4ed91f2021aefe7045f3f77bd12f87eb733aee24bd1965343b3c27b39716\",\n * s: \"0x47252185b7d2abb411b01b5d1ac4ab41ea486df1e9b396758c1aec6c1b6eee33\",\n * _vs: \"0x47252185b7d2abb411b01b5d1ac4ab41ea486df1e9b396758c1aec6c1b6eee33\",\n * recoveryParam: 0,\n * v: 27,\n * yParityAndS: \"0x47252185b7d2abb411b01b5d1ac4ab41ea486df1e9b396758c1aec6c1b6eee33\",\n * compact: \"0x60bc4ed91f2021aefe7045f3f77bd12f87eb733aee24bd1965343b3c27b3971647252185b7d2abb411b01b5d1ac4ab41ea486df1e9b396758c1aec6c1b6eee33\"\n * }\n * ```\n */\nexport function splitSignature(signature: SignatureLike): Signature {\n const result = {\n r: '0x',\n s: '0x',\n _vs: '0x',\n recoveryParam: 0,\n v: 0,\n yParityAndS: '0x',\n compact: '0x',\n };\n if (isBytesLike(signature)) {\n const bytes = arrayify(signature);\n // Get the r, s and v\n if (bytes.length === 64) {\n // EIP-2098; pull the v from the top bit of s and clear it\n result.v = 27 + (bytes[32] >> 7);\n bytes[32] &= 0x7f;\n result.r = hexlify(bytes.slice(0, 32));\n result.s = hexlify(bytes.slice(32, 64));\n } else if (bytes.length === 65) {\n result.r = hexlify(bytes.slice(0, 32));\n result.s = hexlify(bytes.slice(32, 64));\n result.v = bytes[64];\n } else {\n logger.throwArgumentError(\n 'invalid signature string',\n 'signature',\n signature,\n );\n }\n // Allow a recid to be used as the v\n if (result.v < 27) {\n if (result.v === 0 || result.v === 1) {\n result.v += 27;\n } else {\n logger.throwArgumentError(\n 'signature invalid v byte',\n 'signature',\n signature,\n );\n }\n }\n // Compute recoveryParam from v\n result.recoveryParam = 1 - (result.v % 2);\n // Compute _vs from recoveryParam and s\n if (result.recoveryParam) {\n bytes[32] |= 0x80;\n }\n result._vs = hexlify(bytes.slice(32, 64));\n } else {\n result.r = signature.r;\n result.s = signature.s as string;\n result.v = signature.v as number;\n result.recoveryParam = signature.recoveryParam as number;\n result._vs = signature._vs as string;\n // If the _vs is available, use it to populate missing s, v and recoveryParam\n // and verify non-missing s, v and recoveryParam\n if (result._vs != null) {\n const vs_1 = zeroPad(arrayify(result._vs), 32);\n result._vs = hexlify(vs_1);\n // Set or check the recid\n const recoveryParam = vs_1[0] >= 128 ? 1 : 0;\n if (result.recoveryParam == null) {\n result.recoveryParam = recoveryParam;\n } else if (result.recoveryParam !== recoveryParam) {\n logger.throwArgumentError(\n 'signature recoveryParam mismatch _vs',\n 'signature',\n signature,\n );\n }\n // Set or check the s\n vs_1[0] &= 0x7f;\n const s = hexlify(vs_1);\n if (result.s == null) {\n result.s = s;\n } else if (result.s !== s) {\n logger.throwArgumentError(\n 'signature v mismatch _vs',\n 'signature',\n signature,\n );\n }\n }\n // Use recid and v to populate each other\n if (result.recoveryParam == null) {\n if (result.v == null) {\n logger.throwArgumentError(\n 'signature missing v and recoveryParam',\n 'signature',\n signature,\n );\n } else if (result.v === 0 || result.v === 1) {\n result.recoveryParam = result.v;\n } else {\n result.recoveryParam = 1 - (result.v % 2);\n }\n } else {\n if (result.v == null) {\n result.v = 27 + result.recoveryParam;\n } else {\n const recId =\n result.v === 0 || result.v === 1 ? result.v : 1 - (result.v % 2);\n if (result.recoveryParam !== recId) {\n logger.throwArgumentError(\n 'signature recoveryParam mismatch v',\n 'signature',\n signature,\n );\n }\n }\n }\n if (result.r == null || !isHexString(result.r)) {\n logger.throwArgumentError(\n 'signature missing or invalid r',\n 'signature',\n signature,\n );\n } else {\n result.r = hexZeroPad(result.r, 32);\n }\n if (result.s == null || !isHexString(result.s)) {\n logger.throwArgumentError(\n 'signature missing or invalid s',\n 'signature',\n signature,\n );\n } else {\n result.s = hexZeroPad(result.s, 32);\n }\n const vs = arrayify(result.s);\n if (vs[0] >= 128) {\n logger.throwArgumentError(\n 'signature s out of range',\n 'signature',\n signature,\n );\n }\n if (result.recoveryParam) {\n vs[0] |= 0x80;\n }\n const _vs = hexlify(vs);\n if (result._vs) {\n if (!isHexString(result._vs)) {\n logger.throwArgumentError(\n 'signature invalid _vs',\n 'signature',\n signature,\n );\n }\n result._vs = hexZeroPad(result._vs, 32);\n }\n // Set or check the _vs\n if (result._vs == null) {\n result._vs = _vs;\n } else if (result._vs !== _vs) {\n logger.throwArgumentError(\n 'signature _vs mismatch v and s',\n 'signature',\n signature,\n );\n }\n }\n result.yParityAndS = result._vs;\n result.compact = result.r + result.yParityAndS.substring(2);\n return result;\n}\n","import type Big from 'big.js';\nimport type { TinyBig } from '../shared/tiny-big/tiny-big';\nimport { tinyBig } from '../shared/tiny-big/tiny-big';\nimport { validateType } from '../shared/validate-type';\n\n/**\n * Convert from Wei to Ether\n *\n * Similar to [\"formatEther\" in ethers.js](https://docs.ethers.io/v5/api/utils/display-logic/#utils-formatEther)\n *\n * Similar to [\"fromWei\" in web3.js](https://web3js.readthedocs.io/en/v1.7.1/web3-utils.html#fromwei)\n *\n * @param weiQuantity the amount of wei to convert to ether\n * @returns a number of ether equivalent to the specified wei\n * @example\n * ```javascript\n * weiToEther('1000000000000000000000').toString()\n * // '1000'\n * weiToEther(1000000000000000000000).toString()\n * // '1000'\n * ```\n * @example\n * ```javascript\n * weiToEther('1000000000000000000000').toNumber()\n * // 1000\n * weiToEther(1000000000000000000000).toNumber()\n * // 1000\n * ```\n */\nexport function weiToEther(\n weiQuantity: string | number | TinyBig | Big,\n): TinyBig {\n validateType(weiQuantity, ['string', 'number', 'object']);\n // eslint-disable-next-line no-useless-catch\n try {\n let _weiQuantity = weiQuantity;\n if (typeof weiQuantity === 'string' && weiQuantity.slice(0, 2) === '0x') {\n _weiQuantity = BigInt(weiQuantity).toString();\n }\n const result = tinyBig(_weiQuantity).div('1000000000000000000');\n return tinyBig(result);\n } catch (error) {\n throw error;\n }\n}\n"],"names":["lookup","revLookup","Arr","Uint8Array","Array","code","i","len","length","charCodeAt","encodeChunk","uint8","start","end","num","output","push","join","b64","tmp","lens","Error","validLen","indexOf","getLens","placeHoldersLen","arr","_byteLength","curByte","extraBytes","parts","maxChunkLength","len2","buffer","offset","isLE","mLen","nBytes","e","m","eLen","eMax","eBias","nBits","d","s","NaN","Infinity","Math","pow","value","c","rt","abs","isNaN","floor","log","LN2","customInspectSymbol","Symbol","exports","Buffer","SlowBuffer","alloc","INSPECT_MAX_BYTES","K_MAX_LENGTH","createBuffer","RangeError","buf","Object","setPrototypeOf","prototype","arg","encodingOrOffset","TypeError","allocUnsafe","from","string","encoding","isEncoding","byteLength","actual","write","slice","fromString","ArrayBuffer","isView","arrayView","isInstance","copy","fromArrayBuffer","byteOffset","fromArrayLike","fromArrayView","SharedArrayBuffer","valueOf","b","obj","isBuffer","checked","undefined","numberIsNaN","type","isArray","data","fromObject","toPrimitive","assertSize","size","array","toString","mustMatch","arguments","loweredCase","utf8ToBytes","base64ToBytes","toLowerCase","slowToString","this","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","n","bidirectionalIndexOf","val","dir","arrayIndexOf","call","lastIndexOf","indexSize","arrLength","valLength","String","read","readUInt16BE","foundIndex","found","j","hexWrite","Number","remaining","strLen","parsed","parseInt","substr","utf8Write","blitBuffer","asciiWrite","str","byteArray","asciiToBytes","base64Write","ucs2Write","units","hi","lo","utf16leToBytes","base64","min","res","firstByte","codePoint","bytesPerSequence","secondByte","thirdByte","fourthByte","tempCodePoint","codePoints","MAX_ARGUMENTS_LENGTH","fromCharCode","apply","decodeCodePointsArray","kMaxLength","TYPED_ARRAY_SUPPORT","proto","foo","typedArraySupport","console","error","defineProperty","enumerable","get","poolSize","fill","allocUnsafeSlow","_isBuffer","compare","a","x","y","concat","list","pos","set","swap16","swap32","swap64","toLocaleString","equals","inspect","max","replace","trim","target","thisStart","thisEnd","thisCopy","targetCopy","includes","isFinite","toJSON","_arr","ret","out","hexSliceLookupTable","bytes","checkOffset","ext","checkInt","wrtBigUInt64LE","checkIntBI","BigInt","wrtBigUInt64BE","checkIEEE754","writeFloat","littleEndian","noAssert","ieee754","writeDouble","newBuf","subarray","readUintLE","readUIntLE","mul","readUintBE","readUIntBE","readUint8","readUInt8","readUint16LE","readUInt16LE","readUint16BE","readUint32LE","readUInt32LE","readUint32BE","readUInt32BE","readBigUInt64LE","defineBigIntMethod","validateNumber","first","last","boundsError","readBigUInt64BE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readBigInt64LE","readBigInt64BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUintLE","writeUIntLE","writeUintBE","writeUIntBE","writeUint8","writeUInt8","writeUint16LE","writeUInt16LE","writeUint16BE","writeUInt16BE","writeUint32LE","writeUInt32LE","writeUint32BE","writeUInt32BE","writeBigUInt64LE","writeBigUInt64BE","writeIntLE","limit","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeBigInt64LE","writeBigInt64BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","copyWithin","errors","E","sym","getMessage","Base","constructor","super","writable","configurable","name","message","addNumericalSeparator","range","ERR_OUT_OF_RANGE","checkBounds","ERR_INVALID_ARG_TYPE","ERR_BUFFER_OUT_OF_BOUNDS","input","msg","received","isInteger","INVALID_BASE64_RE","leadSurrogate","split","base64clean","src","dst","alphabet","table","i16","fn","BufferBigIntNotDefined","copy_1","I","O","o","oi","ii","_copy","require$$0","__esModule","default","_ref","A","C","_x","xy","x1","x2","ROUND_CONSTANTS","Uint32Array","_roundConstants","roundIndex","_piShuffles","_interopRequireDefault","_rhoOffsets","require$$1","require$$2","W","H","L","Wi","ri","r","D","x20","x21","x22","x23","x24","_chi","_iota","_rhoPi","_theta","require$$3","_permute","xorWords","readWords","_this","capacity","padding","keccak","blockSize","queueSize","queueOffset","state","stateSize","queue","_buffer","absorb","squeeze","options","reset","SHAKE","SHA3Hash","SHA3","Keccak","_sponge","createHash","allowedSizes","defaultSize","Hash","sponge","update","digest","formatOrOptions","format","hexToDecimal","hex","hexFalse","repeat","hexTrue","encodeData","jsonABIArgument","args","hash","functionString","inputs","map","functionHash","jsonABIInputsLength","shouldValidateInputLength","find","argsWithTypes","reduce","acc","_exec","basicType","exec","forEach","encodedArgs","inputType","rawArg","startsWith","character","padEnd","padStart","nodeResponse","rawOutputs","outputs","match","outputType","tinyBig","Promise","t","XMLHttpRequest","u","ok","status","statusText","url","responseURL","text","resolve","responseText","json","then","JSON","parse","blob","Blob","response","clone","headers","keys","entries","has","l","open","method","onload","getAllResponseHeaders","onerror","withCredentials","credentials","setRequestHeader","send","body","browser","self","fetch","post","unfetch","stringify","_unused","result","buildRPCPostBody","params","jsonrpc","id","estimateGas","txnData","previousValue","currentValue","BaseContract","addressOrName","contractInterface","signerOrProvider","_address","_provider","filter","_args","functionArguments","lastArg","gasLimit","gas","req","selectRpcUrl","to","decimalGas","reject","decodeRPCResponse","_this2","Contract","logger","Logger","packageVersion","throwError","argsLength","index","throwArgumentError","checkSafeUint53","operation","fault","MAX_DP","NAME","INVALID","INVALID_DP","DIV_BY_ZERO","P","UNDEFINED","NUMERIC","round","sd","rm","more","xc","RM","unshift","pop","doExponential","isNonzero","charAt","cmp","isneg","yc","k","div","Big","dp","DP","bl","bt","bz","ai","al","rl","q","qc","qi","p","shift","eq","gt","gte","lt","lte","minus","xlty","plus","xe","ye","reverse","mod","ygtx","times","neg","add","one","prec","sqrt","half","toExponential","toFixed","for","NE","PE","toNumber","strict","toPrecision","_Big_","nl","test","search","substring","roundDown","roundHalfUp","roundHalfEven","roundUp","stripTrailingZeroes","numberString","isNegative","scientificStrToDecimalStr","scientificString","base","power","_scientificString$spl","_base$split","wholeNumber","_base$split$","fraction","splitPaddedNumber","baseLength","splice","TinyBig","_Big","padAndChop","padChar","_inheritsLoose","_proto","toHexString","toTwos","bitCount","binaryStr","twosComp","transaction","cleanedTransaction","key","toChecksumAddress","validateType","allowedTypes","address","checksumAddress","addressHash","toUpperCase","cleanLog","receiptLog","cleanedLog","isBytesLike","isHexString","isBytes","v","arrayify","allowMissingPrefix","isHexable","hexPad","arrayOfBytesLike","objects","item","accum","object","zeroPad","HexCharacters","hexlify","endOffset","hexStripZeros","hexZeroPad","prepareTransaction","preparedTransaction","chainsInfo","blockTag","BaseProvider","rpcUrls","_rpcUrls","_post","getNetwork","hexChainId","chainId","info","ensAddress","getBlockNumber","currentBlockNumber","getTransaction","transactionHash","all","getBlock","blockNumber","cleanTransaction","confirmations","number","getTransactionReceipt","rpcTransaction","_ref2","cleanedTransactionReceipt","transactionReceipt","byzantium","cleanTransactionReceipt","getTransactionCount","prepBlockTag","transactionCount","timeFrame","returnTransactionObjects","rpcBlock","block","cleanedBlock","transactions","getGasPrice","hexGasPrice","getBalance","hexBalance","getCode","gasUsed","getLogs","filterByRange","fromBlock","toBlock","rpcLogs","gasPrice","maxPriorityFeePerGas","maxFeePerGas","FallthroughProvider","_BaseProvider","rpcUrlCounter","timeoutDuration","genesisCount","recursivePostRetry","prom","time","genesisRpcUrl","race","_r","setTimeout","JsonRpcProvider","rpcUrl","keccak256","bufferableData","_0n","_1n","_2n","_3n","_8n","POW_2_256","CURVE","h","Gx","Gy","beta","weistrass","x3","USE_ENDOMORPHISM","JacobianPoint","z","static","Point","points","toInv","nums","scratch","lastMultiplied","inverted","invert","reduceRight","invertBatch","toAffine","toAffineBatch","fromAffine","other","X1","Y1","Z1","X2","Y2","Z2","Z1Z1","Z2Z2","U1","U2","S1","S2","negate","double","B","F","X3","Y3","Z3","ZERO","HH","HHH","V","subtract","multiplyUnsafe","scalar","normalizeScalar","P0","k1neg","k1","k2neg","k2","splitScalarEndo","k1p","k2p","precomputeWindow","windows","window","wNAF","affinePoint","BASE","_WINDOW_SIZE","precomputes","pointPrecomputes","normalizeZ","f","windowSize","mask","maxNumber","shiftBy","wbits","pr","cached","multiply","point","fake","f1p","f2p","invZ","iz1","iz2","iz3","ax","ay","WeakMap","_setWindowSize","delete","isShort","bytesToNumber","isValidFieldElement","_6n","_11n","_22n","_23n","_44n","_88n","b2","b3","b6","pow2","b9","b11","b22","b44","b88","b176","b220","b223","t1","t2","sqrtMod","isYOdd","assertValidity","ensureBytes","header","fromCompressedHex","fromUncompressedHex","privateKey","isSafeInteger","hexToNumber","isUint8a","isWithinCurveOrder","normalizePrivateKey","msgHash","signature","recovery","delta","truncateHash","Signature","fromDER","fromCompact","normalizeSignature","R","fromHex","numTo32bStr","rinv","u1","u2","Q","multiplyAndAddUnsafe","toRawBytes","isCompressed","hexToBytes","toHex","toHexX","toRawX","left","aP","bQ","sum","sliceDER","parseDERInt","bytesToHex","sBytes","rBytesLeft","parseDERSignature","hasHighS","normalizeS","toDERRawBytes","toDERHex","sHex","numberToHexUnpadded","rHex","rLen","sLen","toCompactRawBytes","toCompactHex","hexes","uint8a","hexByte","byte","modulo","divNearest","POW_2_128","a1","b1","a2","c1","c2","computePublicKey","privKey","fromPrivateKey","toUtf8Bytes","regexBytes","RegExp","regexNumber","regexArray","_pack","baseType","pack","types","values","tight","computeAddress","hexDataSlice","etherQuantity","gweiQuantity","items","trimmed","_vs","recoveryParam","yParityAndS","compact","vs_1","vs","weiToEther","weiQuantity","_weiQuantity"],"mappings":"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"}
1
+ {"version":3,"file":"index.umd.js","sources":["../../node_modules/base64-js/index.js","../../node_modules/ieee754/index.js","../../node_modules/sha3/node_modules/buffer/index.js","../../node_modules/sha3/sponge/permute/copy/index.js","../../node_modules/sha3/sponge/permute/chi/index.js","../../node_modules/sha3/sponge/permute/iota/round-constants/index.js","../../node_modules/sha3/sponge/permute/iota/index.js","../../node_modules/sha3/sponge/permute/rho-pi/pi-shuffles/index.js","../../node_modules/sha3/sponge/permute/rho-pi/rho-offsets/index.js","../../node_modules/sha3/sponge/permute/rho-pi/index.js","../../node_modules/sha3/sponge/permute/theta/index.js","../../node_modules/sha3/sponge/permute/index.js","../../node_modules/sha3/sponge/index.js","../../node_modules/sha3/index.js","../../src/classes/utils/hex-to-decimal.ts","../../src/classes/utils/encode-decode-transaction.ts","../../src/classes/Contract.ts","../../src/logger/logger.ts","../../src/logger/package-version.ts","../../node_modules/big.js/big.mjs","../../src/shared/tiny-big/helpers.ts","../../src/shared/tiny-big/tiny-big.ts","../../src/classes/utils/clean-transaction.ts","../../src/shared/validate-type.ts","../../src/utils/to-checksum-address.ts","../../src/classes/utils/clean-log.ts","../../node_modules/unfetch/dist/unfetch.module.js","../../node_modules/isomorphic-unfetch/browser.js","../../src/classes/utils/fetchers.ts","../../src/utils/bytes.ts","../../src/classes/utils/prepare-transaction.ts","../../src/providers/utils/chains-info.ts","../../src/providers/BaseProvider.ts","../../src/classes/utils/clean-transaction-receipt.ts","../../src/classes/utils/clean-block.ts","../../src/providers/FallthroughProvider.ts","../../src/providers/JsonRpcProvider.ts","../../src/utils/keccak256.ts","../../node_modules/@noble/secp256k1/lib/esm/index.js","../../src/utils/compute-public-key.ts","../../src/utils/to-utf8-bytes.ts","../../node_modules/buffer/index.js","../../src/utils/solidity-keccak256.ts","../../src/utils/compute-address.ts","../../src/utils/ether-to-gwei.ts","../../src/utils/ether-to-wei.ts","../../src/utils/gwei-to-ether.ts","../../src/utils/hash-message.ts","../../src/utils/is-address.ts","../../src/utils/split-signature.ts","../../src/utils/wei-to-ether.ts"],"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","\"use strict\";var copy=function copy(I,i){return function(O,o){var oi=o*2;var ii=i*2;O[oi]=I[ii];O[oi+1]=I[ii+1]}};module.exports=copy;","\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});exports[\"default\"]=void 0;var _copy=_interopRequireDefault(require(\"../copy\"));function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{\"default\":obj}}var chi=function chi(_ref){var A=_ref.A,C=_ref.C;for(var y=0;y<25;y+=5){for(var x=0;x<5;x++){(0,_copy[\"default\"])(A,y+x)(C,x)}for(var _x=0;_x<5;_x++){var xy=(y+_x)*2;var x1=(_x+1)%5*2;var x2=(_x+2)%5*2;A[xy]^=~C[x1]&C[x2];A[xy+1]^=~C[x1+1]&C[x2+1]}}};var _default=chi;exports[\"default\"]=_default;","\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});exports[\"default\"]=void 0;var ROUND_CONSTANTS=new Uint32Array([0,1,0,32898,2147483648,32906,2147483648,2147516416,0,32907,0,2147483649,2147483648,2147516545,2147483648,32777,0,138,0,136,0,2147516425,0,2147483658,0,2147516555,2147483648,139,2147483648,32905,2147483648,32771,2147483648,32770,2147483648,128,0,32778,2147483648,2147483658,2147483648,2147516545,2147483648,32896,0,2147483649,2147483648,2147516424]);var _default=ROUND_CONSTANTS;exports[\"default\"]=_default;","\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});exports[\"default\"]=void 0;var _roundConstants=_interopRequireDefault(require(\"./round-constants\"));function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{\"default\":obj}}var iota=function iota(_ref){var A=_ref.A,roundIndex=_ref.roundIndex;var i=roundIndex*2;A[0]^=_roundConstants[\"default\"][i];A[1]^=_roundConstants[\"default\"][i+1]};var _default=iota;exports[\"default\"]=_default;","\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});exports[\"default\"]=void 0;var PI_SHUFFLES=[10,7,11,17,18,3,5,16,8,21,24,4,15,23,19,13,12,2,20,14,22,9,6,1];var _default=PI_SHUFFLES;exports[\"default\"]=_default;","\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});exports[\"default\"]=void 0;var RHO_OFFSETS=[1,3,6,10,15,21,28,36,45,55,2,14,27,41,56,8,25,43,62,18,39,61,20,44];var _default=RHO_OFFSETS;exports[\"default\"]=_default;","\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});exports[\"default\"]=void 0;var _piShuffles=_interopRequireDefault(require(\"./pi-shuffles\"));var _rhoOffsets=_interopRequireDefault(require(\"./rho-offsets\"));var _copy=_interopRequireDefault(require(\"../copy\"));function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{\"default\":obj}}var rhoPi=function rhoPi(_ref){var A=_ref.A,C=_ref.C,W=_ref.W;(0,_copy[\"default\"])(A,1)(W,0);var H=0;var L=0;var Wi=0;var ri=32;for(var i=0;i<24;i++){var j=_piShuffles[\"default\"][i];var r=_rhoOffsets[\"default\"][i];(0,_copy[\"default\"])(A,j)(C,0);H=W[0];L=W[1];ri=32-r;Wi=r<32?0:1;W[Wi]=H<<r|L>>>ri;W[(Wi+1)%2]=L<<r|H>>>ri;(0,_copy[\"default\"])(W,0)(A,j);(0,_copy[\"default\"])(C,0)(W,0)}};var _default=rhoPi;exports[\"default\"]=_default;","\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});exports[\"default\"]=void 0;var _copy=_interopRequireDefault(require(\"../copy\"));function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{\"default\":obj}}var theta=function theta(_ref){var A=_ref.A,C=_ref.C,D=_ref.D,W=_ref.W;var H=0;var L=0;for(var x=0;x<5;x++){var x20=x*2;var x21=(x+5)*2;var x22=(x+10)*2;var x23=(x+15)*2;var x24=(x+20)*2;C[x20]=A[x20]^A[x21]^A[x22]^A[x23]^A[x24];C[x20+1]=A[x20+1]^A[x21+1]^A[x22+1]^A[x23+1]^A[x24+1]}for(var _x=0;_x<5;_x++){(0,_copy[\"default\"])(C,(_x+1)%5)(W,0);H=W[0];L=W[1];W[0]=H<<1|L>>>31;W[1]=L<<1|H>>>31;D[_x*2]=C[(_x+4)%5*2]^W[0];D[_x*2+1]=C[(_x+4)%5*2+1]^W[1];for(var y=0;y<25;y+=5){A[(y+_x)*2]^=D[_x*2];A[(y+_x)*2+1]^=D[_x*2+1]}}};var _default=theta;exports[\"default\"]=_default;","\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});exports[\"default\"]=void 0;var _chi=_interopRequireDefault(require(\"./chi\"));var _iota=_interopRequireDefault(require(\"./iota\"));var _rhoPi=_interopRequireDefault(require(\"./rho-pi\"));var _theta=_interopRequireDefault(require(\"./theta\"));function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{\"default\":obj}}var permute=function permute(){var C=new Uint32Array(10);var D=new Uint32Array(10);var W=new Uint32Array(2);return function(A){for(var roundIndex=0;roundIndex<24;roundIndex++){(0,_theta[\"default\"])({A:A,C:C,D:D,W:W});(0,_rhoPi[\"default\"])({A:A,C:C,W:W});(0,_chi[\"default\"])({A:A,C:C});(0,_iota[\"default\"])({A:A,roundIndex:roundIndex})}C.fill(0);D.fill(0);W.fill(0)}};var _default=permute;exports[\"default\"]=_default;","\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});exports[\"default\"]=void 0;var _buffer=require(\"buffer\");var _permute=_interopRequireDefault(require(\"./permute\"));function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{\"default\":obj}}var xorWords=function xorWords(I,O){for(var i=0;i<I.length;i+=8){var o=i/4;O[o]^=I[i+7]<<24|I[i+6]<<16|I[i+5]<<8|I[i+4];O[o+1]^=I[i+3]<<24|I[i+2]<<16|I[i+1]<<8|I[i]}return O};var readWords=function readWords(I,O){for(var o=0;o<O.length;o+=8){var i=o/4;O[o]=I[i+1];O[o+1]=I[i+1]>>>8;O[o+2]=I[i+1]>>>16;O[o+3]=I[i+1]>>>24;O[o+4]=I[i];O[o+5]=I[i]>>>8;O[o+6]=I[i]>>>16;O[o+7]=I[i]>>>24}return O};var Sponge=function Sponge(_ref){var _this=this;var capacity=_ref.capacity,padding=_ref.padding;var keccak=(0,_permute[\"default\"])();var stateSize=200;var blockSize=capacity/8;var queueSize=stateSize-capacity/4;var queueOffset=0;var state=new Uint32Array(stateSize/4);var queue=_buffer.Buffer.allocUnsafe(queueSize);this.absorb=function(buffer){for(var i=0;i<buffer.length;i++){queue[queueOffset]=buffer[i];queueOffset+=1;if(queueOffset>=queueSize){xorWords(queue,state);keccak(state);queueOffset=0}}return _this};this.squeeze=function(){var options=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};var output={buffer:options.buffer||_buffer.Buffer.allocUnsafe(blockSize),padding:options.padding||padding,queue:_buffer.Buffer.allocUnsafe(queue.length),state:new Uint32Array(state.length)};queue.copy(output.queue);for(var i=0;i<state.length;i++){output.state[i]=state[i]}output.queue.fill(0,queueOffset);output.queue[queueOffset]|=output.padding;output.queue[queueSize-1]|=128;xorWords(output.queue,output.state);for(var offset=0;offset<output.buffer.length;offset+=queueSize){keccak(output.state);readWords(output.state,output.buffer.slice(offset,offset+queueSize))}return output.buffer};this.reset=function(){queue.fill(0);state.fill(0);queueOffset=0;return _this};return this};var _default=Sponge;exports[\"default\"]=_default;","\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});exports[\"default\"]=exports.SHAKE=exports.SHA3Hash=exports.SHA3=exports.Keccak=void 0;var _buffer=require(\"buffer\");var _sponge=_interopRequireDefault(require(\"./sponge\"));function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{\"default\":obj}}var createHash=function createHash(_ref){var allowedSizes=_ref.allowedSizes,defaultSize=_ref.defaultSize,padding=_ref.padding;return function Hash(){var _this=this;var size=arguments.length>0&&arguments[0]!==undefined?arguments[0]:defaultSize;if(!this||this.constructor!==Hash){return new Hash(size)}if(allowedSizes&&!allowedSizes.includes(size)){throw new Error(\"Unsupported hash length\")}var sponge=new _sponge[\"default\"]({capacity:size});this.update=function(input){var encoding=arguments.length>1&&arguments[1]!==undefined?arguments[1]:\"utf8\";if(_buffer.Buffer.isBuffer(input)){sponge.absorb(input);return _this}if(typeof input===\"string\"){return _this.update(_buffer.Buffer.from(input,encoding))}throw new TypeError(\"Not a string or buffer\")};this.digest=function(){var formatOrOptions=arguments.length>0&&arguments[0]!==undefined?arguments[0]:\"binary\";var options=typeof formatOrOptions===\"string\"?{format:formatOrOptions}:formatOrOptions;var buffer=sponge.squeeze({buffer:options.buffer,padding:options.padding||padding});if(options.format&&options.format!==\"binary\"){return buffer.toString(options.format)}return buffer};this.reset=function(){sponge.reset();return _this};return this}};var Keccak=createHash({allowedSizes:[224,256,384,512],defaultSize:512,padding:1});exports.Keccak=Keccak;var SHA3=createHash({allowedSizes:[224,256,384,512],defaultSize:512,padding:6});exports.SHA3=SHA3;var SHAKE=createHash({allowedSizes:[128,256],defaultSize:256,padding:31});exports.SHAKE=SHAKE;var SHA3Hash=Keccak;exports.SHA3Hash=SHA3Hash;SHA3.SHA3Hash=SHA3Hash;var _default=SHA3;exports[\"default\"]=_default;","/**\n * Converts a hexadecimal string it's decimal equivalent.\n * This is needed instead of parseInt because parseInt loses precision.\n *\n * @param hex the hex string to be converted to decimal\n * @returns a decimal value equivalent to the hex string given\n * @example\n * ```javascript\n * hexToDecimal('0x34');\n * // 52\n * ```\n * @example\n * ```javascript\n * hexToDecimal('0x628608');\n * // 6456840\n * ```\n */\nexport function hexToDecimal(hex: string) {\n return BigInt(hex).toString();\n}\n","import { Keccak } from 'sha3';\nimport { tinyBig, toChecksumAddress } from '../..';\nimport type {\n ContractTypes,\n JSONABIArgument,\n} from '../../types/Contract.types';\nimport { hexToDecimal } from './hex-to-decimal';\n\nexport const hexFalse = '0'.repeat(64);\nconst hexTrue = '0'.repeat(63) + '1';\n\n/**\n * Expands an integer type to use a default of 256 bits. Used for consistency; not required in Solidity\n *\n * @see https://ethereum.stackexchange.com/questions/43241/why-write-uint256-instead-of-uint-if-theyre-the-same-thing\n * @param type the type to explicitly define as 256 bits\n * @returns the integer type expanded to explicitly be 256 bits when possible\n * @example\n * ```javascript\n * expandType('uint[]');\n * // 'uint256[]'\n * ```\n */\nfunction expandType(type: ContractTypes) {\n // https://docs.soliditylang.org/en/v0.8.7/types.html#integers\n if (type === 'uint[]') {\n return 'uint256[]';\n } else if (type === 'int[]') {\n return 'int256[]';\n }\n return type;\n}\n/**\n *\n * @param jsonABIArgument\n * @param args\n * @example\n */\nexport function encodeData(jsonABIArgument: JSONABIArgument, args: any[]) {\n const hash = new Keccak(256);\n /* first 4 bytes will create the data parameter */\n const functionString = `${jsonABIArgument.name}(${jsonABIArgument.inputs.map(\n (input) => expandType(input.type),\n )})`;\n\n // encoding learnt from https://ethereum.stackexchange.com/questions/3514/how-to-call-a-contract-method-using-the-eth-call-json-rpc-api\n const functionHash = hash.update(functionString).digest('hex');\n // no arrays\n const jsonABIInputsLength = jsonABIArgument.inputs.length;\n let shouldValidateInputLength = true;\n\n // inputs contains 1 or more arrays\n if (jsonABIArgument.inputs.find((input) => input.type.includes('['))) {\n shouldValidateInputLength = false;\n }\n if (shouldValidateInputLength && args.length !== jsonABIInputsLength) {\n throw new Error(\n `args inputs of \"${args.length}\" does not match expected length of \"${jsonABIArgument.inputs.length}\"`,\n );\n }\n\n const argsWithTypes: [arg: any, type: ContractTypes][] = (\n jsonABIArgument.inputs || []\n ).reduce((acc, input, i) => {\n if (input.type.includes('[')) {\n // strip array and length like \"[2]\" from type\n const basicType = /([^[]*)\\[.*$/g.exec(input.type)?.[1] as string;\n args.forEach((arg: any) => {\n acc = acc.concat([[arg, basicType]]);\n });\n return acc;\n } else {\n return acc.concat([[args[i], input.type]]);\n }\n }, [] as [arg: any, type: ContractTypes][]);\n\n const encodedArgs = argsWithTypes.map(([arg, inputType]) => {\n let rawArg = arg;\n switch (inputType) {\n case 'bool':\n return arg ? hexTrue : hexFalse;\n case 'address':\n // remove leading \"0x\"\n rawArg = arg.replace(/^0x/g, '').toLowerCase();\n break;\n default:\n if (inputType.startsWith('bytes')) {\n // encode each character to hex\n const argEncoded = rawArg\n .split('')\n .map((character: string) => character.charCodeAt(0).toString(16))\n .join('');\n const paddedEncodedArg = argEncoded.padEnd(64, '0');\n return paddedEncodedArg;\n } else if (inputType === 'uint256') {\n const argEncoded = BigInt(arg).toString(16);\n const paddedEncodedArg = argEncoded.padStart(64, '0');\n return paddedEncodedArg;\n } else if (inputType.startsWith('uint')) {\n break;\n } else {\n throw new Error(\n `essential-eth does not yet support \"${inputType}\" inputs. Make a PR today!\"`,\n );\n }\n }\n const argEncoded = rawArg.toString(16) as string;\n const paddedEncodedArg = argEncoded.padStart(64, '0');\n return paddedEncodedArg;\n });\n const functionEncoded = functionHash.slice(0, 8);\n const data = `0x${functionEncoded}${encodedArgs.join('')}`;\n return data;\n}\n\n/**\n * @internal\n * @param jsonABIArgument\n * @param nodeResponse\n * @example\n */\nexport function decodeRPCResponse(\n jsonABIArgument: JSONABIArgument,\n nodeResponse: string,\n) {\n const rawOutputs = jsonABIArgument.outputs;\n // chunk response every 64 characters\n const encodedOutputs = nodeResponse.slice(2).match(/.{1,64}/g);\n const outputs = (encodedOutputs || []).map((output: string, i: number) => {\n const outputType = (rawOutputs || [])[i].type;\n switch (outputType) {\n case 'bool':\n return output === hexTrue;\n case 'address':\n /* address types have 26 leading zeroes to remove */\n return toChecksumAddress(`0x${output.slice(24)}`);\n case 'uint256':\n case 'uint120':\n return tinyBig(hexToDecimal(`0x${output}`));\n case 'bytes32':\n return `0x${output}`;\n case 'uint8':\n return Number(hexToDecimal(`0x${output}`));\n default:\n throw new Error(\n `essential-eth does not yet support \"${outputType}\" outputs. Make a PR today!\"`,\n );\n }\n });\n\n return outputs.length === 1 ? outputs[0] : outputs;\n}\n","import type { JsonRpcProvider } from '../providers/JsonRpcProvider';\nimport type { ContractInterface } from '../types/Contract.types';\nimport {\n decodeRPCResponse,\n encodeData,\n} from './utils/encode-decode-transaction';\n/**\n * @param txnData\n * @example\n */\nfunction estimateGas(txnData: string) {\n // https://ethereum.stackexchange.com/questions/1570/what-does-intrinsic-gas-too-low-mean/1694\n txnData.split('').reduce((previousValue, currentValue) => {\n // 0 characters are 4 gwei, all others are 48 gwei\n const characterCost = currentValue === '0' ? 4 : 68;\n return previousValue + characterCost;\n }, 0);\n}\ninterface Options {\n gasLimit?: number;\n}\nexport class BaseContract {\n /**\n * The URL to your Eth node. Consider POKT or Infura\n */\n private readonly _address: string;\n private readonly _provider: JsonRpcProvider;\n\n /**\n * @param addressOrName The ethereum address of the smart-contract\n * @param contractInterface The JSON ABI of the smart-contract (like http://api.etherscan.io/api?module=contract&action=getabi&address=0x090d4613473dee047c3f2706764f49e0821d256e&format=raw)\n * @param signerOrProvider An instantiated essential-eth provider\n * @example\n */\n constructor(\n addressOrName: string,\n contractInterface: ContractInterface,\n signerOrProvider: JsonRpcProvider,\n ) {\n this._address = addressOrName;\n this._provider = signerOrProvider;\n contractInterface\n .filter((jsonABIArgument) => jsonABIArgument.type === 'function')\n .forEach((jsonABIArgument) => {\n if (\n 'name' in jsonABIArgument &&\n typeof jsonABIArgument.name === 'string'\n ) {\n defineReadOnly(\n this,\n jsonABIArgument.name,\n async (..._args: any[]) => {\n let functionArguments = _args;\n let options: Options = {};\n // remove options from encoding\n const lastArg = _args[_args.length - 1];\n if (!Array.isArray(lastArg) && typeof lastArg === 'object') {\n options = lastArg;\n functionArguments = _args.slice(0, _args.length - 1);\n }\n\n const data = encodeData(jsonABIArgument, functionArguments);\n\n const decimalGas =\n typeof options.gasLimit === 'number'\n ? options.gasLimit /* user passed in \"gasLimit\" directly */\n : typeof jsonABIArgument?.gas ===\n 'number' /* ABI specified \"gas\". */\n ? estimateGas(data)\n : null;\n const req = async (): Promise<string> => {\n return await this._provider.call(\n {\n to: this._address.toLowerCase(),\n data,\n // sometimes gas is defined in the ABI\n ...(decimalGas\n ? { gas: `0x${decimalGas.toString(16)}` }\n : {}),\n },\n 'latest',\n );\n };\n const nodeResponse = await req();\n return decodeRPCResponse(jsonABIArgument, nodeResponse);\n },\n );\n }\n });\n }\n}\n\n/**\n * Applies the unique contract's methods to the instantiated Contract in the constructor based-upon the provided ABI\n *\n * @param object\n * @param name\n * @param value\n * @internal\n * @example\n */\nexport function defineReadOnly<T>(object: T, name: string, value: any): void {\n Object.defineProperty(object, name, {\n enumerable: true,\n value: value,\n writable: false,\n });\n}\n\n/**\n * @alpha\n * Only accepts ABIS in JSON format. This allows for stronger typing and assurances of data-types\n * Only read-only function calls currently supported.\n * @example\n * ```typescript\n * import { Contract, JsonRpcProvider } from 'essential-eth';\n * // UNI airdrop contract\n * const contractAddress = '0x090D4613473dEE047c3f2706764f49E0821D256e';\n * const provider = new JsonRpcProvider();\n * // for more robust contract calls, provide a fallback:\n * // const provider = new FallthroughProvider(['bad', 'https://free-eth-node.com/api/eth']);\n *\n * const JSONABI = [\n * {\n * inputs: [\n * {\n * internalType: 'uint256',\n * name: 'index',\n * type: 'uint256',\n * },\n * ],\n * name: 'isClaimed',\n * outputs: [\n * {\n * internalType: 'bool',\n * name: '',\n * type: 'bool',\n * },\n * ],\n * stateMutability: 'view',\n * type: 'function',\n * },\n * ]\n *\n * const contract = new Contract(\n * contractAddress,\n * JSONABI,\n * provider,\n * );\n *\n * (async () => {\n * // prints boolean as to whether index 0 has claimed airdrop or not\n * console.log(await contract.isClaimed(0));\n * })()\n *\n *\n * ```\n */\nexport class Contract extends BaseContract {\n // The dynamic function names within a given smart-contract\n /**\n * The function names on any given contract. Like \"isClaimed\", \"merkleRoot\", etc.\n */\n readonly [key: string]: any;\n // readonly [key: string]: ContractFunction | any;\n}\n","import { version } from './package-version';\nclass Logger {\n private packageVersion: string;\n constructor() {\n this.packageVersion = version;\n }\n public throwError(message: string, args: { [key: string]: any }): never {\n const argsLength = Object.keys(args).length;\n throw new Error(\n `${message} (${Object.entries(args).map(\n ([key, value], index) =>\n `${key}=${value}${index < argsLength - 1 && ', '}`,\n )}, version=essential-eth@${this.packageVersion})`,\n );\n }\n public throwArgumentError(message: string, arg: string, value: any): never {\n throw new Error(\n `${message} (argument=\"${arg}\" value=${value}, version=essential-eth@${this.packageVersion})`,\n );\n }\n public checkSafeUint53(value: number, message = 'value not safe'): void {\n if (typeof value !== 'number') {\n return;\n }\n\n if (value < 0 || value >= 0x1fffffffffffff) {\n this.throwError(message, {\n operation: 'checkSafeInteger',\n fault: 'out-of-safe-range',\n value: value,\n });\n }\n\n if (value % 1) {\n this.throwError(message, {\n operation: 'checkSafeInteger',\n fault: 'non-integer',\n value: value,\n });\n }\n }\n}\n\nexport const logger = new Logger();\n","// Generated by genversion.\nexport const version = '0.6.2';\n","/*\r\n * big.js v6.2.1\r\n * A small, fast, easy-to-use library for arbitrary-precision decimal arithmetic.\r\n * Copyright (c) 2022 Michael Mclaughlin\r\n * https://github.com/MikeMcl/big.js/LICENCE.md\r\n */\r\n\r\n\r\n/************************************** EDITABLE DEFAULTS *****************************************/\r\n\r\n\r\n // The default values below must be integers within the stated ranges.\r\n\r\n /*\r\n * The maximum number of decimal places (DP) of the results of operations involving division:\r\n * div and sqrt, and pow with negative exponents.\r\n */\r\nvar DP = 20, // 0 to MAX_DP\r\n\r\n /*\r\n * The rounding mode (RM) used when rounding to the above decimal places.\r\n *\r\n * 0 Towards zero (i.e. truncate, no rounding). (ROUND_DOWN)\r\n * 1 To nearest neighbour. If equidistant, round up. (ROUND_HALF_UP)\r\n * 2 To nearest neighbour. If equidistant, to even. (ROUND_HALF_EVEN)\r\n * 3 Away from zero. (ROUND_UP)\r\n */\r\n RM = 1, // 0, 1, 2 or 3\r\n\r\n // The maximum value of DP and Big.DP.\r\n MAX_DP = 1E6, // 0 to 1000000\r\n\r\n // The maximum magnitude of the exponent argument to the pow method.\r\n MAX_POWER = 1E6, // 1 to 1000000\r\n\r\n /*\r\n * The negative exponent (NE) at and beneath which toString returns exponential notation.\r\n * (JavaScript numbers: -7)\r\n * -1000000 is the minimum recommended exponent value of a Big.\r\n */\r\n NE = -7, // 0 to -1000000\r\n\r\n /*\r\n * The positive exponent (PE) at and above which toString returns exponential notation.\r\n * (JavaScript numbers: 21)\r\n * 1000000 is the maximum recommended exponent value of a Big, but this limit is not enforced.\r\n */\r\n PE = 21, // 0 to 1000000\r\n\r\n /*\r\n * When true, an error will be thrown if a primitive number is passed to the Big constructor,\r\n * or if valueOf is called, or if toNumber is called on a Big which cannot be converted to a\r\n * primitive number without a loss of precision.\r\n */\r\n STRICT = false, // true or false\r\n\r\n\r\n/**************************************************************************************************/\r\n\r\n\r\n // Error messages.\r\n NAME = '[big.js] ',\r\n INVALID = NAME + 'Invalid ',\r\n INVALID_DP = INVALID + 'decimal places',\r\n INVALID_RM = INVALID + 'rounding mode',\r\n DIV_BY_ZERO = NAME + 'Division by zero',\r\n\r\n // The shared prototype object.\r\n P = {},\r\n UNDEFINED = void 0,\r\n NUMERIC = /^-?(\\d+(\\.\\d*)?|\\.\\d+)(e[+-]?\\d+)?$/i;\r\n\r\n\r\n/*\r\n * Create and return a Big constructor.\r\n */\r\nfunction _Big_() {\r\n\r\n /*\r\n * The Big constructor and exported function.\r\n * Create and return a new instance of a Big number object.\r\n *\r\n * n {number|string|Big} A numeric value.\r\n */\r\n function Big(n) {\r\n var x = this;\r\n\r\n // Enable constructor usage without new.\r\n if (!(x instanceof Big)) return n === UNDEFINED ? _Big_() : new Big(n);\r\n\r\n // Duplicate.\r\n if (n instanceof Big) {\r\n x.s = n.s;\r\n x.e = n.e;\r\n x.c = n.c.slice();\r\n } else {\r\n if (typeof n !== 'string') {\r\n if (Big.strict === true && typeof n !== 'bigint') {\r\n throw TypeError(INVALID + 'value');\r\n }\r\n\r\n // Minus zero?\r\n n = n === 0 && 1 / n < 0 ? '-0' : String(n);\r\n }\r\n\r\n parse(x, n);\r\n }\r\n\r\n // Retain a reference to this Big constructor.\r\n // Shadow Big.prototype.constructor which points to Object.\r\n x.constructor = Big;\r\n }\r\n\r\n Big.prototype = P;\r\n Big.DP = DP;\r\n Big.RM = RM;\r\n Big.NE = NE;\r\n Big.PE = PE;\r\n Big.strict = STRICT;\r\n Big.roundDown = 0;\r\n Big.roundHalfUp = 1;\r\n Big.roundHalfEven = 2;\r\n Big.roundUp = 3;\r\n\r\n return Big;\r\n}\r\n\r\n\r\n/*\r\n * Parse the number or string value passed to a Big constructor.\r\n *\r\n * x {Big} A Big number instance.\r\n * n {number|string} A numeric value.\r\n */\r\nfunction parse(x, n) {\r\n var e, i, nl;\r\n\r\n if (!NUMERIC.test(n)) {\r\n throw Error(INVALID + 'number');\r\n }\r\n\r\n // Determine sign.\r\n x.s = n.charAt(0) == '-' ? (n = n.slice(1), -1) : 1;\r\n\r\n // Decimal point?\r\n if ((e = n.indexOf('.')) > -1) n = n.replace('.', '');\r\n\r\n // Exponential form?\r\n if ((i = n.search(/e/i)) > 0) {\r\n\r\n // Determine exponent.\r\n if (e < 0) e = i;\r\n e += +n.slice(i + 1);\r\n n = n.substring(0, i);\r\n } else if (e < 0) {\r\n\r\n // Integer.\r\n e = n.length;\r\n }\r\n\r\n nl = n.length;\r\n\r\n // Determine leading zeros.\r\n for (i = 0; i < nl && n.charAt(i) == '0';) ++i;\r\n\r\n if (i == nl) {\r\n\r\n // Zero.\r\n x.c = [x.e = 0];\r\n } else {\r\n\r\n // Determine trailing zeros.\r\n for (; nl > 0 && n.charAt(--nl) == '0';);\r\n x.e = e - i - 1;\r\n x.c = [];\r\n\r\n // Convert string to array of digits without leading/trailing zeros.\r\n for (e = 0; i <= nl;) x.c[e++] = +n.charAt(i++);\r\n }\r\n\r\n return x;\r\n}\r\n\r\n\r\n/*\r\n * Round Big x to a maximum of sd significant digits using rounding mode rm.\r\n *\r\n * x {Big} The Big to round.\r\n * sd {number} Significant digits: integer, 0 to MAX_DP inclusive.\r\n * rm {number} Rounding mode: 0 (down), 1 (half-up), 2 (half-even) or 3 (up).\r\n * [more] {boolean} Whether the result of division was truncated.\r\n */\r\nfunction round(x, sd, rm, more) {\r\n var xc = x.c;\r\n\r\n if (rm === UNDEFINED) rm = x.constructor.RM;\r\n if (rm !== 0 && rm !== 1 && rm !== 2 && rm !== 3) {\r\n throw Error(INVALID_RM);\r\n }\r\n\r\n if (sd < 1) {\r\n more =\r\n rm === 3 && (more || !!xc[0]) || sd === 0 && (\r\n rm === 1 && xc[0] >= 5 ||\r\n rm === 2 && (xc[0] > 5 || xc[0] === 5 && (more || xc[1] !== UNDEFINED))\r\n );\r\n\r\n xc.length = 1;\r\n\r\n if (more) {\r\n\r\n // 1, 0.1, 0.01, 0.001, 0.0001 etc.\r\n x.e = x.e - sd + 1;\r\n xc[0] = 1;\r\n } else {\r\n\r\n // Zero.\r\n xc[0] = x.e = 0;\r\n }\r\n } else if (sd < xc.length) {\r\n\r\n // xc[sd] is the digit after the digit that may be rounded up.\r\n more =\r\n rm === 1 && xc[sd] >= 5 ||\r\n rm === 2 && (xc[sd] > 5 || xc[sd] === 5 &&\r\n (more || xc[sd + 1] !== UNDEFINED || xc[sd - 1] & 1)) ||\r\n rm === 3 && (more || !!xc[0]);\r\n\r\n // Remove any digits after the required precision.\r\n xc.length = sd;\r\n\r\n // Round up?\r\n if (more) {\r\n\r\n // Rounding up may mean the previous digit has to be rounded up.\r\n for (; ++xc[--sd] > 9;) {\r\n xc[sd] = 0;\r\n if (sd === 0) {\r\n ++x.e;\r\n xc.unshift(1);\r\n break;\r\n }\r\n }\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (sd = xc.length; !xc[--sd];) xc.pop();\r\n }\r\n\r\n return x;\r\n}\r\n\r\n\r\n/*\r\n * Return a string representing the value of Big x in normal or exponential notation.\r\n * Handles P.toExponential, P.toFixed, P.toJSON, P.toPrecision, P.toString and P.valueOf.\r\n */\r\nfunction stringify(x, doExponential, isNonzero) {\r\n var e = x.e,\r\n s = x.c.join(''),\r\n n = s.length;\r\n\r\n // Exponential notation?\r\n if (doExponential) {\r\n s = s.charAt(0) + (n > 1 ? '.' + s.slice(1) : '') + (e < 0 ? 'e' : 'e+') + e;\r\n\r\n // Normal notation.\r\n } else if (e < 0) {\r\n for (; ++e;) s = '0' + s;\r\n s = '0.' + s;\r\n } else if (e > 0) {\r\n if (++e > n) {\r\n for (e -= n; e--;) s += '0';\r\n } else if (e < n) {\r\n s = s.slice(0, e) + '.' + s.slice(e);\r\n }\r\n } else if (n > 1) {\r\n s = s.charAt(0) + '.' + s.slice(1);\r\n }\r\n\r\n return x.s < 0 && isNonzero ? '-' + s : s;\r\n}\r\n\r\n\r\n// Prototype/instance methods\r\n\r\n\r\n/*\r\n * Return a new Big whose value is the absolute value of this Big.\r\n */\r\nP.abs = function () {\r\n var x = new this.constructor(this);\r\n x.s = 1;\r\n return x;\r\n};\r\n\r\n\r\n/*\r\n * Return 1 if the value of this Big is greater than the value of Big y,\r\n * -1 if the value of this Big is less than the value of Big y, or\r\n * 0 if they have the same value.\r\n */\r\nP.cmp = function (y) {\r\n var isneg,\r\n x = this,\r\n xc = x.c,\r\n yc = (y = new x.constructor(y)).c,\r\n i = x.s,\r\n j = y.s,\r\n k = x.e,\r\n l = y.e;\r\n\r\n // Either zero?\r\n if (!xc[0] || !yc[0]) return !xc[0] ? !yc[0] ? 0 : -j : i;\r\n\r\n // Signs differ?\r\n if (i != j) return i;\r\n\r\n isneg = i < 0;\r\n\r\n // Compare exponents.\r\n if (k != l) return k > l ^ isneg ? 1 : -1;\r\n\r\n j = (k = xc.length) < (l = yc.length) ? k : l;\r\n\r\n // Compare digit by digit.\r\n for (i = -1; ++i < j;) {\r\n if (xc[i] != yc[i]) return xc[i] > yc[i] ^ isneg ? 1 : -1;\r\n }\r\n\r\n // Compare lengths.\r\n return k == l ? 0 : k > l ^ isneg ? 1 : -1;\r\n};\r\n\r\n\r\n/*\r\n * Return a new Big whose value is the value of this Big divided by the value of Big y, rounded,\r\n * if necessary, to a maximum of Big.DP decimal places using rounding mode Big.RM.\r\n */\r\nP.div = function (y) {\r\n var x = this,\r\n Big = x.constructor,\r\n a = x.c, // dividend\r\n b = (y = new Big(y)).c, // divisor\r\n k = x.s == y.s ? 1 : -1,\r\n dp = Big.DP;\r\n\r\n if (dp !== ~~dp || dp < 0 || dp > MAX_DP) {\r\n throw Error(INVALID_DP);\r\n }\r\n\r\n // Divisor is zero?\r\n if (!b[0]) {\r\n throw Error(DIV_BY_ZERO);\r\n }\r\n\r\n // Dividend is 0? Return +-0.\r\n if (!a[0]) {\r\n y.s = k;\r\n y.c = [y.e = 0];\r\n return y;\r\n }\r\n\r\n var bl, bt, n, cmp, ri,\r\n bz = b.slice(),\r\n ai = bl = b.length,\r\n al = a.length,\r\n r = a.slice(0, bl), // remainder\r\n rl = r.length,\r\n q = y, // quotient\r\n qc = q.c = [],\r\n qi = 0,\r\n p = dp + (q.e = x.e - y.e) + 1; // precision of the result\r\n\r\n q.s = k;\r\n k = p < 0 ? 0 : p;\r\n\r\n // Create version of divisor with leading zero.\r\n bz.unshift(0);\r\n\r\n // Add zeros to make remainder as long as divisor.\r\n for (; rl++ < bl;) r.push(0);\r\n\r\n do {\r\n\r\n // n is how many times the divisor goes into current remainder.\r\n for (n = 0; n < 10; n++) {\r\n\r\n // Compare divisor and remainder.\r\n if (bl != (rl = r.length)) {\r\n cmp = bl > rl ? 1 : -1;\r\n } else {\r\n for (ri = -1, cmp = 0; ++ri < bl;) {\r\n if (b[ri] != r[ri]) {\r\n cmp = b[ri] > r[ri] ? 1 : -1;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n // If divisor < remainder, subtract divisor from remainder.\r\n if (cmp < 0) {\r\n\r\n // Remainder can't be more than 1 digit longer than divisor.\r\n // Equalise lengths using divisor with extra leading zero?\r\n for (bt = rl == bl ? b : bz; rl;) {\r\n if (r[--rl] < bt[rl]) {\r\n ri = rl;\r\n for (; ri && !r[--ri];) r[ri] = 9;\r\n --r[ri];\r\n r[rl] += 10;\r\n }\r\n r[rl] -= bt[rl];\r\n }\r\n\r\n for (; !r[0];) r.shift();\r\n } else {\r\n break;\r\n }\r\n }\r\n\r\n // Add the digit n to the result array.\r\n qc[qi++] = cmp ? n : ++n;\r\n\r\n // Update the remainder.\r\n if (r[0] && cmp) r[rl] = a[ai] || 0;\r\n else r = [a[ai]];\r\n\r\n } while ((ai++ < al || r[0] !== UNDEFINED) && k--);\r\n\r\n // Leading zero? Do not remove if result is simply zero (qi == 1).\r\n if (!qc[0] && qi != 1) {\r\n\r\n // There can't be more than one zero.\r\n qc.shift();\r\n q.e--;\r\n p--;\r\n }\r\n\r\n // Round?\r\n if (qi > p) round(q, p, Big.RM, r[0] !== UNDEFINED);\r\n\r\n return q;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Big is equal to the value of Big y, otherwise return false.\r\n */\r\nP.eq = function (y) {\r\n return this.cmp(y) === 0;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Big is greater than the value of Big y, otherwise return\r\n * false.\r\n */\r\nP.gt = function (y) {\r\n return this.cmp(y) > 0;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Big is greater than or equal to the value of Big y, otherwise\r\n * return false.\r\n */\r\nP.gte = function (y) {\r\n return this.cmp(y) > -1;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Big is less than the value of Big y, otherwise return false.\r\n */\r\nP.lt = function (y) {\r\n return this.cmp(y) < 0;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Big is less than or equal to the value of Big y, otherwise\r\n * return false.\r\n */\r\nP.lte = function (y) {\r\n return this.cmp(y) < 1;\r\n};\r\n\r\n\r\n/*\r\n * Return a new Big whose value is the value of this Big minus the value of Big y.\r\n */\r\nP.minus = P.sub = function (y) {\r\n var i, j, t, xlty,\r\n x = this,\r\n Big = x.constructor,\r\n a = x.s,\r\n b = (y = new Big(y)).s;\r\n\r\n // Signs differ?\r\n if (a != b) {\r\n y.s = -b;\r\n return x.plus(y);\r\n }\r\n\r\n var xc = x.c.slice(),\r\n xe = x.e,\r\n yc = y.c,\r\n ye = y.e;\r\n\r\n // Either zero?\r\n if (!xc[0] || !yc[0]) {\r\n if (yc[0]) {\r\n y.s = -b;\r\n } else if (xc[0]) {\r\n y = new Big(x);\r\n } else {\r\n y.s = 1;\r\n }\r\n return y;\r\n }\r\n\r\n // Determine which is the bigger number. Prepend zeros to equalise exponents.\r\n if (a = xe - ye) {\r\n\r\n if (xlty = a < 0) {\r\n a = -a;\r\n t = xc;\r\n } else {\r\n ye = xe;\r\n t = yc;\r\n }\r\n\r\n t.reverse();\r\n for (b = a; b--;) t.push(0);\r\n t.reverse();\r\n } else {\r\n\r\n // Exponents equal. Check digit by digit.\r\n j = ((xlty = xc.length < yc.length) ? xc : yc).length;\r\n\r\n for (a = b = 0; b < j; b++) {\r\n if (xc[b] != yc[b]) {\r\n xlty = xc[b] < yc[b];\r\n break;\r\n }\r\n }\r\n }\r\n\r\n // x < y? Point xc to the array of the bigger number.\r\n if (xlty) {\r\n t = xc;\r\n xc = yc;\r\n yc = t;\r\n y.s = -y.s;\r\n }\r\n\r\n /*\r\n * Append zeros to xc if shorter. No need to add zeros to yc if shorter as subtraction only\r\n * needs to start at yc.length.\r\n */\r\n if ((b = (j = yc.length) - (i = xc.length)) > 0) for (; b--;) xc[i++] = 0;\r\n\r\n // Subtract yc from xc.\r\n for (b = i; j > a;) {\r\n if (xc[--j] < yc[j]) {\r\n for (i = j; i && !xc[--i];) xc[i] = 9;\r\n --xc[i];\r\n xc[j] += 10;\r\n }\r\n\r\n xc[j] -= yc[j];\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (; xc[--b] === 0;) xc.pop();\r\n\r\n // Remove leading zeros and adjust exponent accordingly.\r\n for (; xc[0] === 0;) {\r\n xc.shift();\r\n --ye;\r\n }\r\n\r\n if (!xc[0]) {\r\n\r\n // n - n = +0\r\n y.s = 1;\r\n\r\n // Result must be zero.\r\n xc = [ye = 0];\r\n }\r\n\r\n y.c = xc;\r\n y.e = ye;\r\n\r\n return y;\r\n};\r\n\r\n\r\n/*\r\n * Return a new Big whose value is the value of this Big modulo the value of Big y.\r\n */\r\nP.mod = function (y) {\r\n var ygtx,\r\n x = this,\r\n Big = x.constructor,\r\n a = x.s,\r\n b = (y = new Big(y)).s;\r\n\r\n if (!y.c[0]) {\r\n throw Error(DIV_BY_ZERO);\r\n }\r\n\r\n x.s = y.s = 1;\r\n ygtx = y.cmp(x) == 1;\r\n x.s = a;\r\n y.s = b;\r\n\r\n if (ygtx) return new Big(x);\r\n\r\n a = Big.DP;\r\n b = Big.RM;\r\n Big.DP = Big.RM = 0;\r\n x = x.div(y);\r\n Big.DP = a;\r\n Big.RM = b;\r\n\r\n return this.minus(x.times(y));\r\n};\r\n\r\n\r\n/*\r\n * Return a new Big whose value is the value of this Big negated.\r\n */\r\nP.neg = function () {\r\n var x = new this.constructor(this);\r\n x.s = -x.s;\r\n return x;\r\n};\r\n\r\n\r\n/*\r\n * Return a new Big whose value is the value of this Big plus the value of Big y.\r\n */\r\nP.plus = P.add = function (y) {\r\n var e, k, t,\r\n x = this,\r\n Big = x.constructor;\r\n\r\n y = new Big(y);\r\n\r\n // Signs differ?\r\n if (x.s != y.s) {\r\n y.s = -y.s;\r\n return x.minus(y);\r\n }\r\n\r\n var xe = x.e,\r\n xc = x.c,\r\n ye = y.e,\r\n yc = y.c;\r\n\r\n // Either zero?\r\n if (!xc[0] || !yc[0]) {\r\n if (!yc[0]) {\r\n if (xc[0]) {\r\n y = new Big(x);\r\n } else {\r\n y.s = x.s;\r\n }\r\n }\r\n return y;\r\n }\r\n\r\n xc = xc.slice();\r\n\r\n // Prepend zeros to equalise exponents.\r\n // Note: reverse faster than unshifts.\r\n if (e = xe - ye) {\r\n if (e > 0) {\r\n ye = xe;\r\n t = yc;\r\n } else {\r\n e = -e;\r\n t = xc;\r\n }\r\n\r\n t.reverse();\r\n for (; e--;) t.push(0);\r\n t.reverse();\r\n }\r\n\r\n // Point xc to the longer array.\r\n if (xc.length - yc.length < 0) {\r\n t = yc;\r\n yc = xc;\r\n xc = t;\r\n }\r\n\r\n e = yc.length;\r\n\r\n // Only start adding at yc.length - 1 as the further digits of xc can be left as they are.\r\n for (k = 0; e; xc[e] %= 10) k = (xc[--e] = xc[e] + yc[e] + k) / 10 | 0;\r\n\r\n // No need to check for zero, as +x + +y != 0 && -x + -y != 0\r\n\r\n if (k) {\r\n xc.unshift(k);\r\n ++ye;\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (e = xc.length; xc[--e] === 0;) xc.pop();\r\n\r\n y.c = xc;\r\n y.e = ye;\r\n\r\n return y;\r\n};\r\n\r\n\r\n/*\r\n * Return a Big whose value is the value of this Big raised to the power n.\r\n * If n is negative, round to a maximum of Big.DP decimal places using rounding\r\n * mode Big.RM.\r\n *\r\n * n {number} Integer, -MAX_POWER to MAX_POWER inclusive.\r\n */\r\nP.pow = function (n) {\r\n var x = this,\r\n one = new x.constructor('1'),\r\n y = one,\r\n isneg = n < 0;\r\n\r\n if (n !== ~~n || n < -MAX_POWER || n > MAX_POWER) {\r\n throw Error(INVALID + 'exponent');\r\n }\r\n\r\n if (isneg) n = -n;\r\n\r\n for (;;) {\r\n if (n & 1) y = y.times(x);\r\n n >>= 1;\r\n if (!n) break;\r\n x = x.times(x);\r\n }\r\n\r\n return isneg ? one.div(y) : y;\r\n};\r\n\r\n\r\n/*\r\n * Return a new Big whose value is the value of this Big rounded to a maximum precision of sd\r\n * significant digits using rounding mode rm, or Big.RM if rm is not specified.\r\n *\r\n * sd {number} Significant digits: integer, 1 to MAX_DP inclusive.\r\n * rm? {number} Rounding mode: 0 (down), 1 (half-up), 2 (half-even) or 3 (up).\r\n */\r\nP.prec = function (sd, rm) {\r\n if (sd !== ~~sd || sd < 1 || sd > MAX_DP) {\r\n throw Error(INVALID + 'precision');\r\n }\r\n return round(new this.constructor(this), sd, rm);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Big whose value is the value of this Big rounded to a maximum of dp decimal places\r\n * using rounding mode rm, or Big.RM if rm is not specified.\r\n * If dp is negative, round to an integer which is a multiple of 10**-dp.\r\n * If dp is not specified, round to 0 decimal places.\r\n *\r\n * dp? {number} Integer, -MAX_DP to MAX_DP inclusive.\r\n * rm? {number} Rounding mode: 0 (down), 1 (half-up), 2 (half-even) or 3 (up).\r\n */\r\nP.round = function (dp, rm) {\r\n if (dp === UNDEFINED) dp = 0;\r\n else if (dp !== ~~dp || dp < -MAX_DP || dp > MAX_DP) {\r\n throw Error(INVALID_DP);\r\n }\r\n return round(new this.constructor(this), dp + this.e + 1, rm);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Big whose value is the square root of the value of this Big, rounded, if\r\n * necessary, to a maximum of Big.DP decimal places using rounding mode Big.RM.\r\n */\r\nP.sqrt = function () {\r\n var r, c, t,\r\n x = this,\r\n Big = x.constructor,\r\n s = x.s,\r\n e = x.e,\r\n half = new Big('0.5');\r\n\r\n // Zero?\r\n if (!x.c[0]) return new Big(x);\r\n\r\n // Negative?\r\n if (s < 0) {\r\n throw Error(NAME + 'No square root');\r\n }\r\n\r\n // Estimate.\r\n s = Math.sqrt(x + '');\r\n\r\n // Math.sqrt underflow/overflow?\r\n // Re-estimate: pass x coefficient to Math.sqrt as integer, then adjust the result exponent.\r\n if (s === 0 || s === 1 / 0) {\r\n c = x.c.join('');\r\n if (!(c.length + e & 1)) c += '0';\r\n s = Math.sqrt(c);\r\n e = ((e + 1) / 2 | 0) - (e < 0 || e & 1);\r\n r = new Big((s == 1 / 0 ? '5e' : (s = s.toExponential()).slice(0, s.indexOf('e') + 1)) + e);\r\n } else {\r\n r = new Big(s + '');\r\n }\r\n\r\n e = r.e + (Big.DP += 4);\r\n\r\n // Newton-Raphson iteration.\r\n do {\r\n t = r;\r\n r = half.times(t.plus(x.div(t)));\r\n } while (t.c.slice(0, e).join('') !== r.c.slice(0, e).join(''));\r\n\r\n return round(r, (Big.DP -= 4) + r.e + 1, Big.RM);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Big whose value is the value of this Big times the value of Big y.\r\n */\r\nP.times = P.mul = function (y) {\r\n var c,\r\n x = this,\r\n Big = x.constructor,\r\n xc = x.c,\r\n yc = (y = new Big(y)).c,\r\n a = xc.length,\r\n b = yc.length,\r\n i = x.e,\r\n j = y.e;\r\n\r\n // Determine sign of result.\r\n y.s = x.s == y.s ? 1 : -1;\r\n\r\n // Return signed 0 if either 0.\r\n if (!xc[0] || !yc[0]) {\r\n y.c = [y.e = 0];\r\n return y;\r\n }\r\n\r\n // Initialise exponent of result as x.e + y.e.\r\n y.e = i + j;\r\n\r\n // If array xc has fewer digits than yc, swap xc and yc, and lengths.\r\n if (a < b) {\r\n c = xc;\r\n xc = yc;\r\n yc = c;\r\n j = a;\r\n a = b;\r\n b = j;\r\n }\r\n\r\n // Initialise coefficient array of result with zeros.\r\n for (c = new Array(j = a + b); j--;) c[j] = 0;\r\n\r\n // Multiply.\r\n\r\n // i is initially xc.length.\r\n for (i = b; i--;) {\r\n b = 0;\r\n\r\n // a is yc.length.\r\n for (j = a + i; j > i;) {\r\n\r\n // Current sum of products at this digit position, plus carry.\r\n b = c[j] + yc[i] * xc[j - i - 1] + b;\r\n c[j--] = b % 10;\r\n\r\n // carry\r\n b = b / 10 | 0;\r\n }\r\n\r\n c[j] = b;\r\n }\r\n\r\n // Increment result exponent if there is a final carry, otherwise remove leading zero.\r\n if (b) ++y.e;\r\n else c.shift();\r\n\r\n // Remove trailing zeros.\r\n for (i = c.length; !c[--i];) c.pop();\r\n y.c = c;\r\n\r\n return y;\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Big in exponential notation rounded to dp fixed\r\n * decimal places using rounding mode rm, or Big.RM if rm is not specified.\r\n *\r\n * dp? {number} Decimal places: integer, 0 to MAX_DP inclusive.\r\n * rm? {number} Rounding mode: 0 (down), 1 (half-up), 2 (half-even) or 3 (up).\r\n */\r\nP.toExponential = function (dp, rm) {\r\n var x = this,\r\n n = x.c[0];\r\n\r\n if (dp !== UNDEFINED) {\r\n if (dp !== ~~dp || dp < 0 || dp > MAX_DP) {\r\n throw Error(INVALID_DP);\r\n }\r\n x = round(new x.constructor(x), ++dp, rm);\r\n for (; x.c.length < dp;) x.c.push(0);\r\n }\r\n\r\n return stringify(x, true, !!n);\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Big in normal notation rounded to dp fixed\r\n * decimal places using rounding mode rm, or Big.RM if rm is not specified.\r\n *\r\n * dp? {number} Decimal places: integer, 0 to MAX_DP inclusive.\r\n * rm? {number} Rounding mode: 0 (down), 1 (half-up), 2 (half-even) or 3 (up).\r\n *\r\n * (-0).toFixed(0) is '0', but (-0.1).toFixed(0) is '-0'.\r\n * (-0).toFixed(1) is '0.0', but (-0.01).toFixed(1) is '-0.0'.\r\n */\r\nP.toFixed = function (dp, rm) {\r\n var x = this,\r\n n = x.c[0];\r\n\r\n if (dp !== UNDEFINED) {\r\n if (dp !== ~~dp || dp < 0 || dp > MAX_DP) {\r\n throw Error(INVALID_DP);\r\n }\r\n x = round(new x.constructor(x), dp + x.e + 1, rm);\r\n\r\n // x.e may have changed if the value is rounded up.\r\n for (dp = dp + x.e + 1; x.c.length < dp;) x.c.push(0);\r\n }\r\n\r\n return stringify(x, false, !!n);\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Big.\r\n * Return exponential notation if this Big has a positive exponent equal to or greater than\r\n * Big.PE, or a negative exponent equal to or less than Big.NE.\r\n * Omit the sign for negative zero.\r\n */\r\nP[Symbol.for('nodejs.util.inspect.custom')] = P.toJSON = P.toString = function () {\r\n var x = this,\r\n Big = x.constructor;\r\n return stringify(x, x.e <= Big.NE || x.e >= Big.PE, !!x.c[0]);\r\n};\r\n\r\n\r\n/*\r\n * Return the value of this Big as a primitve number.\r\n */\r\nP.toNumber = function () {\r\n var n = Number(stringify(this, true, true));\r\n if (this.constructor.strict === true && !this.eq(n.toString())) {\r\n throw Error(NAME + 'Imprecise conversion');\r\n }\r\n return n;\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Big rounded to sd significant digits using\r\n * rounding mode rm, or Big.RM if rm is not specified.\r\n * Use exponential notation if sd is less than the number of digits necessary to represent\r\n * the integer part of the value in normal notation.\r\n *\r\n * sd {number} Significant digits: integer, 1 to MAX_DP inclusive.\r\n * rm? {number} Rounding mode: 0 (down), 1 (half-up), 2 (half-even) or 3 (up).\r\n */\r\nP.toPrecision = function (sd, rm) {\r\n var x = this,\r\n Big = x.constructor,\r\n n = x.c[0];\r\n\r\n if (sd !== UNDEFINED) {\r\n if (sd !== ~~sd || sd < 1 || sd > MAX_DP) {\r\n throw Error(INVALID + 'precision');\r\n }\r\n x = round(new Big(x), sd, rm);\r\n for (; x.c.length < sd;) x.c.push(0);\r\n }\r\n\r\n return stringify(x, sd <= x.e || x.e <= Big.NE || x.e >= Big.PE, !!n);\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Big.\r\n * Return exponential notation if this Big has a positive exponent equal to or greater than\r\n * Big.PE, or a negative exponent equal to or less than Big.NE.\r\n * Include the sign for negative zero.\r\n */\r\nP.valueOf = function () {\r\n var x = this,\r\n Big = x.constructor;\r\n if (Big.strict === true) {\r\n throw Error(NAME + 'valueOf disallowed');\r\n }\r\n return stringify(x, x.e <= Big.NE || x.e >= Big.PE, true);\r\n};\r\n\r\n\r\n// Export\r\n\r\n\r\nexport var Big = _Big_();\r\n\r\n/// <reference types=\"https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/big.js/index.d.ts\" />\r\nexport default Big;\r\n","/**\n * Strips both leading and trailing zeroes from a number string\n *\n * @param numberString the string of numbers to strip zeros from\n * @returns a string of numbers without leading or trailing zeros\n * @example\n * ```javascript\n * stripTrailingZeros('0005280');\n * // '5280'\n * ```\n */\nfunction stripTrailingZeroes(numberString: string) {\n const isNegative = numberString.startsWith('-');\n numberString = numberString.replace('-', '');\n\n numberString = numberString.replace(\n /\\.0*$/g,\n '' /* for numbers like \"1.0\" -> \"1\" */,\n );\n numberString = numberString.replace(/^0+/, '');\n // for numbers like \"1.10\" -> \"1.1\"\n if (numberString.includes('.')) {\n numberString = numberString.replace(/0+$/, '');\n }\n if (numberString.startsWith('.')) {\n // so that \".1\" returns as \"0.1\"\n numberString = `0${numberString}`;\n }\n return `${isNegative ? '-' : ''}${numberString}`;\n}\n\n/**\n * Converts a string in scientific notation formatting to string in decimal format\n *\n * @param scientificString a string in scientific format to convert to decimal\n * @returns a string of a decimal number equivalent to the specified scientificString\n * @example\n * ```javascript\n * scientificStrToDecimalStr('2.3e-5');\n * // '0.000023'\n * ```\n * @example\n * ```javascript\n * scientificStrToDecimalStr('2.3e+5');\n * // '230000'\n * ```\n */\nexport function scientificStrToDecimalStr(scientificString: string): string {\n // Does not contain \"e\" nor \"E\"\n if (!scientificString.match(/e/i /* lowercase and uppercase E */)) {\n return stripTrailingZeroes(scientificString);\n }\n\n // eslint-disable-next-line prefer-const\n let [base, power] = scientificString.split(\n /e/i /* lowercase and uppercase E */,\n );\n\n // remove the leading \"-\" if negative\n const isNegative = Number(base) < 0;\n base = base.replace('-', '');\n\n base = stripTrailingZeroes(base);\n const [wholeNumber, fraction /* move decimal this many places */ = ''] =\n base.split('.');\n if (Number(power) === 0) {\n return `${isNegative ? '-' : ''}${stripTrailingZeroes(base)}`;\n } else {\n const includesDecimal = base.includes('.');\n if (!includesDecimal) {\n base = `${base}.`;\n }\n base = base.replace('.', '');\n const baseLength = base.length;\n let splitPaddedNumber;\n if (Number(power) < 0) {\n // move decimal left\n if (wholeNumber.length < Math.abs(Number(power))) {\n base = base.padStart(\n baseLength + Math.abs(Number(power)) - wholeNumber.length,\n '0',\n );\n }\n splitPaddedNumber = base.split('');\n if (wholeNumber.length < Math.abs(Number(power))) {\n // starts with zeroes\n splitPaddedNumber = ['.', ...splitPaddedNumber];\n } else {\n splitPaddedNumber.splice(\n splitPaddedNumber.length - Math.abs(Number(power)),\n 0,\n '.',\n );\n }\n } else {\n // move decimal right\n if (fraction.length < Math.abs(Number(power))) {\n base = base.padEnd(\n baseLength + Math.abs(Number(power)) - fraction.length,\n '0',\n );\n }\n splitPaddedNumber = base.split('');\n if (fraction.length > Math.abs(Number(power))) {\n splitPaddedNumber.splice(\n splitPaddedNumber.length - Math.abs(Number(power)),\n 0,\n '.',\n );\n }\n }\n const toReturn = stripTrailingZeroes(splitPaddedNumber.join(''));\n return `${isNegative ? '-' : ''}${toReturn}`;\n }\n}\n","import Big from 'big.js';\nimport { hexToDecimal } from '../../classes/utils/hex-to-decimal';\nimport { scientificStrToDecimalStr } from './helpers';\n\n/**\n * A wrapper around [big.js](https://github.com/MikeMcl/big.js) which expands scientific notation and creates a \"toHexString\" function.\n * This is the return type of every operation on ether, wei, etc.\n */\nexport class TinyBig extends Big {\n constructor(value: string | number | TinyBig | Big) {\n if (typeof value === 'string' && value.startsWith('0x')) {\n value = hexToDecimal(value);\n }\n super(value);\n }\n /**\n * Used anytime you're passing in \"value\" to ethers or web3\n * For now, TypeScript will complain that `TinyBig` is not a `BigNumberish`. You can // @ts-ignore or call this\n *\n * @returns the TinyBig represented as a hex string\n * @example\n * ```javascript\n * tinyBig(293).toHexString();\n * // '0x125'\n * ```\n * @example\n * ```javascript\n * tinyBig(681365874).toHexString();\n * // '0x289cd172'\n */\n toHexString(): string {\n return `0x${BigInt(this.toString()).toString(16)}`;\n }\n toNumber(): number {\n return Number(scientificStrToDecimalStr(super.toString()));\n }\n\n toString(): string {\n if (this.toNumber() === 0) {\n return '0';\n }\n return scientificStrToDecimalStr(super.toString());\n }\n\n /**\n * Eithers pads or shortens a string to a specified length\n *\n * @param str the string to pad or chop\n * @param padChar the character to pad the string with\n * @param length the desired length of the given string\n * @returns a string of the desired length, either padded with the specified padChar or with the beginning of the string chopped off\n * @example\n * ```javascript\n * padAndChop('essential-eth', 'a', 8);\n * // 'tial-eth'\n * ```\n * @example\n * ```javascript\n * padAndChop('essential-eth', 'A', 20);\n * // 'AAAAAAAessential-eth'\n * ```\n */\n private padAndChop = (\n str: string,\n padChar: string,\n length: number,\n ): string => {\n return (Array(length).fill(padChar).join('') + str).slice(length * -1);\n };\n\n public toTwos(bitCount: number): Big {\n let binaryStr;\n\n if (this.gte(0)) {\n const twosComp = this.toNumber().toString(2);\n binaryStr = this.padAndChop(twosComp, '0', bitCount || twosComp.length);\n } else {\n binaryStr = this.plus(Math.pow(2, bitCount)).toNumber().toString(2);\n\n if (Number(binaryStr) < 0) {\n throw new Error('Cannot calculate twos complement');\n }\n }\n\n const binary = `0b${binaryStr}`;\n const decimal = Number(binary);\n return tinyBig(decimal);\n }\n}\n\n/**\n * Helper factory function so that you don't have to type \"new\" when instantiating a new TinyBig\n *\n * @param value the value to initiate the TinyBig with\n * @returns an initiated {@link TinyBig}\n * @example\n * ```javascript\n * tinyBig(10).times(3).toNumber()\n * // 30\n * ```\n */\nexport function tinyBig(value: string | number | TinyBig | Big): TinyBig {\n return new TinyBig(value);\n}\n","import { tinyBig, toChecksumAddress } from '../..';\nimport type {\n RPCTransaction,\n TransactionResponse,\n} from '../../types/Transaction.types';\nimport { hexToDecimal } from './hex-to-decimal';\n\n/**\n * Converts RPC transaction response to more JS-friendly format\n *\n * @param transaction the transaction to clean\n * @returns a cleaned transaction\n * @example\n * ```javascript\n * const RPCTransaction = { accessList: [], blockHash: '0x03ddc6a835462f750fcaf5ab511d8c48121b0813e3e80de84d7adc3ef192b7bf', blockNumber: '0xe28f62', chainId: '0x1', from: '0x642824fab1d0141073ed74326332950bec4701e3', gas: '0x274b7', gasPrice: '0x62df1c62c', hash: '0xd0befcb9d10a89aba2d488534811bf5c62a889e2499d23cdd83c2a2200cde873', input: '0xa0712d68000000000000000000000000000000000000000000000000000000000000000a', maxFeePerGas: '0x98808e3f0', maxPriorityFeePerGas: '0x3b9aca00', nonce: '0x42', r: '0x304682f8b22006dd1347c3722f6e43a5ad8e3a1ae51939cc0d6f07981602f5c0', s: '0x207ad110eb5c014cb628814b92396785fabfbe74542293300eeadf156f50f105', to: '0x84f80ea01e26b7c11bdd241970982c7eeab6ddcc', transactionIndex: '0x29', type: '0x2', v: '0x1', value: '0x470de4df820000' }\n * cleanTransaction(RPCTransaction);\n * // { accessList: [], blockHash: '0x03ddc6a835462f750fcaf5ab511d8c48121b0813e3e80de84d7adc3ef192b7bf', blockNumber: 14847842, chainId: 1, from: '0x642824FaB1D0141073ed74326332950bEc4701e3', gas: Big { s: 1, e: 5, c: [ 1, 6, 0, 9, 5, 1 ], constructor: { [λ: Big] DP: 20, RM: 1, NE: -7, PE: 21, strict: false, roundDown: 0, roundHalfUp: 1, roundHalfEven: 2, roundUp: 3, Big: [Circular], default: [Circular] }, padAndChop: [λ] }, gasPrice: Big { s: 1, e: 10, c: [ 2, 6, 5, 4, 0, 6, 2, 3, 4, 0, 4 ], constructor: { [λ: Big] DP: 20, RM: 1, NE: -7, PE: 21, strict: false, roundDown: 0, roundHalfUp: 1, roundHalfEven: 2, roundUp: 3, Big: [Circular], default: [Circular] }, padAndChop: [λ] }, hash: '0xd0befcb9d10a89aba2d488534811bf5c62a889e2499d23cdd83c2a2200cde873', input: '0xa0712d68000000000000000000000000000000000000000000000000000000000000000a', maxFeePerGas: Big { s: 1, e: 10, c: [ 4, 0, 9, 3, 6, 9, 8, 9, 6, 8 ], constructor: { [λ: Big] DP: 20, RM: 1, NE: -7, PE: 21, strict: false, roundDown: 0, roundHalfUp: 1, roundHalfEven: 2, roundUp: 3, Big: [Circular], default: [Circular] }, padAndChop: [λ] }, maxPriorityFeePerGas: Big { s: 1, e: 9, c: [ 1 ], constructor: { [λ: Big] DP: 20, RM: 1, NE: -7, PE: 21, strict: false, roundDown: 0, roundHalfUp: 1, roundHalfEven: 2, roundUp: 3, Big: [Circular], default: [Circular] }, padAndChop: [λ] }, nonce: 66, r: '0x304682f8b22006dd1347c3722f6e43a5ad8e3a1ae51939cc0d6f07981602f5c0', s: '0x207ad110eb5c014cb628814b92396785fabfbe74542293300eeadf156f50f105', to: '0x84F80EA01e26B7C11bdd241970982C7EEAb6DdcC', transactionIndex: 41, type: 2, v: 1, value: Big { s: 1, e: 16, c: [ 2 ], constructor: { [λ: Big] DP: 20, RM: 1, NE: -7, PE: 21, strict: false, roundDown: 0, roundHalfUp: 1, roundHalfEven: 2, roundUp: 3, Big: [Circular], default: [Circular] }, padAndChop: [λ] }, confirmations: 53 }\n * ```\n */\nexport function cleanTransaction(\n transaction: RPCTransaction,\n): TransactionResponse {\n const cleanedTransaction = {\n ...transaction,\n } as unknown as TransactionResponse;\n (Object.keys(transaction) as Array<keyof RPCTransaction>).forEach((key) => {\n // pending blocks have null instead of a difficulty\n // pending blocks have null instead of a miner address\n if (!transaction[key]) return;\n switch (key) {\n case 'blockNumber':\n case 'chainId':\n case 'transactionIndex':\n case 'type':\n case 'v':\n cleanedTransaction[key] = Number(hexToDecimal(transaction[key]));\n break;\n case 'from':\n case 'to':\n if (transaction[key]) {\n cleanedTransaction[key] = toChecksumAddress(transaction[key]);\n }\n break;\n case 'value':\n case 'gas':\n case 'gasPrice':\n case 'maxFeePerGas':\n case 'maxPriorityFeePerGas':\n case 'nonce':\n cleanedTransaction[key] = tinyBig(hexToDecimal(transaction[key]));\n break;\n }\n });\n return cleanedTransaction;\n}\n","type JSPrimitiveTypes =\n | 'string'\n | 'number'\n | 'bigint'\n | 'boolean'\n | 'symbol'\n | 'undefined'\n | 'object'\n | 'function';\n\nexport const validateType = (\n value: unknown,\n allowedTypes: JSPrimitiveTypes[],\n) => {\n if (!allowedTypes.includes(typeof value)) {\n throw new Error(\n `${allowedTypes.join(' or ')} required. Received ${typeof value}`,\n );\n }\n};\n","import { Keccak } from 'sha3';\nimport { validateType } from '../shared/validate-type';\n\n/**\n * Returns an Ethereum address in proper mixed-case checksum.\n * Does NOT support ICAP\n *\n * @param address An Ethereum address. Mixed, lower, and uppercase are all valid\n * @returns a valid checksum address\n * @example\n * ```javascript\n * toChecksumAddress('0xfB6916095ca1df60bB79Ce92cE3Ea74c37c5d359');\n * // '0xfB6916095ca1df60bB79Ce92cE3Ea74c37c5d359'\n * ```\n *\n * Similar to [\"getAddress\" in ethers.js](https://docs.ethers.io/v5/api/utils/address/#utils-getAddress)\n *\n * Similar to [\"toChecksumAddress\" in web3.js](https://web3js.readthedocs.io/en/v1.7.1/web3-utils.html#tochecksumaddress)\n */\nexport function toChecksumAddress(address: string) {\n validateType(address, ['string']);\n if (!/^(0x)?[0-9a-f]{40}$/i.test(address)) {\n throw new Error(`Invalid Ethereum address \"${address}\"`);\n }\n\n const _address = address.toLowerCase().replace(/^0x/i, '');\n const keccak = new Keccak(256);\n const addressHash = keccak.update(_address).digest('hex').replace(/^0x/i, '');\n let checksumAddress = '0x';\n\n for (let i = 0; i < _address.length; i++) {\n // If ith character is 8 to f then make it uppercase\n if (parseInt(addressHash[i], 16) > 7) {\n checksumAddress += _address[i].toUpperCase();\n } else {\n checksumAddress += _address[i];\n }\n }\n\n if (\n address.match(/([A-F].*[a-f])|([a-f].*[A-F])/) &&\n checksumAddress !== address\n ) {\n throw new Error(`Invalid Checksum address for \"${address}\"`);\n }\n return checksumAddress;\n}\n","import { toChecksumAddress } from '../../utils/to-checksum-address';\nimport type { Log, RPCLog } from './../../types/Transaction.types';\nimport { hexToDecimal } from './hex-to-decimal';\n\n/**\n * Converts RPC log receipt response to more JS-friendly format\n *\n * @param log the log to clean\n * @param receiptLog if the log is part of a transaction receipt. Used to remove certain keys from log\n * @example\n */\nexport function cleanLog(log: RPCLog, receiptLog: boolean): Log {\n const cleanedLog = {\n ...log,\n } as unknown as Log;\n\n (Object.keys(log) as Array<keyof RPCLog>).forEach((key) => {\n switch (key) {\n case 'address':\n cleanedLog[key] = toChecksumAddress(log[key]);\n break;\n case 'blockNumber':\n case 'logIndex':\n case 'transactionIndex':\n cleanedLog[key] = Number(hexToDecimal(log[key]));\n break;\n case 'removed':\n if (receiptLog) {\n delete cleanedLog[key];\n } else if (log[key] == null) {\n cleanedLog[key] === false;\n }\n break;\n }\n });\n\n return cleanedLog;\n}\n","export default function(e,n){return n=n||{},new Promise(function(t,r){var s=new XMLHttpRequest,o=[],u=[],i={},a=function(){return{ok:2==(s.status/100|0),statusText:s.statusText,status:s.status,url:s.responseURL,text:function(){return Promise.resolve(s.responseText)},json:function(){return Promise.resolve(s.responseText).then(JSON.parse)},blob:function(){return Promise.resolve(new Blob([s.response]))},clone:a,headers:{keys:function(){return o},entries:function(){return u},get:function(e){return i[e.toLowerCase()]},has:function(e){return e.toLowerCase()in i}}}};for(var l in s.open(n.method||\"get\",e,!0),s.onload=function(){s.getAllResponseHeaders().replace(/^(.*?):[^\\S\\n]*([\\s\\S]*?)$/gm,function(e,n,t){o.push(n=n.toLowerCase()),u.push([n,t]),i[n]=i[n]?i[n]+\",\"+t:t}),t(a())},s.onerror=r,s.withCredentials=\"include\"==n.credentials,n.headers)s.setRequestHeader(l,n.headers[l]);s.send(n.body||null)})}\n//# sourceMappingURL=unfetch.module.js.map\n","module.exports = self.fetch || (self.fetch = require('unfetch').default || require('unfetch'));\n","import unfetch from 'isomorphic-unfetch';\n/**\n * Makes a post request with the specified JSON data, normally to the a Ethereum JSON RPC API endpoint\n *\n * @internal\n * @param url the URL to send the request to\n * @param body JSON POST body\n * @returns the JSON response from the server\n * @example\n * ```javascript\n * post('https://free-eth-node.com/api/eth', { jsonrpc: '2.0', id: 1, method: 'eth_gasPrice', params: [] });\n * // '0x66fa8dbfd'\n *\n * post('https://free-eth-node.com/api/eth', { jsonrpc: '2.0', id: 1, method: 'eth_getBalance', params: [ '0x4a986a6dCA6dbf99bC3d17F8D71aFb0d60e740f8', 'latest' ] });\n * // '0x312faeb995df61d4'\n * ```\n */\nexport function post(url: string, body: Record<string, unknown>) {\n return unfetch(url, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(body),\n })\n .then(async (r) => {\n const t = await r.text();\n try {\n return JSON.parse(t);\n } catch {\n throw new Error(`Invalid JSON RPC response: \"${t}\"`);\n }\n })\n .then((response) => {\n const result = response?.result;\n if (!result) {\n throw new Error(\n `Invalid JSON RPC response: ${JSON.stringify(response)}`,\n );\n }\n return response.result;\n });\n}\n\ntype RPCMethodName =\n | 'eth_getBlockByNumber'\n | 'eth_getBlockByHash'\n | 'eth_call'\n | 'eth_chainId'\n | 'eth_gasPrice'\n | 'eth_getBalance'\n | 'eth_getTransactionByHash'\n | 'eth_getTransactionReceipt'\n | 'eth_getTransactionCount'\n | 'eth_getCode'\n | 'eth_blockNumber'\n | 'eth_estimateGas'\n | 'eth_getLogs';\n\n/**\n * Prepares data to be sent using the {@link post} function. Data is prepared per the {@link https://en.wikipedia.org/wiki/JSON-RPC#Examples JSON RPC v2 spec}\n *\n * @internal\n * @param method the RPC method to be invoked\n * @param params the parameters to be passed to the defined method\n * @returns a POST method body matching the {@link https://en.wikipedia.org/wiki/JSON-RPC#Examples JSON RPC v2 spec}\n * @example\n * ```javascript\n * buildRPCPostBody('eth_gasPrice', []);\n * // { jsonrpc: '2.0', id: 1, method: 'eth_gasPrice', params: [] }\n *\n * buildRPCPostBody('eth_getBalance', ['0x407d73d8a49eeb85d32cf465507dd71d507100c1', 'latest']);\n * // { jsonrpc: '2.0', id: 1, method: 'eth_getBalance', params: [ '0x4a986a6dCA6dbf99bC3d17F8D71aFb0d60e740f8', 'latest' ] }\n * ```\n */\nexport function buildRPCPostBody(method: RPCMethodName, params: unknown[]) {\n return {\n jsonrpc: '2.0',\n // TODO: Increment ID will be needed when websocket support is added\n id: 1,\n method,\n params,\n };\n}\n","// primarily duplicate code from https://github.com/ethers-io/ethers.js/blob/f599d6f23dad0d0acaa3828d6b7acaab2d5e455b/packages/bytes/src.ts/index.ts\nimport { logger } from '../logger/logger';\n\n///////////////////////////////\n// Exported Types\n\nexport type Bytes = ArrayLike<number>;\n\n/**\n * @example\n * [1,2,3]\n * @example\n * 0x123\n * @example\n * '0x123'\n */\n\nexport type BytesLike = Bytes | string;\nexport type BytesLikeWithNumber = BytesLike | number;\n\nexport interface DataOptions {\n allowMissingPrefix?: boolean;\n hexPad?: 'left' | 'right' | null;\n}\n\nexport interface Hexable {\n toHexString(): string;\n}\n\nexport type SignatureLike =\n | {\n r: string;\n s?: string;\n _vs?: string;\n recoveryParam?: number;\n v?: number;\n }\n | BytesLike;\n\nexport interface Signature {\n r: string;\n\n s: string;\n _vs: string;\n\n recoveryParam: number;\n v: number;\n\n yParityAndS: string;\n compact: string;\n}\n\n/**\n * Check if a value can be converted to a hex string\n *\n * @param value the value to check whether or not it's Hexable\n * @returns whether or not the value is Hexable\n * @example\n * ```javascript\n * const val = tinyBig(203);\n * isHexable(val);\n * // true\n * ```\n */\nfunction isHexable(value: any): value is Hexable {\n return !!value.toHexString;\n}\n\n/**\n * Returns true if and only if value is a valid [Bytes](#bytes) or DataHexString\n * Same as [`ethers.utils.isBytesLike`](https://docs.ethers.io/v5/api/utils/bytes/#utils-isBytesLike)\n *\n * @param value the value to check whether or not it matches BytesLike\n * @returns whether or not the value matches BytesLike\n * @example\n * ```javascript\n * isBytesLike([1,2,3]);\n * // true\n * ```\n * @example\n * ```javascript\n * isBytesLike(false);\n * // false\n * ```\n * @example\n * ```javascript\n * isBytesLike(new Uint8Array(1));\n * // true\n * ```\n */\nexport function isBytesLike(value: any): value is BytesLike {\n return (isHexString(value) && !(value.length % 2)) || isBytes(value);\n}\n\n/**\n * Checks if a value is an integer\n *\n * @param value the value to check whether or not it's an integer\n * @returns whether or not value is an integer\n * @example\n * ```javascript\n * isInteger(4)\n * // true\n * ```\n * @example\n * ```javascript\n * isInteger(6.2)\n * // false\n * ```\n */\nfunction isInteger(value: number) {\n return typeof value === 'number' && value == value && value % 1 === 0;\n}\n\n/**\n * Returns true if and only if value is a valid [Bytes](#bytes)\n * Same as [`ethers.utils.isBytes`](https://docs.ethers.io/v5/api/utils/bytes/#utils-isBytes)\n *\n * @param value the value to check whether or not it matches Bytes\n * @returns whether or not the value matches Bytes\n * @example\n * ```javascript\n * isBytes([1,2,3]);\n * // true\n * ```\n * @example\n * ```javascript\n * isBytes(false);\n * // false\n * ```\n * @example\n * ```javascript\n * isBytes(new Uint8Array(1));\n * // true\n * ```\n */\nexport function isBytes(value: any): value is Bytes {\n if (value == null) {\n return false;\n }\n\n if (value.constructor === Uint8Array) {\n return true;\n }\n if (typeof value === 'string') {\n return false;\n }\n if (!isInteger(value.length) || value.length < 0) {\n return false;\n }\n\n for (let i = 0; i < value.length; i++) {\n const v = value[i];\n if (!isInteger(v) || v < 0 || v >= 256) {\n return false;\n }\n }\n return true;\n}\n\n/**\n * Converts DataHexStringOrArrayish to a Uint8Array\n * Same as [`ethers.utils.arrayify`](https://docs.ethers.io/v5/api/utils/bytes/#utils-arrayify)\n *\n * @param value the value to convert to a Uint8Array\n * @param options options to use when converting the value to a Uint8Array\n * @returns the value represented as a Uint8Array\n * @example\n * ```javascript\n * arrayify(1);\n * // Uint8Array(1) [ 1 ]\n * ```\n * @example\n * ```javascript\n * arrayify(0x1234);\n * // Uint8Array(2) [ 18, 52 ]\n * ```\n * @example\n * ```javascript\n * arrayify('0x1', { hexPad: 'right' });\n * // Uint8Array(1) [ 16 ]\n * ```\n */\nexport function arrayify(\n value: BytesLike | Hexable | number,\n options?: DataOptions,\n): Uint8Array {\n if (!options) {\n options = {};\n }\n\n if (typeof value === 'number') {\n logger.checkSafeUint53(value, 'invalid arrayify value');\n\n const result = [];\n while (value) {\n result.unshift(value & 0xff);\n value = parseInt(String(value / 256));\n }\n if (result.length === 0) {\n result.push(0);\n }\n\n return new Uint8Array(result);\n }\n\n if (\n options.allowMissingPrefix &&\n typeof value === 'string' &&\n value.substring(0, 2) !== '0x'\n ) {\n value = '0x' + value;\n }\n\n if (isHexable(value)) {\n value = value.toHexString();\n }\n\n if (isHexString(value)) {\n let hex = (<string>value).substring(2);\n if (hex.length % 2) {\n if (options.hexPad === 'left') {\n hex = '0' + hex;\n } else if (options.hexPad === 'right') {\n hex += '0';\n } else {\n logger.throwArgumentError('hex data is odd-length', 'value', value);\n }\n }\n\n const result = [];\n for (let i = 0; i < hex.length; i += 2) {\n result.push(parseInt(hex.substring(i, i + 2), 16));\n }\n\n return new Uint8Array(result);\n }\n\n if (isBytes(value)) {\n return new Uint8Array(value);\n }\n\n return logger.throwArgumentError('invalid arrayify value', 'value', value);\n}\n\n/**\n * Concatenates all the BytesLike in arrayOfBytesLike into a single Uint8Array.\n * Same as [`ethers.utils.concat`](https://docs.ethers.io/v5/api/utils/bytes/#utils-concat)\n *\n * @param arrayOfBytesLike the array of {@link BytesLike} to concatenate together\n * @returns a concatenated Uint8Array\n * @example\n * ```javascript\n * concat([0, 1]);\n * // Uint8Array(2) [ 0, 1 ]\n * ```\n */\nexport function concat(\n arrayOfBytesLike: ReadonlyArray<BytesLikeWithNumber>,\n): Uint8Array {\n const objects = arrayOfBytesLike.map((item) => arrayify(item));\n const length = objects.reduce((accum, item) => accum + item.length, 0);\n const result = new Uint8Array(length);\n objects.reduce((offset, object) => {\n result.set(object, offset);\n return offset + object.length;\n }, 0);\n return result;\n}\n\n/**\n * Strips leading zeros from a BytesLike object\n *\n * @param value the value to strip leading zeros from\n * @returns value without leading zeroes, expressed as a Uint8Array\n * @example\n * ```javascript\n * stripZeros('0x00002834');\n * // Uint8Array { [Iterator] 0: 40, 1: 52 }\n * // Equivalent to '0x2834'\n * ```\n */\nexport function stripZeros(value: BytesLike): Uint8Array {\n let result: Uint8Array = arrayify(value);\n\n if (result.length === 0) {\n return result;\n }\n\n // Find the first non-zero entry\n let start = 0;\n while (start < result.length && result[start] === 0) {\n start++;\n }\n\n // If we started with zeros, strip them\n if (start) {\n result = result.slice(start);\n }\n\n return result;\n}\n\n/**\n * Pads the beginning of a {@link BytesLike} with zeros so it's the specified length as a Uint8Array\n *\n * @param value the value to pad\n * @param length the desired length of the value\n * @returns the value padded with zeros to the specified length\n * @example\n * ```javascript\n * zeroPad('0x039284');\n * // Uint8Array { [Iterator] 0: 0, 1: 0, 2: 0, 3: 3, 4: 146, 5: 132 }\n * // Equivalent to 0x000000039284\n * ```\n * @example\n * ```javascript\n * zeroPad([39, 25, 103, 45], 5);\n * // Uint8Array { [Iterator] 0: 0, 1: 39, 2: 25, 3: 103, 4: 45 }\n * ```\n */\nexport function zeroPad(value: BytesLike, length: number): Uint8Array {\n value = arrayify(value);\n\n if (value.length > length) {\n logger.throwArgumentError('value out of range', 'value', value);\n }\n\n const result = new Uint8Array(length);\n result.set(value, length - value.length);\n return result;\n}\n\n/**\n * Returns true if and only if object is a valid hex string.\n * If length is specified and object is not a valid DataHexString of length bytes, an InvalidArgument error is thrown.\n * Same as [`ethers.utils.isHexString`](https://docs.ethers.io/v5/api/utils/bytes/#utils-isHexString)\n *\n * @param value the value to check whether or not it's a hex string\n * @param length a length of bytes that the value should be equal to\n * @returns whether the value is a valid hex string (and optionally, whether it matches the length specified)\n * @example\n * ```javascript\n * isHexString('0x4924');\n * // true\n * ```\n * @example\n * ```javascript\n * isHexString('0x4924', 4);\n * // false\n * // length of 4 in bytes would mean a hex string with 8 characters\n * ```\n */\nexport function isHexString(value: any, length?: number): boolean {\n if (typeof value !== 'string' || !value.match(/^0x[0-9A-Fa-f]*$/)) {\n return false;\n }\n if (length && value.length !== 2 + 2 * length) {\n return false;\n }\n return true;\n}\n\nconst HexCharacters = '0123456789abcdef';\n\n/**\n * Converts a value into a hex string\n *\n * @param value the value to convert\n * @param options options to use when converting the value to a hex string\n * @returns the value represented as a hex string\n * @example\n * ```javascript\n * hexlify(4);\n * // '0x04'\n * ```\n * @example\n * ```javascript\n * hexlify(14);\n * // '0x0e'\n * ```\n */\nexport function hexlify(\n value: BytesLike | Hexable | number | bigint,\n options?: DataOptions,\n): string {\n if (!options) {\n options = {};\n }\n\n if (typeof value === 'number') {\n logger.checkSafeUint53(value, 'invalid hexlify value');\n\n let hex = '';\n while (value) {\n hex = HexCharacters[value & 0xf] + hex;\n value = Math.floor(value / 16);\n }\n\n if (hex.length) {\n if (hex.length % 2) {\n hex = '0' + hex;\n }\n return '0x' + hex;\n }\n\n return '0x00';\n }\n\n if (typeof value === 'bigint') {\n value = value.toString(16);\n if (value.length % 2) {\n return '0x0' + value;\n }\n return '0x' + value;\n }\n\n if (\n options.allowMissingPrefix &&\n typeof value === 'string' &&\n value.substring(0, 2) !== '0x'\n ) {\n value = '0x' + value;\n }\n\n if (isHexable(value)) {\n return value.toHexString();\n }\n\n if (isHexString(value)) {\n if ((<string>value).length % 2) {\n if (options.hexPad === 'left') {\n value = '0x0' + (<string>value).substring(2);\n } else if (options.hexPad === 'right') {\n value += '0';\n } else {\n logger.throwArgumentError('hex data is odd-length', 'value', value);\n }\n }\n return (<string>value).toLowerCase();\n }\n\n if (isBytes(value)) {\n let result = '0x';\n for (let i = 0; i < value.length; i++) {\n const v = value[i];\n result += HexCharacters[(v & 0xf0) >> 4] + HexCharacters[v & 0x0f];\n }\n return result;\n }\n\n return logger.throwArgumentError('invalid hexlify value', 'value', value);\n}\n\n/**\n * Gets the length of data represented as a hex string\n *\n * @param data the data to check the length of\n * @returns the length of the data\n * @example\n * ```javascript\n * hexDataLength([2, 4, 0, 1]);\n * // 4\n * ```\n * @example\n * ```javascript\n * hexDataLength('0x3925');\n * // 2\n * ```\n */\nexport function hexDataLength(data: BytesLike) {\n if (typeof data !== 'string') {\n data = hexlify(data);\n } else if (!isHexString(data) || data.length % 2) {\n return null;\n }\n\n return (data.length - 2) / 2;\n}\n\n/**\n * Slices a {@link BytesLike} to extract a certain part of the input\n *\n * @param data the data to slice from\n * @param offset the index to start extraction at\n * @param endOffset the index to end extraction at\n * @returns the extracted data as a hex string\n * @example\n * ```javascript\n * hexDataSlice([20, 6, 48], 0, 2);\n * // '0x1406'\n * ```\n */\nexport function hexDataSlice(\n data: BytesLikeWithNumber,\n offset: number,\n endOffset?: number,\n): string {\n if (typeof data !== 'string') {\n data = hexlify(data);\n } else if (!isHexString(data) || data.length % 2) {\n logger.throwArgumentError('invalid hexData', 'value', data);\n }\n\n offset = 2 + 2 * offset;\n\n if (endOffset != null) {\n return '0x' + data.substring(offset, 2 + 2 * endOffset);\n }\n\n return '0x' + data.substring(offset);\n}\n\n/**\n * Concatenates values together into one hex string\n *\n * @param items the items to concatenate together\n * @returns a single hex string including all of the items to be concatenated\n * @example\n * ```javascript\n * hexConcat([[2, 4, 0, 1], 9, '0x2934', '0x3947']);\n * // '0x020400010929343947'\n * ```\n */\nexport function hexConcat(items: ReadonlyArray<BytesLike>): string {\n let result = '0x';\n items.forEach((item) => {\n result += hexlify(item).substring(2);\n });\n return result;\n}\n\n/**\n * Converts a number of different types into a hex string\n *\n * @param value the value to convert into a hex string\n * @returns the value represented as a hex string\n * @example\n * ```javascript\n * hexValue(39);\n * // '0x27'\n * ```\n * @example\n * ```javascript\n * hexValue([9, 4, 19, 4]);\n * // '0x9041304'\n * ```\n */\nexport function hexValue(value: BytesLike | Hexable | number | bigint): string {\n const trimmed = hexStripZeros(hexlify(value, { hexPad: 'left' }));\n if (trimmed === '0x') {\n return '0x0';\n }\n return trimmed;\n}\n\n/**\n * Strips the leading zeros from a value and returns it as a hex string\n *\n * @param value the value to strip zeros from\n * @returns a hex string representation of the value, without leading zeros\n * @example\n * ```javascript\n * hexStripZeros([0,0,0,48]);\n * // '0x30'\n * ```\n */\nexport function hexStripZeros(value: BytesLike): string {\n if (typeof value !== 'string') {\n value = hexlify(value);\n }\n\n if (!isHexString(value)) {\n logger.throwArgumentError('invalid hex string', 'value', value);\n }\n value = value.substring(2);\n let offset = 0;\n while (offset < value.length && value[offset] === '0') {\n offset++;\n }\n return '0x' + value.substring(offset);\n}\n\n/**\n * Returns a hex string padded to a specified length of bytes.\n *\n * Similar to [\"hexZeroPad\" in ethers.js](https://docs.ethers.io/v5/api/utils/bytes/#utils-hexZeroPad)\n *\n * Differs from [\"padLeft\" in web3.js](https://web3js.readthedocs.io/en/v1.7.1/web3-utils.html#padleft) because web3 counts by characters, not bytes.\n *\n * @param value A hex-string, hex-number, or decimal number (auto-converts to base-16) to be padded\n * @param length The final length in bytes\n * @returns A hex string padded to the specified length\n * @throws If the value is not a hex string or number\n * @throws If the value is longer than the length\n * @example\n * ```javascript\n * hexZeroPad('0x60', 2);\n * // '0x0060'\n * ```\n * @example\n * ```javascript\n * hexZeroPad(0x60, 3);\n * // '0x000060'\n * ```\n * @example\n * ```javascript\n * hexZeroPad('12345', 1);\n * // Throws\n * ```\n */\nexport function hexZeroPad(value: BytesLikeWithNumber, length: number): string {\n if (typeof value !== 'string') {\n value = hexlify(value);\n } else if (!isHexString(value)) {\n logger.throwArgumentError('invalid hex string', 'value', value);\n }\n\n if (value.length > 2 * length + 2) {\n logger.throwError('value out of range', { value, length });\n }\n\n while (value.length < 2 * length + 2) {\n value = '0x0' + value.substring(2);\n }\n\n return value;\n}\n\n// export function splitSignature(signature: SignatureLike): Signature {\n// const result: Signature = {\n// r: '0x',\n// s: '0x',\n// _vs: '0x',\n// recoveryParam: 0,\n// v: 0,\n// yParityAndS: '0x',\n// compact: '0x',\n// };\n\n// if (isBytesLike(signature)) {\n// const bytes: Uint8Array = arrayify(signature);\n\n// // Get the r, s and v\n// if (bytes.length === 64) {\n// // EIP-2098; pull the v from the top bit of s and clear it\n// result.v = 27 + (bytes[32] >> 7);\n// bytes[32] &= 0x7f;\n\n// result.r = hexlify(bytes.slice(0, 32));\n// result.s = hexlify(bytes.slice(32, 64));\n// } else if (bytes.length === 65) {\n// result.r = hexlify(bytes.slice(0, 32));\n// result.s = hexlify(bytes.slice(32, 64));\n// result.v = bytes[64];\n// } else {\n// logger.throwArgumentError(\n// 'invalid signature string',\n// 'signature',\n// signature,\n// );\n// }\n\n// // Allow a recid to be used as the v\n// if (result.v < 27) {\n// if (result.v === 0 || result.v === 1) {\n// result.v += 27;\n// } else {\n// logger.throwArgumentError(\n// 'signature invalid v byte',\n// 'signature',\n// signature,\n// );\n// }\n// }\n\n// // Compute recoveryParam from v\n// result.recoveryParam = 1 - (result.v % 2);\n\n// // Compute _vs from recoveryParam and s\n// if (result.recoveryParam) {\n// bytes[32] |= 0x80;\n// }\n// result._vs = hexlify(bytes.slice(32, 64));\n// } else {\n// result.r = signature.r;\n// result.s = signature.s;\n// result.v = signature.v;\n// result.recoveryParam = signature.recoveryParam;\n// result._vs = signature._vs;\n\n// // If the _vs is available, use it to populate missing s, v and recoveryParam\n// // and verify non-missing s, v and recoveryParam\n// if (result._vs != null) {\n// const vs = zeroPad(arrayify(result._vs), 32);\n// result._vs = hexlify(vs);\n\n// // Set or check the recid\n// const recoveryParam = vs[0] >= 128 ? 1 : 0;\n// if (result.recoveryParam == null) {\n// result.recoveryParam = recoveryParam;\n// } else if (result.recoveryParam !== recoveryParam) {\n// logger.throwArgumentError(\n// 'signature recoveryParam mismatch _vs',\n// 'signature',\n// signature,\n// );\n// }\n\n// // Set or check the s\n// vs[0] &= 0x7f;\n// const s = hexlify(vs);\n// if (result.s == null) {\n// result.s = s;\n// } else if (result.s !== s) {\n// logger.throwArgumentError(\n// 'signature v mismatch _vs',\n// 'signature',\n// signature,\n// );\n// }\n// }\n\n// // Use recid and v to populate each other\n// if (result.recoveryParam == null) {\n// if (result.v == null) {\n// logger.throwArgumentError(\n// 'signature missing v and recoveryParam',\n// 'signature',\n// signature,\n// );\n// } else if (result.v === 0 || result.v === 1) {\n// result.recoveryParam = result.v;\n// } else {\n// result.recoveryParam = 1 - (result.v % 2);\n// }\n// } else {\n// if (result.v == null) {\n// result.v = 27 + result.recoveryParam;\n// } else {\n// const recId =\n// result.v === 0 || result.v === 1 ? result.v : 1 - (result.v % 2);\n// if (result.recoveryParam !== recId) {\n// logger.throwArgumentError(\n// 'signature recoveryParam mismatch v',\n// 'signature',\n// signature,\n// );\n// }\n// }\n// }\n\n// if (result.r == null || !isHexString(result.r)) {\n// logger.throwArgumentError(\n// 'signature missing or invalid r',\n// 'signature',\n// signature,\n// );\n// } else {\n// result.r = hexZeroPad(result.r, 32);\n// }\n\n// if (result.s == null || !isHexString(result.s)) {\n// logger.throwArgumentError(\n// 'signature missing or invalid s',\n// 'signature',\n// signature,\n// );\n// } else {\n// result.s = hexZeroPad(result.s, 32);\n// }\n\n// const vs = arrayify(result.s);\n// if (vs[0] >= 128) {\n// logger.throwArgumentError(\n// 'signature s out of range',\n// 'signature',\n// signature,\n// );\n// }\n// if (result.recoveryParam) {\n// vs[0] |= 0x80;\n// }\n// const _vs = hexlify(vs);\n\n// if (result._vs) {\n// if (!isHexString(result._vs)) {\n// logger.throwArgumentError(\n// 'signature invalid _vs',\n// 'signature',\n// signature,\n// );\n// }\n// result._vs = hexZeroPad(result._vs, 32);\n// }\n\n// // Set or check the _vs\n// if (result._vs == null) {\n// result._vs = _vs;\n// } else if (result._vs !== _vs) {\n// logger.throwArgumentError(\n// 'signature _vs mismatch v and s',\n// 'signature',\n// signature,\n// );\n// }\n// }\n\n// result.yParityAndS = result._vs;\n// result.compact = result.r + result.yParityAndS.substring(2);\n\n// return result;\n// }\n\n// export function joinSignature(signature: SignatureLike): string {\n// signature = splitSignature(signature);\n\n// return hexlify(\n// concat([\n// signature.r,\n// signature.s,\n// signature.recoveryParam ? '0x1c' : '0x1b',\n// ]),\n// );\n// }\n","import Big from 'big.js';\nimport { TinyBig } from '../../shared/tiny-big/tiny-big';\nimport { hexlify } from '../../utils/bytes';\nimport type {\n RPCTransactionRequest,\n TransactionRequest,\n} from './../../types/Transaction.types';\nimport type { BytesLike } from './../../utils/bytes';\n\n/**\n * @param transaction\n * @example\n */\nexport function prepareTransaction(\n transaction: TransactionRequest,\n): RPCTransactionRequest {\n const preparedTransaction = {\n ...transaction,\n } as unknown as RPCTransactionRequest;\n (Object.keys(transaction) as Array<keyof TransactionRequest>).forEach(\n (key) => {\n switch (key) {\n case 'gas':\n case 'gasPrice':\n case 'nonce':\n case 'maxFeePerGas':\n case 'maxPriorityFeePerGas':\n case 'value': {\n const value = transaction[key];\n if (value instanceof TinyBig) {\n preparedTransaction[key] = value.toHexString();\n } else if (value instanceof Big) {\n preparedTransaction[key] = `0x${BigInt(value.toString()).toString(\n 16,\n )}`;\n } else if (typeof transaction[key] === 'number')\n preparedTransaction[key] =\n '0x' + (transaction[key] as any).toString(16);\n else preparedTransaction[key] = (transaction[key] as any).toString();\n break;\n }\n case 'data':\n preparedTransaction[key] = hexlify(transaction[key] as BytesLike);\n break;\n }\n },\n );\n return preparedTransaction;\n}\n","// autogenerated in \"fetch-chains-info.ts\"\n// Do not edit directly\nexport default {\n \"1\": [\n \"eth\",\n \"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e\"\n ],\n \"2\": [\n \"exp\"\n ],\n \"3\": [\n \"rop\",\n \"0x112234455c3a32fd11230c42e7bccd4a84e02010\"\n ],\n \"4\": [\n \"rin\",\n \"0xe7410170f87102df0055eb195163a03b7f2bff4a\"\n ],\n \"5\": [\n \"gor\",\n \"0x112234455c3a32fd11230c42e7bccd4a84e02010\"\n ],\n \"6\": [\n \"kot\"\n ],\n \"7\": [\n \"tch\"\n ],\n \"8\": [\n \"ubq\"\n ],\n \"9\": [\n \"tubq\"\n ],\n \"10\": [\n \"oeth\"\n ],\n \"11\": [\n \"meta\"\n ],\n \"12\": [\n \"kal\"\n ],\n \"13\": [\n \"dstg\"\n ],\n \"14\": [\n \"flr\"\n ],\n \"15\": [\n \"diode\"\n ],\n \"16\": [\n \"cflr\"\n ],\n \"17\": [\n \"tfi\"\n ],\n \"18\": [\n \"TST\"\n ],\n \"19\": [\n \"sgb\"\n ],\n \"20\": [\n \"elaeth\"\n ],\n \"21\": [\n \"elaetht\"\n ],\n \"22\": [\n \"eladid\"\n ],\n \"23\": [\n \"eladidt\"\n ],\n \"24\": [\n \"dthmainnet\"\n ],\n \"25\": [\n \"cro\"\n ],\n \"26\": [\n \"L1test\"\n ],\n \"27\": [\n \"shib\"\n ],\n \"28\": [\n \"Boba Rinkeby\"\n ],\n \"29\": [\n \"L1\"\n ],\n \"30\": [\n \"rsk\"\n ],\n \"31\": [\n \"trsk\"\n ],\n \"32\": [\n \"GooDT\"\n ],\n \"33\": [\n \"GooD\"\n ],\n \"34\": [\n \"dth\"\n ],\n \"35\": [\n \"tbwg\"\n ],\n \"36\": [\n \"dx\"\n ],\n \"38\": [\n \"val\"\n ],\n \"40\": [\n \"Telos EVM\"\n ],\n \"41\": [\n \"Telos EVM Testnet\"\n ],\n \"42\": [\n \"kov\"\n ],\n \"43\": [\n \"pangolin\"\n ],\n \"44\": [\n \"crab\"\n ],\n \"45\": [\n \"pangoro\"\n ],\n \"46\": [\n \"darwinia\"\n ],\n \"50\": [\n \"xdc\"\n ],\n \"51\": [\n \"TXDC\"\n ],\n \"52\": [\n \"cet\"\n ],\n \"53\": [\n \"tcet\"\n ],\n \"54\": [\n \"OP\"\n ],\n \"55\": [\n \"ZYX\"\n ],\n \"56\": [\n \"bnb\"\n ],\n \"57\": [\n \"sys\"\n ],\n \"58\": [\n \"Ontology Mainnet\"\n ],\n \"59\": [\n \"EOS Mainnet\"\n ],\n \"60\": [\n \"go\"\n ],\n \"61\": [\n \"etc\"\n ],\n \"62\": [\n \"tetc\"\n ],\n \"63\": [\n \"metc\"\n ],\n \"64\": [\n \"ellaism\"\n ],\n \"65\": [\n \"tokt\"\n ],\n \"66\": [\n \"okt\"\n ],\n \"67\": [\n \"dbm\"\n ],\n \"68\": [\n \"SO1\"\n ],\n \"69\": [\n \"okov\"\n ],\n \"70\": [\n \"hsc\"\n ],\n \"71\": [\n \"cfxtest\"\n ],\n \"72\": [\n \"dxc\"\n ],\n \"74\": [\n \"idchain\"\n ],\n \"76\": [\n \"mix\"\n ],\n \"77\": [\n \"spoa\"\n ],\n \"78\": [\n \"primuschain\"\n ],\n \"79\": [\n \"zenith\"\n ],\n \"80\": [\n \"GeneChain\"\n ],\n \"81\": [\n \"VIL\"\n ],\n \"82\": [\n \"Meter\"\n ],\n \"83\": [\n \"MeterTest\"\n ],\n \"85\": [\n \"gttest\"\n ],\n \"86\": [\n \"gt\"\n ],\n \"87\": [\n \"nnw\"\n ],\n \"88\": [\n \"tomo\"\n ],\n \"89\": [\n \"tomot\"\n ],\n \"90\": [\n \"gar-s0\"\n ],\n \"91\": [\n \"gar-s1\"\n ],\n \"92\": [\n \"gar-s2\"\n ],\n \"93\": [\n \"gar-s3\"\n ],\n \"95\": [\n \"Kylin Testnet\"\n ],\n \"96\": [\n \"nsc\"\n ],\n \"97\": [\n \"bnbt\"\n ],\n \"99\": [\n \"poa\"\n ],\n \"100\": [\n \"gno\"\n ],\n \"101\": [\n \"eti\"\n ],\n \"102\": [\n \"tw3g\"\n ],\n \"104\": [\n \"tklc\"\n ],\n \"105\": [\n \"dw3g\"\n ],\n \"106\": [\n \"vlx\"\n ],\n \"107\": [\n \"ntn\"\n ],\n \"108\": [\n \"TT\"\n ],\n \"110\": [\n \"xpr\"\n ],\n \"111\": [\n \"ETL\"\n ],\n \"122\": [\n \"fuse\"\n ],\n \"123\": [\n \"spark\"\n ],\n \"124\": [\n \"dwu\"\n ],\n \"125\": [\n \"oychain testnet\"\n ],\n \"126\": [\n \"oychain mainnet\"\n ],\n \"127\": [\n \"feth\"\n ],\n \"128\": [\n \"heco\"\n ],\n \"137\": [\n \"MATIC\"\n ],\n \"141\": [\n \"OPtest\"\n ],\n \"142\": [\n \"dax\"\n ],\n \"162\": [\n \"tpht\"\n ],\n \"163\": [\n \"pht\"\n ],\n \"168\": [\n \"aioz\"\n ],\n \"170\": [\n \"hoosmartchain\"\n ],\n \"172\": [\n \"resil\"\n ],\n \"180\": [\n \"ame\"\n ],\n \"186\": [\n \"Seele\"\n ],\n \"188\": [\n \"BMC\"\n ],\n \"189\": [\n \"BMCT\"\n ],\n \"193\": [\n \"cem\"\n ],\n \"199\": [\n \"BTT\"\n ],\n \"200\": [\n \"aox\"\n ],\n \"211\": [\n \"EDI\"\n ],\n \"218\": [\n \"SO1-old\"\n ],\n \"222\": [\n \"ASK\"\n ],\n \"225\": [\n \"LA\"\n ],\n \"226\": [\n \"TLA\"\n ],\n \"246\": [\n \"ewt\"\n ],\n \"250\": [\n \"ftm\"\n ],\n \"256\": [\n \"hecot\"\n ],\n \"258\": [\n \"setm\"\n ],\n \"262\": [\n \"SUR\"\n ],\n \"269\": [\n \"hpb\"\n ],\n \"280\": [\n \"zksync-goerli\"\n ],\n \"288\": [\n \"Boba\"\n ],\n \"300\": [\n \"ogc\"\n ],\n \"321\": [\n \"kcs\"\n ],\n \"322\": [\n \"kcst\"\n ],\n \"333\": [\n \"w3q\"\n ],\n \"335\": [\n \"DFKTEST\"\n ],\n \"336\": [\n \"sdn\"\n ],\n \"338\": [\n \"tcro\"\n ],\n \"361\": [\n \"theta-mainnet\"\n ],\n \"363\": [\n \"theta-sapphire\"\n ],\n \"364\": [\n \"theta-amber\"\n ],\n \"365\": [\n \"theta-testnet\"\n ],\n \"369\": [\n \"pls\"\n ],\n \"385\": [\n \"lisinski\"\n ],\n \"416\": [\n \"SX\"\n ],\n \"420\": [\n \"ogor\"\n ],\n \"499\": [\n \"rupx\"\n ],\n \"512\": [\n \"aac\"\n ],\n \"513\": [\n \"aact\"\n ],\n \"520\": [\n \"xt\"\n ],\n \"530\": [\n \"f(x)Core\"\n ],\n \"534\": [\n \"CNDL\"\n ],\n \"555\": [\n \"CLASS\"\n ],\n \"558\": [\n \"tao\"\n ],\n \"588\": [\n \"metis-stardust\"\n ],\n \"592\": [\n \"astr\"\n ],\n \"595\": [\n \"maca\"\n ],\n \"596\": [\n \"tkar\"\n ],\n \"597\": [\n \"taca\"\n ],\n \"600\": [\n \"mesh-chain-testnet\"\n ],\n \"647\": [\n \"SX-Testnet\"\n ],\n \"666\": [\n \"pixie-chain-testnet\"\n ],\n \"686\": [\n \"kar\"\n ],\n \"700\": [\n \"SNS\"\n ],\n \"707\": [\n \"bcs\"\n ],\n \"708\": [\n \"tbcs\"\n ],\n \"721\": [\n \"tfeth\"\n ],\n \"776\": [\n \"opc\"\n ],\n \"777\": [\n \"cth\"\n ],\n \"787\": [\n \"aca\"\n ],\n \"788\": [\n \"taero\"\n ],\n \"803\": [\n \"haic\"\n ],\n \"808\": [\n \"PFTEST\"\n ],\n \"820\": [\n \"clo\"\n ],\n \"821\": [\n \"tclo\"\n ],\n \"880\": [\n \"ambros\"\n ],\n \"888\": [\n \"wan\"\n ],\n \"900\": [\n \"gar-test-s0\"\n ],\n \"901\": [\n \"gar-test-s1\"\n ],\n \"902\": [\n \"gar-test-s2\"\n ],\n \"903\": [\n \"gar-test-s3\"\n ],\n \"909\": [\n \"PF\"\n ],\n \"940\": [\n \"tpls\"\n ],\n \"941\": [\n \"t2bpls\"\n ],\n \"942\": [\n \"t3pls\"\n ],\n \"977\": [\n \"yeti\"\n ],\n \"980\": [\n \"top_evm\"\n ],\n \"989\": [\n \"top\"\n ],\n \"998\": [\n \"ln\"\n ],\n \"999\": [\n \"twan\"\n ],\n \"1000\": [\n \"gton\"\n ],\n \"1001\": [\n \"Baobab\"\n ],\n \"1007\": [\n \"tnew\"\n ],\n \"1008\": [\n \"eun\"\n ],\n \"1010\": [\n \"EVC\"\n ],\n \"1012\": [\n \"new\"\n ],\n \"1022\": [\n \"sku\"\n ],\n \"1023\": [\n \"tclv\"\n ],\n \"1024\": [\n \"clv\"\n ],\n \"1028\": [\n \"tbtt\"\n ],\n \"1030\": [\n \"cfx\"\n ],\n \"1088\": [\n \"metis-andromeda\"\n ],\n \"1139\": [\n \"MATH\"\n ],\n \"1140\": [\n \"tMATH\"\n ],\n \"1197\": [\n \"iora\"\n ],\n \"1201\": [\n \"avis\"\n ],\n \"1202\": [\n \"wtt\"\n ],\n \"1213\": [\n \"popcat\"\n ],\n \"1214\": [\n \"enter\"\n ],\n \"1246\": [\n \"om\"\n ],\n \"1280\": [\n \"HO\"\n ],\n \"1284\": [\n \"mbeam\"\n ],\n \"1285\": [\n \"mriver\"\n ],\n \"1286\": [\n \"mrock-old\"\n ],\n \"1287\": [\n \"mbase\"\n ],\n \"1288\": [\n \"mrock\"\n ],\n \"1297\": [\n \"Bobabase\"\n ],\n \"1319\": [\n \"aitd\"\n ],\n \"1320\": [\n \"aitdtestnet\"\n ],\n \"1337\": [\n \"cennz-old\"\n ],\n \"1506\": [\n \"Sherpax\"\n ],\n \"1507\": [\n \"Sherpax Testnet\"\n ],\n \"1618\": [\n \"cate\"\n ],\n \"1620\": [\n \"ath\"\n ],\n \"1657\": [\n \"bta\"\n ],\n \"1688\": [\n \"LUDAN\"\n ],\n \"1818\": [\n \"cube\"\n ],\n \"1819\": [\n \"cubet\"\n ],\n \"1856\": [\n \"tsf\"\n ],\n \"1898\": [\n \"boya\"\n ],\n \"1984\": [\n \"euntest\"\n ],\n \"1987\": [\n \"egem\"\n ],\n \"2001\": [\n \"milkAda\"\n ],\n \"2008\": [\n \"cloudwalk_testnet\"\n ],\n \"2009\": [\n \"cloudwalk_mainnet\"\n ],\n \"2020\": [\n \"420\"\n ],\n \"2021\": [\n \"edg\"\n ],\n \"2022\": [\n \"edgt\"\n ],\n \"2023\": [\n \"taycan-testnet\"\n ],\n \"2025\": [\n \"rpg\"\n ],\n \"2100\": [\n \"eco\"\n ],\n \"2101\": [\n \"esp\"\n ],\n \"2152\": [\n \"fra\"\n ],\n \"2153\": [\n \"findora-testnet\"\n ],\n \"2213\": [\n \"evanesco\"\n ],\n \"2221\": [\n \"tkava\"\n ],\n \"2222\": [\n \"kava\"\n ],\n \"2223\": [\n \"VChain\"\n ],\n \"2559\": [\n \"ktoc\"\n ],\n \"2569\": [\n \"tpc\"\n ],\n \"2612\": [\n \"EZChain\"\n ],\n \"2613\": [\n \"Fuji-EZChain\"\n ],\n \"3000\": [\n \"cennz-r\"\n ],\n \"3001\": [\n \"cennz-n\"\n ],\n \"3331\": [\n \"zcrbeach\"\n ],\n \"3333\": [\n \"w3q-t\"\n ],\n \"3334\": [\n \"w3q-g\"\n ],\n \"3400\": [\n \"prb\"\n ],\n \"3500\": [\n \"prbtestnet\"\n ],\n \"3501\": [\n \"jfin\"\n ],\n \"3690\": [\n \"btx\"\n ],\n \"3737\": [\n \"csb\"\n ],\n \"3966\": [\n \"dyno\"\n ],\n \"3967\": [\n \"tdyno\"\n ],\n \"3999\": [\n \"ycc\"\n ],\n \"4002\": [\n \"tftm\"\n ],\n \"4051\": [\n \"Bobaopera Testnet\"\n ],\n \"4102\": [\n \"aioz-testnet\"\n ],\n \"4181\": [\n \"PHI\"\n ],\n \"4689\": [\n \"iotex-mainnet\"\n ],\n \"4690\": [\n \"iotex-testnet\"\n ],\n \"4918\": [\n \"txvm\"\n ],\n \"4919\": [\n \"xvm\"\n ],\n \"5177\": [\n \"tlc\"\n ],\n \"5197\": [\n \"es\"\n ],\n \"5315\": [\n \"UZMI\"\n ],\n \"5551\": [\n \"Nahmii\"\n ],\n \"5553\": [\n \"Nahmii testnet\"\n ],\n \"5700\": [\n \"tsys\"\n ],\n \"5777\": [\n \"dgcc\"\n ],\n \"5851\": [\n \"Ontology Testnet\"\n ],\n \"5869\": [\n \"rbd\"\n ],\n \"6626\": [\n \"pixie-chain\"\n ],\n \"6969\": [\n \"tombchain\"\n ],\n \"7027\": [\n \"ELLA\"\n ],\n \"7341\": [\n \"shyft\"\n ],\n \"7777\": [\n \"Rise of the Warbots Testnet\"\n ],\n \"7878\": [\n \"tscas\"\n ],\n \"8000\": [\n \"teleport\"\n ],\n \"8001\": [\n \"teleport-testnet\"\n ],\n \"8029\": [\n \"mdgl\"\n ],\n \"8080\": [\n \"GeneChainAdn\"\n ],\n \"8217\": [\n \"Cypress\"\n ],\n \"8285\": [\n \"Kortho\"\n ],\n \"8723\": [\n \"olo\"\n ],\n \"8724\": [\n \"tolo\"\n ],\n \"8888\": [\n \"ambrostestnet\"\n ],\n \"8898\": [\n \"mmt\"\n ],\n \"8995\": [\n \"berg\"\n ],\n \"9000\": [\n \"evmos-testnet\"\n ],\n \"9001\": [\n \"evmos\"\n ],\n \"9012\": [\n \"brb\"\n ],\n \"9100\": [\n \"GENEC\"\n ],\n \"9527\": [\n \"trpg\"\n ],\n \"9999\": [\n \"myn\"\n ],\n \"10000\": [\n \"smartbch\"\n ],\n \"10001\": [\n \"smartbchtest\"\n ],\n \"10101\": [\n \"GEN\"\n ],\n \"10823\": [\n \"CCP\"\n ],\n \"10946\": [\n \"quadrans\"\n ],\n \"10947\": [\n \"quadranstestnet\"\n ],\n \"11111\": [\n \"WAGMI\"\n ],\n \"11437\": [\n \"shyftt\"\n ],\n \"12051\": [\n \"tZERO\"\n ],\n \"12052\": [\n \"ZERO\"\n ],\n \"13381\": [\n \"Phoenix\"\n ],\n \"16000\": [\n \"mtt\"\n ],\n \"16001\": [\n \"mtttest\"\n ],\n \"16888\": [\n \"tivar\"\n ],\n \"19845\": [\n \"btcix\"\n ],\n \"21337\": [\n \"cennz-a\"\n ],\n \"21816\": [\n \"omc\"\n ],\n \"22023\": [\n \"SFL\"\n ],\n \"24484\": [\n \"web\"\n ],\n \"24734\": [\n \"mintme\"\n ],\n \"26863\": [\n \"OAC\"\n ],\n \"30067\": [\n \"Piece\"\n ],\n \"31102\": [\n \"esn\"\n ],\n \"31337\": [\n \"got\"\n ],\n \"32520\": [\n \"Brise\"\n ],\n \"32659\": [\n \"fsn\"\n ],\n \"35441\": [\n \"q\"\n ],\n \"35443\": [\n \"q-testnet\"\n ],\n \"39797\": [\n \"nrg\"\n ],\n \"42069\": [\n \"PC\"\n ],\n \"42161\": [\n \"arb1\"\n ],\n \"42170\": [\n \"arb-nova\"\n ],\n \"42220\": [\n \"CELO\"\n ],\n \"42261\": [\n \"emerald\"\n ],\n \"42262\": [\n \"oasis\"\n ],\n \"43110\": [\n \"avaeth\"\n ],\n \"43113\": [\n \"Fuji\"\n ],\n \"43114\": [\n \"avax\"\n ],\n \"44787\": [\n \"ALFA\"\n ],\n \"45000\": [\n \"Autobahn Network\"\n ],\n \"47805\": [\n \"REI\"\n ],\n \"49797\": [\n \"tnrg\"\n ],\n \"50021\": [\n \"tgton\"\n ],\n \"53935\": [\n \"DFK\"\n ],\n \"55555\": [\n \"reichain\"\n ],\n \"55556\": [\n \"trei\"\n ],\n \"60000\": [\n \"TKM-test0\"\n ],\n \"60001\": [\n \"TKM-test1\"\n ],\n \"60002\": [\n \"TKM-test2\"\n ],\n \"60103\": [\n \"TKM-test103\"\n ],\n \"62320\": [\n \"BKLV\"\n ],\n \"62621\": [\n \"mtv\"\n ],\n \"63000\": [\n \"ecs\"\n ],\n \"63001\": [\n \"ecs-testnet\"\n ],\n \"69420\": [\n \"cndr\"\n ],\n \"70000\": [\n \"TKM0\"\n ],\n \"70001\": [\n \"TKM1\"\n ],\n \"70002\": [\n \"TKM2\"\n ],\n \"70103\": [\n \"TKM103\"\n ],\n \"71393\": [\n \"ckb\"\n ],\n \"71401\": [\n \"gw-testnet-v1\"\n ],\n \"71402\": [\n \"gw-mainnet-v1\"\n ],\n \"73799\": [\n \"vt\"\n ],\n \"73927\": [\n \"mvm\"\n ],\n \"75000\": [\n \"resin\"\n ],\n \"78110\": [\n \"firenze\"\n ],\n \"80001\": [\n \"maticmum\"\n ],\n \"88888\": [\n \"ivar\"\n ],\n \"99998\": [\n \"usctest\"\n ],\n \"99999\": [\n \"usc\"\n ],\n \"100000\": [\n \"qkc-r\"\n ],\n \"100001\": [\n \"qkc-s0\"\n ],\n \"100002\": [\n \"qkc-s1\"\n ],\n \"100003\": [\n \"qkc-s2\"\n ],\n \"100004\": [\n \"qkc-s3\"\n ],\n \"100005\": [\n \"qkc-s4\"\n ],\n \"100006\": [\n \"qkc-s5\"\n ],\n \"100007\": [\n \"qkc-s6\"\n ],\n \"100008\": [\n \"qkc-s7\"\n ],\n \"103090\": [\n \"CRFI\"\n ],\n \"108801\": [\n \"bro\"\n ],\n \"110000\": [\n \"qkc-d-r\"\n ],\n \"110001\": [\n \"qkc-d-s0\"\n ],\n \"110002\": [\n \"qkc-d-s1\"\n ],\n \"110003\": [\n \"qkc-d-s2\"\n ],\n \"110004\": [\n \"qkc-d-s3\"\n ],\n \"110005\": [\n \"qkc-d-s4\"\n ],\n \"110006\": [\n \"qkc-d-s5\"\n ],\n \"110007\": [\n \"qkc-d-s6\"\n ],\n \"110008\": [\n \"qkc-d-s7\"\n ],\n \"131419\": [\n \"ETND\"\n ],\n \"200101\": [\n \"milkTAda\"\n ],\n \"200625\": [\n \"aka\"\n ],\n \"201018\": [\n \"alaya\"\n ],\n \"201030\": [\n \"alayadev\"\n ],\n \"210425\": [\n \"platon\"\n ],\n \"234666\": [\n \"hym\"\n ],\n \"246529\": [\n \"ats\"\n ],\n \"246785\": [\n \"atstau\"\n ],\n \"281121\": [\n \"SoChain\"\n ],\n \"333888\": [\n \"sparta\"\n ],\n \"333999\": [\n \"olympus\"\n ],\n \"421611\": [\n \"arb-rinkeby\"\n ],\n \"421613\": [\n \"arb-goerli\"\n ],\n \"432201\": [\n \"Dexalot\"\n ],\n \"444900\": [\n \"wlkt\"\n ],\n \"474142\": [\n \"oc\"\n ],\n \"512512\": [\n \"cmp\"\n ],\n \"666666\": [\n \"vpioneer\"\n ],\n \"846000\": [\n \"bloqs4good\"\n ],\n \"888888\": [\n \"vision\"\n ],\n \"955305\": [\n \"elv\"\n ],\n \"1313114\": [\n \"etho\"\n ],\n \"1313500\": [\n \"xero\"\n ],\n \"1337702\": [\n \"kintsugi\"\n ],\n \"1337802\": [\n \"kiln\"\n ],\n \"2203181\": [\n \"platondev\"\n ],\n \"2206132\": [\n \"platondev2\"\n ],\n \"7762959\": [\n \"music\"\n ],\n \"11155111\": [\n \"sep\"\n ],\n \"13371337\": [\n \"tpep\"\n ],\n \"18289463\": [\n \"ilt\"\n ],\n \"20180430\": [\n \"spectrum\"\n ],\n \"20181205\": [\n \"qki\"\n ],\n \"28945486\": [\n \"auxi\"\n ],\n \"35855456\": [\n \"JOYS\"\n ],\n \"61717561\": [\n \"aqua\"\n ],\n \"99415706\": [\n \"TOYS\"\n ],\n \"192837465\": [\n \"GTH\"\n ],\n \"245022926\": [\n \"neonevm-devnet\"\n ],\n \"245022934\": [\n \"neonevm-mainnet\"\n ],\n \"245022940\": [\n \"neonevm-testnet\"\n ],\n \"311752642\": [\n \"oneledger\"\n ],\n \"356256156\": [\n \"tGTH\"\n ],\n \"486217935\": [\n \"dGTH\"\n ],\n \"1122334455\": [\n \"ipos\"\n ],\n \"1313161554\": [\n \"aurora\"\n ],\n \"1313161555\": [\n \"aurora-testnet\"\n ],\n \"1313161556\": [\n \"aurora-betanet\"\n ],\n \"1666600000\": [\n \"hmy-s0\"\n ],\n \"1666600001\": [\n \"hmy-s1\"\n ],\n \"1666600002\": [\n \"hmy-s2\"\n ],\n \"1666600003\": [\n \"hmy-s3\"\n ],\n \"1666700000\": [\n \"hmy-b-s0\"\n ],\n \"1666700001\": [\n \"hmy-b-s1\"\n ],\n \"1666700002\": [\n \"hmy-b-s2\"\n ],\n \"1666700003\": [\n \"hmy-b-s3\"\n ],\n \"2021121117\": [\n \"hop\"\n ],\n \"3125659152\": [\n \"pirl\"\n ],\n \"4216137055\": [\n \"frankenstein\"\n ],\n \"11297108099\": [\n \"tpalm\"\n ],\n \"11297108109\": [\n \"palm\"\n ],\n \"197710212030\": [\n \"ntt\"\n ],\n \"197710212031\": [\n \"ntt-haradev\"\n ],\n \"6022140761023\": [\n \"mole\"\n ],\n \"868455272153094\": [\n \"gw-testnet-v1-deprecated\"\n ]\n}","import { cleanBlock } from '../classes/utils/clean-block';\nimport { cleanLog } from '../classes/utils/clean-log';\nimport { cleanTransaction } from '../classes/utils/clean-transaction';\nimport { cleanTransactionReceipt } from '../classes/utils/clean-transaction-receipt';\nimport { buildRPCPostBody, post } from '../classes/utils/fetchers';\nimport { hexToDecimal } from '../classes/utils/hex-to-decimal';\nimport { prepareTransaction } from '../classes/utils/prepare-transaction';\nimport { logger } from '../logger/logger';\nimport type { TinyBig } from '../shared/tiny-big/tiny-big';\nimport { tinyBig } from '../shared/tiny-big/tiny-big';\nimport type { BlockResponse, BlockTag, RPCBlock } from '../types/Block.types';\nimport type { Filter, FilterByBlockHash } from '../types/Filter.types';\nimport type { Network } from '../types/Network.types';\nimport type {\n Log,\n RPCLog,\n RPCTransaction,\n RPCTransactionReceipt,\n TransactionReceipt,\n TransactionRequest,\n TransactionResponse,\n} from '../types/Transaction.types';\nimport chainsInfo from './utils/chains-info';\n\n/**\n * Converts a block tag into the right format when needed.\n *\n * * No equivalent in ethers.js\n * * No equivalent in web3.js\n *\n * @internal\n * @param blockTag the block tag to convert/return as a hex string\n * @returns the specified block tag formatted as a hex string\n * @example\n * ```javascript\n * prepBlockTag(14848183);\n * // '0xe290b7'\n * ```\n * @example\n * ```javascript\n * prepBlockTag('0xe290b7');\n * // '0xe290b7'\n * ```\n */\nfunction prepBlockTag(blockTag: BlockTag): string {\n return typeof blockTag === 'number'\n ? tinyBig(blockTag).toHexString()\n : blockTag;\n}\n\nexport abstract class BaseProvider {\n /**\n * ignore\n */\n abstract selectRpcUrl(): string;\n abstract post(body: Record<string, unknown>): Promise<any>;\n\n /**\n * @ignore\n */\n readonly _rpcUrls: string[] = [];\n /**\n * @ignore\n */\n protected _post = (body: Record<string, unknown>) =>\n post(this.selectRpcUrl(), body);\n\n /**\n * @param rpcUrls The URL(s) to your Eth node(s). Consider POKT or Infura\n * @example\n * `https://free-eth-node.com/api/eth`\n * @example\n * `https://mainnet.infura.io/v3/YOUR-PROJECT-ID`\n */\n constructor(rpcUrls: string[]) {\n this._rpcUrls = rpcUrls;\n }\n\n /**\n * Gets information (name, chainId, and ensAddress when applicable) about the network the provider is connected to.\n *\n * * [Identical](/docs/api#isd) to [`ethers.provider.getNetwork`](https://docs.ethers.io/v5/api/providers/provider/#Provider-getNetwork) in ethers.js\n * * [Similar](/docs/api#isd) to [`web3.eth.getChainId`](https://web3js.readthedocs.io/en/v1.7.3/web3-eth.html#getchainid) in web3.js, returns more than just the `chainId`\n *\n * @returns information about the network this provider is currently connected to\n * @example\n * ```javascript\n * jsonRpcProvider('https://free-eth-node.com/api/eth').getNetwork();\n * // { chainId: 1, name: 'eth', ensAddress: '0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e' }\n * ```\n * @example\n * ```javascript\n * jsonRpcProvider('https://free-eth-node.com/api/MATIC').getNetwork();\n * // { chainId: 137, name: 'MATIC', ensAddress: null }\n * ```\n */\n public async getNetwork(): Promise<Network> {\n const hexChainId = (await this.post(\n buildRPCPostBody('eth_chainId', []),\n )) as string;\n\n const chainId = hexToDecimal(hexChainId);\n const info = (chainsInfo as any)[chainId];\n return {\n chainId: Number(chainId),\n name: info[0] || 'unknown',\n ensAddress: info[1] || null, // only send ensAddress if it exists\n };\n }\n\n /**\n * Gets the number of the most recently mined block on the network the provider is connected to.\n *\n * * [Identical](/docs/api#isd) to [`ethers.provider.getBlockNumber`](https://docs.ethers.io/v5/api/providers/provider/#Provider-getBlockNumber) in ethers.js\n * * [Identical](/docs/api#isd) to [`web3.eth.getBlockNumber`](https://web3js.readthedocs.io/en/v1.7.3/web3-eth.html#getblocknumber) in web3.js\n *\n * @returns the number of the most recently mined block\n * @example\n * ```javascript\n * await provider.getBlockNumber();\n * // 1053312\n * ```\n */\n public async getBlockNumber(): Promise<number> {\n const currentBlockNumber = (await this.post(\n buildRPCPostBody('eth_blockNumber', []),\n )) as string;\n return Number(hexToDecimal(currentBlockNumber));\n }\n\n /**\n * Gets information about a specified transaction, even if it hasn't been mined yet.\n *\n * * [Similar](/docs/api#isd) to [`ethers.provider.getTransaction`](https://docs.ethers.io/v5/api/providers/provider/#Provider-getTransaction) in ethers.js, does not have `wait` method that waits until the transaction has been mined\n * * [Similar](/docs/api#isd) to [`web3.eth.getTransaction`](https://web3js.readthedocs.io/en/v1.7.3/web3-eth.html#gettransaction) in web3.js, some information returned using different types\n *\n * @param transactionHash the hash of the transaction to get information about\n * @returns information about the specified transaction\n * @example\n * ```javascript\n * await provider.getTransaction('0x9014ae6ef92464338355a79e5150e542ff9a83e2323318b21f40d6a3e65b4789');\n * // {\n * // accessList: [],\n * // blockHash: \"0x876810a013dbcd140f6fd6048c1dc33abbb901f1f96b394c2fa63aef3cb40b5d\",\n * // blockNumber: 14578286,\n * // chainId: 1,\n * // from: \"0xdfD9dE5f6FA60BD70636c0900752E93a6144AEd4\",\n * // gas: { TinyBig: 112163 },\n * // gasPrice: { TinyBig: 48592426858 },\n * // hash: \"0x9014ae6ef92464338355a79e5150e542ff9a83e2323318b21f40d6a3e65b4789\",\n * // input: \"0x83259f17000000000000000000000000000000000000000000...\",\n * // maxFeePerGas: { TinyBig: 67681261618 },\n * // maxPriorityFeePerGas: { TinyBig: 1500000000 },\n * // nonce: { TinyBig: 129 },\n * // r: \"0x59a7c15b12c18cd68d6c440963d959bff3e73831ffc938e75ecad07f7ee43fbc\",\n * // s: \"0x1ebaf05f0d9273b16c2a7748b150a79d22533a8cd74552611cbe620fee3dcf1c\",\n * // to: \"0x39B72d136ba3e4ceF35F48CD09587ffaB754DD8B\",\n * // transactionIndex: 29,\n * // type: 2,\n * // v: 0,\n * // value: { TinyBig: 0 },\n * // confirmations: 298140,\n * // }\n * ```\n */\n public async getTransaction(\n transactionHash: string,\n ): Promise<TransactionResponse> {\n const [rpcTransaction, blockNumber] = await Promise.all([\n this.post(\n buildRPCPostBody('eth_getTransactionByHash', [transactionHash]),\n ) as Promise<RPCTransaction>,\n this.getBlock('latest'),\n ]);\n const cleanedTransaction = cleanTransaction(rpcTransaction);\n // https://ethereum.stackexchange.com/questions/2881/how-to-get-the-transaction-confirmations-using-the-json-rpc\n cleanedTransaction.confirmations =\n blockNumber.number - cleanedTransaction.blockNumber + 1;\n return cleanedTransaction;\n }\n\n /**\n * Gives information about a transaction that has already been mined. Includes additional information beyond what's provided by [`getTransaction`](/docs/api/modules#gettransaction).\n *\n * * [Identical](/docs/api#isd) to [`ethers.provider.getTransactionReceipt`](https://docs.ethers.io/v5/api/providers/provider/#Provider-getTransactionReceipt) in ethers.js\n * * [Similar](/docs/api#isd) to [`web3.eth.getTransactionReceipt`](https://web3js.readthedocs.io/en/v1.7.3/web3-eth.html#gettransactionreceipt) in web3.js, some information returned using different types\n *\n * @param transactionHash the hash of the transaction to get information about\n * @returns information about the specified transaction that has already been mined\n * @example\n * ```javascript\n * await provider.getTransactionReceipt('0x9014ae6ef92464338355a79e5150e542ff9a83e2323318b21f40d6a3e65b4789');\n * // {\n * // blockHash: \"0x876810a013dbcd140f6fd6048c1dc33abbb901f1f96b394c2fa63aef3cb40b5d\",\n * // blockNumber: 14578286,\n * // contractAddress: null,\n * // cumulativeGasUsed: { TinyBig: 3067973 },\n * // effectiveGasPrice: { TinyBig: 48592426858 },\n * // from: \"0xdfD9dE5f6FA60BD70636c0900752E93a6144AEd4\",\n * // gasUsed: { TinyBig: 112163 },\n * // logs: [\n * // {\n * // address: \"0x0eDF9bc41Bbc1354c70e2107F80C42caE7FBBcA8\",\n * // blockHash: \"0x876810a013dbcd140f6fd6048c1dc33abbb901f1f96b394c2fa63aef3cb40b5d\",\n * // blockNumber: 14578286,\n * // data: \"0x0000000000000000000000000000000000000000000003a12ec797b5484968c1\",\n * // logIndex: 42,\n * // topics: [\n * // \"0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef\",\n * // \"0x00000000000000000000000039b72d136ba3e4cef35f48cd09587ffab754dd8b\",\n * // \"0x000000000000000000000000dfd9de5f6fa60bd70636c0900752e93a6144aed4\",\n * // ],\n * // transactionHash: \"0x9014ae6ef92464338355a79e5150e542ff9a83e2323318b21f40d6a3e65b4789\",\n * // transactionIndex: 29,\n * // },\n * // {\n * // address: \"0x39B72d136ba3e4ceF35F48CD09587ffaB754DD8B\",\n * // blockHash: \"0x876810a013dbcd140f6fd6048c1dc33abbb901f1f96b394c2fa63aef3cb40b5d\",\n * // blockNumber: 14578286,\n * // data: \"0x0000000000000000000000000000000000000000000003a12ec797b5484968c1\",\n * // logIndex: 43,\n * // topics: [\n * // \"0x34fcbac0073d7c3d388e51312faf357774904998eeb8fca628b9e6f65ee1cbf7\",\n * // \"0x000000000000000000000000dfd9de5f6fa60bd70636c0900752e93a6144aed4\",\n * // \"0x0000000000000000000000000000000000000000000000000000000000000003\",\n * // ],\n * // transactionHash: \"0x9014ae6ef92464338355a79e5150e542ff9a83e2323318b21f40d6a3e65b4789\",\n * // transactionIndex: 29,\n * // },\n * // ],\n * // logsBloom: \"0x00000000000000000000000000000...\",\n * // status: 1,\n * // to: \"0x39B72d136ba3e4ceF35F48CD09587ffaB754DD8B\",\n * // transactionHash: \"0x9014ae6ef92464338355a79e5150e542ff9a83e2323318b21f40d6a3e65b4789\",\n * // transactionIndex: 29,\n * // type: 2,\n * // byzantium: true,\n * // confirmations: 298171,\n * // }\n * ```\n */\n public async getTransactionReceipt(\n transactionHash: string,\n ): Promise<TransactionReceipt> {\n const [rpcTransaction, blockNumber] = await Promise.all([\n this.post(\n buildRPCPostBody('eth_getTransactionReceipt', [transactionHash]),\n ) as Promise<RPCTransactionReceipt>,\n this.getBlock('latest'),\n ]);\n const cleanedTransactionReceipt = cleanTransactionReceipt(rpcTransaction);\n cleanedTransactionReceipt.confirmations =\n blockNumber.number - cleanedTransactionReceipt.blockNumber + 1;\n return cleanedTransactionReceipt;\n }\n\n /**\n * Returns the number of sent transactions by an address, from genesis (or as far back as a provider looks) up to specified block.\n *\n * * [Identical](/docs/api#isd) to [`ethers.provider.getTransactionCount`](https://docs.ethers.io/v5/api/providers/provider/#Provider-getTransactionCount) in ethers.js\n * * [Identical](/docs/api#isd) to [`web3.eth.getTransactionCount`](https://web3js.readthedocs.io/en/v1.7.3/web3-eth.html#gettransactioncount) in web3.js\n *\n * @param address the address to count number of sent transactions\n * @param blockTag the block to count transactions up to, inclusive\n * @returns the number of transactions sent by the specified address\n * @example\n * ```javascript\n * await provider.getTransactionCount('0x71660c4005ba85c37ccec55d0c4493e66fe775d3');\n * // 1060000\n * ```\n * @example\n * ```javascript\n * await provider.getTransactionCount('0x71660c4005ba85c37ccec55d0c4493e66fe775d3', 'latest');\n * // 1060000\n * ```\n * @example\n * ```javascript\n * await provider.getTransactionCount('0x71660c4005ba85c37ccec55d0c4493e66fe775d3', 14649390);\n * // 1053312\n * ```\n */\n public async getTransactionCount(\n address: string,\n blockTag: BlockTag = 'latest',\n ): Promise<number> {\n blockTag = prepBlockTag(blockTag);\n const transactionCount = (await this.post(\n buildRPCPostBody('eth_getTransactionCount', [address, blockTag]),\n )) as string;\n return Number(hexToDecimal(transactionCount));\n }\n\n /**\n * Gets information about a certain block, optionally with full transaction objects.\n *\n * * [Similar](/docs/api#isd) to [`ethers.provider.getBlock`](https://docs.ethers.io/v5/api/providers/provider/#Provider-getLogs) in ethers.js, includes some additional information. Can also return block with full transaction objects, similar to [`ethers.providers.getBlockWithTransactions`]\n * * [Identical](/docs/api#isd) to [`web3.eth.getBlock`](https://web3js.readthedocs.io/en/v1.7.3/web3-eth.html#getpastlogs) in web3.js\n *\n * @param timeFrame The number, hash, or text-based description ('latest', 'earliest', or 'pending') of the block to collect information on.\n * @param returnTransactionObjects Whether to also return data about the transactions on the block.\n * @returns A BlockResponse object with information about the specified block\n * @example\n * ```javascript\n * await provider.getBlock(14879862);\n * // {\n * // baseFeePerGas: { TinyBig: 39095728776 },\n * // difficulty: { TinyBig: 14321294455359973 },\n * // extraData: \"0x486976656f6e2073672d6865617679\",\n * // gasLimit: { TinyBig: 29970620 },\n * // gasUsed: { TinyBig: 20951384 },\n * // hash: \"0x563b458ec3c4f87393b53f70bdddc0058497109b784d8cacd9247ddf267049ab\",\n * // logsBloom:\n * // \"0x9f38794fe80b521794df6efad8b0d2e9582f9ec3959a3f9384bda0fa371cfa5fac5af9d515c6bdf1ec325f5b5f7ebdd6a3a9fae17b38a86d4dc4b0971afc68d8086640550f4c156e6f923f4a1bb94fb0bed6cdcc474c5c64bfeff7a4a906f72b9a7b94004ee58efc53d63ac66961acd3a431b2d896cc9fd75f6072960bced45f770587caf130f57504decfcb63c6ca8fbc5bdbd749edd5a99a7375d2b81872289adb775fb3c928259f4be39c6d3f4d5b6217822979bb88c1f1fb62429b1b6d41cf4e3f77f9e1db3f5723108f1e5b1255dd734ad8cdb11e7ea22487c788e67c83777b6f395e504ca59c64f52245ee6de3804cf809e5caa4f0ea6a9aa9eb6ed801\",\n * // miner: \"0x1aD91ee08f21bE3dE0BA2ba6918E714dA6B45836\",\n * // mixHash: \"0x73cc9419bfb89c9d41c3a8c34ce56b5ebe468bdcf870258d2e77262275d580ec\",\n * // nonce: \"0x976f3f5d596ffb08\",\n * // number: 14879862,\n * // parentHash: \"0x95986ae14a71face8d9a6a379edd875b2e8bc73e4de0d9d460e7752bddb0f579\",\n * // receiptsRoot: \"0x8e6ba2fd9bee602b653dae6e3132f16538c2c5df24f1df8c000392053f73defa\",\n * // sha3Uncles: \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n * // size: { TinyBig: 134483 },\n * // stateRoot: \"0xbf2bb67bd1c741f3d00904b8451d7c2cf4e3a2726f5a5884792ede2074747b85\",\n * // timestamp: { TinyBig: 1654016186 },\n * // totalDifficulty: { TinyBig: 50478104614257705213748 },\n * // transactions: [\n * // \"0xb3326a9149809603a2c28545e50e4f7d16e194bf5ee9764e0544603854c4a8d2\",\n * // \"0x8b42095f8d335404a4896b2817b8e5e3d86a5a87cb434a8eec295d5280a7f48e\",\n * // \"0x882f78fcb73f0f7ad0700bb0424a8b4beb366aaa93b88a3562c49a8d0ce4dcff\",\n * // ...\n * // ],\n * // transactionsRoot: \"0x5934902f3dcc263ec34f24318179bf6301f53f4834685792066026f3a4849d72\",\n * // uncles: [],\n * // }\n * ```\n */\n public async getBlock(\n timeFrame: BlockTag = 'latest',\n returnTransactionObjects = false,\n ): Promise<BlockResponse> {\n let type: 'Number' | 'Hash' = 'Number';\n if (typeof timeFrame === 'string' && timeFrame.length === 66) {\n // use endpoint that accepts string\n type = 'Hash';\n } else {\n timeFrame = prepBlockTag(timeFrame);\n }\n\n const rpcBlock = (await this.post(\n buildRPCPostBody(`eth_getBlockBy${type}`, [\n timeFrame,\n returnTransactionObjects,\n ]),\n )) as RPCBlock;\n\n return cleanBlock(rpcBlock, returnTransactionObjects);\n }\n\n /**\n * Gives an estimate of the current gas price in wei.\n *\n * * [Similar](/docs/api#isd) to [`ethers.provider.getGasPrice`](https://docs.ethers.io/v5/api/providers/provider/#Provider-getGasPrice) in ethers.js, does not have a parameter specifying what unit you'd like to return. See also [`weiToEther`](/docs/api/modules#weitoether) and [`etherToGwei`](/docs/api/modules#ethertogwei)\n * * [Identical](/docs/api#isd) to [`web3.eth.getGasPrice`](https://web3js.readthedocs.io/en/v1.7.3/web3-eth.html#getgasprice) in web3.js, returns a number (TinyBig) instead of a string\n *\n * @returns an estimate of the current gas price in wei\n * @example\n * ```javascript\n * await provider.getGasPrice();\n * // 52493941856\n * ```\n */\n public async getGasPrice(): Promise<TinyBig> {\n const hexGasPrice = (await this.post(\n buildRPCPostBody('eth_gasPrice', []),\n )) as string;\n return tinyBig(hexToDecimal(hexGasPrice));\n }\n\n /**\n * Returns the balance of the account in wei.\n *\n * * [Identical](/docs/api#isd) to [`ethers.provider.getBalance`](https://docs.ethers.io/v5/api/providers/provider/#Provider-getBalance) in ethers.js\n * * [Identical](/docs/api#isd) to [`web3.eth.getBalance`](https://web3js.readthedocs.io/en/v1.7.3/web3-eth.html#getbalance) in web3.js, returns a number (TinyBig) instead of a string\n *\n * @param address the address to check the balance of\n * @param blockTag the block to check the specified address' balance on\n * @returns the balance of the network's native token for the specified address on the specified block\n * @example\n * ```javascript\n * await provider.getBalance('0x7cB57B5A97eAbe94205C07890BE4c1aD31E486A8');\n * // 28798127851528138\n * ```\n */\n public async getBalance(\n address: string,\n blockTag: BlockTag = 'latest',\n ): Promise<TinyBig> {\n blockTag = prepBlockTag(blockTag);\n const hexBalance = (await this.post(\n buildRPCPostBody('eth_getBalance', [address, blockTag]),\n )) as string;\n return tinyBig(hexToDecimal(hexBalance));\n }\n\n /**\n * Gets the code of a contract on a specified block.\n *\n * * [Identical](/docs/api#isd) to [`ethers.provider.getCode`](https://docs.ethers.io/v5/api/providers/provider/#Provider-getCode) in ethers.js\n * * [Identical](/docs/api#isd) to [`web3.eth.getCode`](https://web3js.readthedocs.io/en/v1.7.3/web3-eth.html#getcode) in web3.js\n *\n * @param address the contract address to get the contract code from\n * @param blockTag the block height to search for the contract code from. Contract code can change, so this allows for checking a specific block\n * @returns the contract creation code for the specified address at the specified block height\n * @example\n * ```javascript\n * await jsonRpcProvider().getCode('0xaC6095720221C79C6E7C638d260A2eFBC5D8d880', 'latest');\n * // '0x608060405234801561001057600080fd5b506004361061...'\n * ```\n */\n public async getCode(\n address: string,\n blockTag: BlockTag = 'latest',\n ): Promise<string> {\n blockTag = prepBlockTag(blockTag);\n const contractCode = (await this.post(\n buildRPCPostBody('eth_getCode', [address, blockTag]),\n )) as string;\n return contractCode;\n }\n\n /**\n * Returns an estimate of the amount of gas that would be required to submit transaction to the network.\n * An estimate may not be accurate since there could be another transaction on the network that was not accounted for.\n *\n * * [Identical](/docs/api#isd) to [`ethers.provider.estimateGas`](https://docs.ethers.io/v5/api/providers/provider/#Provider-estimateGas) in ethers.js\n * * [Identical](/docs/api#isd) to [`web3.eth.estimateGas`](https://web3js.readthedocs.io/en/v1.7.3/web3-eth.html#estimateGas) in web3.js\n *\n * @param transaction the transaction to check the estimated gas cost for\n * @returns the estimated amount of gas charged for submitting the specified transaction to the blockchain\n * @example\n * ```javascript\n * await provider.estimateGas({\n * // Wrapped ETH address\n * to: \"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2\",\n * data: \"0xd0e30db0\",\n * value: etherToWei('1.0').toHexString(),\n * });\n * // { TinyBig: \"27938\" }\n * ```\n */\n public async estimateGas(transaction: TransactionRequest): Promise<TinyBig> {\n const rpcTransaction = prepareTransaction(transaction);\n const gasUsed = (await this.post(\n buildRPCPostBody('eth_estimateGas', [rpcTransaction]),\n )) as string;\n return tinyBig(hexToDecimal(gasUsed));\n }\n\n /**\n * Returns transaction receipt event logs that match a specified filter.\n * May return `[]` if parameters are too broad, even if logs exist.\n *\n * * [Identical](/docs/api#isd) to [`ethers.provider.getLogs`](https://docs.ethers.io/v5/api/providers/provider/#Provider-getLogs) in ethers.js\n * * [Identical](/docs/api#isd) to [`web3.eth.getPastLogs`](https://web3js.readthedocs.io/en/v1.7.3/web3-eth.html#getpastlogs) in web3.js\n *\n * @param filter parameters to filter the logs by\n * @returns an array of logs matching the specified filter\n * @example\n * ```javascript\n * provider.getLogs({\n * address: \"0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2\",\n * topics: [\n * \"0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef\",\n * \"0x00000000000000000000000021b8065d10f73ee2e260e5b47d3344d3ced7596e\",\n * ],\n * fromBlock: 14825027,\n * toBlock: 14825039,\n * });\n *\n * [\n * {\n * address: '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2',\n * blockHash: '0x8e0dfac2f704851960f866c8708b3bef2f66c0fee0329cf25ff0261b264ca6bc',\n * blockNumber: 14825029,\n * data: '0x000000000000000000000000000000000000000000000000005f862ee352a38a',\n * logIndex: 384,\n * removed: false,\n * topics: [\n * '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef',\n * '0x00000000000000000000000021b8065d10f73ee2e260e5b47d3344d3ced7596e',\n * '0x00000000000000000000000068b3465833fb72a70ecdf485e0e4c7bd8665fc45'\n * ],\n * transactionHash: '0xbd49031be16f8fd1775f4e0fe79b408ffd8ae9c65b2827ee47e3238e3f51f4c0',\n * transactionIndex: 226\n * }\n * ]\n * ```\n */\n public async getLogs(\n filter: Filter | FilterByBlockHash,\n ): Promise<Array<Log>> {\n const filterByRange = filter as Filter;\n if (filterByRange.fromBlock)\n filterByRange.fromBlock = prepBlockTag(filterByRange.fromBlock);\n if (filterByRange.toBlock)\n filterByRange.toBlock = prepBlockTag(filterByRange.toBlock);\n\n const rpcLogs = (await this.post(\n buildRPCPostBody('eth_getLogs', [filter]),\n )) as Array<RPCLog>;\n const logs = rpcLogs.map((log) => cleanLog(log, false));\n return logs;\n }\n\n /**\n * Returns the result of adding a transaction to the blockchain without actually adding that transaction to the blockchain.\n * Does not require any ether as gas.\n *\n * * [Identical](/docs/api#isd) to [`ethers.provider.call`](https://docs.ethers.io/v5/api/providers/provider/#Provider-call) in ethers.js\n * * [Identical](/docs/api#isd) to [`web3.eth.call`](https://web3js.readthedocs.io/en/v1.7.3/web3-eth.html#call) in web3.js\n *\n * @param transaction the transaction object to, in theory, execute. Doesn't actually get added to the blockchain.\n * @param blockTag the block to execute this transaction on\n * @returns the result of executing the transaction on the specified block\n * @example\n * ```javascript\n * await provider.call({ to: \"0x6b175474e89094c44da98b954eedeac495271d0f\", data: \"0x70a082310000000000000000000000006E0d01A76C3Cf4288372a29124A26D4353EE51BE\" });\n * // '0x0000000000000000000000000000000000000000000000000858898f93629000'\n * ```\n */\n public async call(\n transaction: TransactionRequest,\n blockTag: BlockTag = 'latest',\n ): Promise<string> {\n if (\n transaction.gasPrice &&\n (transaction.maxPriorityFeePerGas || transaction.maxFeePerGas)\n ) {\n logger.throwError(\n 'Cannot specify both \"gasPrice\" and (\"maxPriorityFeePerGas\" or \"maxFeePerGas\")',\n {\n gasPrice: transaction.gasPrice,\n maxFeePerGas: transaction.maxFeePerGas,\n maxPriorityFeePerGas: transaction.maxPriorityFeePerGas,\n },\n );\n }\n if (transaction.maxFeePerGas && transaction.maxPriorityFeePerGas) {\n logger.throwError(\n 'Cannot specify both \"maxFeePerGas\" and \"maxPriorityFeePerGas\"',\n {\n maxFeePerGas: transaction.maxFeePerGas,\n maxPriorityFeePerGas: transaction.maxPriorityFeePerGas,\n },\n );\n }\n blockTag = prepBlockTag(blockTag);\n const rpcTransaction = prepareTransaction(transaction);\n const transactionRes = (await this.post(\n buildRPCPostBody('eth_call', [rpcTransaction, blockTag]),\n )) as string;\n return transactionRes;\n }\n}\n","import { tinyBig, toChecksumAddress } from '../..';\nimport type {\n Log,\n RPCLog,\n RPCTransactionReceipt,\n TransactionReceipt,\n} from '../../types/Transaction.types';\nimport { cleanLog } from './clean-log';\nimport { cleanTransaction } from './clean-transaction';\nimport { hexToDecimal } from './hex-to-decimal';\n\n/**\n * Converts RPC transaction receipt response to more JS-friendly format\n *\n * @param transactionReceipt the transaction receipt to clean\n * @returns a cleaned transaction receipt\n * @example\n * ```javascript\n * const RPCTransactionReceipt = { blockHash: '0x03ddc6a835462f750fcaf5ab511d8c48121b0813e3e80de84d7adc3ef192b7bf', blockNumber: '0xe28f62', contractAddress: null, cumulativeGasUsed: '0x37a2b9', effectiveGasPrice: '0x62df1c62c', from: '0x642824fab1d0141073ed74326332950bec4701e3', gasUsed: '0x1a325', logs: [ { address: '0x84F80EA01e26B7C11bdd241970982C7EEAb6DdcC', blockHash: '0x03ddc6a835462f750fcaf5ab511d8c48121b0813e3e80de84d7adc3ef192b7bf', blockNumber: 14847842, data: '0x', logIndex: 84, topics: [ '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef', '0x0000000000000000000000000000000000000000000000000000000000000000', '0x000000000000000000000000642824fab1d0141073ed74326332950bec4701e3', '0x000000000000000000000000000000000000000000000000000000000000074d' ], transactionHash: '0xd0befcb9d10a89aba2d488534811bf5c62a889e2499d23cdd83c2a2200cde873', transactionIndex: 41 }, { address: '0x84F80EA01e26B7C11bdd241970982C7EEAb6DdcC', blockHash: '0x03ddc6a835462f750fcaf5ab511d8c48121b0813e3e80de84d7adc3ef192b7bf', blockNumber: 14847842, data: '0x', logIndex: 85, topics: [ '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef', '0x0000000000000000000000000000000000000000000000000000000000000000', '0x000000000000000000000000642824fab1d0141073ed74326332950bec4701e3', '0x000000000000000000000000000000000000000000000000000000000000074e' ], transactionHash: '0xd0befcb9d10a89aba2d488534811bf5c62a889e2499d23cdd83c2a2200cde873', transactionIndex: 41 }, { address: '0x84F80EA01e26B7C11bdd241970982C7EEAb6DdcC', blockHash: '0x03ddc6a835462f750fcaf5ab511d8c48121b0813e3e80de84d7adc3ef192b7bf', blockNumber: 14847842, data: '0x', logIndex: 86, topics: [ '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef', '0x0000000000000000000000000000000000000000000000000000000000000000', '0x000000000000000000000000642824fab1d0141073ed74326332950bec4701e3', '0x000000000000000000000000000000000000000000000000000000000000074f' ], transactionHash: '0xd0befcb9d10a89aba2d488534811bf5c62a889e2499d23cdd83c2a2200cde873', transactionIndex: 41 }, { address: '0x84F80EA01e26B7C11bdd241970982C7EEAb6DdcC', blockHash: '0x03ddc6a835462f750fcaf5ab511d8c48121b0813e3e80de84d7adc3ef192b7bf', blockNumber: 14847842, data: '0x', logIndex: 87, topics: [ '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef', '0x0000000000000000000000000000000000000000000000000000000000000000', '0x000000000000000000000000642824fab1d0141073ed74326332950bec4701e3', '0x0000000000000000000000000000000000000000000000000000000000000750' ], transactionHash: '0xd0befcb9d10a89aba2d488534811bf5c62a889e2499d23cdd83c2a2200cde873', transactionIndex: 41 }, { address: '0x84F80EA01e26B7C11bdd241970982C7EEAb6DdcC', blockHash: '0x03ddc6a835462f750fcaf5ab511d8c48121b0813e3e80de84d7adc3ef192b7bf', blockNumber: 14847842, data: '0x', logIndex: 88, topics: [ '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef', '0x0000000000000000000000000000000000000000000000000000000000000000', '0x000000000000000000000000642824fab1d0141073ed74326332950bec4701e3', '0x0000000000000000000000000000000000000000000000000000000000000751' ], transactionHash: '0xd0befcb9d10a89aba2d488534811bf5c62a889e2499d23cdd83c2a2200cde873', transactionIndex: 41 }, { address: '0x84F80EA01e26B7C11bdd241970982C7EEAb6DdcC', blockHash: '0x03ddc6a835462f750fcaf5ab511d8c48121b0813e3e80de84d7adc3ef192b7bf', blockNumber: 14847842, data: '0x', logIndex: 89, topics: [ '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef', '0x0000000000000000000000000000000000000000000000000000000000000000', '0x000000000000000000000000642824fab1d0141073ed74326332950bec4701e3', '0x0000000000000000000000000000000000000000000000000000000000000752' ], transactionHash: '0xd0befcb9d10a89aba2d488534811bf5c62a889e2499d23cdd83c2a2200cde873', transactionIndex: 41 }, { address: '0x84F80EA01e26B7C11bdd241970982C7EEAb6DdcC', blockHash: '0x03ddc6a835462f750fcaf5ab511d8c48121b0813e3e80de84d7adc3ef192b7bf', blockNumber: 14847842, data: '0x', logIndex: 90, topics: [ '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef', '0x0000000000000000000000000000000000000000000000000000000000000000', '0x000000000000000000000000642824fab1d0141073ed74326332950bec4701e3', '0x0000000000000000000000000000000000000000000000000000000000000753' ], transactionHash: '0xd0befcb9d10a89aba2d488534811bf5c62a889e2499d23cdd83c2a2200cde873', transactionIndex: 41 }, { address: '0x84F80EA01e26B7C11bdd241970982C7EEAb6DdcC', blockHash: '0x03ddc6a835462f750fcaf5ab511d8c48121b0813e3e80de84d7adc3ef192b7bf', blockNumber: 14847842, data: '0x', logIndex: 91, topics: [ '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef', '0x0000000000000000000000000000000000000000000000000000000000000000', '0x000000000000000000000000642824fab1d0141073ed74326332950bec4701e3', '0x0000000000000000000000000000000000000000000000000000000000000754' ], transactionHash: '0xd0befcb9d10a89aba2d488534811bf5c62a889e2499d23cdd83c2a2200cde873', transactionIndex: 41 }, { address: '0x84F80EA01e26B7C11bdd241970982C7EEAb6DdcC', blockHash: '0x03ddc6a835462f750fcaf5ab511d8c48121b0813e3e80de84d7adc3ef192b7bf', blockNumber: 14847842, data: '0x', logIndex: 92, topics: [ '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef', '0x0000000000000000000000000000000000000000000000000000000000000000', '0x000000000000000000000000642824fab1d0141073ed74326332950bec4701e3', '0x0000000000000000000000000000000000000000000000000000000000000755' ], transactionHash: '0xd0befcb9d10a89aba2d488534811bf5c62a889e2499d23cdd83c2a2200cde873', transactionIndex: 41 }, { address: '0x84F80EA01e26B7C11bdd241970982C7EEAb6DdcC', blockHash: '0x03ddc6a835462f750fcaf5ab511d8c48121b0813e3e80de84d7adc3ef192b7bf', blockNumber: 14847842, data: '0x', logIndex: 93, topics: [ '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef', '0x0000000000000000000000000000000000000000000000000000000000000000', '0x000000000000000000000000642824fab1d0141073ed74326332950bec4701e3', '0x0000000000000000000000000000000000000000000000000000000000000756' ], transactionHash: '0xd0befcb9d10a89aba2d488534811bf5c62a889e2499d23cdd83c2a2200cde873', transactionIndex: 41 } ], logsBloom: '0x20000080004000000000000400000000000001000000000400000000000000000000000000000000000000000008000000000000000000000000000000004000000000000008000000000008000000010080000014000004000000000000000000100000020800000000000000001800000080000000002000000010000000000000000000000200000200000000002000000000000400000000000000000000000000000000000000000040000000000000000100000000000000000000040002100002000000000000080000000000000100000002000000040000001220000000000000000000000000000000000000000000000000000000000000004000', status: '0x1', to: '0x84f80ea01e26b7c11bdd241970982c7eeab6ddcc', transactionHash: '0xd0befcb9d10a89aba2d488534811bf5c62a889e2499d23cdd83c2a2200cde873', transactionIndex: '0x29', type: '0x2' }\n * cleanTransactionReceipt(RPCTransactionReceipt);\n * // { blockHash: '0x03ddc6a835462f750fcaf5ab511d8c48121b0813e3e80de84d7adc3ef192b7bf', blockNumber: 14847842, contractAddress: null, cumulativeGasUsed: Big { s: 1, e: 6, c: [ 3, 6, 4, 6, 1, 3, 7 ], constructor: { [λ: Big] DP: 20, RM: 1, NE: -7, PE: 21, strict: false, roundDown: 0, roundHalfUp: 1, roundHalfEven: 2, roundUp: 3, Big: [Circular], default: [Circular] }, padAndChop: [λ] }, effectiveGasPrice: Big { s: 1, e: 10, c: [ 2, 6, 5, 4, 0, 6, 2, 3, 4, 0, 4 ], constructor: { [λ: Big] DP: 20, RM: 1, NE: -7, PE: 21, strict: false, roundDown: 0, roundHalfUp: 1, roundHalfEven: 2, roundUp: 3, Big: [Circular], default: [Circular] }, padAndChop: [λ] }, from: '0x642824FaB1D0141073ed74326332950bEc4701e3', gasUsed: Big { s: 1, e: 5, c: [ 1, 0, 7, 3, 0, 1 ], constructor: { [λ: Big] DP: 20, RM: 1, NE: -7, PE: 21, strict: false, roundDown: 0, roundHalfUp: 1, roundHalfEven: 2, roundUp: 3, Big: [Circular], default: [Circular] }, padAndChop: [λ] }, logs: [ { address: '0x84F80EA01e26B7C11bdd241970982C7EEAb6DdcC', blockHash: '0x03ddc6a835462f750fcaf5ab511d8c48121b0813e3e80de84d7adc3ef192b7bf', blockNumber: 14847842, data: '0x', logIndex: 84, topics: [ '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef', '0x0000000000000000000000000000000000000000000000000000000000000000', '0x000000000000000000000000642824fab1d0141073ed74326332950bec4701e3', '0x000000000000000000000000000000000000000000000000000000000000074d' ], transactionHash: '0xd0befcb9d10a89aba2d488534811bf5c62a889e2499d23cdd83c2a2200cde873', transactionIndex: 41 }, { address: '0x84F80EA01e26B7C11bdd241970982C7EEAb6DdcC', blockHash: '0x03ddc6a835462f750fcaf5ab511d8c48121b0813e3e80de84d7adc3ef192b7bf', blockNumber: 14847842, data: '0x', logIndex: 85, topics: [ '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef', '0x0000000000000000000000000000000000000000000000000000000000000000', '0x000000000000000000000000642824fab1d0141073ed74326332950bec4701e3', '0x000000000000000000000000000000000000000000000000000000000000074e' ], transactionHash: '0xd0befcb9d10a89aba2d488534811bf5c62a889e2499d23cdd83c2a2200cde873', transactionIndex: 41 }, { address: '0x84F80EA01e26B7C11bdd241970982C7EEAb6DdcC', blockHash: '0x03ddc6a835462f750fcaf5ab511d8c48121b0813e3e80de84d7adc3ef192b7bf', blockNumber: 14847842, data: '0x', logIndex: 86, topics: [ '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef', '0x0000000000000000000000000000000000000000000000000000000000000000', '0x000000000000000000000000642824fab1d0141073ed74326332950bec4701e3', '0x000000000000000000000000000000000000000000000000000000000000074f' ], transactionHash: '0xd0befcb9d10a89aba2d488534811bf5c62a889e2499d23cdd83c2a2200cde873', transactionIndex: 41 }, { address: '0x84F80EA01e26B7C11bdd241970982C7EEAb6DdcC', blockHash: '0x03ddc6a835462f750fcaf5ab511d8c48121b0813e3e80de84d7adc3ef192b7bf', blockNumber: 14847842, data: '0x', logIndex: 87, topics: [ '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef', '0x0000000000000000000000000000000000000000000000000000000000000000', '0x000000000000000000000000642824fab1d0141073ed74326332950bec4701e3', '0x0000000000000000000000000000000000000000000000000000000000000750' ], transactionHash: '0xd0befcb9d10a89aba2d488534811bf5c62a889e2499d23cdd83c2a2200cde873', transactionIndex: 41 }, { address: '0x84F80EA01e26B7C11bdd241970982C7EEAb6DdcC', blockHash: '0x03ddc6a835462f750fcaf5ab511d8c48121b0813e3e80de84d7adc3ef192b7bf', blockNumber: 14847842, data: '0x', logIndex: 88, topics: [ '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef', '0x0000000000000000000000000000000000000000000000000000000000000000', '0x000000000000000000000000642824fab1d0141073ed74326332950bec4701e3', '0x0000000000000000000000000000000000000000000000000000000000000751' ], transactionHash: '0xd0befcb9d10a89aba2d488534811bf5c62a889e2499d23cdd83c2a2200cde873', transactionIndex: 41 }, { address: '0x84F80EA01e26B7C11bdd241970982C7EEAb6DdcC', blockHash: '0x03ddc6a835462f750fcaf5ab511d8c48121b0813e3e80de84d7adc3ef192b7bf', blockNumber: 14847842, data: '0x', logIndex: 89, topics: [ '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef', '0x0000000000000000000000000000000000000000000000000000000000000000', '0x000000000000000000000000642824fab1d0141073ed74326332950bec4701e3', '0x0000000000000000000000000000000000000000000000000000000000000752' ], transactionHash: '0xd0befcb9d10a89aba2d488534811bf5c62a889e2499d23cdd83c2a2200cde873', transactionIndex: 41 }, { address: '0x84F80EA01e26B7C11bdd241970982C7EEAb6DdcC', blockHash: '0x03ddc6a835462f750fcaf5ab511d8c48121b0813e3e80de84d7adc3ef192b7bf', blockNumber: 14847842, data: '0x', logIndex: 90, topics: [ '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef', '0x0000000000000000000000000000000000000000000000000000000000000000', '0x000000000000000000000000642824fab1d0141073ed74326332950bec4701e3', '0x0000000000000000000000000000000000000000000000000000000000000753' ], transactionHash: '0xd0befcb9d10a89aba2d488534811bf5c62a889e2499d23cdd83c2a2200cde873', transactionIndex: 41 }, { address: '0x84F80EA01e26B7C11bdd241970982C7EEAb6DdcC', blockHash: '0x03ddc6a835462f750fcaf5ab511d8c48121b0813e3e80de84d7adc3ef192b7bf', blockNumber: 14847842, data: '0x', logIndex: 91, topics: [ '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef', '0x0000000000000000000000000000000000000000000000000000000000000000', '0x000000000000000000000000642824fab1d0141073ed74326332950bec4701e3', '0x0000000000000000000000000000000000000000000000000000000000000754' ], transactionHash: '0xd0befcb9d10a89aba2d488534811bf5c62a889e2499d23cdd83c2a2200cde873', transactionIndex: 41 }, { address: '0x84F80EA01e26B7C11bdd241970982C7EEAb6DdcC', blockHash: '0x03ddc6a835462f750fcaf5ab511d8c48121b0813e3e80de84d7adc3ef192b7bf', blockNumber: 14847842, data: '0x', logIndex: 92, topics: [ '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef', '0x0000000000000000000000000000000000000000000000000000000000000000', '0x000000000000000000000000642824fab1d0141073ed74326332950bec4701e3', '0x0000000000000000000000000000000000000000000000000000000000000755' ], transactionHash: '0xd0befcb9d10a89aba2d488534811bf5c62a889e2499d23cdd83c2a2200cde873', transactionIndex: 41 }, { address: '0x84F80EA01e26B7C11bdd241970982C7EEAb6DdcC', blockHash: '0x03ddc6a835462f750fcaf5ab511d8c48121b0813e3e80de84d7adc3ef192b7bf', blockNumber: 14847842, data: '0x', logIndex: 93, topics: [ '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef', '0x0000000000000000000000000000000000000000000000000000000000000000', '0x000000000000000000000000642824fab1d0141073ed74326332950bec4701e3', '0x0000000000000000000000000000000000000000000000000000000000000756' ], transactionHash: '0xd0befcb9d10a89aba2d488534811bf5c62a889e2499d23cdd83c2a2200cde873', transactionIndex: 41 } ], logsBloom: '0x20000080004000000000000400000000000001000000000400000000000000000000000000000000000000000008000000000000000000000000000000004000000000000008000000000008000000010080000014000004000000000000000000100000020800000000000000001800000080000000002000000010000000000000000000000200000200000000002000000000000400000000000000000000000000000000000000000040000000000000000100000000000000000000040002100002000000000000080000000000000100000002000000040000001220000000000000000000000000000000000000000000000000000000000000004000', status: 1, to: '0x84F80EA01e26B7C11bdd241970982C7EEAb6DdcC', transactionHash: '0xd0befcb9d10a89aba2d488534811bf5c62a889e2499d23cdd83c2a2200cde873', transactionIndex: 41, type: 2, byzantium: true, confirmations: 40 }\n * ```\n */\nexport function cleanTransactionReceipt(\n transactionReceipt: RPCTransactionReceipt,\n): TransactionReceipt {\n const cleanedTransaction = cleanTransaction(transactionReceipt as any);\n const cleanedTransactionReceipt = {\n ...cleanedTransaction,\n } as unknown as TransactionReceipt;\n (\n Object.keys(transactionReceipt) as Array<keyof RPCTransactionReceipt>\n ).forEach((key) => {\n if (!transactionReceipt[key]) return;\n switch (key) {\n case 'status':\n cleanedTransactionReceipt[key] = Number(\n hexToDecimal(transactionReceipt[key]),\n );\n break;\n case 'contractAddress':\n if (transactionReceipt[key]) {\n cleanedTransactionReceipt[key] = toChecksumAddress(\n transactionReceipt[key],\n );\n }\n break;\n case 'cumulativeGasUsed':\n case 'effectiveGasPrice':\n case 'gasUsed':\n cleanedTransactionReceipt[key] = tinyBig(\n hexToDecimal(transactionReceipt[key]),\n );\n break;\n case 'logs':\n transactionReceipt[key].forEach((log: RPCLog, index: number) => {\n cleanedTransactionReceipt[key][index] = cleanLog(log, true) as Log;\n });\n }\n });\n cleanedTransactionReceipt.byzantium =\n cleanedTransactionReceipt.blockNumber >= 4370000;\n return cleanedTransactionReceipt;\n}\n","import type { BlockResponse } from '../..';\nimport { toChecksumAddress } from '../..';\nimport { tinyBig } from '../../shared/tiny-big/tiny-big';\nimport type { RPCBlock } from '../../types/Block.types';\nimport type { RPCTransaction } from '../../types/Transaction.types';\nimport { cleanTransaction } from './clean-transaction';\nimport { hexToDecimal } from './hex-to-decimal';\n\n/**\n * Converts RPC block response to more JS-friendly format\n *\n * @param block the RPCBlock to clean\n * @param returnTransactionObjects whether or not to return the transactions specified in this block\n * @returns a cleaned block\n * @example\n * ```js\n * const rpcBlock = {\n * number: '0x40f9de',\n * hash: '0x4cbaa942e48a91108f38e2a250f6dbaff7fffe3027f5ebf76701929eed2b2970',\n * parentHash: '0xc8de1e513f74cbc5cc77e2a39e4cada6504469a5d0e87200b708319c1e9ef154',\n * sha3Uncles: '0x04d250716296c9662314b37c112e5ce8b1c9ad7fd7820a39482a3688a2078f2b',\n * logsBloom: '0x0000400004000000040010100200000000000000000000000000000000000000001000000001000000000000000000000004010000000000000a800000000000040000000001000400000000000000000000000000000000000002000000000000000000000004000040000000800000000001000000000000000000000000000000000000000001000000000004200000000000000000000000000124400000000000000200100020000000000000000080000000000080001000000000000000000081000000000000000000008000000020000100000000200020100800000000000000000008002000000080001000020c00000000000000200000000000',\n * transactionsRoot: '0xfc79f4f620cb69861ac67ceee5e1ddf3e45da95be230d4064be234f1ee491aa5',\n * stateRoot: '0xfa5ef7e368997d70670b0ea3172aabefc2dee285786ce69c7165d8d854f8b292',\n * receiptsRoot: '0x7fa0679e88fef8a8f7f5865dc4e6000ddcc267b14d2904948e3b1576a18a3bbd',\n * miner: '0x1b7a75ef070ff49e6b9491a26403d799f2099ebd',\n * difficulty: '0x47ede14fcbe635706e',\n * totalDifficulty: '0x139e1de9b8404dedc5d30959',\n * extraData: '0xce018c495249532d62613031656132',\n * size: '0xb4f',\n * gasLimit: '0x67c280',\n * gasUsed: '0x56e2d',\n * timestamp: '0x62648dc2',\n * transactions: [\n * '0xd53800afc69e55cc7a64b927803b46a5b4c5ddccbaafb6b32fe0ec883739b825',\n * '0x4b8b07f35a1f911a80a0ffeebe3d3c41cd393b4d5e1ce0a408026705913d6760',\n * '0xa50eac0ea8005cb1e4b95be4e64c24035d9c41adb164c49477c3169870f02fb1',\n * '0x413e5293786f8b63e73adf0b74ab56067da4b564d01936b88b138d48cc414a42',\n * '0xd4e4969365d144b0b987632dca36ba9e272254bdc687245987a57666d6afa148'\n * ],\n * uncles: [\n * '0x36cd3869fd17a285b984dea8b705d34096e1fbdfe48df69ae530fbe921ba83fa'\n * ],\n * minimumGasPrice: '0x387ee40',\n * bitcoinMergedMiningHeader: '0x0040502d717ae205da048b0ffb8e110603564d8677ca8bd3a54601000000000000000000e722e86bfebcae00bffb46c663fa0241b63a27f0c98fa710e421d5cc1afa2448d08d6462d9f809172f5e30aa',\n * bitcoinMergedMiningCoinbaseTransaction: '0x00000000000001003f8757a906f0159f882f0968788a2e396b7bf8090e1b926fb2bb46789ac32d55082aca4e0800000000000000002b6a2952534b424c4f434b3a831a30935da1bd1e8631942fc7fa78f7a7b11d51ca39a1684d91a81f0040f9de00000000',\n * bitcoinMergedMiningMerkleProof: '0xb53111a4e11bc19bf90268485d1b957d908ebc6a4cd9862aca3fc6ed3dcf3240b14c316de8521369d55dbfeb2b0116bcc10f40e999c4885e1bd2a08691bdea1c43862d590390a227a379d5677b958f1a23eecc16ac590ad675b8a4cea0c10da3ef597acb9ca1fe0a21fc408f09e0c7169d83aca8ddd636d8cc155f922e1d36c74b7cc11e9ee98dd1bf2100a55d59630c65da3db1575d58f165c5753c1779df90efcff9017b73cc32f4c87178bd0eae6a6dd0357047be70d6c4af17fcef097e80a9f1751447f4eee3831fc79f2d894934694149bcb99840a525f5128215eca6b54642af452ee7568a9281f40560afffd35725df31b98155d7813dea12e42f2a8052c7d98bcf62c9cdc66c40fb12b729b685a31aec4970ea5316640691ae5eb616808656a2bde4e9f5920ff178bf9d1f84e96a0d0bd048a3a8ca0d60970d02aacf7ecfb6e7feaec5c4a764873531cfd630e9430840cfe8b88154da25d6b94b706fe678d0efc1ecafed5a1f539e34552bea65622513b663e17e121f3c4548942584',\n * hashForMergedMining: '0x831a30935da1bd1e8631942fc7fa78f7a7b11d51ca39a1684d91a81f0040f9de',\n * paidFees: '0x1fb451615b58',\n * cumulativeDifficulty: '0x8fdbe015f7248cf993'\n * };\n * const returnTransactionObjects = false;\n *\n * await cleanBlock(rpcBlock, returnTransactionObjects);\n * // {\n * // number: 4258270,\n * // hash: '0x4cbaa942e48a91108f38e2a250f6dbaff7fffe3027f5ebf76701929eed2b2970',\n * // parentHash: '0xc8de1e513f74cbc5cc77e2a39e4cada6504469a5d0e87200b708319c1e9ef154',\n * // sha3Uncles: '0x04d250716296c9662314b37c112e5ce8b1c9ad7fd7820a39482a3688a2078f2b',\n * // logsBloom: '0x0000400004000000040010100200000000000000000000000000000000000000001000000001000000000000000000000004010000000000000a800000000000040000000001000400000000000000000000000000000000000002000000000000000000000004000040000000800000000001000000000000000000000000000000000000000001000000000004200000000000000000000000000124400000000000000200100020000000000000000080000000000080001000000000000000000081000000000000000000008000000020000100000000200020100800000000000000000008002000000080001000020c00000000000000200000000000',\n * // transactionsRoot: '0xfc79f4f620cb69861ac67ceee5e1ddf3e45da95be230d4064be234f1ee491aa5',\n * // stateRoot: '0xfa5ef7e368997d70670b0ea3172aabefc2dee285786ce69c7165d8d854f8b292',\n * // receiptsRoot: '0x7fa0679e88fef8a8f7f5865dc4e6000ddcc267b14d2904948e3b1576a18a3bbd',\n * // miner: '0x1b7A75Ef070Ff49E6B9491a26403D799f2099EbD',\n * // difficulty: Big {\n * // s: 1,\n * // e: 21,\n * // c: [Array],\n * // constructor: [Function],\n * // padAndChop: [Function (anonymous)]\n * // },\n * // totalDifficulty: Big {\n * // s: 1,\n * // e: 27,\n * // c: [Array],\n * // constructor: [Function],\n * // padAndChop: [Function (anonymous)]\n * // },\n * // extraData: '0xce018c495249532d62613031656132',\n * // size: Big {\n * // s: 1,\n * // e: 3,\n * // c: [Array],\n * // constructor: [Function],\n * // padAndChop: [Function (anonymous)]\n * // },\n * // gasLimit: Big {\n * // s: 1,\n * // e: 6,\n * // c: [Array],\n * // constructor: [Function],\n * // padAndChop: [Function (anonymous)]\n * // },\n * // gasUsed: Big {\n * // s: 1,\n * // e: 5,\n * // c: [Array],\n * // constructor: [Function],\n * // padAndChop: [Function (anonymous)]\n * // },\n * // timestamp: Big {\n * // s: 1,\n * // e: 9,\n * // c: [Array],\n * // constructor: [Function],\n * // padAndChop: [Function (anonymous)]\n * // },\n * // transactions: [\n * // '0xd53800afc69e55cc7a64b927803b46a5b4c5ddccbaafb6b32fe0ec883739b825',\n * // '0x4b8b07f35a1f911a80a0ffeebe3d3c41cd393b4d5e1ce0a408026705913d6760',\n * // '0xa50eac0ea8005cb1e4b95be4e64c24035d9c41adb164c49477c3169870f02fb1',\n * // '0x413e5293786f8b63e73adf0b74ab56067da4b564d01936b88b138d48cc414a42',\n * // '0xd4e4969365d144b0b987632dca36ba9e272254bdc687245987a57666d6afa148'\n * // ],\n * // uncles: [\n * // '0x36cd3869fd17a285b984dea8b705d34096e1fbdfe48df69ae530fbe921ba83fa'\n * // ],\n * // minimumGasPrice: '0x387ee40',\n * // bitcoinMergedMiningHeader: '0x0040502d717ae205da048b0ffb8e110603564d8677ca8bd3a54601000000000000000000e722e86bfebcae00bffb46c663fa0241b63a27f0c98fa710e421d5cc1afa2448d08d6462d9f809172f5e30aa',\n * // bitcoinMergedMiningCoinbaseTransaction: '0x00000000000001003f8757a906f0159f882f0968788a2e396b7bf8090e1b926fb2bb46789ac32d55082aca4e0800000000000000002b6a2952534b424c4f434b3a831a30935da1bd1e8631942fc7fa78f7a7b11d51ca39a1684d91a81f0040f9de00000000',\n * // bitcoinMergedMiningMerkleProof: '0xb53111a4e11bc19bf90268485d1b957d908ebc6a4cd9862aca3fc6ed3dcf3240b14c316de8521369d55dbfeb2b0116bcc10f40e999c4885e1bd2a08691bdea1c43862d590390a227a379d5677b958f1a23eecc16ac590ad675b8a4cea0c10da3ef597acb9ca1fe0a21fc408f09e0c7169d83aca8ddd636d8cc155f922e1d36c74b7cc11e9ee98dd1bf2100a55d59630c65da3db1575d58f165c5753c1779df90efcff9017b73cc32f4c87178bd0eae6a6dd0357047be70d6c4af17fcef097e80a9f1751447f4eee3831fc79f2d894934694149bcb99840a525f5128215eca6b54642af452ee7568a9281f40560afffd35725df31b98155d7813dea12e42f2a8052c7d98bcf62c9cdc66c40fb12b729b685a31aec4970ea5316640691ae5eb616808656a2bde4e9f5920ff178bf9d1f84e96a0d0bd048a3a8ca0d60970d02aacf7ecfb6e7feaec5c4a764873531cfd630e9430840cfe8b88154da25d6b94b706fe678d0efc1ecafed5a1f539e34552bea65622513b663e17e121f3c4548942584',\n * // hashForMergedMining: '0x831a30935da1bd1e8631942fc7fa78f7a7b11d51ca39a1684d91a81f0040f9de',\n * // paidFees: '0x1fb451615b58',\n * // cumulativeDifficulty: '0x8fdbe015f7248cf993'\n * // }\n */\nexport function cleanBlock(\n block: RPCBlock,\n returnTransactionObjects: boolean,\n): BlockResponse {\n const cleanedBlock = { ...block } as unknown as BlockResponse;\n (Object.keys(block) as Array<keyof RPCBlock>).forEach((key) => {\n // pending blocks have null instead of a difficulty\n // pending blocks have null instead of a miner address\n if (!block[key]) return;\n switch (key) {\n case 'difficulty':\n case 'totalDifficulty':\n case 'gasLimit':\n case 'gasUsed':\n case 'size':\n case 'timestamp':\n case 'baseFeePerGas':\n cleanedBlock[key] = tinyBig(hexToDecimal(block[key]));\n break;\n case 'number':\n cleanedBlock[key] = Number(hexToDecimal(block[key]));\n break;\n case 'miner':\n cleanedBlock[key] = toChecksumAddress(block[key]);\n break;\n }\n });\n // for all full transactions\n if (returnTransactionObjects) {\n const txns = block.transactions as RPCTransaction[];\n txns.forEach((transaction, index) => {\n cleanedBlock.transactions[index] = cleanTransaction(transaction);\n });\n }\n return cleanedBlock;\n}\n","import { logger } from '../logger/logger';\nimport { BaseProvider } from './BaseProvider';\n\n// https://advancedweb.hu/how-to-add-timeout-to-a-promise-in-javascript/\nconst promiseTimeout = (prom: Promise<any>, time: number) =>\n Promise.race([\n prom,\n new Promise((_r, reject) =>\n setTimeout(() => reject('Promise timed out'), time),\n ),\n ]);\n\nexport interface ConstructorOptions {\n timeoutDuration?: number;\n}\nconst DEFAULT_TIMEOUT_DURATION = 8000;\n\n/**\n * @beta\n * A JSON RPC Provider which moves to the next URL when one fails.\n */\nexport class FallthroughProvider extends BaseProvider {\n // index of current trusted rpc url\n /**\n * @ignore\n */\n private rpcUrlCounter = 0;\n private readonly timeoutDuration: number;\n /**\n * @ignore\n */\n public selectRpcUrl(): string {\n return this._rpcUrls[this.rpcUrlCounter];\n }\n\n constructor(rpcUrls: string[], options: ConstructorOptions = {}) {\n if (!Array.isArray(rpcUrls)) {\n logger.throwError('Array required', { rpcUrls });\n }\n if (rpcUrls.length <= 1) {\n logger.throwError('More than one rpcUrl is required', { rpcUrls });\n }\n super(rpcUrls);\n this.timeoutDuration = options.timeoutDuration || DEFAULT_TIMEOUT_DURATION;\n }\n\n /**\n * @ignore\n */\n public post = (body: Record<string, unknown>): Promise<any> => {\n // while failing post, add to rpcUrlCounter and post again\n const genesisCount = this.rpcUrlCounter;\n\n const recursivePostRetry = (): Promise<any> => {\n // Times out request\n const genesisRpcUrl = this.selectRpcUrl();\n const res = promiseTimeout(this._post(body), this.timeoutDuration).catch(\n (e) => {\n // A mutex: Only add if no other instance has discovered this url as failing yet\n if (genesisRpcUrl === this.selectRpcUrl()) {\n // add one and handle array overflow\n this.rpcUrlCounter =\n (this.rpcUrlCounter + 1) % this._rpcUrls.length;\n }\n // we've already tried this rpc, throw for good\n if (this.rpcUrlCounter === genesisCount) {\n throw e;\n }\n return recursivePostRetry();\n },\n );\n return res;\n };\n return recursivePostRetry();\n };\n}\n","import { BaseProvider } from './BaseProvider';\nexport class JsonRpcProvider extends BaseProvider {\n /**\n * @ignore\n */\n selectRpcUrl(): string {\n return this._rpcUrls[0];\n }\n\n /**\n * @ignore\n */\n post(body: Record<string, unknown>): Promise<any> {\n return this._post(body);\n }\n\n /**\n * @param rpcUrl The URL to your Eth node. Consider POKT or Infura\n * @example\n * `https://free-eth-node.com/api/eth`\n * @example\n * `https://mainnet.infura.io/v3/YOUR-PROJECT-ID`\n */\n constructor(rpcUrl = 'https://free-eth-node.com/api/eth') {\n super([rpcUrl]);\n }\n}\n\n/**\n * Helper function to avoid \"new\"\n *\n * @param rpcUrl the RPC URL to post requests to\n * @returns an initiated {@link JsonRpcProvider}\n * @example\n * ```javascript\n * jsonRpcProvider().getBlock('latest').then(block => {\n * console.log(block.number);\n * })\n * // 14530496\n * ```\n */\nexport function jsonRpcProvider(rpcUrl?: string) {\n return new JsonRpcProvider(rpcUrl);\n}\n","import { Keccak } from 'sha3';\nimport type { BytesLike } from './bytes';\n\n/**\n * Hashes data into a Keccak256 hex string\n *\n * @param data the data to be hashed using Keccak256\n * @returns a hex string with data hashed using Keccak256\n * @example\n * ```javascript\n * keccak256('essential-eth');\n * // '0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470'\n *\n * keccak256('0x123');\n * // '0x5fa2358263196dbbf23d1ca7a509451f7a2f64c15837bfbb81298b1e3e24e4fa'\n * ```\n */\nexport function keccak256(data: BytesLike): string {\n let bufferableData;\n if (typeof data === 'string') {\n bufferableData = Buffer.from(data.replace(/^0x/, ''), 'hex');\n } else {\n bufferableData = Buffer.from(data as any);\n }\n const keccak = new Keccak(256);\n const addressHash = '0x' + keccak.update(bufferableData).digest('hex');\n return addressHash;\n}\n","/*! noble-secp256k1 - MIT License (c) 2019 Paul Miller (paulmillr.com) */\nimport nodeCrypto from 'crypto';\nconst _0n = BigInt(0);\nconst _1n = BigInt(1);\nconst _2n = BigInt(2);\nconst _3n = BigInt(3);\nconst _8n = BigInt(8);\nconst POW_2_256 = _2n ** BigInt(256);\nconst CURVE = {\n a: _0n,\n b: BigInt(7),\n P: POW_2_256 - _2n ** BigInt(32) - BigInt(977),\n n: POW_2_256 - BigInt('432420386565659656852420866394968145599'),\n h: _1n,\n Gx: BigInt('55066263022277343669578718895168534326250603453777594175500187360389116729240'),\n Gy: BigInt('32670510020758816978083085130507043184471273380659243275938904335757337482424'),\n beta: BigInt('0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee'),\n};\nexport { CURVE };\nfunction weistrass(x) {\n const { a, b } = CURVE;\n const x2 = mod(x * x);\n const x3 = mod(x2 * x);\n return mod(x3 + a * x + b);\n}\nconst USE_ENDOMORPHISM = CURVE.a === _0n;\nclass JacobianPoint {\n constructor(x, y, z) {\n this.x = x;\n this.y = y;\n this.z = z;\n }\n static fromAffine(p) {\n if (!(p instanceof Point)) {\n throw new TypeError('JacobianPoint#fromAffine: expected Point');\n }\n return new JacobianPoint(p.x, p.y, _1n);\n }\n static toAffineBatch(points) {\n const toInv = invertBatch(points.map((p) => p.z));\n return points.map((p, i) => p.toAffine(toInv[i]));\n }\n static normalizeZ(points) {\n return JacobianPoint.toAffineBatch(points).map(JacobianPoint.fromAffine);\n }\n equals(other) {\n if (!(other instanceof JacobianPoint))\n throw new TypeError('JacobianPoint expected');\n const { x: X1, y: Y1, z: Z1 } = this;\n const { x: X2, y: Y2, z: Z2 } = other;\n const Z1Z1 = mod(Z1 ** _2n);\n const Z2Z2 = mod(Z2 ** _2n);\n const U1 = mod(X1 * Z2Z2);\n const U2 = mod(X2 * Z1Z1);\n const S1 = mod(mod(Y1 * Z2) * Z2Z2);\n const S2 = mod(mod(Y2 * Z1) * Z1Z1);\n return U1 === U2 && S1 === S2;\n }\n negate() {\n return new JacobianPoint(this.x, mod(-this.y), this.z);\n }\n double() {\n const { x: X1, y: Y1, z: Z1 } = this;\n const A = mod(X1 ** _2n);\n const B = mod(Y1 ** _2n);\n const C = mod(B ** _2n);\n const D = mod(_2n * (mod((X1 + B) ** _2n) - A - C));\n const E = mod(_3n * A);\n const F = mod(E ** _2n);\n const X3 = mod(F - _2n * D);\n const Y3 = mod(E * (D - X3) - _8n * C);\n const Z3 = mod(_2n * Y1 * Z1);\n return new JacobianPoint(X3, Y3, Z3);\n }\n add(other) {\n if (!(other instanceof JacobianPoint))\n throw new TypeError('JacobianPoint expected');\n const { x: X1, y: Y1, z: Z1 } = this;\n const { x: X2, y: Y2, z: Z2 } = other;\n if (X2 === _0n || Y2 === _0n)\n return this;\n if (X1 === _0n || Y1 === _0n)\n return other;\n const Z1Z1 = mod(Z1 ** _2n);\n const Z2Z2 = mod(Z2 ** _2n);\n const U1 = mod(X1 * Z2Z2);\n const U2 = mod(X2 * Z1Z1);\n const S1 = mod(mod(Y1 * Z2) * Z2Z2);\n const S2 = mod(mod(Y2 * Z1) * Z1Z1);\n const H = mod(U2 - U1);\n const r = mod(S2 - S1);\n if (H === _0n) {\n if (r === _0n) {\n return this.double();\n }\n else {\n return JacobianPoint.ZERO;\n }\n }\n const HH = mod(H ** _2n);\n const HHH = mod(H * HH);\n const V = mod(U1 * HH);\n const X3 = mod(r ** _2n - HHH - _2n * V);\n const Y3 = mod(r * (V - X3) - S1 * HHH);\n const Z3 = mod(Z1 * Z2 * H);\n return new JacobianPoint(X3, Y3, Z3);\n }\n subtract(other) {\n return this.add(other.negate());\n }\n multiplyUnsafe(scalar) {\n let n = normalizeScalar(scalar);\n const G = JacobianPoint.BASE;\n const P0 = JacobianPoint.ZERO;\n if (n === _0n)\n return P0;\n if (n === _1n)\n return this;\n if (!USE_ENDOMORPHISM) {\n let p = P0;\n let d = this;\n while (n > _0n) {\n if (n & _1n)\n p = p.add(d);\n d = d.double();\n n >>= _1n;\n }\n return p;\n }\n let { k1neg, k1, k2neg, k2 } = splitScalarEndo(n);\n let k1p = P0;\n let k2p = P0;\n let d = this;\n while (k1 > _0n || k2 > _0n) {\n if (k1 & _1n)\n k1p = k1p.add(d);\n if (k2 & _1n)\n k2p = k2p.add(d);\n d = d.double();\n k1 >>= _1n;\n k2 >>= _1n;\n }\n if (k1neg)\n k1p = k1p.negate();\n if (k2neg)\n k2p = k2p.negate();\n k2p = new JacobianPoint(mod(k2p.x * CURVE.beta), k2p.y, k2p.z);\n return k1p.add(k2p);\n }\n precomputeWindow(W) {\n const windows = USE_ENDOMORPHISM ? 128 / W + 1 : 256 / W + 1;\n const points = [];\n let p = this;\n let base = p;\n for (let window = 0; window < windows; window++) {\n base = p;\n points.push(base);\n for (let i = 1; i < 2 ** (W - 1); i++) {\n base = base.add(p);\n points.push(base);\n }\n p = base.double();\n }\n return points;\n }\n wNAF(n, affinePoint) {\n if (!affinePoint && this.equals(JacobianPoint.BASE))\n affinePoint = Point.BASE;\n const W = (affinePoint && affinePoint._WINDOW_SIZE) || 1;\n if (256 % W) {\n throw new Error('Point#wNAF: Invalid precomputation window, must be power of 2');\n }\n let precomputes = affinePoint && pointPrecomputes.get(affinePoint);\n if (!precomputes) {\n precomputes = this.precomputeWindow(W);\n if (affinePoint && W !== 1) {\n precomputes = JacobianPoint.normalizeZ(precomputes);\n pointPrecomputes.set(affinePoint, precomputes);\n }\n }\n let p = JacobianPoint.ZERO;\n let f = JacobianPoint.ZERO;\n const windows = 1 + (USE_ENDOMORPHISM ? 128 / W : 256 / W);\n const windowSize = 2 ** (W - 1);\n const mask = BigInt(2 ** W - 1);\n const maxNumber = 2 ** W;\n const shiftBy = BigInt(W);\n for (let window = 0; window < windows; window++) {\n const offset = window * windowSize;\n let wbits = Number(n & mask);\n n >>= shiftBy;\n if (wbits > windowSize) {\n wbits -= maxNumber;\n n += _1n;\n }\n if (wbits === 0) {\n let pr = precomputes[offset];\n if (window % 2)\n pr = pr.negate();\n f = f.add(pr);\n }\n else {\n let cached = precomputes[offset + Math.abs(wbits) - 1];\n if (wbits < 0)\n cached = cached.negate();\n p = p.add(cached);\n }\n }\n return { p, f };\n }\n multiply(scalar, affinePoint) {\n let n = normalizeScalar(scalar);\n let point;\n let fake;\n if (USE_ENDOMORPHISM) {\n const { k1neg, k1, k2neg, k2 } = splitScalarEndo(n);\n let { p: k1p, f: f1p } = this.wNAF(k1, affinePoint);\n let { p: k2p, f: f2p } = this.wNAF(k2, affinePoint);\n if (k1neg)\n k1p = k1p.negate();\n if (k2neg)\n k2p = k2p.negate();\n k2p = new JacobianPoint(mod(k2p.x * CURVE.beta), k2p.y, k2p.z);\n point = k1p.add(k2p);\n fake = f1p.add(f2p);\n }\n else {\n const { p, f } = this.wNAF(n, affinePoint);\n point = p;\n fake = f;\n }\n return JacobianPoint.normalizeZ([point, fake])[0];\n }\n toAffine(invZ = invert(this.z)) {\n const { x, y, z } = this;\n const iz1 = invZ;\n const iz2 = mod(iz1 * iz1);\n const iz3 = mod(iz2 * iz1);\n const ax = mod(x * iz2);\n const ay = mod(y * iz3);\n const zz = mod(z * iz1);\n if (zz !== _1n)\n throw new Error('invZ was invalid');\n return new Point(ax, ay);\n }\n}\nJacobianPoint.BASE = new JacobianPoint(CURVE.Gx, CURVE.Gy, _1n);\nJacobianPoint.ZERO = new JacobianPoint(_0n, _1n, _0n);\nconst pointPrecomputes = new WeakMap();\nexport class Point {\n constructor(x, y) {\n this.x = x;\n this.y = y;\n }\n _setWindowSize(windowSize) {\n this._WINDOW_SIZE = windowSize;\n pointPrecomputes.delete(this);\n }\n static fromCompressedHex(bytes) {\n const isShort = bytes.length === 32;\n const x = bytesToNumber(isShort ? bytes : bytes.subarray(1));\n if (!isValidFieldElement(x))\n throw new Error('Point is not on curve');\n const y2 = weistrass(x);\n let y = sqrtMod(y2);\n const isYOdd = (y & _1n) === _1n;\n if (isShort) {\n if (isYOdd)\n y = mod(-y);\n }\n else {\n const isFirstByteOdd = (bytes[0] & 1) === 1;\n if (isFirstByteOdd !== isYOdd)\n y = mod(-y);\n }\n const point = new Point(x, y);\n point.assertValidity();\n return point;\n }\n static fromUncompressedHex(bytes) {\n const x = bytesToNumber(bytes.subarray(1, 33));\n const y = bytesToNumber(bytes.subarray(33, 65));\n const point = new Point(x, y);\n point.assertValidity();\n return point;\n }\n static fromHex(hex) {\n const bytes = ensureBytes(hex);\n const len = bytes.length;\n const header = bytes[0];\n if (len === 32 || (len === 33 && (header === 0x02 || header === 0x03))) {\n return this.fromCompressedHex(bytes);\n }\n if (len === 65 && header === 0x04)\n return this.fromUncompressedHex(bytes);\n throw new Error(`Point.fromHex: received invalid point. Expected 32-33 compressed bytes or 65 uncompressed bytes, not ${len}`);\n }\n static fromPrivateKey(privateKey) {\n return Point.BASE.multiply(normalizePrivateKey(privateKey));\n }\n static fromSignature(msgHash, signature, recovery) {\n msgHash = ensureBytes(msgHash);\n const h = truncateHash(msgHash);\n const { r, s } = normalizeSignature(signature);\n if (recovery !== 0 && recovery !== 1) {\n throw new Error('Cannot recover signature: invalid recovery bit');\n }\n if (h === _0n)\n throw new Error('Cannot recover signature: msgHash cannot be 0');\n const prefix = recovery & 1 ? '03' : '02';\n const R = Point.fromHex(prefix + numTo32bStr(r));\n const { n } = CURVE;\n const rinv = invert(r, n);\n const u1 = mod(-h * rinv, n);\n const u2 = mod(s * rinv, n);\n const Q = Point.BASE.multiplyAndAddUnsafe(R, u1, u2);\n if (!Q)\n throw new Error('Cannot recover signature: point at infinify');\n Q.assertValidity();\n return Q;\n }\n toRawBytes(isCompressed = false) {\n return hexToBytes(this.toHex(isCompressed));\n }\n toHex(isCompressed = false) {\n const x = numTo32bStr(this.x);\n if (isCompressed) {\n const prefix = this.y & _1n ? '03' : '02';\n return `${prefix}${x}`;\n }\n else {\n return `04${x}${numTo32bStr(this.y)}`;\n }\n }\n toHexX() {\n return this.toHex(true).slice(2);\n }\n toRawX() {\n return this.toRawBytes(true).slice(1);\n }\n assertValidity() {\n const msg = 'Point is not on elliptic curve';\n const { x, y } = this;\n if (!isValidFieldElement(x) || !isValidFieldElement(y))\n throw new Error(msg);\n const left = mod(y * y);\n const right = weistrass(x);\n if (mod(left - right) !== _0n)\n throw new Error(msg);\n }\n equals(other) {\n return this.x === other.x && this.y === other.y;\n }\n negate() {\n return new Point(this.x, mod(-this.y));\n }\n double() {\n return JacobianPoint.fromAffine(this).double().toAffine();\n }\n add(other) {\n return JacobianPoint.fromAffine(this).add(JacobianPoint.fromAffine(other)).toAffine();\n }\n subtract(other) {\n return this.add(other.negate());\n }\n multiply(scalar) {\n return JacobianPoint.fromAffine(this).multiply(scalar, this).toAffine();\n }\n multiplyAndAddUnsafe(Q, a, b) {\n const P = JacobianPoint.fromAffine(this);\n const aP = P.multiply(a);\n const bQ = JacobianPoint.fromAffine(Q).multiplyUnsafe(b);\n const sum = aP.add(bQ);\n return sum.equals(JacobianPoint.ZERO) ? undefined : sum.toAffine();\n }\n}\nPoint.BASE = new Point(CURVE.Gx, CURVE.Gy);\nPoint.ZERO = new Point(_0n, _0n);\nfunction sliceDER(s) {\n return Number.parseInt(s[0], 16) >= 8 ? '00' + s : s;\n}\nfunction parseDERInt(data) {\n if (data.length < 2 || data[0] !== 0x02) {\n throw new Error(`Invalid signature integer tag: ${bytesToHex(data)}`);\n }\n const len = data[1];\n const res = data.subarray(2, len + 2);\n if (!len || res.length !== len) {\n throw new Error(`Invalid signature integer: wrong length`);\n }\n if (res[0] === 0x00 && res[1] <= 0x7f) {\n throw new Error('Invalid signature integer: trailing length');\n }\n return { data: bytesToNumber(res), left: data.subarray(len + 2) };\n}\nfunction parseDERSignature(data) {\n if (data.length < 2 || data[0] != 0x30) {\n throw new Error(`Invalid signature tag: ${bytesToHex(data)}`);\n }\n if (data[1] !== data.length - 2) {\n throw new Error('Invalid signature: incorrect length');\n }\n const { data: r, left: sBytes } = parseDERInt(data.subarray(2));\n const { data: s, left: rBytesLeft } = parseDERInt(sBytes);\n if (rBytesLeft.length) {\n throw new Error(`Invalid signature: left bytes after parsing: ${bytesToHex(rBytesLeft)}`);\n }\n return { r, s };\n}\nexport class Signature {\n constructor(r, s) {\n this.r = r;\n this.s = s;\n this.assertValidity();\n }\n static fromCompact(hex) {\n const arr = isUint8a(hex);\n const name = 'Signature.fromCompact';\n if (typeof hex !== 'string' && !arr)\n throw new TypeError(`${name}: Expected string or Uint8Array`);\n const str = arr ? bytesToHex(hex) : hex;\n if (str.length !== 128)\n throw new Error(`${name}: Expected 64-byte hex`);\n return new Signature(hexToNumber(str.slice(0, 64)), hexToNumber(str.slice(64, 128)));\n }\n static fromDER(hex) {\n const arr = isUint8a(hex);\n if (typeof hex !== 'string' && !arr)\n throw new TypeError(`Signature.fromDER: Expected string or Uint8Array`);\n const { r, s } = parseDERSignature(arr ? hex : hexToBytes(hex));\n return new Signature(r, s);\n }\n static fromHex(hex) {\n return this.fromDER(hex);\n }\n assertValidity() {\n const { r, s } = this;\n if (!isWithinCurveOrder(r))\n throw new Error('Invalid Signature: r must be 0 < r < n');\n if (!isWithinCurveOrder(s))\n throw new Error('Invalid Signature: s must be 0 < s < n');\n }\n hasHighS() {\n const HALF = CURVE.n >> _1n;\n return this.s > HALF;\n }\n normalizeS() {\n return this.hasHighS() ? new Signature(this.r, CURVE.n - this.s) : this;\n }\n toDERRawBytes(isCompressed = false) {\n return hexToBytes(this.toDERHex(isCompressed));\n }\n toDERHex(isCompressed = false) {\n const sHex = sliceDER(numberToHexUnpadded(this.s));\n if (isCompressed)\n return sHex;\n const rHex = sliceDER(numberToHexUnpadded(this.r));\n const rLen = numberToHexUnpadded(rHex.length / 2);\n const sLen = numberToHexUnpadded(sHex.length / 2);\n const length = numberToHexUnpadded(rHex.length / 2 + sHex.length / 2 + 4);\n return `30${length}02${rLen}${rHex}02${sLen}${sHex}`;\n }\n toRawBytes() {\n return this.toDERRawBytes();\n }\n toHex() {\n return this.toDERHex();\n }\n toCompactRawBytes() {\n return hexToBytes(this.toCompactHex());\n }\n toCompactHex() {\n return numTo32bStr(this.r) + numTo32bStr(this.s);\n }\n}\nfunction concatBytes(...arrays) {\n if (!arrays.every(isUint8a))\n throw new Error('Uint8Array list expected');\n if (arrays.length === 1)\n return arrays[0];\n const length = arrays.reduce((a, arr) => a + arr.length, 0);\n const result = new Uint8Array(length);\n for (let i = 0, pad = 0; i < arrays.length; i++) {\n const arr = arrays[i];\n result.set(arr, pad);\n pad += arr.length;\n }\n return result;\n}\nfunction isUint8a(bytes) {\n return bytes instanceof Uint8Array;\n}\nconst hexes = Array.from({ length: 256 }, (v, i) => i.toString(16).padStart(2, '0'));\nfunction bytesToHex(uint8a) {\n if (!(uint8a instanceof Uint8Array))\n throw new Error('Expected Uint8Array');\n let hex = '';\n for (let i = 0; i < uint8a.length; i++) {\n hex += hexes[uint8a[i]];\n }\n return hex;\n}\nfunction numTo32bStr(num) {\n if (num > POW_2_256)\n throw new Error('Expected number < 2^256');\n return num.toString(16).padStart(64, '0');\n}\nfunction numTo32b(num) {\n return hexToBytes(numTo32bStr(num));\n}\nfunction numberToHexUnpadded(num) {\n const hex = num.toString(16);\n return hex.length & 1 ? `0${hex}` : hex;\n}\nfunction hexToNumber(hex) {\n if (typeof hex !== 'string') {\n throw new TypeError('hexToNumber: expected string, got ' + typeof hex);\n }\n return BigInt(`0x${hex}`);\n}\nfunction hexToBytes(hex) {\n if (typeof hex !== 'string') {\n throw new TypeError('hexToBytes: expected string, got ' + typeof hex);\n }\n if (hex.length % 2)\n throw new Error('hexToBytes: received invalid unpadded hex' + hex.length);\n const array = new Uint8Array(hex.length / 2);\n for (let i = 0; i < array.length; i++) {\n const j = i * 2;\n const hexByte = hex.slice(j, j + 2);\n const byte = Number.parseInt(hexByte, 16);\n if (Number.isNaN(byte) || byte < 0)\n throw new Error('Invalid byte sequence');\n array[i] = byte;\n }\n return array;\n}\nfunction bytesToNumber(bytes) {\n return hexToNumber(bytesToHex(bytes));\n}\nfunction ensureBytes(hex) {\n return hex instanceof Uint8Array ? Uint8Array.from(hex) : hexToBytes(hex);\n}\nfunction normalizeScalar(num) {\n if (typeof num === 'number' && Number.isSafeInteger(num) && num > 0)\n return BigInt(num);\n if (typeof num === 'bigint' && isWithinCurveOrder(num))\n return num;\n throw new TypeError('Expected valid private scalar: 0 < scalar < curve.n');\n}\nfunction mod(a, b = CURVE.P) {\n const result = a % b;\n return result >= _0n ? result : b + result;\n}\nfunction pow2(x, power) {\n const { P } = CURVE;\n let res = x;\n while (power-- > _0n) {\n res *= res;\n res %= P;\n }\n return res;\n}\nfunction sqrtMod(x) {\n const { P } = CURVE;\n const _6n = BigInt(6);\n const _11n = BigInt(11);\n const _22n = BigInt(22);\n const _23n = BigInt(23);\n const _44n = BigInt(44);\n const _88n = BigInt(88);\n const b2 = (x * x * x) % P;\n const b3 = (b2 * b2 * x) % P;\n const b6 = (pow2(b3, _3n) * b3) % P;\n const b9 = (pow2(b6, _3n) * b3) % P;\n const b11 = (pow2(b9, _2n) * b2) % P;\n const b22 = (pow2(b11, _11n) * b11) % P;\n const b44 = (pow2(b22, _22n) * b22) % P;\n const b88 = (pow2(b44, _44n) * b44) % P;\n const b176 = (pow2(b88, _88n) * b88) % P;\n const b220 = (pow2(b176, _44n) * b44) % P;\n const b223 = (pow2(b220, _3n) * b3) % P;\n const t1 = (pow2(b223, _23n) * b22) % P;\n const t2 = (pow2(t1, _6n) * b2) % P;\n return pow2(t2, _2n);\n}\nfunction invert(number, modulo = CURVE.P) {\n if (number === _0n || modulo <= _0n) {\n throw new Error(`invert: expected positive integers, got n=${number} mod=${modulo}`);\n }\n let a = mod(number, modulo);\n let b = modulo;\n let x = _0n, y = _1n, u = _1n, v = _0n;\n while (a !== _0n) {\n const q = b / a;\n const r = b % a;\n const m = x - u * q;\n const n = y - v * q;\n b = a, a = r, x = u, y = v, u = m, v = n;\n }\n const gcd = b;\n if (gcd !== _1n)\n throw new Error('invert: does not exist');\n return mod(x, modulo);\n}\nfunction invertBatch(nums, p = CURVE.P) {\n const scratch = new Array(nums.length);\n const lastMultiplied = nums.reduce((acc, num, i) => {\n if (num === _0n)\n return acc;\n scratch[i] = acc;\n return mod(acc * num, p);\n }, _1n);\n const inverted = invert(lastMultiplied, p);\n nums.reduceRight((acc, num, i) => {\n if (num === _0n)\n return acc;\n scratch[i] = mod(acc * scratch[i], p);\n return mod(acc * num, p);\n }, inverted);\n return scratch;\n}\nconst divNearest = (a, b) => (a + b / _2n) / b;\nconst POW_2_128 = _2n ** BigInt(128);\nfunction splitScalarEndo(k) {\n const { n } = CURVE;\n const a1 = BigInt('0x3086d221a7d46bcde86c90e49284eb15');\n const b1 = -_1n * BigInt('0xe4437ed6010e88286f547fa90abfe4c3');\n const a2 = BigInt('0x114ca50f7a8e2f3f657c1108d9d44cfd8');\n const b2 = a1;\n const c1 = divNearest(b2 * k, n);\n const c2 = divNearest(-b1 * k, n);\n let k1 = mod(k - c1 * a1 - c2 * a2, n);\n let k2 = mod(-c1 * b1 - c2 * b2, n);\n const k1neg = k1 > POW_2_128;\n const k2neg = k2 > POW_2_128;\n if (k1neg)\n k1 = n - k1;\n if (k2neg)\n k2 = n - k2;\n if (k1 > POW_2_128 || k2 > POW_2_128) {\n throw new Error('splitScalarEndo: Endomorphism failed, k=' + k);\n }\n return { k1neg, k1, k2neg, k2 };\n}\nfunction truncateHash(hash) {\n const { n } = CURVE;\n const byteLength = hash.length;\n const delta = byteLength * 8 - 256;\n let h = bytesToNumber(hash);\n if (delta > 0)\n h = h >> BigInt(delta);\n if (h >= n)\n h -= n;\n return h;\n}\nclass HmacDrbg {\n constructor() {\n this.v = new Uint8Array(32).fill(1);\n this.k = new Uint8Array(32).fill(0);\n this.counter = 0;\n }\n hmac(...values) {\n return utils.hmacSha256(this.k, ...values);\n }\n hmacSync(...values) {\n if (typeof utils.hmacSha256Sync !== 'function')\n throw new Error('utils.hmacSha256Sync is undefined, you need to set it');\n const res = utils.hmacSha256Sync(this.k, ...values);\n if (res instanceof Promise)\n throw new Error('To use sync sign(), ensure utils.hmacSha256 is sync');\n return res;\n }\n incr() {\n if (this.counter >= 1000) {\n throw new Error('Tried 1,000 k values for sign(), all were invalid');\n }\n this.counter += 1;\n }\n async reseed(seed = new Uint8Array()) {\n this.k = await this.hmac(this.v, Uint8Array.from([0x00]), seed);\n this.v = await this.hmac(this.v);\n if (seed.length === 0)\n return;\n this.k = await this.hmac(this.v, Uint8Array.from([0x01]), seed);\n this.v = await this.hmac(this.v);\n }\n reseedSync(seed = new Uint8Array()) {\n this.k = this.hmacSync(this.v, Uint8Array.from([0x00]), seed);\n this.v = this.hmacSync(this.v);\n if (seed.length === 0)\n return;\n this.k = this.hmacSync(this.v, Uint8Array.from([0x01]), seed);\n this.v = this.hmacSync(this.v);\n }\n async generate() {\n this.incr();\n this.v = await this.hmac(this.v);\n return this.v;\n }\n generateSync() {\n this.incr();\n this.v = this.hmacSync(this.v);\n return this.v;\n }\n}\nfunction isWithinCurveOrder(num) {\n return _0n < num && num < CURVE.n;\n}\nfunction isValidFieldElement(num) {\n return _0n < num && num < CURVE.P;\n}\nfunction kmdToSig(kBytes, m, d) {\n const k = bytesToNumber(kBytes);\n if (!isWithinCurveOrder(k))\n return;\n const { n } = CURVE;\n const q = Point.BASE.multiply(k);\n const r = mod(q.x, n);\n if (r === _0n)\n return;\n const s = mod(invert(k, n) * mod(m + d * r, n), n);\n if (s === _0n)\n return;\n const sig = new Signature(r, s);\n const recovery = (q.x === sig.r ? 0 : 2) | Number(q.y & _1n);\n return { sig, recovery };\n}\nfunction normalizePrivateKey(key) {\n let num;\n if (typeof key === 'bigint') {\n num = key;\n }\n else if (typeof key === 'number' && Number.isSafeInteger(key) && key > 0) {\n num = BigInt(key);\n }\n else if (typeof key === 'string') {\n if (key.length !== 64)\n throw new Error('Expected 32 bytes of private key');\n num = hexToNumber(key);\n }\n else if (isUint8a(key)) {\n if (key.length !== 32)\n throw new Error('Expected 32 bytes of private key');\n num = bytesToNumber(key);\n }\n else {\n throw new TypeError('Expected valid private key');\n }\n if (!isWithinCurveOrder(num))\n throw new Error('Expected private key: 0 < key < n');\n return num;\n}\nfunction normalizePublicKey(publicKey) {\n if (publicKey instanceof Point) {\n publicKey.assertValidity();\n return publicKey;\n }\n else {\n return Point.fromHex(publicKey);\n }\n}\nfunction normalizeSignature(signature) {\n if (signature instanceof Signature) {\n signature.assertValidity();\n return signature;\n }\n try {\n return Signature.fromDER(signature);\n }\n catch (error) {\n return Signature.fromCompact(signature);\n }\n}\nexport function getPublicKey(privateKey, isCompressed = false) {\n return Point.fromPrivateKey(privateKey).toRawBytes(isCompressed);\n}\nexport function recoverPublicKey(msgHash, signature, recovery, isCompressed = false) {\n return Point.fromSignature(msgHash, signature, recovery).toRawBytes(isCompressed);\n}\nfunction isPub(item) {\n const arr = isUint8a(item);\n const str = typeof item === 'string';\n const len = (arr || str) && item.length;\n if (arr)\n return len === 33 || len === 65;\n if (str)\n return len === 66 || len === 130;\n if (item instanceof Point)\n return true;\n return false;\n}\nexport function getSharedSecret(privateA, publicB, isCompressed = false) {\n if (isPub(privateA))\n throw new TypeError('getSharedSecret: first arg must be private key');\n if (!isPub(publicB))\n throw new TypeError('getSharedSecret: second arg must be public key');\n const b = normalizePublicKey(publicB);\n b.assertValidity();\n return b.multiply(normalizePrivateKey(privateA)).toRawBytes(isCompressed);\n}\nfunction bits2int(bytes) {\n const slice = bytes.length > 32 ? bytes.slice(0, 32) : bytes;\n return bytesToNumber(slice);\n}\nfunction bits2octets(bytes) {\n const z1 = bits2int(bytes);\n const z2 = mod(z1, CURVE.n);\n return int2octets(z2 < _0n ? z1 : z2);\n}\nfunction int2octets(num) {\n if (typeof num !== 'bigint')\n throw new Error('Expected bigint');\n const hex = numTo32bStr(num);\n return hexToBytes(hex);\n}\nfunction initSigArgs(msgHash, privateKey, extraEntropy) {\n if (msgHash == null)\n throw new Error(`sign: expected valid message hash, not \"${msgHash}\"`);\n const h1 = ensureBytes(msgHash);\n const d = normalizePrivateKey(privateKey);\n const seedArgs = [int2octets(d), bits2octets(h1)];\n if (extraEntropy != null) {\n if (extraEntropy === true)\n extraEntropy = utils.randomBytes(32);\n const e = ensureBytes(extraEntropy);\n if (e.length !== 32)\n throw new Error('sign: Expected 32 bytes of extra data');\n seedArgs.push(e);\n }\n const seed = concatBytes(...seedArgs);\n const m = bits2int(h1);\n return { seed, m, d };\n}\nfunction finalizeSig(recSig, opts) {\n let { sig, recovery } = recSig;\n const { canonical, der, recovered } = Object.assign({ canonical: true, der: true }, opts);\n if (canonical && sig.hasHighS()) {\n sig = sig.normalizeS();\n recovery ^= 1;\n }\n const hashed = der ? sig.toDERRawBytes() : sig.toCompactRawBytes();\n return recovered ? [hashed, recovery] : hashed;\n}\nasync function sign(msgHash, privKey, opts = {}) {\n const { seed, m, d } = initSigArgs(msgHash, privKey, opts.extraEntropy);\n let sig;\n const drbg = new HmacDrbg();\n await drbg.reseed(seed);\n while (!(sig = kmdToSig(await drbg.generate(), m, d)))\n await drbg.reseed();\n return finalizeSig(sig, opts);\n}\nfunction signSync(msgHash, privKey, opts = {}) {\n const { seed, m, d } = initSigArgs(msgHash, privKey, opts.extraEntropy);\n let sig;\n const drbg = new HmacDrbg();\n drbg.reseedSync(seed);\n while (!(sig = kmdToSig(drbg.generateSync(), m, d)))\n drbg.reseedSync();\n return finalizeSig(sig, opts);\n}\nexport { sign, signSync };\nconst vopts = { strict: true };\nexport function verify(signature, msgHash, publicKey, opts = vopts) {\n let sig;\n try {\n sig = normalizeSignature(signature);\n msgHash = ensureBytes(msgHash);\n }\n catch (error) {\n return false;\n }\n const { r, s } = sig;\n if (opts.strict && sig.hasHighS())\n return false;\n const h = truncateHash(msgHash);\n if (h === _0n)\n return false;\n let P;\n try {\n P = normalizePublicKey(publicKey);\n }\n catch (error) {\n return false;\n }\n const { n } = CURVE;\n const sinv = invert(s, n);\n const u1 = mod(h * sinv, n);\n const u2 = mod(r * sinv, n);\n const R = Point.BASE.multiplyAndAddUnsafe(P, u1, u2);\n if (!R)\n return false;\n const v = mod(R.x, n);\n return v === r;\n}\nasync function taggedHash(tag, ...messages) {\n const tagB = new Uint8Array(tag.split('').map((c) => c.charCodeAt(0)));\n const tagH = await utils.sha256(tagB);\n const h = await utils.sha256(concatBytes(tagH, tagH, ...messages));\n return bytesToNumber(h);\n}\nasync function createChallenge(x, P, message) {\n const rx = numTo32b(x);\n const t = await taggedHash('BIP0340/challenge', rx, P.toRawX(), message);\n return mod(t, CURVE.n);\n}\nfunction hasEvenY(point) {\n return (point.y & _1n) === _0n;\n}\nclass SchnorrSignature {\n constructor(r, s) {\n this.r = r;\n this.s = s;\n this.assertValidity();\n }\n static fromHex(hex) {\n const bytes = ensureBytes(hex);\n if (bytes.length !== 64)\n throw new TypeError(`SchnorrSignature.fromHex: expected 64 bytes, not ${bytes.length}`);\n const r = bytesToNumber(bytes.subarray(0, 32));\n const s = bytesToNumber(bytes.subarray(32, 64));\n return new SchnorrSignature(r, s);\n }\n assertValidity() {\n const { r, s } = this;\n if (!isValidFieldElement(r) || !isWithinCurveOrder(s))\n throw new Error('Invalid signature');\n }\n toHex() {\n return numTo32bStr(this.r) + numTo32bStr(this.s);\n }\n toRawBytes() {\n return hexToBytes(this.toHex());\n }\n}\nfunction schnorrGetPublicKey(privateKey) {\n return Point.fromPrivateKey(privateKey).toRawX();\n}\nasync function schnorrSign(message, privateKey, auxRand = utils.randomBytes()) {\n if (message == null)\n throw new TypeError(`sign: Expected valid message, not \"${message}\"`);\n const { n } = CURVE;\n const m = ensureBytes(message);\n const d0 = normalizePrivateKey(privateKey);\n const rand = ensureBytes(auxRand);\n if (rand.length !== 32)\n throw new TypeError('sign: Expected 32 bytes of aux randomness');\n const P = Point.fromPrivateKey(d0);\n const d = hasEvenY(P) ? d0 : n - d0;\n const t0h = await taggedHash('BIP0340/aux', rand);\n const t = d ^ t0h;\n const k0h = await taggedHash('BIP0340/nonce', numTo32b(t), P.toRawX(), m);\n const k0 = mod(k0h, n);\n if (k0 === _0n)\n throw new Error('sign: Creation of signature failed. k is zero');\n const R = Point.fromPrivateKey(k0);\n const k = hasEvenY(R) ? k0 : n - k0;\n const e = await createChallenge(R.x, P, m);\n const sig = new SchnorrSignature(R.x, mod(k + e * d, n)).toRawBytes();\n const isValid = await schnorrVerify(sig, m, P.toRawX());\n if (!isValid)\n throw new Error('sign: Invalid signature produced');\n return sig;\n}\nasync function schnorrVerify(signature, message, publicKey) {\n const raw = signature instanceof SchnorrSignature;\n let sig;\n try {\n sig = raw ? signature : SchnorrSignature.fromHex(signature);\n if (raw)\n sig.assertValidity();\n }\n catch (error) {\n return false;\n }\n const { r, s } = sig;\n const m = ensureBytes(message);\n let P;\n try {\n P = normalizePublicKey(publicKey);\n }\n catch (error) {\n return false;\n }\n const e = await createChallenge(r, P, m);\n const R = Point.BASE.multiplyAndAddUnsafe(P, normalizePrivateKey(s), mod(-e, CURVE.n));\n if (!R || !hasEvenY(R) || R.x !== r)\n return false;\n return true;\n}\nexport const schnorr = {\n Signature: SchnorrSignature,\n getPublicKey: schnorrGetPublicKey,\n sign: schnorrSign,\n verify: schnorrVerify,\n};\nPoint.BASE._setWindowSize(8);\nconst crypto = {\n node: nodeCrypto,\n web: typeof self === 'object' && 'crypto' in self ? self.crypto : undefined,\n};\nexport const utils = {\n isValidPrivateKey(privateKey) {\n try {\n normalizePrivateKey(privateKey);\n return true;\n }\n catch (error) {\n return false;\n }\n },\n hashToPrivateKey: (hash) => {\n hash = ensureBytes(hash);\n if (hash.length < 40 || hash.length > 1024)\n throw new Error('Expected 40-1024 bytes of private key as per FIPS 186');\n const num = mod(bytesToNumber(hash), CURVE.n);\n if (num === _0n || num === _1n)\n throw new Error('Invalid private key');\n return numTo32b(num);\n },\n randomBytes: (bytesLength = 32) => {\n if (crypto.web) {\n return crypto.web.getRandomValues(new Uint8Array(bytesLength));\n }\n else if (crypto.node) {\n const { randomBytes } = crypto.node;\n return Uint8Array.from(randomBytes(bytesLength));\n }\n else {\n throw new Error(\"The environment doesn't have randomBytes function\");\n }\n },\n randomPrivateKey: () => {\n return utils.hashToPrivateKey(utils.randomBytes(40));\n },\n bytesToHex,\n mod,\n sha256: async (message) => {\n if (crypto.web) {\n const buffer = await crypto.web.subtle.digest('SHA-256', message.buffer);\n return new Uint8Array(buffer);\n }\n else if (crypto.node) {\n const { createHash } = crypto.node;\n return Uint8Array.from(createHash('sha256').update(message).digest());\n }\n else {\n throw new Error(\"The environment doesn't have sha256 function\");\n }\n },\n hmacSha256: async (key, ...messages) => {\n if (crypto.web) {\n const ckey = await crypto.web.subtle.importKey('raw', key, { name: 'HMAC', hash: { name: 'SHA-256' } }, false, ['sign']);\n const message = concatBytes(...messages);\n const buffer = await crypto.web.subtle.sign('HMAC', ckey, message);\n return new Uint8Array(buffer);\n }\n else if (crypto.node) {\n const { createHmac } = crypto.node;\n const hash = createHmac('sha256', key);\n messages.forEach((m) => hash.update(m));\n return Uint8Array.from(hash.digest());\n }\n else {\n throw new Error(\"The environment doesn't have hmac-sha256 function\");\n }\n },\n sha256Sync: undefined,\n hmacSha256Sync: undefined,\n precompute(windowSize = 8, point = Point.BASE) {\n const cached = point === Point.BASE ? point : new Point(point.x, point.y);\n cached._setWindowSize(windowSize);\n cached.multiply(_3n);\n return cached;\n },\n};\n","import { Point } from '@noble/secp256k1';\nimport type { BytesLike } from './bytes';\nimport { hexlify } from './bytes';\n\n/**\n * Computes the public key from a given private key\n *\n * @param privKey the private key to find a public key from\n * @returns the public key related to the specified private key\n * @example\n * ```javascript\n * computePublicKey('0xb27cc8dea0177d910110e8d3ec5480d56c723abf433529f4063f261ffdb9297c');\n * // '0x045cd0032015eecfde49f82f4e149d804e8ac6e3a0bface32e37c72a71ceac864fe84da7e8df84342f7b11dfb753c4d158f636142b46b29cf7f0f171ae0aa4fb87'\n * ```\n * @example\n * ```javascript\n * computePublicKey([50,102,50,99,52,49,57,97,99,102,52,97,49,100,97,56,99,49,101,98,101,97,55,53,98,98,51,102,99,102,98,100]);\n * // '0x04a9cea77eca949df84f661cee153426fb51f2294b9364b4fac240df57360b9b0ac9c99e4d7966491ab4c81f8c82e0cd24ec5759832ad4ab736d22c7d90b806ee8'\n * ```\n */\nexport function computePublicKey(privKey: BytesLike): string {\n privKey = hexlify(privKey).slice(2);\n return '0x' + Point.fromPrivateKey(privKey).toHex();\n}\n","/**\n * Converts a string into a UTF-8 Byte Array\n *\n * @param data the input to be converted to a UTF-8 Byte Array\n * @returns the specified data as a UTF-8 Byte Array\n * @example\n * ```javascript\n * toUtf8Bytes('essential-eth');\n * // Uint8Array { [Iterator] 0: 101, 1: 115, 2: 115, 3: 101, 4: 110, 5: 116, 6: 105, 7: 97, 8: 108, 9: 45, 10: 101, 11: 116, 12: 104 }\n *\n * toUtf8Bytes('ethereum');\n * // Uint8Array { [Iterator] 0: 101, 1: 116, 2: 104, 3: 101, 4: 114, 5: 101, 6: 117, 7: 109 }\n * ```\n */\nexport function toUtf8Bytes(data: string): Uint8Array {\n return new Uint8Array(Buffer.from(data));\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\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar 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\nvar 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 var arr = new Uint8Array(1)\n var 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 var 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 var valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n var 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(\n value[Symbol.toPrimitive]('string'), encodingOrOffset, length\n )\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 var length = byteLength(string, encoding) | 0\n var buf = createBuffer(length)\n\n var 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 var length = array.length < 0 ? 0 : checked(array.length) | 0\n var buf = createBuffer(length)\n for (var 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 var 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 var 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 var len = checked(obj.length) | 0\n var 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 var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!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 var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n Buffer.from(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 var len = string.length\n var mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n 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 var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force 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 var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length\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 var str = ''\n var 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 var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (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 var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n var strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (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 var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n 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 var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF)\n ? 4\n : (firstByte > 0xDF)\n ? 3\n : (firstByte > 0xBF)\n ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]]\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (var 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 var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf = 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 var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUint8 =\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.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n 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 var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n 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.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 var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUint8 =\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\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n var limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n var limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (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\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 var 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 var 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 var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n var 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// HELPER FUNCTIONS\n// ================\n\nvar 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 var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\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\nvar hexSliceLookupTable = (function () {\n var alphabet = '0123456789abcdef'\n var table = new Array(256)\n for (var i = 0; i < 16; ++i) {\n var i16 = i * 16\n for (var j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j]\n }\n }\n return table\n})()\n","import { Buffer } from 'buffer';\nimport { hexFalse } from '../classes/utils/encode-decode-transaction';\nimport { logger } from '../logger/logger';\nimport { tinyBig } from '../shared/tiny-big/tiny-big';\nimport { arrayify, concat, hexlify, zeroPad } from './bytes';\nimport { keccak256 } from './keccak256';\n\nconst regexBytes = new RegExp('^bytes([0-9]+)$');\nconst regexNumber = new RegExp('^(u?int)([0-9]*)$');\nconst regexArray = new RegExp('^(.*)\\\\[([0-9]*)\\\\]$');\n\n/**\n * Packs a type and value together into a UTF-8 Byte Array\n *\n * @internal\n * @param type the Solidity type used for the value given\n * @param value the value to pack with its type\n * @param isArray whether the specified data is in an array\n * @returns packed data consisting of the type and value\n * @example N/A - internal function\n */\nfunction _pack(type: string, value: any, isArray?: boolean): Uint8Array {\n switch (type) {\n case 'address':\n if (isArray) {\n return zeroPad(value, 32);\n }\n return arrayify(value);\n case 'string':\n return Buffer.from(value);\n case 'bytes':\n return arrayify(value);\n case 'bool':\n value = value ? '0x01' : '0x00';\n if (isArray) {\n return zeroPad(value, 32);\n }\n return arrayify(value);\n }\n\n let match = type.match(regexNumber);\n if (match) {\n //let signed = (match[1] === \"int\")\n let size = parseInt(match[2] || '256');\n\n if (\n (match[2] && String(size) !== match[2]) ||\n size % 8 !== 0 ||\n size === 0 ||\n size > 256\n ) {\n logger.throwArgumentError('invalid number type', 'type', type);\n }\n\n if (isArray) {\n size = 256;\n }\n\n value = tinyBig(value).toTwos(size).toNumber();\n const hexValue = hexlify(value);\n return zeroPad(hexValue, size / 8);\n }\n\n match = type.match(regexBytes);\n if (match) {\n const size = parseInt(match[1]);\n\n if (String(size) !== match[1] || size === 0 || size > 32) {\n logger.throwArgumentError('invalid bytes type', 'type', type);\n }\n if (arrayify(value).byteLength !== size) {\n logger.throwArgumentError(`invalid value for ${type}`, 'value', value);\n }\n if (isArray) {\n return arrayify((value + hexFalse).substring(0, 66));\n }\n return value;\n }\n\n match = type.match(regexArray);\n if (match && Array.isArray(value)) {\n const baseType = match[1];\n const count = parseInt(match[2] || String(value.length));\n if (count != value.length) {\n logger.throwArgumentError(\n `invalid array length for ${type}`,\n 'value',\n value,\n );\n }\n const result: Array<Uint8Array> = [];\n value.forEach(function (value) {\n result.push(_pack(baseType, value, true));\n });\n return concat(result);\n }\n\n return logger.throwArgumentError('invalid type', 'type', type);\n}\n\n/**\n * Converts arrays with types and values into a hex string that can be hashed\n *\n * @param types array of Solidity types, where `type[0]` is the type for `value[0]`\n * @param values array of values, where `value[0]` is of type `type[0]`\n * @returns a hex string with the data given, packed to include its types\n * @example\n * ```javascript\n * const types = ['bool', 'string', 'uint64'];\n * const values = [true, 'text', 30];\n * pack(types, values);\n * // '0x0174657874000000000000001e'\n * ```\n */\nexport function pack(types: ReadonlyArray<string>, values: ReadonlyArray<any>) {\n if (types.length != values.length) {\n logger.throwArgumentError(\n 'wrong number of values; expected ${ types.length }',\n 'values',\n values,\n );\n }\n const tight: Array<Uint8Array> = [];\n types.forEach(function (type, index) {\n tight.push(_pack(type, values[index]));\n });\n return hexlify(concat(tight));\n}\n\n/**\n * Hashes data from Solidity using the Keccak256 algorithm.\n *\n * Similar to [\"solidityKeccak256\" in ethers.js](https://docs.ethers.io/v5/api/utils/hashing/#utils-solidityKeccak256)\n *\n * @param types Each [Solidity type](https://docs.soliditylang.org/en/v0.8.13/types.html) corresponding to the values passed in. Helps the function parse and pack data properly.\n * @param values Data to be concatenated (combined) and then hashed.\n * @returns A Keccak256 hash (hex string) based on the values provided\n * @example\n * ```javascript\n * const types = ['string', 'bool', 'uint32'];\n * const values = ['essential-eth is great', true, 14];\n * solidityKeccak256(types, values);\n * // '0xe4d4c8e809faac09d58f468f0aeab9474fe8965d554c6c0f868c433c3fd6acab'\n * ```\n * @example\n * ```javascript\n * const types = ['bytes4', 'uint32[5]'];\n * const values = [[116, 101, 115, 116], [5, 3, 4, 9, 18]];\n * solidityKeccak256(types, values);\n * // '0x038707a887f09355dc545412b058e7ba8f3c74047050c7c5e5e52eec608053d9'\n * ```\n */\nexport function solidityKeccak256(\n types: ReadonlyArray<string>,\n values: ReadonlyArray<any>,\n): string {\n return keccak256(pack(types, values));\n}\n","import { computePublicKey, toChecksumAddress } from '..';\nimport { hexDataSlice } from './bytes';\nimport { keccak256 } from './keccak256';\n\n/**\n * Computes the address that corresponds to a specified public or private key\n *\n * @param key the public or private key to find the address related to\n * @returns the address that corresponds to the key specified\n * @example\n * ```javascript\n * computeAddress('0x0458eb591f407aef12936bd2989ca699cf5061de9c4964dd6eb6005fd8f580c407434447e813969a1be6e9954b002cad84dfc67a69e032b273e4695e7d0db2d952'); // public key\n * // '0xA2902059a7BF992f1450BACD7357CCAa5cC8336a'\n * ```\n * @example\n * ```javascript\n * computeAddress('0x2f2c419acf4a1da8c1ebea75bb3fcfbd3ec2aa3bf0162901ccdc2f38b8f92427'); // private key\n * // '0xA2902059a7BF992f1450BACD7357CCAa5cC8336a'\n * ```\n */\nexport function computeAddress(key: string): string {\n // compressed public keys start with 0x04\n // uncompressed public keys start with 0x03 or 0x02\n if (\n !key.startsWith('0x04') &&\n !key.startsWith('0x03') &&\n !key.startsWith('0x02')\n ) {\n key = computePublicKey(key);\n }\n return toChecksumAddress(hexDataSlice(keccak256(hexDataSlice(key, 1)), 12));\n}\n","import type Big from 'big.js';\nimport type { TinyBig } from '../shared/tiny-big/tiny-big';\nimport { tinyBig } from '../shared/tiny-big/tiny-big';\nimport { validateType } from '../shared/validate-type';\n\n/**\n * Convert from Ether to Gwei\n *\n * No direct equivalent in ether.js; requires multiple functions to achieve.\n *\n * No direct equivalent in web3; requires multiple functions to achieve.\n *\n * @param etherQuantity the amount of ether to convert to gwei\n * @returns a number of gwei equivalent to the specified ether\n * @example\n * ```javascript\n * etherToGwei('1000').toString()\n * // '1000000000000'\n * etherToGwei(1000).toString()\n * // '1000000000000'\n * ```\n * @example\n * ```javascript\n * etherToGwei('1000').toNumber()\n * // 1000000000000\n * etherToGwei(1000).toNumber()\n * // 1000000000000\n * ```\n */\nexport function etherToGwei(\n etherQuantity: string | number | TinyBig | Big,\n): TinyBig {\n validateType(etherQuantity, ['string', 'number', 'object']);\n const result = tinyBig(etherQuantity).times('1000000000');\n return tinyBig(result);\n}\n","import type Big from 'big.js';\nimport type { TinyBig } from '../shared/tiny-big/tiny-big';\nimport { tinyBig } from '../shared/tiny-big/tiny-big';\nimport { validateType } from '../shared/validate-type';\n\n/**\n * Convert Ether to Wei\n *\n * Similar to [\"parseEther\" in ethers.js](https://docs.ethers.io/v5/api/utils/display-logic/#utils-parseEther)\n *\n * Similar to [\"toWei\" in web3.js](https://web3js.readthedocs.io/en/v1.7.1/web3-utils.html#towei)\n *\n * @param etherQuantity the amount of ether to convert to wei\n * @returns a number of wei equivalent to the specified ether\n * @example\n * ```javascript\n * etherToWei('1000').toString()\n * // '1000000000000000000000'\n * etherToWei(1000).toString()\n * // '1000000000000000000000'\n * ```\n * @example\n * ```javascript\n * etherToWei('1000').toNumber()\n * // 1000000000000000000000\n * etherToWei(1000).toNumber()\n * // 1000000000000000000000\n * ```\n */\nexport function etherToWei(\n etherQuantity: string | number | TinyBig | Big,\n): TinyBig {\n validateType(etherQuantity, ['string', 'number', 'object']);\n const result = tinyBig(etherQuantity).times('1000000000000000000');\n return tinyBig(result);\n}\n","import type Big from 'big.js';\nimport { tinyBig } from '../shared/tiny-big/tiny-big';\nimport { validateType } from '../shared/validate-type';\nimport type { TinyBig } from './../shared/tiny-big/tiny-big';\n\n/**\n * Convert from Gwei to Ether\n *\n * No direct equivalent in ethers.js; requires multiple functions to achieve.\n *\n * No direct equivalent in web3; requires multiple functions to achieve.\n *\n * @param gweiQuantity the amount of gwei to convert to ether\n * @returns a number of ether equivalent to the specified gwei\n * @example\n * ```javascript\n * gweiToEther('1000000000000').toString()\n * // '1000'\n * gweiToEther(1000000000000).toString()\n * // '1000'\n * ```\n * @example\n * ```javascript\n * gweiToEther('1000000000000').toNumber()\n * // 1000\n * gweiToEther(1000000000000).toNumber()\n * // 1000\n * ```\n */\nexport function gweiToEther(\n gweiQuantity: string | number | TinyBig | Big,\n): TinyBig {\n validateType(gweiQuantity, ['string', 'number', 'object']);\n const result = tinyBig(gweiQuantity).div('1000000000');\n return tinyBig(result);\n}\n","import type { Bytes } from '../index';\nimport { concat, keccak256, toUtf8Bytes } from '../index';\n\nconst messagePrefix = '\\x19Ethereum Signed Message:\\n';\n\n/**\n * Computes the EIP-191 personal message digest of message.\n * Personal messages are converted to UTF-8 bytes and prefixed with \\x19Ethereum Signed Message: and the length of message.\n *\n * @param message the message to hash\n * @returns a message hashed using Keccak256 that matches the EIP-191 standard\n * @example\n * ```javascript\n * hashMessage(\"Hello World\");\n * // '0xa1de988600a42c4b4ab089b619297c17d53cffae5d5120d82d8a92d0bb3b78f2'\n * ```\n */\nexport function hashMessage(message: Bytes | string): string {\n if (typeof message === 'string') {\n message = toUtf8Bytes(message);\n }\n return keccak256(\n concat([\n toUtf8Bytes(messagePrefix),\n toUtf8Bytes(String(message.length)),\n message,\n ]),\n );\n}\n","import { toChecksumAddress } from '..';\nimport { validateType } from '../shared/validate-type';\n\n/**\n * Returns a boolean as to whether the input is a valid address.\n * Does NOT support ICAP addresses\n *\n * @param address the address to check the validity of\n * @returns a boolean for whether the input is a valid address\n * @example\n * ```javascript\n * isAddress('0xc0deaf6bd3f0c6574a6a625ef2f22f62a5150eab');\n * // true\n * ```\n * @example\n * ```javascript\n * isAddress('bad');\n * // false\n * ```\n * @example\n * ```javascript\n * // Does NOT support ENS.\n * isAddress('vitalik.eth');\n * // false\n * ```\n */\nexport function isAddress(address: string): boolean {\n validateType(address, ['string']);\n try {\n toChecksumAddress(address);\n return true;\n } catch (error) {\n return false;\n }\n}\n","import { logger } from './../logger/logger';\nimport type { Signature, SignatureLike } from './bytes';\nimport {\n arrayify,\n hexlify,\n hexZeroPad,\n isBytesLike,\n isHexString,\n zeroPad,\n} from './bytes';\n\n/**\n * Expands a signature into the full signature object and fills in missing properties.\n *\n * Same as [\"splitSignature\" in ethers.js](https://docs.ethers.io/v5/api/utils/bytes/#utils-splitSignature)\n *\n * @param signature the signature object to split, parse, and compute missing properties from\n * @returns a full signature object with all properties filled\n * @example\n * ```javascript\n * const signature = '0x60bc4ed91f2021aefe7045f3f77bd12f87eb733aee24bd1965343b3c27b3971647252185b7d2abb411b01b5d1ac4ab41ea486df1e9b396758c1aec6c1b6eee331b';\n * splitSignature(signature);\n * {\n * r: \"0x60bc4ed91f2021aefe7045f3f77bd12f87eb733aee24bd1965343b3c27b39716\",\n * s: \"0x47252185b7d2abb411b01b5d1ac4ab41ea486df1e9b396758c1aec6c1b6eee33\",\n * _vs: \"0x47252185b7d2abb411b01b5d1ac4ab41ea486df1e9b396758c1aec6c1b6eee33\",\n * recoveryParam: 0,\n * v: 27,\n * yParityAndS: \"0x47252185b7d2abb411b01b5d1ac4ab41ea486df1e9b396758c1aec6c1b6eee33\",\n * compact: \"0x60bc4ed91f2021aefe7045f3f77bd12f87eb733aee24bd1965343b3c27b3971647252185b7d2abb411b01b5d1ac4ab41ea486df1e9b396758c1aec6c1b6eee33\"\n * }\n * ```\n */\nexport function splitSignature(signature: SignatureLike): Signature {\n const result = {\n r: '0x',\n s: '0x',\n _vs: '0x',\n recoveryParam: 0,\n v: 0,\n yParityAndS: '0x',\n compact: '0x',\n };\n if (isBytesLike(signature)) {\n const bytes = arrayify(signature);\n // Get the r, s and v\n if (bytes.length === 64) {\n // EIP-2098; pull the v from the top bit of s and clear it\n result.v = 27 + (bytes[32] >> 7);\n bytes[32] &= 0x7f;\n result.r = hexlify(bytes.slice(0, 32));\n result.s = hexlify(bytes.slice(32, 64));\n } else if (bytes.length === 65) {\n result.r = hexlify(bytes.slice(0, 32));\n result.s = hexlify(bytes.slice(32, 64));\n result.v = bytes[64];\n } else {\n logger.throwArgumentError(\n 'invalid signature string',\n 'signature',\n signature,\n );\n }\n // Allow a recid to be used as the v\n if (result.v < 27) {\n if (result.v === 0 || result.v === 1) {\n result.v += 27;\n } else {\n logger.throwArgumentError(\n 'signature invalid v byte',\n 'signature',\n signature,\n );\n }\n }\n // Compute recoveryParam from v\n result.recoveryParam = 1 - (result.v % 2);\n // Compute _vs from recoveryParam and s\n if (result.recoveryParam) {\n bytes[32] |= 0x80;\n }\n result._vs = hexlify(bytes.slice(32, 64));\n } else {\n result.r = signature.r;\n result.s = signature.s as string;\n result.v = signature.v as number;\n result.recoveryParam = signature.recoveryParam as number;\n result._vs = signature._vs as string;\n // If the _vs is available, use it to populate missing s, v and recoveryParam\n // and verify non-missing s, v and recoveryParam\n if (result._vs != null) {\n const vs_1 = zeroPad(arrayify(result._vs), 32);\n result._vs = hexlify(vs_1);\n // Set or check the recid\n const recoveryParam = vs_1[0] >= 128 ? 1 : 0;\n if (result.recoveryParam == null) {\n result.recoveryParam = recoveryParam;\n } else if (result.recoveryParam !== recoveryParam) {\n logger.throwArgumentError(\n 'signature recoveryParam mismatch _vs',\n 'signature',\n signature,\n );\n }\n // Set or check the s\n vs_1[0] &= 0x7f;\n const s = hexlify(vs_1);\n if (result.s == null) {\n result.s = s;\n } else if (result.s !== s) {\n logger.throwArgumentError(\n 'signature v mismatch _vs',\n 'signature',\n signature,\n );\n }\n }\n // Use recid and v to populate each other\n if (result.recoveryParam == null) {\n if (result.v == null) {\n logger.throwArgumentError(\n 'signature missing v and recoveryParam',\n 'signature',\n signature,\n );\n } else if (result.v === 0 || result.v === 1) {\n result.recoveryParam = result.v;\n } else {\n result.recoveryParam = 1 - (result.v % 2);\n }\n } else {\n if (result.v == null) {\n result.v = 27 + result.recoveryParam;\n } else {\n const recId =\n result.v === 0 || result.v === 1 ? result.v : 1 - (result.v % 2);\n if (result.recoveryParam !== recId) {\n logger.throwArgumentError(\n 'signature recoveryParam mismatch v',\n 'signature',\n signature,\n );\n }\n }\n }\n if (result.r == null || !isHexString(result.r)) {\n logger.throwArgumentError(\n 'signature missing or invalid r',\n 'signature',\n signature,\n );\n } else {\n result.r = hexZeroPad(result.r, 32);\n }\n if (result.s == null || !isHexString(result.s)) {\n logger.throwArgumentError(\n 'signature missing or invalid s',\n 'signature',\n signature,\n );\n } else {\n result.s = hexZeroPad(result.s, 32);\n }\n const vs = arrayify(result.s);\n if (vs[0] >= 128) {\n logger.throwArgumentError(\n 'signature s out of range',\n 'signature',\n signature,\n );\n }\n if (result.recoveryParam) {\n vs[0] |= 0x80;\n }\n const _vs = hexlify(vs);\n if (result._vs) {\n if (!isHexString(result._vs)) {\n logger.throwArgumentError(\n 'signature invalid _vs',\n 'signature',\n signature,\n );\n }\n result._vs = hexZeroPad(result._vs, 32);\n }\n // Set or check the _vs\n if (result._vs == null) {\n result._vs = _vs;\n } else if (result._vs !== _vs) {\n logger.throwArgumentError(\n 'signature _vs mismatch v and s',\n 'signature',\n signature,\n );\n }\n }\n result.yParityAndS = result._vs;\n result.compact = result.r + result.yParityAndS.substring(2);\n return result;\n}\n","import type Big from 'big.js';\nimport type { TinyBig } from '../shared/tiny-big/tiny-big';\nimport { tinyBig } from '../shared/tiny-big/tiny-big';\nimport { validateType } from '../shared/validate-type';\n\n/**\n * Convert from Wei to Ether\n *\n * Similar to [\"formatEther\" in ethers.js](https://docs.ethers.io/v5/api/utils/display-logic/#utils-formatEther)\n *\n * Similar to [\"fromWei\" in web3.js](https://web3js.readthedocs.io/en/v1.7.1/web3-utils.html#fromwei)\n *\n * @param weiQuantity the amount of wei to convert to ether\n * @returns a number of ether equivalent to the specified wei\n * @example\n * ```javascript\n * weiToEther('1000000000000000000000').toString()\n * // '1000'\n * weiToEther(1000000000000000000000).toString()\n * // '1000'\n * ```\n * @example\n * ```javascript\n * weiToEther('1000000000000000000000').toNumber()\n * // 1000\n * weiToEther(1000000000000000000000).toNumber()\n * // 1000\n * ```\n */\nexport function weiToEther(\n weiQuantity: string | number | TinyBig | Big,\n): TinyBig {\n validateType(weiQuantity, ['string', 'number', 'object']);\n // eslint-disable-next-line no-useless-catch\n try {\n let _weiQuantity = weiQuantity;\n if (typeof weiQuantity === 'string' && weiQuantity.slice(0, 2) === '0x') {\n _weiQuantity = BigInt(weiQuantity).toString();\n }\n const result = tinyBig(_weiQuantity).div('1000000000000000000');\n return tinyBig(result);\n } catch (error) {\n throw error;\n }\n}\n"],"names":["lookup","revLookup","Arr","Uint8Array","Array","code","i","len","length","charCodeAt","encodeChunk","uint8","start","end","num","output","push","join","b64","tmp","lens","Error","validLen","indexOf","getLens","placeHoldersLen","arr","_byteLength","curByte","extraBytes","parts","maxChunkLength","len2","buffer","offset","isLE","mLen","nBytes","e","m","eLen","eMax","eBias","nBits","d","s","NaN","Infinity","Math","pow","value","c","rt","abs","isNaN","floor","log","LN2","customInspectSymbol","Symbol","exports","Buffer","SlowBuffer","alloc","INSPECT_MAX_BYTES","K_MAX_LENGTH","createBuffer","RangeError","buf","Object","setPrototypeOf","prototype","arg","encodingOrOffset","TypeError","allocUnsafe","from","string","encoding","isEncoding","byteLength","actual","write","slice","fromString","ArrayBuffer","isView","arrayView","isInstance","copy","fromArrayBuffer","byteOffset","fromArrayLike","fromArrayView","SharedArrayBuffer","valueOf","b","obj","isBuffer","checked","undefined","numberIsNaN","type","isArray","data","fromObject","toPrimitive","assertSize","size","array","toString","mustMatch","arguments","loweredCase","utf8ToBytes","base64ToBytes","toLowerCase","slowToString","this","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","n","bidirectionalIndexOf","val","dir","arrayIndexOf","call","lastIndexOf","indexSize","arrLength","valLength","String","read","readUInt16BE","foundIndex","found","j","hexWrite","Number","remaining","strLen","parsed","parseInt","substr","utf8Write","blitBuffer","asciiWrite","str","byteArray","asciiToBytes","base64Write","ucs2Write","units","hi","lo","utf16leToBytes","base64","min","res","firstByte","codePoint","bytesPerSequence","secondByte","thirdByte","fourthByte","tempCodePoint","codePoints","MAX_ARGUMENTS_LENGTH","fromCharCode","apply","decodeCodePointsArray","kMaxLength","TYPED_ARRAY_SUPPORT","proto","foo","typedArraySupport","console","error","defineProperty","enumerable","get","poolSize","fill","allocUnsafeSlow","_isBuffer","compare","a","x","y","concat","list","pos","set","swap16","swap32","swap64","toLocaleString","equals","inspect","max","replace","trim","target","thisStart","thisEnd","thisCopy","targetCopy","includes","isFinite","toJSON","_arr","ret","out","hexSliceLookupTable","bytes","checkOffset","ext","checkInt","wrtBigUInt64LE","checkIntBI","BigInt","wrtBigUInt64BE","checkIEEE754","writeFloat","littleEndian","noAssert","ieee754","writeDouble","newBuf","subarray","readUintLE","readUIntLE","mul","readUintBE","readUIntBE","readUint8","readUInt8","readUint16LE","readUInt16LE","readUint16BE","readUint32LE","readUInt32LE","readUint32BE","readUInt32BE","readBigUInt64LE","defineBigIntMethod","validateNumber","first","last","boundsError","readBigUInt64BE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readBigInt64LE","readBigInt64BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUintLE","writeUIntLE","writeUintBE","writeUIntBE","writeUint8","writeUInt8","writeUint16LE","writeUInt16LE","writeUint16BE","writeUInt16BE","writeUint32LE","writeUInt32LE","writeUint32BE","writeUInt32BE","writeBigUInt64LE","writeBigUInt64BE","writeIntLE","limit","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeBigInt64LE","writeBigInt64BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","copyWithin","errors","E","sym","getMessage","Base","constructor","super","writable","configurable","name","message","addNumericalSeparator","range","ERR_OUT_OF_RANGE","checkBounds","ERR_INVALID_ARG_TYPE","ERR_BUFFER_OUT_OF_BOUNDS","input","msg","received","isInteger","INVALID_BASE64_RE","leadSurrogate","split","base64clean","src","dst","alphabet","table","i16","fn","BufferBigIntNotDefined","copy_1","I","O","o","oi","ii","_copy","require$$0","__esModule","default","_ref","A","C","_x","xy","x1","x2","ROUND_CONSTANTS","Uint32Array","_roundConstants","roundIndex","_piShuffles","_interopRequireDefault","_rhoOffsets","require$$1","require$$2","W","H","L","Wi","ri","r","D","x20","x21","x22","x23","x24","_chi","_iota","_rhoPi","_theta","require$$3","_permute","xorWords","readWords","_this","capacity","padding","keccak","blockSize","queueSize","queueOffset","state","stateSize","queue","_buffer","absorb","squeeze","options","reset","SHAKE","SHA3Hash","SHA3","Keccak","_sponge","createHash","allowedSizes","defaultSize","Hash","sponge","update","digest","formatOrOptions","format","hexToDecimal","hex","hexFalse","repeat","hexTrue","encodeData","jsonABIArgument","args","hash","functionString","inputs","map","functionHash","jsonABIInputsLength","shouldValidateInputLength","find","argsWithTypes","reduce","acc","_exec","basicType","exec","forEach","encodedArgs","inputType","rawArg","startsWith","character","padEnd","padStart","nodeResponse","rawOutputs","outputs","match","outputType","tinyBig","estimateGas","txnData","previousValue","currentValue","BaseContract","addressOrName","contractInterface","signerOrProvider","_this2","_address","_provider","filter","_arguments2","_args","functionArguments","lastArg","decimalGas","gasLimit","gas","req","Promise","resolve","to","reject","Contract","logger","Logger","packageVersion","throwError","argsLength","keys","entries","index","throwArgumentError","checkSafeUint53","operation","fault","MAX_DP","NAME","INVALID","INVALID_DP","DIV_BY_ZERO","P","UNDEFINED","NUMERIC","round","sd","rm","more","xc","RM","unshift","pop","stringify","doExponential","isNonzero","charAt","cmp","isneg","yc","k","l","div","Big","dp","DP","bl","bt","bz","ai","al","rl","q","qc","qi","p","shift","eq","gt","gte","lt","lte","minus","t","xlty","plus","xe","ye","reverse","mod","ygtx","times","neg","add","one","prec","sqrt","half","toExponential","toFixed","for","NE","PE","toNumber","strict","toPrecision","_Big_","nl","test","search","substring","parse","roundDown","roundHalfUp","roundHalfEven","roundUp","stripTrailingZeroes","numberString","isNegative","scientificStrToDecimalStr","scientificString","base","power","_scientificString$spl","_base$split","wholeNumber","_base$split$","fraction","splitPaddedNumber","baseLength","splice","TinyBig","_Big","padAndChop","padChar","_inheritsLoose","_proto","toHexString","toTwos","bitCount","binaryStr","twosComp","transaction","cleanedTransaction","key","toChecksumAddress","validateType","allowedTypes","address","checksumAddress","addressHash","toUpperCase","cleanLog","receiptLog","cleanedLog","XMLHttpRequest","u","ok","status","statusText","url","responseURL","text","responseText","json","then","JSON","blob","Blob","response","clone","headers","has","open","method","onload","getAllResponseHeaders","onerror","withCredentials","credentials","setRequestHeader","send","body","browser","self","fetch","buildRPCPostBody","params","jsonrpc","id","isBytesLike","isHexString","isBytes","v","arrayify","result","allowMissingPrefix","isHexable","hexPad","arrayOfBytesLike","objects","item","accum","object","zeroPad","HexCharacters","hexlify","endOffset","hexStripZeros","hexZeroPad","prepareTransaction","preparedTransaction","chainsInfo","blockTag","BaseProvider","rpcUrls","_rpcUrls","_post","post","unfetch","_unused","selectRpcUrl","getNetwork","hexChainId","chainId","info","ensAddress","getBlockNumber","currentBlockNumber","getTransaction","transactionHash","all","getBlock","blockNumber","cleanTransaction","confirmations","number","getTransactionReceipt","rpcTransaction","_ref2","cleanedTransactionReceipt","transactionReceipt","byzantium","cleanTransactionReceipt","getTransactionCount","prepBlockTag","transactionCount","timeFrame","returnTransactionObjects","rpcBlock","block","cleanedBlock","transactions","getGasPrice","hexGasPrice","getBalance","hexBalance","getCode","gasUsed","getLogs","filterByRange","fromBlock","toBlock","rpcLogs","gasPrice","maxPriorityFeePerGas","maxFeePerGas","FallthroughProvider","_BaseProvider","rpcUrlCounter","timeoutDuration","genesisCount","recursivePostRetry","prom","time","genesisRpcUrl","race","_r","setTimeout","JsonRpcProvider","rpcUrl","keccak256","bufferableData","_0n","_1n","_2n","_3n","_8n","POW_2_256","CURVE","h","Gx","Gy","beta","weistrass","x3","USE_ENDOMORPHISM","JacobianPoint","z","static","Point","points","toInv","nums","scratch","lastMultiplied","inverted","invert","reduceRight","invertBatch","toAffine","toAffineBatch","fromAffine","other","X1","Y1","Z1","X2","Y2","Z2","Z1Z1","Z2Z2","U1","U2","S1","S2","negate","double","B","F","X3","Y3","Z3","ZERO","HH","HHH","V","subtract","multiplyUnsafe","scalar","normalizeScalar","P0","k1neg","k1","k2neg","k2","splitScalarEndo","k1p","k2p","precomputeWindow","windows","window","wNAF","affinePoint","BASE","_WINDOW_SIZE","precomputes","pointPrecomputes","normalizeZ","f","windowSize","mask","maxNumber","shiftBy","wbits","pr","cached","multiply","point","fake","f1p","f2p","invZ","iz1","iz2","iz3","ax","ay","WeakMap","_setWindowSize","delete","isShort","bytesToNumber","isValidFieldElement","_6n","_11n","_22n","_23n","_44n","_88n","b2","b3","b6","pow2","b9","b11","b22","b44","b88","b176","b220","b223","t1","t2","sqrtMod","isYOdd","assertValidity","ensureBytes","header","fromCompressedHex","fromUncompressedHex","privateKey","isSafeInteger","hexToNumber","isUint8a","isWithinCurveOrder","normalizePrivateKey","msgHash","signature","recovery","delta","truncateHash","Signature","fromDER","fromCompact","normalizeSignature","R","fromHex","numTo32bStr","rinv","u1","u2","Q","multiplyAndAddUnsafe","toRawBytes","isCompressed","hexToBytes","toHex","toHexX","toRawX","left","aP","bQ","sum","sliceDER","parseDERInt","bytesToHex","sBytes","rBytesLeft","parseDERSignature","hasHighS","normalizeS","toDERRawBytes","toDERHex","sHex","numberToHexUnpadded","rHex","rLen","sLen","toCompactRawBytes","toCompactHex","hexes","uint8a","hexByte","byte","modulo","divNearest","POW_2_128","a1","b1","a2","c1","c2","computePublicKey","privKey","fromPrivateKey","toUtf8Bytes","regexBytes","RegExp","regexNumber","regexArray","_pack","baseType","pack","types","values","tight","computeAddress","hexDataSlice","etherQuantity","gweiQuantity","items","trimmed","_vs","recoveryParam","yParityAndS","compact","vs_1","vs","weiToEther","weiQuantity","_weiQuantity"],"mappings":"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"}