@manifoldxyz/client-sdk 0.1.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","sources":["../src/types/errors.ts","../src/types/common.ts","../node_modules/@manifoldxyz/js-ts-utils/dist/constants-C3Nal9kT.js","../node_modules/@manifoldxyz/js-ts-utils/dist/_commonjsHelpers-BVfed4GL.js","../node_modules/@manifoldxyz/js-ts-utils/dist/string-B9G_tJZ-.js","../node_modules/@manifoldxyz/js-ts-utils/dist/network-BRHI3AkZ.js","../node_modules/@manifoldxyz/js-ts-utils/dist/currency-BObig6X1.js","../node_modules/@manifoldxyz/js-ts-utils/dist/urls-UGd6s8G8.js","../node_modules/@manifoldxyz/js-ts-utils/dist/providerEvents-BNyUv4Ea.js","../node_modules/@manifoldxyz/js-ts-utils/dist/web3TransactionError-CE7t5x_l.js","../src/config/networks.ts","../src/utils/provider-factory.ts","../src/abis/GachaExtensionERC1155ABIv2.ts","../src/abis/CreatorContractABI.ts","../src/abis/ERC20ABI.ts","../src/utils/contract-factory.ts","../src/utils/validation.ts","../src/utils/gas-estimation.ts","../src/api/coinbase.ts","../src/libs/money.ts","../src/products/blindmint.ts","../src/api/manifold-api.ts","../src/client/index.ts","../src/utils/transactions.ts","../src/adapters/ethers5-adapter.ts","../src/adapters/viem-adapter.ts"],"sourcesContent":["/**\n * Error codes used throughout the Manifold SDK.\n *\n * Organized by category for easier troubleshooting:\n * - Network: Issues with blockchain network connectivity\n * - Resource: Problems finding or accessing resources\n * - Input: Validation failures for user input\n * - Transaction: Blockchain transaction issues\n * - Sale Status: Product availability problems\n * - API: External API communication errors\n *\n * @public\n */\nexport enum ErrorCode {\n // Network errors\n /** Network not supported by the SDK */\n UNSUPPORTED_NETWORK = 'UNSUPPORTED_NETWORK',\n /** Connected to wrong network for this operation */\n WRONG_NETWORK = 'WRONG_NETWORK',\n /** General network connectivity issue */\n NETWORK_ERROR = 'NETWORK_ERROR',\n /** RPC URL not configured for required network */\n MISSING_RPC_URL = 'MISSING_RPC_URL',\n\n // Resource errors\n /** Product or resource not found */\n NOT_FOUND = 'NOT_FOUND',\n /** Specific resource not found */\n RESOURCE_NOT_FOUND = 'RESOURCE_NOT_FOUND',\n\n // Input errors\n /** Invalid input parameters */\n INVALID_INPUT = 'INVALID_INPUT',\n /** Required tokens not provided for burn/redeem */\n MISSING_TOKENS = 'MISSING_TOKENS',\n /** Input validation failed */\n VALIDATION_FAILED = 'VALIDATION_FAILED',\n\n // Type errors\n /** Product type not supported */\n UNSUPPORTED_TYPE = 'UNSUPPORTED_TYPE',\n\n // Transaction errors\n /** Gas estimation failed */\n ESTIMATION_FAILED = 'ESTIMATION_FAILED',\n /** Transaction failed to execute */\n TRANSACTION_FAILED = 'TRANSACTION_FAILED',\n /** Transaction reverted on-chain */\n TRANSACTION_REVERTED = 'TRANSACTION_REVERTED',\n /** User rejected transaction */\n TRANSACTION_REJECTED = 'TRANSACTION_REJECTED',\n /** Transaction replaced by another */\n TRANSACTION_REPLACED = 'TRANSACTION_REPLACED',\n /** Transaction still pending */\n TRANSACTION_PENDING = 'TRANSACTION_PENDING',\n /** Insufficient balance for transaction */\n INSUFFICIENT_FUNDS = 'INSUFFICIENT_FUNDS',\n /** Gas estimation failed */\n GAS_ESTIMATION_FAILED = 'GAS_ESTIMATION_FAILED',\n /** Gas price too low for network */\n GAS_PRICE_TOO_LOW = 'GAS_PRICE_TOO_LOW',\n /** Nonce mismatch error */\n NONCE_ERROR = 'NONCE_ERROR',\n /** Smart contract execution error */\n CONTRACT_ERROR = 'CONTRACT_ERROR',\n\n // Hardware wallet errors\n /** Ledger wallet specific error (often blind signing disabled) */\n LEDGER_ERROR = 'LEDGER_ERROR',\n /** General hardware wallet error */\n HARDWARE_WALLET_ERROR = 'HARDWARE_WALLET_ERROR',\n\n // Sale status errors\n /** Wallet not eligible to purchase */\n NOT_ELIGIBLE = 'NOT_ELIGIBLE',\n /** Product sold out */\n SOLD_OUT = 'SOLD_OUT',\n /** Wallet purchase limit reached */\n LIMIT_REACHED = 'LIMIT_REACHED',\n /** Sale has ended */\n ENDED = 'ENDED',\n /** Sale hasn't started yet */\n NOT_STARTED = 'NOT_STARTED',\n\n // API errors\n /** External API error */\n API_ERROR = 'API_ERROR',\n /** API rate limit exceeded */\n RATE_LIMITED = 'RATE_LIMITED',\n /** Invalid API response format */\n INVALID_RESPONSE = 'INVALID_RESPONSE',\n /** Request timeout */\n TIMEOUT = 'TIMEOUT',\n\n // Implementation status\n /** Product type not yet implemented */\n UNSUPPORTED_PRODUCT_TYPE = 'PRODUCT_TYPE_NOT_SUPPORTED',\n\n // Generic\n /** Unknown error occurred */\n UNKNOWN_ERROR = 'UNKNOWN_ERROR',\n}\n\n/**\n * Main error class for the Manifold SDK.\n *\n * Extends the standard Error class with typed error codes and\n * additional details for debugging.\n *\n * @example\n * ```typescript\n * try {\n * const product = await client.getProduct('invalid-id');\n * } catch (error) {\n * if (error instanceof ClientSDKError) {\n * console.log('Error code:', error.code);\n * console.log('Message:', error.message);\n * console.log('Details:', error.details);\n *\n * // Handle specific error types\n * switch (error.code) {\n * case ErrorCode.NOT_FOUND:\n * console.log('Product not found');\n * break;\n * case ErrorCode.INSUFFICIENT_FUNDS:\n * console.log('Not enough balance');\n * break;\n * }\n * }\n * }\n * ```\n *\n * @public\n */\nexport class ClientSDKError extends Error {\n /**\n * Creates a new ClientSDKError.\n *\n * @param code - Error code from the ErrorCode enum\n * @param message - Human-readable error message\n * @param details - Optional additional error details (metadata, original error, etc.)\n */\n constructor(\n public code: ErrorCode,\n message: string,\n public details?: unknown,\n ) {\n super(message);\n this.name = 'ClientSDKError';\n }\n}\n","// No imports needed - all types defined here\nexport type Address = string;\n\nexport type NetworkId = number;\n\nexport interface HttpRPCs {\n [networkId: NetworkId]: string;\n}\n\nexport enum AppType {\n EDITION = 'edition',\n BURN_REDEEM = 'burn-redeem',\n BLIND_MINT = 'blind-mint',\n}\n\n// App IDs for different Manifold products\nexport enum AppId {\n BLIND_MINT_1155 = 2526777015,\n EDITION = 2522713783,\n BURN_REDEEM = 2520944311,\n}\n\nexport type ProductStatus = 'active' | 'paused' | 'upcoming' | 'sold-out' | 'ended';\n","const t = \"0x0000000000000000000000000000000000000000\", e = \"0x0000000000000000000000000000000000000000000000000000000000000000\", o = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n NULL_ADDRESS: t,\n NULL_BYTES32: e\n}, Symbol.toStringTag, { value: \"Module\" }));\nexport {\n t as N,\n e as a,\n o as c\n};\n","var u = typeof globalThis < \"u\" ? globalThis : typeof window < \"u\" ? window : typeof global < \"u\" ? global : typeof self < \"u\" ? self : {};\nfunction f(e) {\n return e && e.__esModule && Object.prototype.hasOwnProperty.call(e, \"default\") ? e.default : e;\n}\nfunction l(e) {\n if (e.__esModule) return e;\n var r = e.default;\n if (typeof r == \"function\") {\n var t = function o() {\n return this instanceof o ? Reflect.construct(r, arguments, this.constructor) : r.apply(this, arguments);\n };\n t.prototype = r.prototype;\n } else t = {};\n return Object.defineProperty(t, \"__esModule\", { value: !0 }), Object.keys(e).forEach(function(o) {\n var n = Object.getOwnPropertyDescriptor(e, o);\n Object.defineProperty(t, o, n.get ? n : {\n enumerable: !0,\n get: function() {\n return e[o];\n }\n });\n }), t;\n}\nexport {\n f as a,\n u as c,\n l as g\n};\n","function D(e) {\n var r, t, o = \"\";\n if (typeof e == \"string\" || typeof e == \"number\") o += e;\n else if (typeof e == \"object\") if (Array.isArray(e)) {\n var l = e.length;\n for (r = 0; r < l; r++) e[r] && (t = D(e[r])) && (o && (o += \" \"), o += t);\n } else for (t in e) e[t] && (o && (o += \" \"), o += t);\n return o;\n}\nfunction se() {\n for (var e, r, t = 0, o = \"\", l = arguments.length; t < l; t++) (e = arguments[t]) && (r = D(e)) && (o && (o += \" \"), o += r);\n return o;\n}\nconst U = \"-\", ie = (e) => {\n const r = ae(e), {\n conflictingClassGroups: t,\n conflictingClassGroupModifiers: o\n } = e;\n return {\n getClassGroupId: (a) => {\n const s = a.split(U);\n return s[0] === \"\" && s.length !== 1 && s.shift(), ee(s, r) || le(a);\n },\n getConflictingClassGroupIds: (a, s) => {\n const u = t[a] || [];\n return s && o[a] ? [...u, ...o[a]] : u;\n }\n };\n}, ee = (e, r) => {\n var a;\n if (e.length === 0)\n return r.classGroupId;\n const t = e[0], o = r.nextPart.get(t), l = o ? ee(e.slice(1), o) : void 0;\n if (l)\n return l;\n if (r.validators.length === 0)\n return;\n const n = e.join(U);\n return (a = r.validators.find(({\n validator: s\n }) => s(n))) == null ? void 0 : a.classGroupId;\n}, Q = /^\\[(.+)\\]$/, le = (e) => {\n if (Q.test(e)) {\n const r = Q.exec(e)[1], t = r == null ? void 0 : r.substring(0, r.indexOf(\":\"));\n if (t)\n return \"arbitrary..\" + t;\n }\n}, ae = (e) => {\n const {\n theme: r,\n prefix: t\n } = e, o = {\n nextPart: /* @__PURE__ */ new Map(),\n validators: []\n };\n return de(Object.entries(e.classGroups), t).forEach(([n, a]) => {\n $(a, o, n, r);\n }), o;\n}, $ = (e, r, t, o) => {\n e.forEach((l) => {\n if (typeof l == \"string\") {\n const n = l === \"\" ? r : Y(r, l);\n n.classGroupId = t;\n return;\n }\n if (typeof l == \"function\") {\n if (ce(l)) {\n $(l(o), r, t, o);\n return;\n }\n r.validators.push({\n validator: l,\n classGroupId: t\n });\n return;\n }\n Object.entries(l).forEach(([n, a]) => {\n $(a, Y(r, n), t, o);\n });\n });\n}, Y = (e, r) => {\n let t = e;\n return r.split(U).forEach((o) => {\n t.nextPart.has(o) || t.nextPart.set(o, {\n nextPart: /* @__PURE__ */ new Map(),\n validators: []\n }), t = t.nextPart.get(o);\n }), t;\n}, ce = (e) => e.isThemeGetter, de = (e, r) => r ? e.map(([t, o]) => {\n const l = o.map((n) => typeof n == \"string\" ? r + n : typeof n == \"object\" ? Object.fromEntries(Object.entries(n).map(([a, s]) => [r + a, s])) : n);\n return [t, l];\n}) : e, pe = (e) => {\n if (e < 1)\n return {\n get: () => {\n },\n set: () => {\n }\n };\n let r = 0, t = /* @__PURE__ */ new Map(), o = /* @__PURE__ */ new Map();\n const l = (n, a) => {\n t.set(n, a), r++, r > e && (r = 0, o = t, t = /* @__PURE__ */ new Map());\n };\n return {\n get(n) {\n let a = t.get(n);\n if (a !== void 0)\n return a;\n if ((a = o.get(n)) !== void 0)\n return l(n, a), a;\n },\n set(n, a) {\n t.has(n) ? t.set(n, a) : l(n, a);\n }\n };\n}, re = \"!\", ue = (e) => {\n const {\n separator: r,\n experimentalParseClassName: t\n } = e, o = r.length === 1, l = r[0], n = r.length, a = (s) => {\n const u = [];\n let g = 0, m = 0, y;\n for (let p = 0; p < s.length; p++) {\n let f = s[p];\n if (g === 0) {\n if (f === l && (o || s.slice(p, p + n) === r)) {\n u.push(s.slice(m, p)), m = p + n;\n continue;\n }\n if (f === \"/\") {\n y = p;\n continue;\n }\n }\n f === \"[\" ? g++ : f === \"]\" && g--;\n }\n const x = u.length === 0 ? s : s.substring(m), v = x.startsWith(re), w = v ? x.substring(1) : x, b = y && y > m ? y - m : void 0;\n return {\n modifiers: u,\n hasImportantModifier: v,\n baseClassName: w,\n maybePostfixModifierPosition: b\n };\n };\n return t ? (s) => t({\n className: s,\n parseClassName: a\n }) : a;\n}, be = (e) => {\n if (e.length <= 1)\n return e;\n const r = [];\n let t = [];\n return e.forEach((o) => {\n o[0] === \"[\" ? (r.push(...t.sort(), o), t = []) : t.push(o);\n }), r.push(...t.sort()), r;\n}, ge = (e) => ({\n cache: pe(e.cacheSize),\n parseClassName: ue(e),\n ...ie(e)\n}), fe = /\\s+/, me = (e, r) => {\n const {\n parseClassName: t,\n getClassGroupId: o,\n getConflictingClassGroupIds: l\n } = r, n = [], a = e.trim().split(fe);\n let s = \"\";\n for (let u = a.length - 1; u >= 0; u -= 1) {\n const g = a[u], {\n modifiers: m,\n hasImportantModifier: y,\n baseClassName: x,\n maybePostfixModifierPosition: v\n } = t(g);\n let w = !!v, b = o(w ? x.substring(0, v) : x);\n if (!b) {\n if (!w) {\n s = g + (s.length > 0 ? \" \" + s : s);\n continue;\n }\n if (b = o(x), !b) {\n s = g + (s.length > 0 ? \" \" + s : s);\n continue;\n }\n w = !1;\n }\n const p = be(m).join(\":\"), f = y ? p + re : p, h = f + b;\n if (n.includes(h))\n continue;\n n.push(h);\n const R = l(b, w);\n for (let S = 0; S < R.length; ++S) {\n const E = R[S];\n n.push(f + E);\n }\n s = g + (s.length > 0 ? \" \" + s : s);\n }\n return s;\n};\nfunction he() {\n let e = 0, r, t, o = \"\";\n for (; e < arguments.length; )\n (r = arguments[e++]) && (t = te(r)) && (o && (o += \" \"), o += t);\n return o;\n}\nconst te = (e) => {\n if (typeof e == \"string\")\n return e;\n let r, t = \"\";\n for (let o = 0; o < e.length; o++)\n e[o] && (r = te(e[o])) && (t && (t += \" \"), t += r);\n return t;\n};\nfunction ye(e, ...r) {\n let t, o, l, n = a;\n function a(u) {\n const g = r.reduce((m, y) => y(m), e());\n return t = ge(g), o = t.cache.get, l = t.cache.set, n = s, s(u);\n }\n function s(u) {\n const g = o(u);\n if (g)\n return g;\n const m = me(u, t);\n return l(u, m), m;\n }\n return function() {\n return n(he.apply(null, arguments));\n };\n}\nconst c = (e) => {\n const r = (t) => t[e] || [];\n return r.isThemeGetter = !0, r;\n}, oe = /^\\[(?:([a-z-]+):)?(.+)\\]$/i, xe = /^\\d+\\/\\d+$/, we = /* @__PURE__ */ new Set([\"px\", \"full\", \"screen\"]), ve = /^(\\d+(\\.\\d+)?)?(xs|sm|md|lg|xl)$/, Ce = /\\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\\b(calc|min|max|clamp)\\(.+\\)|^0$/, ke = /^(rgba?|hsla?|hwb|(ok)?(lab|lch))\\(.+\\)$/, ze = /^(inset_)?-?((\\d+)?\\.?(\\d+)[a-z]+|0)_-?((\\d+)?\\.?(\\d+)[a-z]+|0)/, Ae = /^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\\(.+\\)$/, k = (e) => M(e) || we.has(e) || xe.test(e), z = (e) => G(e, \"length\", Ee), M = (e) => !!e && !Number.isNaN(Number(e)), V = (e) => G(e, \"number\", M), I = (e) => !!e && Number.isInteger(Number(e)), Se = (e) => e.endsWith(\"%\") && M(e.slice(0, -1)), i = (e) => oe.test(e), A = (e) => ve.test(e), Me = /* @__PURE__ */ new Set([\"length\", \"size\", \"percentage\"]), Ge = (e) => G(e, Me, ne), Re = (e) => G(e, \"position\", ne), Pe = /* @__PURE__ */ new Set([\"image\", \"url\"]), Ie = (e) => G(e, Pe, Ne), je = (e) => G(e, \"\", Te), j = () => !0, G = (e, r, t) => {\n const o = oe.exec(e);\n return o ? o[1] ? typeof r == \"string\" ? o[1] === r : r.has(o[1]) : t(o[2]) : !1;\n}, Ee = (e) => (\n // `colorFunctionRegex` check is necessary because color functions can have percentages in them which which would be incorrectly classified as lengths.\n // For example, `hsl(0 0% 0%)` would be classified as a length without this check.\n // I could also use lookbehind assertion in `lengthUnitRegex` but that isn't supported widely enough.\n Ce.test(e) && !ke.test(e)\n), ne = () => !1, Te = (e) => ze.test(e), Ne = (e) => Ae.test(e), Le = () => {\n const e = c(\"colors\"), r = c(\"spacing\"), t = c(\"blur\"), o = c(\"brightness\"), l = c(\"borderColor\"), n = c(\"borderRadius\"), a = c(\"borderSpacing\"), s = c(\"borderWidth\"), u = c(\"contrast\"), g = c(\"grayscale\"), m = c(\"hueRotate\"), y = c(\"invert\"), x = c(\"gap\"), v = c(\"gradientColorStops\"), w = c(\"gradientColorStopPositions\"), b = c(\"inset\"), p = c(\"margin\"), f = c(\"opacity\"), h = c(\"padding\"), R = c(\"saturate\"), S = c(\"scale\"), E = c(\"sepia\"), F = c(\"skew\"), q = c(\"space\"), J = c(\"translate\"), L = () => [\"auto\", \"contain\", \"none\"], _ = () => [\"auto\", \"hidden\", \"clip\", \"visible\", \"scroll\"], W = () => [\"auto\", i, r], d = () => [i, r], X = () => [\"\", k, z], T = () => [\"auto\", M, i], Z = () => [\"bottom\", \"center\", \"left\", \"left-bottom\", \"left-top\", \"right\", \"right-bottom\", \"right-top\", \"top\"], N = () => [\"solid\", \"dashed\", \"dotted\", \"double\", \"none\"], H = () => [\"normal\", \"multiply\", \"screen\", \"overlay\", \"darken\", \"lighten\", \"color-dodge\", \"color-burn\", \"hard-light\", \"soft-light\", \"difference\", \"exclusion\", \"hue\", \"saturation\", \"color\", \"luminosity\"], O = () => [\"start\", \"end\", \"center\", \"between\", \"around\", \"evenly\", \"stretch\"], P = () => [\"\", \"0\", i], K = () => [\"auto\", \"avoid\", \"all\", \"avoid-page\", \"page\", \"left\", \"right\", \"column\"], C = () => [M, i];\n return {\n cacheSize: 500,\n separator: \":\",\n theme: {\n colors: [j],\n spacing: [k, z],\n blur: [\"none\", \"\", A, i],\n brightness: C(),\n borderColor: [e],\n borderRadius: [\"none\", \"\", \"full\", A, i],\n borderSpacing: d(),\n borderWidth: X(),\n contrast: C(),\n grayscale: P(),\n hueRotate: C(),\n invert: P(),\n gap: d(),\n gradientColorStops: [e],\n gradientColorStopPositions: [Se, z],\n inset: W(),\n margin: W(),\n opacity: C(),\n padding: d(),\n saturate: C(),\n scale: C(),\n sepia: P(),\n skew: C(),\n space: d(),\n translate: d()\n },\n classGroups: {\n // Layout\n /**\n * Aspect Ratio\n * @see https://tailwindcss.com/docs/aspect-ratio\n */\n aspect: [{\n aspect: [\"auto\", \"square\", \"video\", i]\n }],\n /**\n * Container\n * @see https://tailwindcss.com/docs/container\n */\n container: [\"container\"],\n /**\n * Columns\n * @see https://tailwindcss.com/docs/columns\n */\n columns: [{\n columns: [A]\n }],\n /**\n * Break After\n * @see https://tailwindcss.com/docs/break-after\n */\n \"break-after\": [{\n \"break-after\": K()\n }],\n /**\n * Break Before\n * @see https://tailwindcss.com/docs/break-before\n */\n \"break-before\": [{\n \"break-before\": K()\n }],\n /**\n * Break Inside\n * @see https://tailwindcss.com/docs/break-inside\n */\n \"break-inside\": [{\n \"break-inside\": [\"auto\", \"avoid\", \"avoid-page\", \"avoid-column\"]\n }],\n /**\n * Box Decoration Break\n * @see https://tailwindcss.com/docs/box-decoration-break\n */\n \"box-decoration\": [{\n \"box-decoration\": [\"slice\", \"clone\"]\n }],\n /**\n * Box Sizing\n * @see https://tailwindcss.com/docs/box-sizing\n */\n box: [{\n box: [\"border\", \"content\"]\n }],\n /**\n * Display\n * @see https://tailwindcss.com/docs/display\n */\n display: [\"block\", \"inline-block\", \"inline\", \"flex\", \"inline-flex\", \"table\", \"inline-table\", \"table-caption\", \"table-cell\", \"table-column\", \"table-column-group\", \"table-footer-group\", \"table-header-group\", \"table-row-group\", \"table-row\", \"flow-root\", \"grid\", \"inline-grid\", \"contents\", \"list-item\", \"hidden\"],\n /**\n * Floats\n * @see https://tailwindcss.com/docs/float\n */\n float: [{\n float: [\"right\", \"left\", \"none\", \"start\", \"end\"]\n }],\n /**\n * Clear\n * @see https://tailwindcss.com/docs/clear\n */\n clear: [{\n clear: [\"left\", \"right\", \"both\", \"none\", \"start\", \"end\"]\n }],\n /**\n * Isolation\n * @see https://tailwindcss.com/docs/isolation\n */\n isolation: [\"isolate\", \"isolation-auto\"],\n /**\n * Object Fit\n * @see https://tailwindcss.com/docs/object-fit\n */\n \"object-fit\": [{\n object: [\"contain\", \"cover\", \"fill\", \"none\", \"scale-down\"]\n }],\n /**\n * Object Position\n * @see https://tailwindcss.com/docs/object-position\n */\n \"object-position\": [{\n object: [...Z(), i]\n }],\n /**\n * Overflow\n * @see https://tailwindcss.com/docs/overflow\n */\n overflow: [{\n overflow: _()\n }],\n /**\n * Overflow X\n * @see https://tailwindcss.com/docs/overflow\n */\n \"overflow-x\": [{\n \"overflow-x\": _()\n }],\n /**\n * Overflow Y\n * @see https://tailwindcss.com/docs/overflow\n */\n \"overflow-y\": [{\n \"overflow-y\": _()\n }],\n /**\n * Overscroll Behavior\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n overscroll: [{\n overscroll: L()\n }],\n /**\n * Overscroll Behavior X\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n \"overscroll-x\": [{\n \"overscroll-x\": L()\n }],\n /**\n * Overscroll Behavior Y\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n \"overscroll-y\": [{\n \"overscroll-y\": L()\n }],\n /**\n * Position\n * @see https://tailwindcss.com/docs/position\n */\n position: [\"static\", \"fixed\", \"absolute\", \"relative\", \"sticky\"],\n /**\n * Top / Right / Bottom / Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n inset: [{\n inset: [b]\n }],\n /**\n * Right / Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n \"inset-x\": [{\n \"inset-x\": [b]\n }],\n /**\n * Top / Bottom\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n \"inset-y\": [{\n \"inset-y\": [b]\n }],\n /**\n * Start\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n start: [{\n start: [b]\n }],\n /**\n * End\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n end: [{\n end: [b]\n }],\n /**\n * Top\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n top: [{\n top: [b]\n }],\n /**\n * Right\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n right: [{\n right: [b]\n }],\n /**\n * Bottom\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n bottom: [{\n bottom: [b]\n }],\n /**\n * Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n left: [{\n left: [b]\n }],\n /**\n * Visibility\n * @see https://tailwindcss.com/docs/visibility\n */\n visibility: [\"visible\", \"invisible\", \"collapse\"],\n /**\n * Z-Index\n * @see https://tailwindcss.com/docs/z-index\n */\n z: [{\n z: [\"auto\", I, i]\n }],\n // Flexbox and Grid\n /**\n * Flex Basis\n * @see https://tailwindcss.com/docs/flex-basis\n */\n basis: [{\n basis: W()\n }],\n /**\n * Flex Direction\n * @see https://tailwindcss.com/docs/flex-direction\n */\n \"flex-direction\": [{\n flex: [\"row\", \"row-reverse\", \"col\", \"col-reverse\"]\n }],\n /**\n * Flex Wrap\n * @see https://tailwindcss.com/docs/flex-wrap\n */\n \"flex-wrap\": [{\n flex: [\"wrap\", \"wrap-reverse\", \"nowrap\"]\n }],\n /**\n * Flex\n * @see https://tailwindcss.com/docs/flex\n */\n flex: [{\n flex: [\"1\", \"auto\", \"initial\", \"none\", i]\n }],\n /**\n * Flex Grow\n * @see https://tailwindcss.com/docs/flex-grow\n */\n grow: [{\n grow: P()\n }],\n /**\n * Flex Shrink\n * @see https://tailwindcss.com/docs/flex-shrink\n */\n shrink: [{\n shrink: P()\n }],\n /**\n * Order\n * @see https://tailwindcss.com/docs/order\n */\n order: [{\n order: [\"first\", \"last\", \"none\", I, i]\n }],\n /**\n * Grid Template Columns\n * @see https://tailwindcss.com/docs/grid-template-columns\n */\n \"grid-cols\": [{\n \"grid-cols\": [j]\n }],\n /**\n * Grid Column Start / End\n * @see https://tailwindcss.com/docs/grid-column\n */\n \"col-start-end\": [{\n col: [\"auto\", {\n span: [\"full\", I, i]\n }, i]\n }],\n /**\n * Grid Column Start\n * @see https://tailwindcss.com/docs/grid-column\n */\n \"col-start\": [{\n \"col-start\": T()\n }],\n /**\n * Grid Column End\n * @see https://tailwindcss.com/docs/grid-column\n */\n \"col-end\": [{\n \"col-end\": T()\n }],\n /**\n * Grid Template Rows\n * @see https://tailwindcss.com/docs/grid-template-rows\n */\n \"grid-rows\": [{\n \"grid-rows\": [j]\n }],\n /**\n * Grid Row Start / End\n * @see https://tailwindcss.com/docs/grid-row\n */\n \"row-start-end\": [{\n row: [\"auto\", {\n span: [I, i]\n }, i]\n }],\n /**\n * Grid Row Start\n * @see https://tailwindcss.com/docs/grid-row\n */\n \"row-start\": [{\n \"row-start\": T()\n }],\n /**\n * Grid Row End\n * @see https://tailwindcss.com/docs/grid-row\n */\n \"row-end\": [{\n \"row-end\": T()\n }],\n /**\n * Grid Auto Flow\n * @see https://tailwindcss.com/docs/grid-auto-flow\n */\n \"grid-flow\": [{\n \"grid-flow\": [\"row\", \"col\", \"dense\", \"row-dense\", \"col-dense\"]\n }],\n /**\n * Grid Auto Columns\n * @see https://tailwindcss.com/docs/grid-auto-columns\n */\n \"auto-cols\": [{\n \"auto-cols\": [\"auto\", \"min\", \"max\", \"fr\", i]\n }],\n /**\n * Grid Auto Rows\n * @see https://tailwindcss.com/docs/grid-auto-rows\n */\n \"auto-rows\": [{\n \"auto-rows\": [\"auto\", \"min\", \"max\", \"fr\", i]\n }],\n /**\n * Gap\n * @see https://tailwindcss.com/docs/gap\n */\n gap: [{\n gap: [x]\n }],\n /**\n * Gap X\n * @see https://tailwindcss.com/docs/gap\n */\n \"gap-x\": [{\n \"gap-x\": [x]\n }],\n /**\n * Gap Y\n * @see https://tailwindcss.com/docs/gap\n */\n \"gap-y\": [{\n \"gap-y\": [x]\n }],\n /**\n * Justify Content\n * @see https://tailwindcss.com/docs/justify-content\n */\n \"justify-content\": [{\n justify: [\"normal\", ...O()]\n }],\n /**\n * Justify Items\n * @see https://tailwindcss.com/docs/justify-items\n */\n \"justify-items\": [{\n \"justify-items\": [\"start\", \"end\", \"center\", \"stretch\"]\n }],\n /**\n * Justify Self\n * @see https://tailwindcss.com/docs/justify-self\n */\n \"justify-self\": [{\n \"justify-self\": [\"auto\", \"start\", \"end\", \"center\", \"stretch\"]\n }],\n /**\n * Align Content\n * @see https://tailwindcss.com/docs/align-content\n */\n \"align-content\": [{\n content: [\"normal\", ...O(), \"baseline\"]\n }],\n /**\n * Align Items\n * @see https://tailwindcss.com/docs/align-items\n */\n \"align-items\": [{\n items: [\"start\", \"end\", \"center\", \"baseline\", \"stretch\"]\n }],\n /**\n * Align Self\n * @see https://tailwindcss.com/docs/align-self\n */\n \"align-self\": [{\n self: [\"auto\", \"start\", \"end\", \"center\", \"stretch\", \"baseline\"]\n }],\n /**\n * Place Content\n * @see https://tailwindcss.com/docs/place-content\n */\n \"place-content\": [{\n \"place-content\": [...O(), \"baseline\"]\n }],\n /**\n * Place Items\n * @see https://tailwindcss.com/docs/place-items\n */\n \"place-items\": [{\n \"place-items\": [\"start\", \"end\", \"center\", \"baseline\", \"stretch\"]\n }],\n /**\n * Place Self\n * @see https://tailwindcss.com/docs/place-self\n */\n \"place-self\": [{\n \"place-self\": [\"auto\", \"start\", \"end\", \"center\", \"stretch\"]\n }],\n // Spacing\n /**\n * Padding\n * @see https://tailwindcss.com/docs/padding\n */\n p: [{\n p: [h]\n }],\n /**\n * Padding X\n * @see https://tailwindcss.com/docs/padding\n */\n px: [{\n px: [h]\n }],\n /**\n * Padding Y\n * @see https://tailwindcss.com/docs/padding\n */\n py: [{\n py: [h]\n }],\n /**\n * Padding Start\n * @see https://tailwindcss.com/docs/padding\n */\n ps: [{\n ps: [h]\n }],\n /**\n * Padding End\n * @see https://tailwindcss.com/docs/padding\n */\n pe: [{\n pe: [h]\n }],\n /**\n * Padding Top\n * @see https://tailwindcss.com/docs/padding\n */\n pt: [{\n pt: [h]\n }],\n /**\n * Padding Right\n * @see https://tailwindcss.com/docs/padding\n */\n pr: [{\n pr: [h]\n }],\n /**\n * Padding Bottom\n * @see https://tailwindcss.com/docs/padding\n */\n pb: [{\n pb: [h]\n }],\n /**\n * Padding Left\n * @see https://tailwindcss.com/docs/padding\n */\n pl: [{\n pl: [h]\n }],\n /**\n * Margin\n * @see https://tailwindcss.com/docs/margin\n */\n m: [{\n m: [p]\n }],\n /**\n * Margin X\n * @see https://tailwindcss.com/docs/margin\n */\n mx: [{\n mx: [p]\n }],\n /**\n * Margin Y\n * @see https://tailwindcss.com/docs/margin\n */\n my: [{\n my: [p]\n }],\n /**\n * Margin Start\n * @see https://tailwindcss.com/docs/margin\n */\n ms: [{\n ms: [p]\n }],\n /**\n * Margin End\n * @see https://tailwindcss.com/docs/margin\n */\n me: [{\n me: [p]\n }],\n /**\n * Margin Top\n * @see https://tailwindcss.com/docs/margin\n */\n mt: [{\n mt: [p]\n }],\n /**\n * Margin Right\n * @see https://tailwindcss.com/docs/margin\n */\n mr: [{\n mr: [p]\n }],\n /**\n * Margin Bottom\n * @see https://tailwindcss.com/docs/margin\n */\n mb: [{\n mb: [p]\n }],\n /**\n * Margin Left\n * @see https://tailwindcss.com/docs/margin\n */\n ml: [{\n ml: [p]\n }],\n /**\n * Space Between X\n * @see https://tailwindcss.com/docs/space\n */\n \"space-x\": [{\n \"space-x\": [q]\n }],\n /**\n * Space Between X Reverse\n * @see https://tailwindcss.com/docs/space\n */\n \"space-x-reverse\": [\"space-x-reverse\"],\n /**\n * Space Between Y\n * @see https://tailwindcss.com/docs/space\n */\n \"space-y\": [{\n \"space-y\": [q]\n }],\n /**\n * Space Between Y Reverse\n * @see https://tailwindcss.com/docs/space\n */\n \"space-y-reverse\": [\"space-y-reverse\"],\n // Sizing\n /**\n * Width\n * @see https://tailwindcss.com/docs/width\n */\n w: [{\n w: [\"auto\", \"min\", \"max\", \"fit\", \"svw\", \"lvw\", \"dvw\", i, r]\n }],\n /**\n * Min-Width\n * @see https://tailwindcss.com/docs/min-width\n */\n \"min-w\": [{\n \"min-w\": [i, r, \"min\", \"max\", \"fit\"]\n }],\n /**\n * Max-Width\n * @see https://tailwindcss.com/docs/max-width\n */\n \"max-w\": [{\n \"max-w\": [i, r, \"none\", \"full\", \"min\", \"max\", \"fit\", \"prose\", {\n screen: [A]\n }, A]\n }],\n /**\n * Height\n * @see https://tailwindcss.com/docs/height\n */\n h: [{\n h: [i, r, \"auto\", \"min\", \"max\", \"fit\", \"svh\", \"lvh\", \"dvh\"]\n }],\n /**\n * Min-Height\n * @see https://tailwindcss.com/docs/min-height\n */\n \"min-h\": [{\n \"min-h\": [i, r, \"min\", \"max\", \"fit\", \"svh\", \"lvh\", \"dvh\"]\n }],\n /**\n * Max-Height\n * @see https://tailwindcss.com/docs/max-height\n */\n \"max-h\": [{\n \"max-h\": [i, r, \"min\", \"max\", \"fit\", \"svh\", \"lvh\", \"dvh\"]\n }],\n /**\n * Size\n * @see https://tailwindcss.com/docs/size\n */\n size: [{\n size: [i, r, \"auto\", \"min\", \"max\", \"fit\"]\n }],\n // Typography\n /**\n * Font Size\n * @see https://tailwindcss.com/docs/font-size\n */\n \"font-size\": [{\n text: [\"base\", A, z]\n }],\n /**\n * Font Smoothing\n * @see https://tailwindcss.com/docs/font-smoothing\n */\n \"font-smoothing\": [\"antialiased\", \"subpixel-antialiased\"],\n /**\n * Font Style\n * @see https://tailwindcss.com/docs/font-style\n */\n \"font-style\": [\"italic\", \"not-italic\"],\n /**\n * Font Weight\n * @see https://tailwindcss.com/docs/font-weight\n */\n \"font-weight\": [{\n font: [\"thin\", \"extralight\", \"light\", \"normal\", \"medium\", \"semibold\", \"bold\", \"extrabold\", \"black\", V]\n }],\n /**\n * Font Family\n * @see https://tailwindcss.com/docs/font-family\n */\n \"font-family\": [{\n font: [j]\n }],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n \"fvn-normal\": [\"normal-nums\"],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n \"fvn-ordinal\": [\"ordinal\"],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n \"fvn-slashed-zero\": [\"slashed-zero\"],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n \"fvn-figure\": [\"lining-nums\", \"oldstyle-nums\"],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n \"fvn-spacing\": [\"proportional-nums\", \"tabular-nums\"],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n \"fvn-fraction\": [\"diagonal-fractions\", \"stacked-fractons\"],\n /**\n * Letter Spacing\n * @see https://tailwindcss.com/docs/letter-spacing\n */\n tracking: [{\n tracking: [\"tighter\", \"tight\", \"normal\", \"wide\", \"wider\", \"widest\", i]\n }],\n /**\n * Line Clamp\n * @see https://tailwindcss.com/docs/line-clamp\n */\n \"line-clamp\": [{\n \"line-clamp\": [\"none\", M, V]\n }],\n /**\n * Line Height\n * @see https://tailwindcss.com/docs/line-height\n */\n leading: [{\n leading: [\"none\", \"tight\", \"snug\", \"normal\", \"relaxed\", \"loose\", k, i]\n }],\n /**\n * List Style Image\n * @see https://tailwindcss.com/docs/list-style-image\n */\n \"list-image\": [{\n \"list-image\": [\"none\", i]\n }],\n /**\n * List Style Type\n * @see https://tailwindcss.com/docs/list-style-type\n */\n \"list-style-type\": [{\n list: [\"none\", \"disc\", \"decimal\", i]\n }],\n /**\n * List Style Position\n * @see https://tailwindcss.com/docs/list-style-position\n */\n \"list-style-position\": [{\n list: [\"inside\", \"outside\"]\n }],\n /**\n * Placeholder Color\n * @deprecated since Tailwind CSS v3.0.0\n * @see https://tailwindcss.com/docs/placeholder-color\n */\n \"placeholder-color\": [{\n placeholder: [e]\n }],\n /**\n * Placeholder Opacity\n * @see https://tailwindcss.com/docs/placeholder-opacity\n */\n \"placeholder-opacity\": [{\n \"placeholder-opacity\": [f]\n }],\n /**\n * Text Alignment\n * @see https://tailwindcss.com/docs/text-align\n */\n \"text-alignment\": [{\n text: [\"left\", \"center\", \"right\", \"justify\", \"start\", \"end\"]\n }],\n /**\n * Text Color\n * @see https://tailwindcss.com/docs/text-color\n */\n \"text-color\": [{\n text: [e]\n }],\n /**\n * Text Opacity\n * @see https://tailwindcss.com/docs/text-opacity\n */\n \"text-opacity\": [{\n \"text-opacity\": [f]\n }],\n /**\n * Text Decoration\n * @see https://tailwindcss.com/docs/text-decoration\n */\n \"text-decoration\": [\"underline\", \"overline\", \"line-through\", \"no-underline\"],\n /**\n * Text Decoration Style\n * @see https://tailwindcss.com/docs/text-decoration-style\n */\n \"text-decoration-style\": [{\n decoration: [...N(), \"wavy\"]\n }],\n /**\n * Text Decoration Thickness\n * @see https://tailwindcss.com/docs/text-decoration-thickness\n */\n \"text-decoration-thickness\": [{\n decoration: [\"auto\", \"from-font\", k, z]\n }],\n /**\n * Text Underline Offset\n * @see https://tailwindcss.com/docs/text-underline-offset\n */\n \"underline-offset\": [{\n \"underline-offset\": [\"auto\", k, i]\n }],\n /**\n * Text Decoration Color\n * @see https://tailwindcss.com/docs/text-decoration-color\n */\n \"text-decoration-color\": [{\n decoration: [e]\n }],\n /**\n * Text Transform\n * @see https://tailwindcss.com/docs/text-transform\n */\n \"text-transform\": [\"uppercase\", \"lowercase\", \"capitalize\", \"normal-case\"],\n /**\n * Text Overflow\n * @see https://tailwindcss.com/docs/text-overflow\n */\n \"text-overflow\": [\"truncate\", \"text-ellipsis\", \"text-clip\"],\n /**\n * Text Wrap\n * @see https://tailwindcss.com/docs/text-wrap\n */\n \"text-wrap\": [{\n text: [\"wrap\", \"nowrap\", \"balance\", \"pretty\"]\n }],\n /**\n * Text Indent\n * @see https://tailwindcss.com/docs/text-indent\n */\n indent: [{\n indent: d()\n }],\n /**\n * Vertical Alignment\n * @see https://tailwindcss.com/docs/vertical-align\n */\n \"vertical-align\": [{\n align: [\"baseline\", \"top\", \"middle\", \"bottom\", \"text-top\", \"text-bottom\", \"sub\", \"super\", i]\n }],\n /**\n * Whitespace\n * @see https://tailwindcss.com/docs/whitespace\n */\n whitespace: [{\n whitespace: [\"normal\", \"nowrap\", \"pre\", \"pre-line\", \"pre-wrap\", \"break-spaces\"]\n }],\n /**\n * Word Break\n * @see https://tailwindcss.com/docs/word-break\n */\n break: [{\n break: [\"normal\", \"words\", \"all\", \"keep\"]\n }],\n /**\n * Hyphens\n * @see https://tailwindcss.com/docs/hyphens\n */\n hyphens: [{\n hyphens: [\"none\", \"manual\", \"auto\"]\n }],\n /**\n * Content\n * @see https://tailwindcss.com/docs/content\n */\n content: [{\n content: [\"none\", i]\n }],\n // Backgrounds\n /**\n * Background Attachment\n * @see https://tailwindcss.com/docs/background-attachment\n */\n \"bg-attachment\": [{\n bg: [\"fixed\", \"local\", \"scroll\"]\n }],\n /**\n * Background Clip\n * @see https://tailwindcss.com/docs/background-clip\n */\n \"bg-clip\": [{\n \"bg-clip\": [\"border\", \"padding\", \"content\", \"text\"]\n }],\n /**\n * Background Opacity\n * @deprecated since Tailwind CSS v3.0.0\n * @see https://tailwindcss.com/docs/background-opacity\n */\n \"bg-opacity\": [{\n \"bg-opacity\": [f]\n }],\n /**\n * Background Origin\n * @see https://tailwindcss.com/docs/background-origin\n */\n \"bg-origin\": [{\n \"bg-origin\": [\"border\", \"padding\", \"content\"]\n }],\n /**\n * Background Position\n * @see https://tailwindcss.com/docs/background-position\n */\n \"bg-position\": [{\n bg: [...Z(), Re]\n }],\n /**\n * Background Repeat\n * @see https://tailwindcss.com/docs/background-repeat\n */\n \"bg-repeat\": [{\n bg: [\"no-repeat\", {\n repeat: [\"\", \"x\", \"y\", \"round\", \"space\"]\n }]\n }],\n /**\n * Background Size\n * @see https://tailwindcss.com/docs/background-size\n */\n \"bg-size\": [{\n bg: [\"auto\", \"cover\", \"contain\", Ge]\n }],\n /**\n * Background Image\n * @see https://tailwindcss.com/docs/background-image\n */\n \"bg-image\": [{\n bg: [\"none\", {\n \"gradient-to\": [\"t\", \"tr\", \"r\", \"br\", \"b\", \"bl\", \"l\", \"tl\"]\n }, Ie]\n }],\n /**\n * Background Color\n * @see https://tailwindcss.com/docs/background-color\n */\n \"bg-color\": [{\n bg: [e]\n }],\n /**\n * Gradient Color Stops From Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n \"gradient-from-pos\": [{\n from: [w]\n }],\n /**\n * Gradient Color Stops Via Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n \"gradient-via-pos\": [{\n via: [w]\n }],\n /**\n * Gradient Color Stops To Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n \"gradient-to-pos\": [{\n to: [w]\n }],\n /**\n * Gradient Color Stops From\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n \"gradient-from\": [{\n from: [v]\n }],\n /**\n * Gradient Color Stops Via\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n \"gradient-via\": [{\n via: [v]\n }],\n /**\n * Gradient Color Stops To\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n \"gradient-to\": [{\n to: [v]\n }],\n // Borders\n /**\n * Border Radius\n * @see https://tailwindcss.com/docs/border-radius\n */\n rounded: [{\n rounded: [n]\n }],\n /**\n * Border Radius Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n \"rounded-s\": [{\n \"rounded-s\": [n]\n }],\n /**\n * Border Radius End\n * @see https://tailwindcss.com/docs/border-radius\n */\n \"rounded-e\": [{\n \"rounded-e\": [n]\n }],\n /**\n * Border Radius Top\n * @see https://tailwindcss.com/docs/border-radius\n */\n \"rounded-t\": [{\n \"rounded-t\": [n]\n }],\n /**\n * Border Radius Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n \"rounded-r\": [{\n \"rounded-r\": [n]\n }],\n /**\n * Border Radius Bottom\n * @see https://tailwindcss.com/docs/border-radius\n */\n \"rounded-b\": [{\n \"rounded-b\": [n]\n }],\n /**\n * Border Radius Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n \"rounded-l\": [{\n \"rounded-l\": [n]\n }],\n /**\n * Border Radius Start Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n \"rounded-ss\": [{\n \"rounded-ss\": [n]\n }],\n /**\n * Border Radius Start End\n * @see https://tailwindcss.com/docs/border-radius\n */\n \"rounded-se\": [{\n \"rounded-se\": [n]\n }],\n /**\n * Border Radius End End\n * @see https://tailwindcss.com/docs/border-radius\n */\n \"rounded-ee\": [{\n \"rounded-ee\": [n]\n }],\n /**\n * Border Radius End Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n \"rounded-es\": [{\n \"rounded-es\": [n]\n }],\n /**\n * Border Radius Top Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n \"rounded-tl\": [{\n \"rounded-tl\": [n]\n }],\n /**\n * Border Radius Top Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n \"rounded-tr\": [{\n \"rounded-tr\": [n]\n }],\n /**\n * Border Radius Bottom Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n \"rounded-br\": [{\n \"rounded-br\": [n]\n }],\n /**\n * Border Radius Bottom Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n \"rounded-bl\": [{\n \"rounded-bl\": [n]\n }],\n /**\n * Border Width\n * @see https://tailwindcss.com/docs/border-width\n */\n \"border-w\": [{\n border: [s]\n }],\n /**\n * Border Width X\n * @see https://tailwindcss.com/docs/border-width\n */\n \"border-w-x\": [{\n \"border-x\": [s]\n }],\n /**\n * Border Width Y\n * @see https://tailwindcss.com/docs/border-width\n */\n \"border-w-y\": [{\n \"border-y\": [s]\n }],\n /**\n * Border Width Start\n * @see https://tailwindcss.com/docs/border-width\n */\n \"border-w-s\": [{\n \"border-s\": [s]\n }],\n /**\n * Border Width End\n * @see https://tailwindcss.com/docs/border-width\n */\n \"border-w-e\": [{\n \"border-e\": [s]\n }],\n /**\n * Border Width Top\n * @see https://tailwindcss.com/docs/border-width\n */\n \"border-w-t\": [{\n \"border-t\": [s]\n }],\n /**\n * Border Width Right\n * @see https://tailwindcss.com/docs/border-width\n */\n \"border-w-r\": [{\n \"border-r\": [s]\n }],\n /**\n * Border Width Bottom\n * @see https://tailwindcss.com/docs/border-width\n */\n \"border-w-b\": [{\n \"border-b\": [s]\n }],\n /**\n * Border Width Left\n * @see https://tailwindcss.com/docs/border-width\n */\n \"border-w-l\": [{\n \"border-l\": [s]\n }],\n /**\n * Border Opacity\n * @see https://tailwindcss.com/docs/border-opacity\n */\n \"border-opacity\": [{\n \"border-opacity\": [f]\n }],\n /**\n * Border Style\n * @see https://tailwindcss.com/docs/border-style\n */\n \"border-style\": [{\n border: [...N(), \"hidden\"]\n }],\n /**\n * Divide Width X\n * @see https://tailwindcss.com/docs/divide-width\n */\n \"divide-x\": [{\n \"divide-x\": [s]\n }],\n /**\n * Divide Width X Reverse\n * @see https://tailwindcss.com/docs/divide-width\n */\n \"divide-x-reverse\": [\"divide-x-reverse\"],\n /**\n * Divide Width Y\n * @see https://tailwindcss.com/docs/divide-width\n */\n \"divide-y\": [{\n \"divide-y\": [s]\n }],\n /**\n * Divide Width Y Reverse\n * @see https://tailwindcss.com/docs/divide-width\n */\n \"divide-y-reverse\": [\"divide-y-reverse\"],\n /**\n * Divide Opacity\n * @see https://tailwindcss.com/docs/divide-opacity\n */\n \"divide-opacity\": [{\n \"divide-opacity\": [f]\n }],\n /**\n * Divide Style\n * @see https://tailwindcss.com/docs/divide-style\n */\n \"divide-style\": [{\n divide: N()\n }],\n /**\n * Border Color\n * @see https://tailwindcss.com/docs/border-color\n */\n \"border-color\": [{\n border: [l]\n }],\n /**\n * Border Color X\n * @see https://tailwindcss.com/docs/border-color\n */\n \"border-color-x\": [{\n \"border-x\": [l]\n }],\n /**\n * Border Color Y\n * @see https://tailwindcss.com/docs/border-color\n */\n \"border-color-y\": [{\n \"border-y\": [l]\n }],\n /**\n * Border Color Top\n * @see https://tailwindcss.com/docs/border-color\n */\n \"border-color-t\": [{\n \"border-t\": [l]\n }],\n /**\n * Border Color Right\n * @see https://tailwindcss.com/docs/border-color\n */\n \"border-color-r\": [{\n \"border-r\": [l]\n }],\n /**\n * Border Color Bottom\n * @see https://tailwindcss.com/docs/border-color\n */\n \"border-color-b\": [{\n \"border-b\": [l]\n }],\n /**\n * Border Color Left\n * @see https://tailwindcss.com/docs/border-color\n */\n \"border-color-l\": [{\n \"border-l\": [l]\n }],\n /**\n * Divide Color\n * @see https://tailwindcss.com/docs/divide-color\n */\n \"divide-color\": [{\n divide: [l]\n }],\n /**\n * Outline Style\n * @see https://tailwindcss.com/docs/outline-style\n */\n \"outline-style\": [{\n outline: [\"\", ...N()]\n }],\n /**\n * Outline Offset\n * @see https://tailwindcss.com/docs/outline-offset\n */\n \"outline-offset\": [{\n \"outline-offset\": [k, i]\n }],\n /**\n * Outline Width\n * @see https://tailwindcss.com/docs/outline-width\n */\n \"outline-w\": [{\n outline: [k, z]\n }],\n /**\n * Outline Color\n * @see https://tailwindcss.com/docs/outline-color\n */\n \"outline-color\": [{\n outline: [e]\n }],\n /**\n * Ring Width\n * @see https://tailwindcss.com/docs/ring-width\n */\n \"ring-w\": [{\n ring: X()\n }],\n /**\n * Ring Width Inset\n * @see https://tailwindcss.com/docs/ring-width\n */\n \"ring-w-inset\": [\"ring-inset\"],\n /**\n * Ring Color\n * @see https://tailwindcss.com/docs/ring-color\n */\n \"ring-color\": [{\n ring: [e]\n }],\n /**\n * Ring Opacity\n * @see https://tailwindcss.com/docs/ring-opacity\n */\n \"ring-opacity\": [{\n \"ring-opacity\": [f]\n }],\n /**\n * Ring Offset Width\n * @see https://tailwindcss.com/docs/ring-offset-width\n */\n \"ring-offset-w\": [{\n \"ring-offset\": [k, z]\n }],\n /**\n * Ring Offset Color\n * @see https://tailwindcss.com/docs/ring-offset-color\n */\n \"ring-offset-color\": [{\n \"ring-offset\": [e]\n }],\n // Effects\n /**\n * Box Shadow\n * @see https://tailwindcss.com/docs/box-shadow\n */\n shadow: [{\n shadow: [\"\", \"inner\", \"none\", A, je]\n }],\n /**\n * Box Shadow Color\n * @see https://tailwindcss.com/docs/box-shadow-color\n */\n \"shadow-color\": [{\n shadow: [j]\n }],\n /**\n * Opacity\n * @see https://tailwindcss.com/docs/opacity\n */\n opacity: [{\n opacity: [f]\n }],\n /**\n * Mix Blend Mode\n * @see https://tailwindcss.com/docs/mix-blend-mode\n */\n \"mix-blend\": [{\n \"mix-blend\": [...H(), \"plus-lighter\", \"plus-darker\"]\n }],\n /**\n * Background Blend Mode\n * @see https://tailwindcss.com/docs/background-blend-mode\n */\n \"bg-blend\": [{\n \"bg-blend\": H()\n }],\n // Filters\n /**\n * Filter\n * @deprecated since Tailwind CSS v3.0.0\n * @see https://tailwindcss.com/docs/filter\n */\n filter: [{\n filter: [\"\", \"none\"]\n }],\n /**\n * Blur\n * @see https://tailwindcss.com/docs/blur\n */\n blur: [{\n blur: [t]\n }],\n /**\n * Brightness\n * @see https://tailwindcss.com/docs/brightness\n */\n brightness: [{\n brightness: [o]\n }],\n /**\n * Contrast\n * @see https://tailwindcss.com/docs/contrast\n */\n contrast: [{\n contrast: [u]\n }],\n /**\n * Drop Shadow\n * @see https://tailwindcss.com/docs/drop-shadow\n */\n \"drop-shadow\": [{\n \"drop-shadow\": [\"\", \"none\", A, i]\n }],\n /**\n * Grayscale\n * @see https://tailwindcss.com/docs/grayscale\n */\n grayscale: [{\n grayscale: [g]\n }],\n /**\n * Hue Rotate\n * @see https://tailwindcss.com/docs/hue-rotate\n */\n \"hue-rotate\": [{\n \"hue-rotate\": [m]\n }],\n /**\n * Invert\n * @see https://tailwindcss.com/docs/invert\n */\n invert: [{\n invert: [y]\n }],\n /**\n * Saturate\n * @see https://tailwindcss.com/docs/saturate\n */\n saturate: [{\n saturate: [R]\n }],\n /**\n * Sepia\n * @see https://tailwindcss.com/docs/sepia\n */\n sepia: [{\n sepia: [E]\n }],\n /**\n * Backdrop Filter\n * @deprecated since Tailwind CSS v3.0.0\n * @see https://tailwindcss.com/docs/backdrop-filter\n */\n \"backdrop-filter\": [{\n \"backdrop-filter\": [\"\", \"none\"]\n }],\n /**\n * Backdrop Blur\n * @see https://tailwindcss.com/docs/backdrop-blur\n */\n \"backdrop-blur\": [{\n \"backdrop-blur\": [t]\n }],\n /**\n * Backdrop Brightness\n * @see https://tailwindcss.com/docs/backdrop-brightness\n */\n \"backdrop-brightness\": [{\n \"backdrop-brightness\": [o]\n }],\n /**\n * Backdrop Contrast\n * @see https://tailwindcss.com/docs/backdrop-contrast\n */\n \"backdrop-contrast\": [{\n \"backdrop-contrast\": [u]\n }],\n /**\n * Backdrop Grayscale\n * @see https://tailwindcss.com/docs/backdrop-grayscale\n */\n \"backdrop-grayscale\": [{\n \"backdrop-grayscale\": [g]\n }],\n /**\n * Backdrop Hue Rotate\n * @see https://tailwindcss.com/docs/backdrop-hue-rotate\n */\n \"backdrop-hue-rotate\": [{\n \"backdrop-hue-rotate\": [m]\n }],\n /**\n * Backdrop Invert\n * @see https://tailwindcss.com/docs/backdrop-invert\n */\n \"backdrop-invert\": [{\n \"backdrop-invert\": [y]\n }],\n /**\n * Backdrop Opacity\n * @see https://tailwindcss.com/docs/backdrop-opacity\n */\n \"backdrop-opacity\": [{\n \"backdrop-opacity\": [f]\n }],\n /**\n * Backdrop Saturate\n * @see https://tailwindcss.com/docs/backdrop-saturate\n */\n \"backdrop-saturate\": [{\n \"backdrop-saturate\": [R]\n }],\n /**\n * Backdrop Sepia\n * @see https://tailwindcss.com/docs/backdrop-sepia\n */\n \"backdrop-sepia\": [{\n \"backdrop-sepia\": [E]\n }],\n // Tables\n /**\n * Border Collapse\n * @see https://tailwindcss.com/docs/border-collapse\n */\n \"border-collapse\": [{\n border: [\"collapse\", \"separate\"]\n }],\n /**\n * Border Spacing\n * @see https://tailwindcss.com/docs/border-spacing\n */\n \"border-spacing\": [{\n \"border-spacing\": [a]\n }],\n /**\n * Border Spacing X\n * @see https://tailwindcss.com/docs/border-spacing\n */\n \"border-spacing-x\": [{\n \"border-spacing-x\": [a]\n }],\n /**\n * Border Spacing Y\n * @see https://tailwindcss.com/docs/border-spacing\n */\n \"border-spacing-y\": [{\n \"border-spacing-y\": [a]\n }],\n /**\n * Table Layout\n * @see https://tailwindcss.com/docs/table-layout\n */\n \"table-layout\": [{\n table: [\"auto\", \"fixed\"]\n }],\n /**\n * Caption Side\n * @see https://tailwindcss.com/docs/caption-side\n */\n caption: [{\n caption: [\"top\", \"bottom\"]\n }],\n // Transitions and Animation\n /**\n * Tranisition Property\n * @see https://tailwindcss.com/docs/transition-property\n */\n transition: [{\n transition: [\"none\", \"all\", \"\", \"colors\", \"opacity\", \"shadow\", \"transform\", i]\n }],\n /**\n * Transition Duration\n * @see https://tailwindcss.com/docs/transition-duration\n */\n duration: [{\n duration: C()\n }],\n /**\n * Transition Timing Function\n * @see https://tailwindcss.com/docs/transition-timing-function\n */\n ease: [{\n ease: [\"linear\", \"in\", \"out\", \"in-out\", i]\n }],\n /**\n * Transition Delay\n * @see https://tailwindcss.com/docs/transition-delay\n */\n delay: [{\n delay: C()\n }],\n /**\n * Animation\n * @see https://tailwindcss.com/docs/animation\n */\n animate: [{\n animate: [\"none\", \"spin\", \"ping\", \"pulse\", \"bounce\", i]\n }],\n // Transforms\n /**\n * Transform\n * @see https://tailwindcss.com/docs/transform\n */\n transform: [{\n transform: [\"\", \"gpu\", \"none\"]\n }],\n /**\n * Scale\n * @see https://tailwindcss.com/docs/scale\n */\n scale: [{\n scale: [S]\n }],\n /**\n * Scale X\n * @see https://tailwindcss.com/docs/scale\n */\n \"scale-x\": [{\n \"scale-x\": [S]\n }],\n /**\n * Scale Y\n * @see https://tailwindcss.com/docs/scale\n */\n \"scale-y\": [{\n \"scale-y\": [S]\n }],\n /**\n * Rotate\n * @see https://tailwindcss.com/docs/rotate\n */\n rotate: [{\n rotate: [I, i]\n }],\n /**\n * Translate X\n * @see https://tailwindcss.com/docs/translate\n */\n \"translate-x\": [{\n \"translate-x\": [J]\n }],\n /**\n * Translate Y\n * @see https://tailwindcss.com/docs/translate\n */\n \"translate-y\": [{\n \"translate-y\": [J]\n }],\n /**\n * Skew X\n * @see https://tailwindcss.com/docs/skew\n */\n \"skew-x\": [{\n \"skew-x\": [F]\n }],\n /**\n * Skew Y\n * @see https://tailwindcss.com/docs/skew\n */\n \"skew-y\": [{\n \"skew-y\": [F]\n }],\n /**\n * Transform Origin\n * @see https://tailwindcss.com/docs/transform-origin\n */\n \"transform-origin\": [{\n origin: [\"center\", \"top\", \"top-right\", \"right\", \"bottom-right\", \"bottom\", \"bottom-left\", \"left\", \"top-left\", i]\n }],\n // Interactivity\n /**\n * Accent Color\n * @see https://tailwindcss.com/docs/accent-color\n */\n accent: [{\n accent: [\"auto\", e]\n }],\n /**\n * Appearance\n * @see https://tailwindcss.com/docs/appearance\n */\n appearance: [{\n appearance: [\"none\", \"auto\"]\n }],\n /**\n * Cursor\n * @see https://tailwindcss.com/docs/cursor\n */\n cursor: [{\n cursor: [\"auto\", \"default\", \"pointer\", \"wait\", \"text\", \"move\", \"help\", \"not-allowed\", \"none\", \"context-menu\", \"progress\", \"cell\", \"crosshair\", \"vertical-text\", \"alias\", \"copy\", \"no-drop\", \"grab\", \"grabbing\", \"all-scroll\", \"col-resize\", \"row-resize\", \"n-resize\", \"e-resize\", \"s-resize\", \"w-resize\", \"ne-resize\", \"nw-resize\", \"se-resize\", \"sw-resize\", \"ew-resize\", \"ns-resize\", \"nesw-resize\", \"nwse-resize\", \"zoom-in\", \"zoom-out\", i]\n }],\n /**\n * Caret Color\n * @see https://tailwindcss.com/docs/just-in-time-mode#caret-color-utilities\n */\n \"caret-color\": [{\n caret: [e]\n }],\n /**\n * Pointer Events\n * @see https://tailwindcss.com/docs/pointer-events\n */\n \"pointer-events\": [{\n \"pointer-events\": [\"none\", \"auto\"]\n }],\n /**\n * Resize\n * @see https://tailwindcss.com/docs/resize\n */\n resize: [{\n resize: [\"none\", \"y\", \"x\", \"\"]\n }],\n /**\n * Scroll Behavior\n * @see https://tailwindcss.com/docs/scroll-behavior\n */\n \"scroll-behavior\": [{\n scroll: [\"auto\", \"smooth\"]\n }],\n /**\n * Scroll Margin\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n \"scroll-m\": [{\n \"scroll-m\": d()\n }],\n /**\n * Scroll Margin X\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n \"scroll-mx\": [{\n \"scroll-mx\": d()\n }],\n /**\n * Scroll Margin Y\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n \"scroll-my\": [{\n \"scroll-my\": d()\n }],\n /**\n * Scroll Margin Start\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n \"scroll-ms\": [{\n \"scroll-ms\": d()\n }],\n /**\n * Scroll Margin End\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n \"scroll-me\": [{\n \"scroll-me\": d()\n }],\n /**\n * Scroll Margin Top\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n \"scroll-mt\": [{\n \"scroll-mt\": d()\n }],\n /**\n * Scroll Margin Right\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n \"scroll-mr\": [{\n \"scroll-mr\": d()\n }],\n /**\n * Scroll Margin Bottom\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n \"scroll-mb\": [{\n \"scroll-mb\": d()\n }],\n /**\n * Scroll Margin Left\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n \"scroll-ml\": [{\n \"scroll-ml\": d()\n }],\n /**\n * Scroll Padding\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n \"scroll-p\": [{\n \"scroll-p\": d()\n }],\n /**\n * Scroll Padding X\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n \"scroll-px\": [{\n \"scroll-px\": d()\n }],\n /**\n * Scroll Padding Y\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n \"scroll-py\": [{\n \"scroll-py\": d()\n }],\n /**\n * Scroll Padding Start\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n \"scroll-ps\": [{\n \"scroll-ps\": d()\n }],\n /**\n * Scroll Padding End\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n \"scroll-pe\": [{\n \"scroll-pe\": d()\n }],\n /**\n * Scroll Padding Top\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n \"scroll-pt\": [{\n \"scroll-pt\": d()\n }],\n /**\n * Scroll Padding Right\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n \"scroll-pr\": [{\n \"scroll-pr\": d()\n }],\n /**\n * Scroll Padding Bottom\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n \"scroll-pb\": [{\n \"scroll-pb\": d()\n }],\n /**\n * Scroll Padding Left\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n \"scroll-pl\": [{\n \"scroll-pl\": d()\n }],\n /**\n * Scroll Snap Align\n * @see https://tailwindcss.com/docs/scroll-snap-align\n */\n \"snap-align\": [{\n snap: [\"start\", \"end\", \"center\", \"align-none\"]\n }],\n /**\n * Scroll Snap Stop\n * @see https://tailwindcss.com/docs/scroll-snap-stop\n */\n \"snap-stop\": [{\n snap: [\"normal\", \"always\"]\n }],\n /**\n * Scroll Snap Type\n * @see https://tailwindcss.com/docs/scroll-snap-type\n */\n \"snap-type\": [{\n snap: [\"none\", \"x\", \"y\", \"both\"]\n }],\n /**\n * Scroll Snap Type Strictness\n * @see https://tailwindcss.com/docs/scroll-snap-type\n */\n \"snap-strictness\": [{\n snap: [\"mandatory\", \"proximity\"]\n }],\n /**\n * Touch Action\n * @see https://tailwindcss.com/docs/touch-action\n */\n touch: [{\n touch: [\"auto\", \"none\", \"manipulation\"]\n }],\n /**\n * Touch Action X\n * @see https://tailwindcss.com/docs/touch-action\n */\n \"touch-x\": [{\n \"touch-pan\": [\"x\", \"left\", \"right\"]\n }],\n /**\n * Touch Action Y\n * @see https://tailwindcss.com/docs/touch-action\n */\n \"touch-y\": [{\n \"touch-pan\": [\"y\", \"up\", \"down\"]\n }],\n /**\n * Touch Action Pinch Zoom\n * @see https://tailwindcss.com/docs/touch-action\n */\n \"touch-pz\": [\"touch-pinch-zoom\"],\n /**\n * User Select\n * @see https://tailwindcss.com/docs/user-select\n */\n select: [{\n select: [\"none\", \"text\", \"all\", \"auto\"]\n }],\n /**\n * Will Change\n * @see https://tailwindcss.com/docs/will-change\n */\n \"will-change\": [{\n \"will-change\": [\"auto\", \"scroll\", \"contents\", \"transform\", i]\n }],\n // SVG\n /**\n * Fill\n * @see https://tailwindcss.com/docs/fill\n */\n fill: [{\n fill: [e, \"none\"]\n }],\n /**\n * Stroke Width\n * @see https://tailwindcss.com/docs/stroke-width\n */\n \"stroke-w\": [{\n stroke: [k, z, V]\n }],\n /**\n * Stroke\n * @see https://tailwindcss.com/docs/stroke\n */\n stroke: [{\n stroke: [e, \"none\"]\n }],\n // Accessibility\n /**\n * Screen Readers\n * @see https://tailwindcss.com/docs/screen-readers\n */\n sr: [\"sr-only\", \"not-sr-only\"],\n /**\n * Forced Color Adjust\n * @see https://tailwindcss.com/docs/forced-color-adjust\n */\n \"forced-color-adjust\": [{\n \"forced-color-adjust\": [\"auto\", \"none\"]\n }]\n },\n conflictingClassGroups: {\n overflow: [\"overflow-x\", \"overflow-y\"],\n overscroll: [\"overscroll-x\", \"overscroll-y\"],\n inset: [\"inset-x\", \"inset-y\", \"start\", \"end\", \"top\", \"right\", \"bottom\", \"left\"],\n \"inset-x\": [\"right\", \"left\"],\n \"inset-y\": [\"top\", \"bottom\"],\n flex: [\"basis\", \"grow\", \"shrink\"],\n gap: [\"gap-x\", \"gap-y\"],\n p: [\"px\", \"py\", \"ps\", \"pe\", \"pt\", \"pr\", \"pb\", \"pl\"],\n px: [\"pr\", \"pl\"],\n py: [\"pt\", \"pb\"],\n m: [\"mx\", \"my\", \"ms\", \"me\", \"mt\", \"mr\", \"mb\", \"ml\"],\n mx: [\"mr\", \"ml\"],\n my: [\"mt\", \"mb\"],\n size: [\"w\", \"h\"],\n \"font-size\": [\"leading\"],\n \"fvn-normal\": [\"fvn-ordinal\", \"fvn-slashed-zero\", \"fvn-figure\", \"fvn-spacing\", \"fvn-fraction\"],\n \"fvn-ordinal\": [\"fvn-normal\"],\n \"fvn-slashed-zero\": [\"fvn-normal\"],\n \"fvn-figure\": [\"fvn-normal\"],\n \"fvn-spacing\": [\"fvn-normal\"],\n \"fvn-fraction\": [\"fvn-normal\"],\n \"line-clamp\": [\"display\", \"overflow\"],\n rounded: [\"rounded-s\", \"rounded-e\", \"rounded-t\", \"rounded-r\", \"rounded-b\", \"rounded-l\", \"rounded-ss\", \"rounded-se\", \"rounded-ee\", \"rounded-es\", \"rounded-tl\", \"rounded-tr\", \"rounded-br\", \"rounded-bl\"],\n \"rounded-s\": [\"rounded-ss\", \"rounded-es\"],\n \"rounded-e\": [\"rounded-se\", \"rounded-ee\"],\n \"rounded-t\": [\"rounded-tl\", \"rounded-tr\"],\n \"rounded-r\": [\"rounded-tr\", \"rounded-br\"],\n \"rounded-b\": [\"rounded-br\", \"rounded-bl\"],\n \"rounded-l\": [\"rounded-tl\", \"rounded-bl\"],\n \"border-spacing\": [\"border-spacing-x\", \"border-spacing-y\"],\n \"border-w\": [\"border-w-s\", \"border-w-e\", \"border-w-t\", \"border-w-r\", \"border-w-b\", \"border-w-l\"],\n \"border-w-x\": [\"border-w-r\", \"border-w-l\"],\n \"border-w-y\": [\"border-w-t\", \"border-w-b\"],\n \"border-color\": [\"border-color-t\", \"border-color-r\", \"border-color-b\", \"border-color-l\"],\n \"border-color-x\": [\"border-color-r\", \"border-color-l\"],\n \"border-color-y\": [\"border-color-t\", \"border-color-b\"],\n \"scroll-m\": [\"scroll-mx\", \"scroll-my\", \"scroll-ms\", \"scroll-me\", \"scroll-mt\", \"scroll-mr\", \"scroll-mb\", \"scroll-ml\"],\n \"scroll-mx\": [\"scroll-mr\", \"scroll-ml\"],\n \"scroll-my\": [\"scroll-mt\", \"scroll-mb\"],\n \"scroll-p\": [\"scroll-px\", \"scroll-py\", \"scroll-ps\", \"scroll-pe\", \"scroll-pt\", \"scroll-pr\", \"scroll-pb\", \"scroll-pl\"],\n \"scroll-px\": [\"scroll-pr\", \"scroll-pl\"],\n \"scroll-py\": [\"scroll-pt\", \"scroll-pb\"],\n touch: [\"touch-x\", \"touch-y\", \"touch-pz\"],\n \"touch-x\": [\"touch\"],\n \"touch-y\": [\"touch\"],\n \"touch-pz\": [\"touch\"]\n },\n conflictingClassGroupModifiers: {\n \"font-size\": [\"leading\"]\n }\n };\n}, _e = /* @__PURE__ */ ye(Le);\nfunction B(e, r = 4, t = 4) {\n return !e || e.length <= r + t ? e : e.substring(0, r) + \"...\" + e.substring(e.length - t);\n}\nfunction We(e) {\n return B(e, 6, 4);\n}\nfunction Oe(e) {\n return B(e, 2, 4);\n}\nconst Ve = (e) => e.charAt(0).toUpperCase() + e.slice(1);\nfunction $e(...e) {\n return _e(se(e));\n}\nconst Ue = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n abbreviate: B,\n abbreviateAddress: We,\n capitalizeFirstLetter: Ve,\n classnames: $e,\n ultraAbbreviateAddress: Oe\n}, Symbol.toStringTag, { value: \"Module\" }));\nexport {\n B as a,\n We as b,\n Ve as c,\n $e as d,\n Ue as s,\n Oe as u\n};\n","import { c } from \"./string-B9G_tJZ-.js\";\nvar n = /* @__PURE__ */ ((e) => (e[e.Mainnet = 1] = \"Mainnet\", e[e.Optimism = 10] = \"Optimism\", e[e.Matic = 137] = \"Matic\", e[e.Base = 8453] = \"Base\", e[e.Sepolia = 11155111] = \"Sepolia\", e[e.Shape = 360] = \"Shape\", e[e.ApeChain = 33139] = \"ApeChain\", e))(n || {});\nconst s = {\n 1: {\n rpcUrls: [\"https://mainnet.infura.io\"],\n chainName: \"Ethereum Mainnet\",\n displayName: \"Ethereum\",\n alternateNames: [\"mainnet\", \"eth\"],\n nativeCurrency: {\n name: \"Ethereum\",\n symbol: \"ETH\",\n decimals: 18\n },\n // @todo: we should really just match the chains.json structure here and do an array of structs\n blockExplorerUrls: [\"https://etherscan.io\"]\n },\n 10: {\n rpcUrls: [\"https://mainnet.optimism.io/\"],\n chainName: \"Optimism Mainnet\",\n displayName: \"Optimism\",\n alternateNames: [\"op\", \"oeth\"],\n nativeCurrency: {\n name: \"Ethereum\",\n symbol: \"OETH\",\n decimals: 18\n },\n blockExplorerUrls: [\"https://optimistic.etherscan.io/\"]\n },\n 8453: {\n rpcUrls: [\"https://mainnet.base.org\"],\n chainName: \"Base Mainnet\",\n displayName: \"Base\",\n nativeCurrency: {\n name: \"Ethereum\",\n symbol: \"ETH\",\n decimals: 18\n },\n blockExplorerUrls: [\"https://basescan.org\"]\n },\n 137: {\n rpcUrls: [\"https://polygon-rpc.com\"],\n chainName: \"Polygon Mainnet\",\n displayName: \"Polygon\",\n alternateNames: [\"matic\", \"pol\"],\n nativeCurrency: {\n name: \"POL\",\n symbol: \"POL\",\n decimals: 18\n },\n blockExplorerUrls: [\"https://polygonscan.com\"]\n },\n 360: {\n rpcUrls: [\"https://mainnet.shape.network\"],\n chainName: \"Shape Mainnet\",\n displayName: \"Shape\",\n alternateNames: [],\n nativeCurrency: {\n name: \"Ethereum\",\n symbol: \"ETH\",\n decimals: 18\n },\n blockExplorerUrls: [\"https://shapescan.xyz/\"]\n },\n 33139: {\n rpcUrls: [\"https://rpc.apechain.com\"],\n chainName: \"ApeChain Mainnet\",\n displayName: \"ApeChain\",\n alternateNames: [\"ape\", \"apechain\"],\n nativeCurrency: {\n name: \"ApeChain\",\n symbol: \"APE\",\n decimals: 18\n },\n blockExplorerUrls: [\"https://apescan.io/\"]\n },\n 11155111: {\n rpcUrls: [\"https://rpc.sepolia.org\"],\n chainName: \"Ethereum Testnet Sepolia\",\n displayName: \"Sepolia\",\n alternateNames: [\"sep\"],\n nativeCurrency: {\n name: \"Sepolia Ether\",\n symbol: \"ETH\",\n decimals: 18\n },\n blockExplorerUrls: [\"https://sepolia.etherscan.io\"]\n }\n}, h = [\n 1,\n 8453,\n 137,\n 10,\n 360,\n 33139\n /* ApeChain */\n], p = [\n 11155111\n /* Sepolia */\n], i = Object.keys(s).map((e) => parseInt(e)), m = (e) => i.includes(e);\nfunction u(e, a = !1) {\n if (!m(e))\n throw new Error(\"Unsupported Network\");\n const t = s[e];\n return a ? t.displayName : t.displayName.toLowerCase();\n}\nfunction y(e) {\n return p.includes(e);\n}\nfunction E(e) {\n var l;\n const a = e.toLowerCase(), t = c(a);\n if (t in n)\n return n[t];\n for (const r of i) {\n const o = s[r];\n if (o.displayName.toLowerCase() === a || (l = o.alternateNames) != null && l.includes(a))\n return r;\n }\n return null;\n}\nconst b = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n MAIN_NETWORKS: h,\n NETWORK_CONFIGS: s,\n NetworkId: n,\n SUPPORTED_NETWORKS: i,\n TEST_NETWORKS: p,\n getDisplayNameForNetworkId: u,\n isSupportedNetwork: m,\n isTestnet: y,\n resolveChainIdByName: E\n}, Symbol.toStringTag, { value: \"Module\" }));\nexport {\n h as M,\n n as N,\n i as S,\n p as T,\n m as a,\n s as b,\n u as g,\n y as i,\n b as n,\n E as r\n};\n","import { g as Pi, c as Hr, a as Zr } from \"./_commonjsHelpers-BVfed4GL.js\";\nimport { N as sn } from \"./constants-C3Nal9kT.js\";\nimport { N as I, a as Oi } from \"./network-BRHI3AkZ.js\";\nconst Ci = \"logger/5.8.0\";\nlet xr = !1, Er = !1;\nconst En = { debug: 1, default: 2, info: 2, warning: 3, error: 4, off: 5 };\nlet Tr = En.default, rr = null;\nfunction Ui() {\n try {\n const n = [];\n if ([\"NFD\", \"NFC\", \"NFKD\", \"NFKC\"].forEach((e) => {\n try {\n if (\"test\".normalize(e) !== \"test\")\n throw new Error(\"bad normalize\");\n } catch {\n n.push(e);\n }\n }), n.length)\n throw new Error(\"missing \" + n.join(\", \"));\n if (\"é\".normalize(\"NFD\") !== \"é\")\n throw new Error(\"broken implementation\");\n } catch (n) {\n return n.message;\n }\n return null;\n}\nconst Ar = Ui();\nvar or;\n(function(n) {\n n.DEBUG = \"DEBUG\", n.INFO = \"INFO\", n.WARNING = \"WARNING\", n.ERROR = \"ERROR\", n.OFF = \"OFF\";\n})(or || (or = {}));\nvar it;\n(function(n) {\n n.UNKNOWN_ERROR = \"UNKNOWN_ERROR\", n.NOT_IMPLEMENTED = \"NOT_IMPLEMENTED\", n.UNSUPPORTED_OPERATION = \"UNSUPPORTED_OPERATION\", n.NETWORK_ERROR = \"NETWORK_ERROR\", n.SERVER_ERROR = \"SERVER_ERROR\", n.TIMEOUT = \"TIMEOUT\", n.BUFFER_OVERRUN = \"BUFFER_OVERRUN\", n.NUMERIC_FAULT = \"NUMERIC_FAULT\", n.MISSING_NEW = \"MISSING_NEW\", n.INVALID_ARGUMENT = \"INVALID_ARGUMENT\", n.MISSING_ARGUMENT = \"MISSING_ARGUMENT\", n.UNEXPECTED_ARGUMENT = \"UNEXPECTED_ARGUMENT\", n.CALL_EXCEPTION = \"CALL_EXCEPTION\", n.INSUFFICIENT_FUNDS = \"INSUFFICIENT_FUNDS\", n.NONCE_EXPIRED = \"NONCE_EXPIRED\", n.REPLACEMENT_UNDERPRICED = \"REPLACEMENT_UNDERPRICED\", n.UNPREDICTABLE_GAS_LIMIT = \"UNPREDICTABLE_GAS_LIMIT\", n.TRANSACTION_REPLACED = \"TRANSACTION_REPLACED\", n.ACTION_REJECTED = \"ACTION_REJECTED\";\n})(it || (it = {}));\nconst _r = \"0123456789abcdef\";\nclass k {\n constructor(e) {\n Object.defineProperty(this, \"version\", {\n enumerable: !0,\n value: e,\n writable: !1\n });\n }\n _log(e, t) {\n const r = e.toLowerCase();\n En[r] == null && this.throwArgumentError(\"invalid log level name\", \"logLevel\", e), !(Tr > En[r]) && console.log.apply(console, t);\n }\n debug(...e) {\n this._log(k.levels.DEBUG, e);\n }\n info(...e) {\n this._log(k.levels.INFO, e);\n }\n warn(...e) {\n this._log(k.levels.WARNING, e);\n }\n makeError(e, t, r) {\n if (Er)\n return this.makeError(\"censored error\", t, {});\n t || (t = k.errors.UNKNOWN_ERROR), r || (r = {});\n const s = [];\n Object.keys(r).forEach((c) => {\n const p = r[c];\n try {\n if (p instanceof Uint8Array) {\n let b = \"\";\n for (let x = 0; x < p.length; x++)\n b += _r[p[x] >> 4], b += _r[p[x] & 15];\n s.push(c + \"=Uint8Array(0x\" + b + \")\");\n } else\n s.push(c + \"=\" + JSON.stringify(p));\n } catch {\n s.push(c + \"=\" + JSON.stringify(r[c].toString()));\n }\n }), s.push(`code=${t}`), s.push(`version=${this.version}`);\n const i = e;\n let o = \"\";\n switch (t) {\n case it.NUMERIC_FAULT: {\n o = \"NUMERIC_FAULT\";\n const c = e;\n switch (c) {\n case \"overflow\":\n case \"underflow\":\n case \"division-by-zero\":\n o += \"-\" + c;\n break;\n case \"negative-power\":\n case \"negative-width\":\n o += \"-unsupported\";\n break;\n case \"unbound-bitwise-result\":\n o += \"-unbound-result\";\n break;\n }\n break;\n }\n case it.CALL_EXCEPTION:\n case it.INSUFFICIENT_FUNDS:\n case it.MISSING_NEW:\n case it.NONCE_EXPIRED:\n case it.REPLACEMENT_UNDERPRICED:\n case it.TRANSACTION_REPLACED:\n case it.UNPREDICTABLE_GAS_LIMIT:\n o = t;\n break;\n }\n o && (e += \" [ See: https://links.ethers.org/v5-errors-\" + o + \" ]\"), s.length && (e += \" (\" + s.join(\", \") + \")\");\n const d = new Error(e);\n return d.reason = i, d.code = t, Object.keys(r).forEach(function(c) {\n d[c] = r[c];\n }), d;\n }\n throwError(e, t, r) {\n throw this.makeError(e, t, r);\n }\n throwArgumentError(e, t, r) {\n return this.throwError(e, k.errors.INVALID_ARGUMENT, {\n argument: t,\n value: r\n });\n }\n assert(e, t, r, s) {\n e || this.throwError(t, r, s);\n }\n assertArgument(e, t, r, s) {\n e || this.throwArgumentError(t, r, s);\n }\n checkNormalize(e) {\n Ar && this.throwError(\"platform missing String.prototype.normalize\", k.errors.UNSUPPORTED_OPERATION, {\n operation: \"String.prototype.normalize\",\n form: Ar\n });\n }\n checkSafeUint53(e, t) {\n typeof e == \"number\" && (t == null && (t = \"value not safe\"), (e < 0 || e >= 9007199254740991) && this.throwError(t, k.errors.NUMERIC_FAULT, {\n operation: \"checkSafeInteger\",\n fault: \"out-of-safe-range\",\n value: e\n }), e % 1 && this.throwError(t, k.errors.NUMERIC_FAULT, {\n operation: \"checkSafeInteger\",\n fault: \"non-integer\",\n value: e\n }));\n }\n checkArgumentCount(e, t, r) {\n r ? r = \": \" + r : r = \"\", e < t && this.throwError(\"missing argument\" + r, k.errors.MISSING_ARGUMENT, {\n count: e,\n expectedCount: t\n }), e > t && this.throwError(\"too many arguments\" + r, k.errors.UNEXPECTED_ARGUMENT, {\n count: e,\n expectedCount: t\n });\n }\n checkNew(e, t) {\n (e === Object || e == null) && this.throwError(\"missing new\", k.errors.MISSING_NEW, { name: t.name });\n }\n checkAbstract(e, t) {\n e === t ? this.throwError(\"cannot instantiate abstract class \" + JSON.stringify(t.name) + \" directly; use a sub-class\", k.errors.UNSUPPORTED_OPERATION, { name: e.name, operation: \"new\" }) : (e === Object || e == null) && this.throwError(\"missing new\", k.errors.MISSING_NEW, { name: t.name });\n }\n static globalLogger() {\n return rr || (rr = new k(Ci)), rr;\n }\n static setCensorship(e, t) {\n if (!e && t && this.globalLogger().throwError(\"cannot permanently disable censorship\", k.errors.UNSUPPORTED_OPERATION, {\n operation: \"setCensorship\"\n }), xr) {\n if (!e)\n return;\n this.globalLogger().throwError(\"error censorship permanent\", k.errors.UNSUPPORTED_OPERATION, {\n operation: \"setCensorship\"\n });\n }\n Er = !!e, xr = !!t;\n }\n static setLogLevel(e) {\n const t = En[e.toLowerCase()];\n if (t == null) {\n k.globalLogger().warn(\"invalid log level - \" + e);\n return;\n }\n Tr = t;\n }\n static from(e) {\n return new k(e);\n }\n}\nk.errors = it;\nk.levels = or;\nconst Bi = \"bytes/5.8.0\", gt = new k(Bi);\nfunction Wr(n) {\n return !!n.toHexString;\n}\nfunction on(n) {\n return n.slice || (n.slice = function() {\n const e = Array.prototype.slice.call(arguments);\n return on(new Uint8Array(Array.prototype.slice.apply(n, e)));\n }), n;\n}\nfunction Fi(n) {\n return He(n) && !(n.length % 2) || rn(n);\n}\nfunction Nr(n) {\n return typeof n == \"number\" && n == n && n % 1 === 0;\n}\nfunction rn(n) {\n if (n == null)\n return !1;\n if (n.constructor === Uint8Array)\n return !0;\n if (typeof n == \"string\" || !Nr(n.length) || n.length < 0)\n return !1;\n for (let e = 0; e < n.length; e++) {\n const t = n[e];\n if (!Nr(t) || t < 0 || t >= 256)\n return !1;\n }\n return !0;\n}\nfunction Le(n, e) {\n if (e || (e = {}), typeof n == \"number\") {\n gt.checkSafeUint53(n, \"invalid arrayify value\");\n const t = [];\n for (; n; )\n t.unshift(n & 255), n = parseInt(String(n / 256));\n return t.length === 0 && t.push(0), on(new Uint8Array(t));\n }\n if (e.allowMissingPrefix && typeof n == \"string\" && n.substring(0, 2) !== \"0x\" && (n = \"0x\" + n), Wr(n) && (n = n.toHexString()), He(n)) {\n let t = n.substring(2);\n t.length % 2 && (e.hexPad === \"left\" ? t = \"0\" + t : e.hexPad === \"right\" ? t += \"0\" : gt.throwArgumentError(\"hex data is odd-length\", \"value\", n));\n const r = [];\n for (let s = 0; s < t.length; s += 2)\n r.push(parseInt(t.substring(s, s + 2), 16));\n return on(new Uint8Array(r));\n }\n return rn(n) ? on(new Uint8Array(n)) : gt.throwArgumentError(\"invalid arrayify value\", \"value\", n);\n}\nfunction Yt(n) {\n const e = n.map((s) => Le(s)), t = e.reduce((s, i) => s + i.length, 0), r = new Uint8Array(t);\n return e.reduce((s, i) => (r.set(i, s), s + i.length), 0), on(r);\n}\nfunction Di(n) {\n let e = Le(n);\n if (e.length === 0)\n return e;\n let t = 0;\n for (; t < e.length && e[t] === 0; )\n t++;\n return t && (e = e.slice(t)), e;\n}\nfunction He(n, e) {\n return !(typeof n != \"string\" || !n.match(/^0x[0-9A-Fa-f]*$/) || e && n.length !== 2 + 2 * e);\n}\nconst ir = \"0123456789abcdef\";\nfunction Ue(n, e) {\n if (e || (e = {}), typeof n == \"number\") {\n gt.checkSafeUint53(n, \"invalid hexlify value\");\n let t = \"\";\n for (; n; )\n t = ir[n & 15] + t, n = Math.floor(n / 16);\n return t.length ? (t.length % 2 && (t = \"0\" + t), \"0x\" + t) : \"0x00\";\n }\n if (typeof n == \"bigint\")\n return n = n.toString(16), n.length % 2 ? \"0x0\" + n : \"0x\" + n;\n if (e.allowMissingPrefix && typeof n == \"string\" && n.substring(0, 2) !== \"0x\" && (n = \"0x\" + n), Wr(n))\n return n.toHexString();\n if (He(n))\n return n.length % 2 && (e.hexPad === \"left\" ? n = \"0x0\" + n.substring(2) : e.hexPad === \"right\" ? n += \"0\" : gt.throwArgumentError(\"hex data is odd-length\", \"value\", n)), n.toLowerCase();\n if (rn(n)) {\n let t = \"0x\";\n for (let r = 0; r < n.length; r++) {\n let s = n[r];\n t += ir[(s & 240) >> 4] + ir[s & 15];\n }\n return t;\n }\n return gt.throwArgumentError(\"invalid hexlify value\", \"value\", n);\n}\nfunction Li(n) {\n if (typeof n != \"string\")\n n = Ue(n);\n else if (!He(n) || n.length % 2)\n return null;\n return (n.length - 2) / 2;\n}\nfunction Jr(n, e, t) {\n return typeof n != \"string\" ? n = Ue(n) : (!He(n) || n.length % 2) && gt.throwArgumentError(\"invalid hexData\", \"value\", n), e = 2 + 2 * e, t != null ? \"0x\" + n.substring(e, 2 + 2 * t) : \"0x\" + n.substring(e);\n}\nfunction Gi(n) {\n let e = \"0x\";\n return n.forEach((t) => {\n e += Ue(t).substring(2);\n }), e;\n}\nfunction Rn(n, e) {\n for (typeof n != \"string\" ? n = Ue(n) : He(n) || gt.throwArgumentError(\"invalid hex string\", \"value\", n), n.length > 2 * e + 2 && gt.throwArgumentError(\"value out of range\", \"value\", arguments[1]); n.length < 2 * e + 2; )\n n = \"0x0\" + n.substring(2);\n return n;\n}\nvar mr = { exports: {} };\nconst $i = {}, qi = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n default: $i\n}, Symbol.toStringTag, { value: \"Module\" })), zi = /* @__PURE__ */ Pi(qi);\nmr.exports;\n(function(n) {\n (function(e, t) {\n function r(v, a) {\n if (!v) throw new Error(a || \"Assertion failed\");\n }\n function s(v, a) {\n v.super_ = a;\n var l = function() {\n };\n l.prototype = a.prototype, v.prototype = new l(), v.prototype.constructor = v;\n }\n function i(v, a, l) {\n if (i.isBN(v))\n return v;\n this.negative = 0, this.words = null, this.length = 0, this.red = null, v !== null && ((a === \"le\" || a === \"be\") && (l = a, a = 10), this._init(v || 0, a || 10, l || \"be\"));\n }\n typeof e == \"object\" ? e.exports = i : t.BN = i, i.BN = i, i.wordSize = 26;\n var o;\n try {\n typeof window < \"u\" && typeof window.Buffer < \"u\" ? o = window.Buffer : o = zi.Buffer;\n } catch {\n }\n i.isBN = function(a) {\n return a instanceof i ? !0 : a !== null && typeof a == \"object\" && a.constructor.wordSize === i.wordSize && Array.isArray(a.words);\n }, i.max = function(a, l) {\n return a.cmp(l) > 0 ? a : l;\n }, i.min = function(a, l) {\n return a.cmp(l) < 0 ? a : l;\n }, i.prototype._init = function(a, l, h) {\n if (typeof a == \"number\")\n return this._initNumber(a, l, h);\n if (typeof a == \"object\")\n return this._initArray(a, l, h);\n l === \"hex\" && (l = 16), r(l === (l | 0) && l >= 2 && l <= 36), a = a.toString().replace(/\\s+/g, \"\");\n var y = 0;\n a[0] === \"-\" && (y++, this.negative = 1), y < a.length && (l === 16 ? this._parseHex(a, y, h) : (this._parseBase(a, l, y), h === \"le\" && this._initArray(this.toArray(), l, h)));\n }, i.prototype._initNumber = function(a, l, h) {\n a < 0 && (this.negative = 1, a = -a), a < 67108864 ? (this.words = [a & 67108863], this.length = 1) : a < 4503599627370496 ? (this.words = [\n a & 67108863,\n a / 67108864 & 67108863\n ], this.length = 2) : (r(a < 9007199254740992), this.words = [\n a & 67108863,\n a / 67108864 & 67108863,\n 1\n ], this.length = 3), h === \"le\" && this._initArray(this.toArray(), l, h);\n }, i.prototype._initArray = function(a, l, h) {\n if (r(typeof a.length == \"number\"), a.length <= 0)\n return this.words = [0], this.length = 1, this;\n this.length = Math.ceil(a.length / 3), this.words = new Array(this.length);\n for (var y = 0; y < this.length; y++)\n this.words[y] = 0;\n var w, M, E = 0;\n if (h === \"be\")\n for (y = a.length - 1, w = 0; y >= 0; y -= 3)\n M = a[y] | a[y - 1] << 8 | a[y - 2] << 16, this.words[w] |= M << E & 67108863, this.words[w + 1] = M >>> 26 - E & 67108863, E += 24, E >= 26 && (E -= 26, w++);\n else if (h === \"le\")\n for (y = 0, w = 0; y < a.length; y += 3)\n M = a[y] | a[y + 1] << 8 | a[y + 2] << 16, this.words[w] |= M << E & 67108863, this.words[w + 1] = M >>> 26 - E & 67108863, E += 24, E >= 26 && (E -= 26, w++);\n return this._strip();\n };\n function d(v, a) {\n var l = v.charCodeAt(a);\n if (l >= 48 && l <= 57)\n return l - 48;\n if (l >= 65 && l <= 70)\n return l - 55;\n if (l >= 97 && l <= 102)\n return l - 87;\n r(!1, \"Invalid character in \" + v);\n }\n function c(v, a, l) {\n var h = d(v, l);\n return l - 1 >= a && (h |= d(v, l - 1) << 4), h;\n }\n i.prototype._parseHex = function(a, l, h) {\n this.length = Math.ceil((a.length - l) / 6), this.words = new Array(this.length);\n for (var y = 0; y < this.length; y++)\n this.words[y] = 0;\n var w = 0, M = 0, E;\n if (h === \"be\")\n for (y = a.length - 1; y >= l; y -= 2)\n E = c(a, l, y) << w, this.words[M] |= E & 67108863, w >= 18 ? (w -= 18, M += 1, this.words[M] |= E >>> 26) : w += 8;\n else {\n var m = a.length - l;\n for (y = m % 2 === 0 ? l + 1 : l; y < a.length; y += 2)\n E = c(a, l, y) << w, this.words[M] |= E & 67108863, w >= 18 ? (w -= 18, M += 1, this.words[M] |= E >>> 26) : w += 8;\n }\n this._strip();\n };\n function p(v, a, l, h) {\n for (var y = 0, w = 0, M = Math.min(v.length, l), E = a; E < M; E++) {\n var m = v.charCodeAt(E) - 48;\n y *= h, m >= 49 ? w = m - 49 + 10 : m >= 17 ? w = m - 17 + 10 : w = m, r(m >= 0 && w < h, \"Invalid character\"), y += w;\n }\n return y;\n }\n i.prototype._parseBase = function(a, l, h) {\n this.words = [0], this.length = 1;\n for (var y = 0, w = 1; w <= 67108863; w *= l)\n y++;\n y--, w = w / l | 0;\n for (var M = a.length - h, E = M % y, m = Math.min(M, M - E) + h, u = 0, g = h; g < m; g += y)\n u = p(a, g, g + y, l), this.imuln(w), this.words[0] + u < 67108864 ? this.words[0] += u : this._iaddn(u);\n if (E !== 0) {\n var G = 1;\n for (u = p(a, g, a.length, l), g = 0; g < E; g++)\n G *= l;\n this.imuln(G), this.words[0] + u < 67108864 ? this.words[0] += u : this._iaddn(u);\n }\n this._strip();\n }, i.prototype.copy = function(a) {\n a.words = new Array(this.length);\n for (var l = 0; l < this.length; l++)\n a.words[l] = this.words[l];\n a.length = this.length, a.negative = this.negative, a.red = this.red;\n };\n function b(v, a) {\n v.words = a.words, v.length = a.length, v.negative = a.negative, v.red = a.red;\n }\n if (i.prototype._move = function(a) {\n b(a, this);\n }, i.prototype.clone = function() {\n var a = new i(null);\n return this.copy(a), a;\n }, i.prototype._expand = function(a) {\n for (; this.length < a; )\n this.words[this.length++] = 0;\n return this;\n }, i.prototype._strip = function() {\n for (; this.length > 1 && this.words[this.length - 1] === 0; )\n this.length--;\n return this._normSign();\n }, i.prototype._normSign = function() {\n return this.length === 1 && this.words[0] === 0 && (this.negative = 0), this;\n }, typeof Symbol < \"u\" && typeof Symbol.for == \"function\")\n try {\n i.prototype[Symbol.for(\"nodejs.util.inspect.custom\")] = x;\n } catch {\n i.prototype.inspect = x;\n }\n else\n i.prototype.inspect = x;\n function x() {\n return (this.red ? \"<BN-R: \" : \"<BN: \") + this.toString(16) + \">\";\n }\n var T = [\n \"\",\n \"0\",\n \"00\",\n \"000\",\n \"0000\",\n \"00000\",\n \"000000\",\n \"0000000\",\n \"00000000\",\n \"000000000\",\n \"0000000000\",\n \"00000000000\",\n \"000000000000\",\n \"0000000000000\",\n \"00000000000000\",\n \"000000000000000\",\n \"0000000000000000\",\n \"00000000000000000\",\n \"000000000000000000\",\n \"0000000000000000000\",\n \"00000000000000000000\",\n \"000000000000000000000\",\n \"0000000000000000000000\",\n \"00000000000000000000000\",\n \"000000000000000000000000\",\n \"0000000000000000000000000\"\n ], P = [\n 0,\n 0,\n 25,\n 16,\n 12,\n 11,\n 10,\n 9,\n 8,\n 8,\n 7,\n 7,\n 7,\n 7,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5\n ], D = [\n 0,\n 0,\n 33554432,\n 43046721,\n 16777216,\n 48828125,\n 60466176,\n 40353607,\n 16777216,\n 43046721,\n 1e7,\n 19487171,\n 35831808,\n 62748517,\n 7529536,\n 11390625,\n 16777216,\n 24137569,\n 34012224,\n 47045881,\n 64e6,\n 4084101,\n 5153632,\n 6436343,\n 7962624,\n 9765625,\n 11881376,\n 14348907,\n 17210368,\n 20511149,\n 243e5,\n 28629151,\n 33554432,\n 39135393,\n 45435424,\n 52521875,\n 60466176\n ];\n i.prototype.toString = function(a, l) {\n a = a || 10, l = l | 0 || 1;\n var h;\n if (a === 16 || a === \"hex\") {\n h = \"\";\n for (var y = 0, w = 0, M = 0; M < this.length; M++) {\n var E = this.words[M], m = ((E << y | w) & 16777215).toString(16);\n w = E >>> 24 - y & 16777215, y += 2, y >= 26 && (y -= 26, M--), w !== 0 || M !== this.length - 1 ? h = T[6 - m.length] + m + h : h = m + h;\n }\n for (w !== 0 && (h = w.toString(16) + h); h.length % l !== 0; )\n h = \"0\" + h;\n return this.negative !== 0 && (h = \"-\" + h), h;\n }\n if (a === (a | 0) && a >= 2 && a <= 36) {\n var u = P[a], g = D[a];\n h = \"\";\n var G = this.clone();\n for (G.negative = 0; !G.isZero(); ) {\n var f = G.modrn(g).toString(a);\n G = G.idivn(g), G.isZero() ? h = f + h : h = T[u - f.length] + f + h;\n }\n for (this.isZero() && (h = \"0\" + h); h.length % l !== 0; )\n h = \"0\" + h;\n return this.negative !== 0 && (h = \"-\" + h), h;\n }\n r(!1, \"Base should be between 2 and 36\");\n }, i.prototype.toNumber = function() {\n var a = this.words[0];\n return this.length === 2 ? a += this.words[1] * 67108864 : this.length === 3 && this.words[2] === 1 ? a += 4503599627370496 + this.words[1] * 67108864 : this.length > 2 && r(!1, \"Number can only safely store up to 53 bits\"), this.negative !== 0 ? -a : a;\n }, i.prototype.toJSON = function() {\n return this.toString(16, 2);\n }, o && (i.prototype.toBuffer = function(a, l) {\n return this.toArrayLike(o, a, l);\n }), i.prototype.toArray = function(a, l) {\n return this.toArrayLike(Array, a, l);\n };\n var q = function(a, l) {\n return a.allocUnsafe ? a.allocUnsafe(l) : new a(l);\n };\n i.prototype.toArrayLike = function(a, l, h) {\n this._strip();\n var y = this.byteLength(), w = h || Math.max(1, y);\n r(y <= w, \"byte array longer than desired length\"), r(w > 0, \"Requested array length <= 0\");\n var M = q(a, w), E = l === \"le\" ? \"LE\" : \"BE\";\n return this[\"_toArrayLike\" + E](M, y), M;\n }, i.prototype._toArrayLikeLE = function(a, l) {\n for (var h = 0, y = 0, w = 0, M = 0; w < this.length; w++) {\n var E = this.words[w] << M | y;\n a[h++] = E & 255, h < a.length && (a[h++] = E >> 8 & 255), h < a.length && (a[h++] = E >> 16 & 255), M === 6 ? (h < a.length && (a[h++] = E >> 24 & 255), y = 0, M = 0) : (y = E >>> 24, M += 2);\n }\n if (h < a.length)\n for (a[h++] = y; h < a.length; )\n a[h++] = 0;\n }, i.prototype._toArrayLikeBE = function(a, l) {\n for (var h = a.length - 1, y = 0, w = 0, M = 0; w < this.length; w++) {\n var E = this.words[w] << M | y;\n a[h--] = E & 255, h >= 0 && (a[h--] = E >> 8 & 255), h >= 0 && (a[h--] = E >> 16 & 255), M === 6 ? (h >= 0 && (a[h--] = E >> 24 & 255), y = 0, M = 0) : (y = E >>> 24, M += 2);\n }\n if (h >= 0)\n for (a[h--] = y; h >= 0; )\n a[h--] = 0;\n }, Math.clz32 ? i.prototype._countBits = function(a) {\n return 32 - Math.clz32(a);\n } : i.prototype._countBits = function(a) {\n var l = a, h = 0;\n return l >= 4096 && (h += 13, l >>>= 13), l >= 64 && (h += 7, l >>>= 7), l >= 8 && (h += 4, l >>>= 4), l >= 2 && (h += 2, l >>>= 2), h + l;\n }, i.prototype._zeroBits = function(a) {\n if (a === 0) return 26;\n var l = a, h = 0;\n return l & 8191 || (h += 13, l >>>= 13), l & 127 || (h += 7, l >>>= 7), l & 15 || (h += 4, l >>>= 4), l & 3 || (h += 2, l >>>= 2), l & 1 || h++, h;\n }, i.prototype.bitLength = function() {\n var a = this.words[this.length - 1], l = this._countBits(a);\n return (this.length - 1) * 26 + l;\n };\n function Fe(v) {\n for (var a = new Array(v.bitLength()), l = 0; l < a.length; l++) {\n var h = l / 26 | 0, y = l % 26;\n a[l] = v.words[h] >>> y & 1;\n }\n return a;\n }\n i.prototype.zeroBits = function() {\n if (this.isZero()) return 0;\n for (var a = 0, l = 0; l < this.length; l++) {\n var h = this._zeroBits(this.words[l]);\n if (a += h, h !== 26) break;\n }\n return a;\n }, i.prototype.byteLength = function() {\n return Math.ceil(this.bitLength() / 8);\n }, i.prototype.toTwos = function(a) {\n return this.negative !== 0 ? this.abs().inotn(a).iaddn(1) : this.clone();\n }, i.prototype.fromTwos = function(a) {\n return this.testn(a - 1) ? this.notn(a).iaddn(1).ineg() : this.clone();\n }, i.prototype.isNeg = function() {\n return this.negative !== 0;\n }, i.prototype.neg = function() {\n return this.clone().ineg();\n }, i.prototype.ineg = function() {\n return this.isZero() || (this.negative ^= 1), this;\n }, i.prototype.iuor = function(a) {\n for (; this.length < a.length; )\n this.words[this.length++] = 0;\n for (var l = 0; l < a.length; l++)\n this.words[l] = this.words[l] | a.words[l];\n return this._strip();\n }, i.prototype.ior = function(a) {\n return r((this.negative | a.negative) === 0), this.iuor(a);\n }, i.prototype.or = function(a) {\n return this.length > a.length ? this.clone().ior(a) : a.clone().ior(this);\n }, i.prototype.uor = function(a) {\n return this.length > a.length ? this.clone().iuor(a) : a.clone().iuor(this);\n }, i.prototype.iuand = function(a) {\n var l;\n this.length > a.length ? l = a : l = this;\n for (var h = 0; h < l.length; h++)\n this.words[h] = this.words[h] & a.words[h];\n return this.length = l.length, this._strip();\n }, i.prototype.iand = function(a) {\n return r((this.negative | a.negative) === 0), this.iuand(a);\n }, i.prototype.and = function(a) {\n return this.length > a.length ? this.clone().iand(a) : a.clone().iand(this);\n }, i.prototype.uand = function(a) {\n return this.length > a.length ? this.clone().iuand(a) : a.clone().iuand(this);\n }, i.prototype.iuxor = function(a) {\n var l, h;\n this.length > a.length ? (l = this, h = a) : (l = a, h = this);\n for (var y = 0; y < h.length; y++)\n this.words[y] = l.words[y] ^ h.words[y];\n if (this !== l)\n for (; y < l.length; y++)\n this.words[y] = l.words[y];\n return this.length = l.length, this._strip();\n }, i.prototype.ixor = function(a) {\n return r((this.negative | a.negative) === 0), this.iuxor(a);\n }, i.prototype.xor = function(a) {\n return this.length > a.length ? this.clone().ixor(a) : a.clone().ixor(this);\n }, i.prototype.uxor = function(a) {\n return this.length > a.length ? this.clone().iuxor(a) : a.clone().iuxor(this);\n }, i.prototype.inotn = function(a) {\n r(typeof a == \"number\" && a >= 0);\n var l = Math.ceil(a / 26) | 0, h = a % 26;\n this._expand(l), h > 0 && l--;\n for (var y = 0; y < l; y++)\n this.words[y] = ~this.words[y] & 67108863;\n return h > 0 && (this.words[y] = ~this.words[y] & 67108863 >> 26 - h), this._strip();\n }, i.prototype.notn = function(a) {\n return this.clone().inotn(a);\n }, i.prototype.setn = function(a, l) {\n r(typeof a == \"number\" && a >= 0);\n var h = a / 26 | 0, y = a % 26;\n return this._expand(h + 1), l ? this.words[h] = this.words[h] | 1 << y : this.words[h] = this.words[h] & ~(1 << y), this._strip();\n }, i.prototype.iadd = function(a) {\n var l;\n if (this.negative !== 0 && a.negative === 0)\n return this.negative = 0, l = this.isub(a), this.negative ^= 1, this._normSign();\n if (this.negative === 0 && a.negative !== 0)\n return a.negative = 0, l = this.isub(a), a.negative = 1, l._normSign();\n var h, y;\n this.length > a.length ? (h = this, y = a) : (h = a, y = this);\n for (var w = 0, M = 0; M < y.length; M++)\n l = (h.words[M] | 0) + (y.words[M] | 0) + w, this.words[M] = l & 67108863, w = l >>> 26;\n for (; w !== 0 && M < h.length; M++)\n l = (h.words[M] | 0) + w, this.words[M] = l & 67108863, w = l >>> 26;\n if (this.length = h.length, w !== 0)\n this.words[this.length] = w, this.length++;\n else if (h !== this)\n for (; M < h.length; M++)\n this.words[M] = h.words[M];\n return this;\n }, i.prototype.add = function(a) {\n var l;\n return a.negative !== 0 && this.negative === 0 ? (a.negative = 0, l = this.sub(a), a.negative ^= 1, l) : a.negative === 0 && this.negative !== 0 ? (this.negative = 0, l = a.sub(this), this.negative = 1, l) : this.length > a.length ? this.clone().iadd(a) : a.clone().iadd(this);\n }, i.prototype.isub = function(a) {\n if (a.negative !== 0) {\n a.negative = 0;\n var l = this.iadd(a);\n return a.negative = 1, l._normSign();\n } else if (this.negative !== 0)\n return this.negative = 0, this.iadd(a), this.negative = 1, this._normSign();\n var h = this.cmp(a);\n if (h === 0)\n return this.negative = 0, this.length = 1, this.words[0] = 0, this;\n var y, w;\n h > 0 ? (y = this, w = a) : (y = a, w = this);\n for (var M = 0, E = 0; E < w.length; E++)\n l = (y.words[E] | 0) - (w.words[E] | 0) + M, M = l >> 26, this.words[E] = l & 67108863;\n for (; M !== 0 && E < y.length; E++)\n l = (y.words[E] | 0) + M, M = l >> 26, this.words[E] = l & 67108863;\n if (M === 0 && E < y.length && y !== this)\n for (; E < y.length; E++)\n this.words[E] = y.words[E];\n return this.length = Math.max(this.length, E), y !== this && (this.negative = 1), this._strip();\n }, i.prototype.sub = function(a) {\n return this.clone().isub(a);\n };\n function X(v, a, l) {\n l.negative = a.negative ^ v.negative;\n var h = v.length + a.length | 0;\n l.length = h, h = h - 1 | 0;\n var y = v.words[0] | 0, w = a.words[0] | 0, M = y * w, E = M & 67108863, m = M / 67108864 | 0;\n l.words[0] = E;\n for (var u = 1; u < h; u++) {\n for (var g = m >>> 26, G = m & 67108863, f = Math.min(u, a.length - 1), A = Math.max(0, u - v.length + 1); A <= f; A++) {\n var _ = u - A | 0;\n y = v.words[_] | 0, w = a.words[A] | 0, M = y * w + G, g += M / 67108864 | 0, G = M & 67108863;\n }\n l.words[u] = G | 0, m = g | 0;\n }\n return m !== 0 ? l.words[u] = m | 0 : l.length--, l._strip();\n }\n var $e = function(a, l, h) {\n var y = a.words, w = l.words, M = h.words, E = 0, m, u, g, G = y[0] | 0, f = G & 8191, A = G >>> 13, _ = y[1] | 0, N = _ & 8191, S = _ >>> 13, L = y[2] | 0, C = L & 8191, O = L >>> 13, Pe = y[3] | 0, U = Pe & 8191, V = Pe >>> 13, St = y[4] | 0, ee = St & 8191, te = St >>> 13, kt = y[5] | 0, ne = kt & 8191, re = kt >>> 13, Pt = y[6] | 0, ie = Pt & 8191, se = Pt >>> 13, Ot = y[7] | 0, ae = Ot & 8191, oe = Ot >>> 13, Ct = y[8] | 0, ue = Ct & 8191, le = Ct >>> 13, Ut = y[9] | 0, fe = Ut & 8191, de = Ut >>> 13, Bt = w[0] | 0, he = Bt & 8191, pe = Bt >>> 13, Ft = w[1] | 0, ce = Ft & 8191, me = Ft >>> 13, Dt = w[2] | 0, ye = Dt & 8191, ge = Dt >>> 13, Lt = w[3] | 0, we = Lt & 8191, ve = Lt >>> 13, Gt = w[4] | 0, be = Gt & 8191, Me = Gt >>> 13, $t = w[5] | 0, xe = $t & 8191, Ee = $t >>> 13, qt = w[6] | 0, Te = qt & 8191, Ae = qt >>> 13, zt = w[7] | 0, _e = zt & 8191, Ne = zt >>> 13, Vt = w[8] | 0, Re = Vt & 8191, Ie = Vt >>> 13, jt = w[9] | 0, Se = jt & 8191, ke = jt >>> 13;\n h.negative = a.negative ^ l.negative, h.length = 19, m = Math.imul(f, he), u = Math.imul(f, pe), u = u + Math.imul(A, he) | 0, g = Math.imul(A, pe);\n var vt = (E + m | 0) + ((u & 8191) << 13) | 0;\n E = (g + (u >>> 13) | 0) + (vt >>> 26) | 0, vt &= 67108863, m = Math.imul(N, he), u = Math.imul(N, pe), u = u + Math.imul(S, he) | 0, g = Math.imul(S, pe), m = m + Math.imul(f, ce) | 0, u = u + Math.imul(f, me) | 0, u = u + Math.imul(A, ce) | 0, g = g + Math.imul(A, me) | 0;\n var bt = (E + m | 0) + ((u & 8191) << 13) | 0;\n E = (g + (u >>> 13) | 0) + (bt >>> 26) | 0, bt &= 67108863, m = Math.imul(C, he), u = Math.imul(C, pe), u = u + Math.imul(O, he) | 0, g = Math.imul(O, pe), m = m + Math.imul(N, ce) | 0, u = u + Math.imul(N, me) | 0, u = u + Math.imul(S, ce) | 0, g = g + Math.imul(S, me) | 0, m = m + Math.imul(f, ye) | 0, u = u + Math.imul(f, ge) | 0, u = u + Math.imul(A, ye) | 0, g = g + Math.imul(A, ge) | 0;\n var Mt = (E + m | 0) + ((u & 8191) << 13) | 0;\n E = (g + (u >>> 13) | 0) + (Mt >>> 26) | 0, Mt &= 67108863, m = Math.imul(U, he), u = Math.imul(U, pe), u = u + Math.imul(V, he) | 0, g = Math.imul(V, pe), m = m + Math.imul(C, ce) | 0, u = u + Math.imul(C, me) | 0, u = u + Math.imul(O, ce) | 0, g = g + Math.imul(O, me) | 0, m = m + Math.imul(N, ye) | 0, u = u + Math.imul(N, ge) | 0, u = u + Math.imul(S, ye) | 0, g = g + Math.imul(S, ge) | 0, m = m + Math.imul(f, we) | 0, u = u + Math.imul(f, ve) | 0, u = u + Math.imul(A, we) | 0, g = g + Math.imul(A, ve) | 0;\n var xt = (E + m | 0) + ((u & 8191) << 13) | 0;\n E = (g + (u >>> 13) | 0) + (xt >>> 26) | 0, xt &= 67108863, m = Math.imul(ee, he), u = Math.imul(ee, pe), u = u + Math.imul(te, he) | 0, g = Math.imul(te, pe), m = m + Math.imul(U, ce) | 0, u = u + Math.imul(U, me) | 0, u = u + Math.imul(V, ce) | 0, g = g + Math.imul(V, me) | 0, m = m + Math.imul(C, ye) | 0, u = u + Math.imul(C, ge) | 0, u = u + Math.imul(O, ye) | 0, g = g + Math.imul(O, ge) | 0, m = m + Math.imul(N, we) | 0, u = u + Math.imul(N, ve) | 0, u = u + Math.imul(S, we) | 0, g = g + Math.imul(S, ve) | 0, m = m + Math.imul(f, be) | 0, u = u + Math.imul(f, Me) | 0, u = u + Math.imul(A, be) | 0, g = g + Math.imul(A, Me) | 0;\n var Et = (E + m | 0) + ((u & 8191) << 13) | 0;\n E = (g + (u >>> 13) | 0) + (Et >>> 26) | 0, Et &= 67108863, m = Math.imul(ne, he), u = Math.imul(ne, pe), u = u + Math.imul(re, he) | 0, g = Math.imul(re, pe), m = m + Math.imul(ee, ce) | 0, u = u + Math.imul(ee, me) | 0, u = u + Math.imul(te, ce) | 0, g = g + Math.imul(te, me) | 0, m = m + Math.imul(U, ye) | 0, u = u + Math.imul(U, ge) | 0, u = u + Math.imul(V, ye) | 0, g = g + Math.imul(V, ge) | 0, m = m + Math.imul(C, we) | 0, u = u + Math.imul(C, ve) | 0, u = u + Math.imul(O, we) | 0, g = g + Math.imul(O, ve) | 0, m = m + Math.imul(N, be) | 0, u = u + Math.imul(N, Me) | 0, u = u + Math.imul(S, be) | 0, g = g + Math.imul(S, Me) | 0, m = m + Math.imul(f, xe) | 0, u = u + Math.imul(f, Ee) | 0, u = u + Math.imul(A, xe) | 0, g = g + Math.imul(A, Ee) | 0;\n var zn = (E + m | 0) + ((u & 8191) << 13) | 0;\n E = (g + (u >>> 13) | 0) + (zn >>> 26) | 0, zn &= 67108863, m = Math.imul(ie, he), u = Math.imul(ie, pe), u = u + Math.imul(se, he) | 0, g = Math.imul(se, pe), m = m + Math.imul(ne, ce) | 0, u = u + Math.imul(ne, me) | 0, u = u + Math.imul(re, ce) | 0, g = g + Math.imul(re, me) | 0, m = m + Math.imul(ee, ye) | 0, u = u + Math.imul(ee, ge) | 0, u = u + Math.imul(te, ye) | 0, g = g + Math.imul(te, ge) | 0, m = m + Math.imul(U, we) | 0, u = u + Math.imul(U, ve) | 0, u = u + Math.imul(V, we) | 0, g = g + Math.imul(V, ve) | 0, m = m + Math.imul(C, be) | 0, u = u + Math.imul(C, Me) | 0, u = u + Math.imul(O, be) | 0, g = g + Math.imul(O, Me) | 0, m = m + Math.imul(N, xe) | 0, u = u + Math.imul(N, Ee) | 0, u = u + Math.imul(S, xe) | 0, g = g + Math.imul(S, Ee) | 0, m = m + Math.imul(f, Te) | 0, u = u + Math.imul(f, Ae) | 0, u = u + Math.imul(A, Te) | 0, g = g + Math.imul(A, Ae) | 0;\n var Vn = (E + m | 0) + ((u & 8191) << 13) | 0;\n E = (g + (u >>> 13) | 0) + (Vn >>> 26) | 0, Vn &= 67108863, m = Math.imul(ae, he), u = Math.imul(ae, pe), u = u + Math.imul(oe, he) | 0, g = Math.imul(oe, pe), m = m + Math.imul(ie, ce) | 0, u = u + Math.imul(ie, me) | 0, u = u + Math.imul(se, ce) | 0, g = g + Math.imul(se, me) | 0, m = m + Math.imul(ne, ye) | 0, u = u + Math.imul(ne, ge) | 0, u = u + Math.imul(re, ye) | 0, g = g + Math.imul(re, ge) | 0, m = m + Math.imul(ee, we) | 0, u = u + Math.imul(ee, ve) | 0, u = u + Math.imul(te, we) | 0, g = g + Math.imul(te, ve) | 0, m = m + Math.imul(U, be) | 0, u = u + Math.imul(U, Me) | 0, u = u + Math.imul(V, be) | 0, g = g + Math.imul(V, Me) | 0, m = m + Math.imul(C, xe) | 0, u = u + Math.imul(C, Ee) | 0, u = u + Math.imul(O, xe) | 0, g = g + Math.imul(O, Ee) | 0, m = m + Math.imul(N, Te) | 0, u = u + Math.imul(N, Ae) | 0, u = u + Math.imul(S, Te) | 0, g = g + Math.imul(S, Ae) | 0, m = m + Math.imul(f, _e) | 0, u = u + Math.imul(f, Ne) | 0, u = u + Math.imul(A, _e) | 0, g = g + Math.imul(A, Ne) | 0;\n var jn = (E + m | 0) + ((u & 8191) << 13) | 0;\n E = (g + (u >>> 13) | 0) + (jn >>> 26) | 0, jn &= 67108863, m = Math.imul(ue, he), u = Math.imul(ue, pe), u = u + Math.imul(le, he) | 0, g = Math.imul(le, pe), m = m + Math.imul(ae, ce) | 0, u = u + Math.imul(ae, me) | 0, u = u + Math.imul(oe, ce) | 0, g = g + Math.imul(oe, me) | 0, m = m + Math.imul(ie, ye) | 0, u = u + Math.imul(ie, ge) | 0, u = u + Math.imul(se, ye) | 0, g = g + Math.imul(se, ge) | 0, m = m + Math.imul(ne, we) | 0, u = u + Math.imul(ne, ve) | 0, u = u + Math.imul(re, we) | 0, g = g + Math.imul(re, ve) | 0, m = m + Math.imul(ee, be) | 0, u = u + Math.imul(ee, Me) | 0, u = u + Math.imul(te, be) | 0, g = g + Math.imul(te, Me) | 0, m = m + Math.imul(U, xe) | 0, u = u + Math.imul(U, Ee) | 0, u = u + Math.imul(V, xe) | 0, g = g + Math.imul(V, Ee) | 0, m = m + Math.imul(C, Te) | 0, u = u + Math.imul(C, Ae) | 0, u = u + Math.imul(O, Te) | 0, g = g + Math.imul(O, Ae) | 0, m = m + Math.imul(N, _e) | 0, u = u + Math.imul(N, Ne) | 0, u = u + Math.imul(S, _e) | 0, g = g + Math.imul(S, Ne) | 0, m = m + Math.imul(f, Re) | 0, u = u + Math.imul(f, Ie) | 0, u = u + Math.imul(A, Re) | 0, g = g + Math.imul(A, Ie) | 0;\n var Hn = (E + m | 0) + ((u & 8191) << 13) | 0;\n E = (g + (u >>> 13) | 0) + (Hn >>> 26) | 0, Hn &= 67108863, m = Math.imul(fe, he), u = Math.imul(fe, pe), u = u + Math.imul(de, he) | 0, g = Math.imul(de, pe), m = m + Math.imul(ue, ce) | 0, u = u + Math.imul(ue, me) | 0, u = u + Math.imul(le, ce) | 0, g = g + Math.imul(le, me) | 0, m = m + Math.imul(ae, ye) | 0, u = u + Math.imul(ae, ge) | 0, u = u + Math.imul(oe, ye) | 0, g = g + Math.imul(oe, ge) | 0, m = m + Math.imul(ie, we) | 0, u = u + Math.imul(ie, ve) | 0, u = u + Math.imul(se, we) | 0, g = g + Math.imul(se, ve) | 0, m = m + Math.imul(ne, be) | 0, u = u + Math.imul(ne, Me) | 0, u = u + Math.imul(re, be) | 0, g = g + Math.imul(re, Me) | 0, m = m + Math.imul(ee, xe) | 0, u = u + Math.imul(ee, Ee) | 0, u = u + Math.imul(te, xe) | 0, g = g + Math.imul(te, Ee) | 0, m = m + Math.imul(U, Te) | 0, u = u + Math.imul(U, Ae) | 0, u = u + Math.imul(V, Te) | 0, g = g + Math.imul(V, Ae) | 0, m = m + Math.imul(C, _e) | 0, u = u + Math.imul(C, Ne) | 0, u = u + Math.imul(O, _e) | 0, g = g + Math.imul(O, Ne) | 0, m = m + Math.imul(N, Re) | 0, u = u + Math.imul(N, Ie) | 0, u = u + Math.imul(S, Re) | 0, g = g + Math.imul(S, Ie) | 0, m = m + Math.imul(f, Se) | 0, u = u + Math.imul(f, ke) | 0, u = u + Math.imul(A, Se) | 0, g = g + Math.imul(A, ke) | 0;\n var Zn = (E + m | 0) + ((u & 8191) << 13) | 0;\n E = (g + (u >>> 13) | 0) + (Zn >>> 26) | 0, Zn &= 67108863, m = Math.imul(fe, ce), u = Math.imul(fe, me), u = u + Math.imul(de, ce) | 0, g = Math.imul(de, me), m = m + Math.imul(ue, ye) | 0, u = u + Math.imul(ue, ge) | 0, u = u + Math.imul(le, ye) | 0, g = g + Math.imul(le, ge) | 0, m = m + Math.imul(ae, we) | 0, u = u + Math.imul(ae, ve) | 0, u = u + Math.imul(oe, we) | 0, g = g + Math.imul(oe, ve) | 0, m = m + Math.imul(ie, be) | 0, u = u + Math.imul(ie, Me) | 0, u = u + Math.imul(se, be) | 0, g = g + Math.imul(se, Me) | 0, m = m + Math.imul(ne, xe) | 0, u = u + Math.imul(ne, Ee) | 0, u = u + Math.imul(re, xe) | 0, g = g + Math.imul(re, Ee) | 0, m = m + Math.imul(ee, Te) | 0, u = u + Math.imul(ee, Ae) | 0, u = u + Math.imul(te, Te) | 0, g = g + Math.imul(te, Ae) | 0, m = m + Math.imul(U, _e) | 0, u = u + Math.imul(U, Ne) | 0, u = u + Math.imul(V, _e) | 0, g = g + Math.imul(V, Ne) | 0, m = m + Math.imul(C, Re) | 0, u = u + Math.imul(C, Ie) | 0, u = u + Math.imul(O, Re) | 0, g = g + Math.imul(O, Ie) | 0, m = m + Math.imul(N, Se) | 0, u = u + Math.imul(N, ke) | 0, u = u + Math.imul(S, Se) | 0, g = g + Math.imul(S, ke) | 0;\n var Wn = (E + m | 0) + ((u & 8191) << 13) | 0;\n E = (g + (u >>> 13) | 0) + (Wn >>> 26) | 0, Wn &= 67108863, m = Math.imul(fe, ye), u = Math.imul(fe, ge), u = u + Math.imul(de, ye) | 0, g = Math.imul(de, ge), m = m + Math.imul(ue, we) | 0, u = u + Math.imul(ue, ve) | 0, u = u + Math.imul(le, we) | 0, g = g + Math.imul(le, ve) | 0, m = m + Math.imul(ae, be) | 0, u = u + Math.imul(ae, Me) | 0, u = u + Math.imul(oe, be) | 0, g = g + Math.imul(oe, Me) | 0, m = m + Math.imul(ie, xe) | 0, u = u + Math.imul(ie, Ee) | 0, u = u + Math.imul(se, xe) | 0, g = g + Math.imul(se, Ee) | 0, m = m + Math.imul(ne, Te) | 0, u = u + Math.imul(ne, Ae) | 0, u = u + Math.imul(re, Te) | 0, g = g + Math.imul(re, Ae) | 0, m = m + Math.imul(ee, _e) | 0, u = u + Math.imul(ee, Ne) | 0, u = u + Math.imul(te, _e) | 0, g = g + Math.imul(te, Ne) | 0, m = m + Math.imul(U, Re) | 0, u = u + Math.imul(U, Ie) | 0, u = u + Math.imul(V, Re) | 0, g = g + Math.imul(V, Ie) | 0, m = m + Math.imul(C, Se) | 0, u = u + Math.imul(C, ke) | 0, u = u + Math.imul(O, Se) | 0, g = g + Math.imul(O, ke) | 0;\n var Jn = (E + m | 0) + ((u & 8191) << 13) | 0;\n E = (g + (u >>> 13) | 0) + (Jn >>> 26) | 0, Jn &= 67108863, m = Math.imul(fe, we), u = Math.imul(fe, ve), u = u + Math.imul(de, we) | 0, g = Math.imul(de, ve), m = m + Math.imul(ue, be) | 0, u = u + Math.imul(ue, Me) | 0, u = u + Math.imul(le, be) | 0, g = g + Math.imul(le, Me) | 0, m = m + Math.imul(ae, xe) | 0, u = u + Math.imul(ae, Ee) | 0, u = u + Math.imul(oe, xe) | 0, g = g + Math.imul(oe, Ee) | 0, m = m + Math.imul(ie, Te) | 0, u = u + Math.imul(ie, Ae) | 0, u = u + Math.imul(se, Te) | 0, g = g + Math.imul(se, Ae) | 0, m = m + Math.imul(ne, _e) | 0, u = u + Math.imul(ne, Ne) | 0, u = u + Math.imul(re, _e) | 0, g = g + Math.imul(re, Ne) | 0, m = m + Math.imul(ee, Re) | 0, u = u + Math.imul(ee, Ie) | 0, u = u + Math.imul(te, Re) | 0, g = g + Math.imul(te, Ie) | 0, m = m + Math.imul(U, Se) | 0, u = u + Math.imul(U, ke) | 0, u = u + Math.imul(V, Se) | 0, g = g + Math.imul(V, ke) | 0;\n var Kn = (E + m | 0) + ((u & 8191) << 13) | 0;\n E = (g + (u >>> 13) | 0) + (Kn >>> 26) | 0, Kn &= 67108863, m = Math.imul(fe, be), u = Math.imul(fe, Me), u = u + Math.imul(de, be) | 0, g = Math.imul(de, Me), m = m + Math.imul(ue, xe) | 0, u = u + Math.imul(ue, Ee) | 0, u = u + Math.imul(le, xe) | 0, g = g + Math.imul(le, Ee) | 0, m = m + Math.imul(ae, Te) | 0, u = u + Math.imul(ae, Ae) | 0, u = u + Math.imul(oe, Te) | 0, g = g + Math.imul(oe, Ae) | 0, m = m + Math.imul(ie, _e) | 0, u = u + Math.imul(ie, Ne) | 0, u = u + Math.imul(se, _e) | 0, g = g + Math.imul(se, Ne) | 0, m = m + Math.imul(ne, Re) | 0, u = u + Math.imul(ne, Ie) | 0, u = u + Math.imul(re, Re) | 0, g = g + Math.imul(re, Ie) | 0, m = m + Math.imul(ee, Se) | 0, u = u + Math.imul(ee, ke) | 0, u = u + Math.imul(te, Se) | 0, g = g + Math.imul(te, ke) | 0;\n var Xn = (E + m | 0) + ((u & 8191) << 13) | 0;\n E = (g + (u >>> 13) | 0) + (Xn >>> 26) | 0, Xn &= 67108863, m = Math.imul(fe, xe), u = Math.imul(fe, Ee), u = u + Math.imul(de, xe) | 0, g = Math.imul(de, Ee), m = m + Math.imul(ue, Te) | 0, u = u + Math.imul(ue, Ae) | 0, u = u + Math.imul(le, Te) | 0, g = g + Math.imul(le, Ae) | 0, m = m + Math.imul(ae, _e) | 0, u = u + Math.imul(ae, Ne) | 0, u = u + Math.imul(oe, _e) | 0, g = g + Math.imul(oe, Ne) | 0, m = m + Math.imul(ie, Re) | 0, u = u + Math.imul(ie, Ie) | 0, u = u + Math.imul(se, Re) | 0, g = g + Math.imul(se, Ie) | 0, m = m + Math.imul(ne, Se) | 0, u = u + Math.imul(ne, ke) | 0, u = u + Math.imul(re, Se) | 0, g = g + Math.imul(re, ke) | 0;\n var Yn = (E + m | 0) + ((u & 8191) << 13) | 0;\n E = (g + (u >>> 13) | 0) + (Yn >>> 26) | 0, Yn &= 67108863, m = Math.imul(fe, Te), u = Math.imul(fe, Ae), u = u + Math.imul(de, Te) | 0, g = Math.imul(de, Ae), m = m + Math.imul(ue, _e) | 0, u = u + Math.imul(ue, Ne) | 0, u = u + Math.imul(le, _e) | 0, g = g + Math.imul(le, Ne) | 0, m = m + Math.imul(ae, Re) | 0, u = u + Math.imul(ae, Ie) | 0, u = u + Math.imul(oe, Re) | 0, g = g + Math.imul(oe, Ie) | 0, m = m + Math.imul(ie, Se) | 0, u = u + Math.imul(ie, ke) | 0, u = u + Math.imul(se, Se) | 0, g = g + Math.imul(se, ke) | 0;\n var Qn = (E + m | 0) + ((u & 8191) << 13) | 0;\n E = (g + (u >>> 13) | 0) + (Qn >>> 26) | 0, Qn &= 67108863, m = Math.imul(fe, _e), u = Math.imul(fe, Ne), u = u + Math.imul(de, _e) | 0, g = Math.imul(de, Ne), m = m + Math.imul(ue, Re) | 0, u = u + Math.imul(ue, Ie) | 0, u = u + Math.imul(le, Re) | 0, g = g + Math.imul(le, Ie) | 0, m = m + Math.imul(ae, Se) | 0, u = u + Math.imul(ae, ke) | 0, u = u + Math.imul(oe, Se) | 0, g = g + Math.imul(oe, ke) | 0;\n var er = (E + m | 0) + ((u & 8191) << 13) | 0;\n E = (g + (u >>> 13) | 0) + (er >>> 26) | 0, er &= 67108863, m = Math.imul(fe, Re), u = Math.imul(fe, Ie), u = u + Math.imul(de, Re) | 0, g = Math.imul(de, Ie), m = m + Math.imul(ue, Se) | 0, u = u + Math.imul(ue, ke) | 0, u = u + Math.imul(le, Se) | 0, g = g + Math.imul(le, ke) | 0;\n var tr = (E + m | 0) + ((u & 8191) << 13) | 0;\n E = (g + (u >>> 13) | 0) + (tr >>> 26) | 0, tr &= 67108863, m = Math.imul(fe, Se), u = Math.imul(fe, ke), u = u + Math.imul(de, Se) | 0, g = Math.imul(de, ke);\n var nr = (E + m | 0) + ((u & 8191) << 13) | 0;\n return E = (g + (u >>> 13) | 0) + (nr >>> 26) | 0, nr &= 67108863, M[0] = vt, M[1] = bt, M[2] = Mt, M[3] = xt, M[4] = Et, M[5] = zn, M[6] = Vn, M[7] = jn, M[8] = Hn, M[9] = Zn, M[10] = Wn, M[11] = Jn, M[12] = Kn, M[13] = Xn, M[14] = Yn, M[15] = Qn, M[16] = er, M[17] = tr, M[18] = nr, E !== 0 && (M[19] = E, h.length++), h;\n };\n Math.imul || ($e = X);\n function J(v, a, l) {\n l.negative = a.negative ^ v.negative, l.length = v.length + a.length;\n for (var h = 0, y = 0, w = 0; w < l.length - 1; w++) {\n var M = y;\n y = 0;\n for (var E = h & 67108863, m = Math.min(w, a.length - 1), u = Math.max(0, w - v.length + 1); u <= m; u++) {\n var g = w - u, G = v.words[g] | 0, f = a.words[u] | 0, A = G * f, _ = A & 67108863;\n M = M + (A / 67108864 | 0) | 0, _ = _ + E | 0, E = _ & 67108863, M = M + (_ >>> 26) | 0, y += M >>> 26, M &= 67108863;\n }\n l.words[w] = E, h = M, M = y;\n }\n return h !== 0 ? l.words[w] = h : l.length--, l._strip();\n }\n function Ce(v, a, l) {\n return J(v, a, l);\n }\n i.prototype.mulTo = function(a, l) {\n var h, y = this.length + a.length;\n return this.length === 10 && a.length === 10 ? h = $e(this, a, l) : y < 63 ? h = X(this, a, l) : y < 1024 ? h = J(this, a, l) : h = Ce(this, a, l), h;\n }, i.prototype.mul = function(a) {\n var l = new i(null);\n return l.words = new Array(this.length + a.length), this.mulTo(a, l);\n }, i.prototype.mulf = function(a) {\n var l = new i(null);\n return l.words = new Array(this.length + a.length), Ce(this, a, l);\n }, i.prototype.imul = function(a) {\n return this.clone().mulTo(a, this);\n }, i.prototype.imuln = function(a) {\n var l = a < 0;\n l && (a = -a), r(typeof a == \"number\"), r(a < 67108864);\n for (var h = 0, y = 0; y < this.length; y++) {\n var w = (this.words[y] | 0) * a, M = (w & 67108863) + (h & 67108863);\n h >>= 26, h += w / 67108864 | 0, h += M >>> 26, this.words[y] = M & 67108863;\n }\n return h !== 0 && (this.words[y] = h, this.length++), l ? this.ineg() : this;\n }, i.prototype.muln = function(a) {\n return this.clone().imuln(a);\n }, i.prototype.sqr = function() {\n return this.mul(this);\n }, i.prototype.isqr = function() {\n return this.imul(this.clone());\n }, i.prototype.pow = function(a) {\n var l = Fe(a);\n if (l.length === 0) return new i(1);\n for (var h = this, y = 0; y < l.length && l[y] === 0; y++, h = h.sqr())\n ;\n if (++y < l.length)\n for (var w = h.sqr(); y < l.length; y++, w = w.sqr())\n l[y] !== 0 && (h = h.mul(w));\n return h;\n }, i.prototype.iushln = function(a) {\n r(typeof a == \"number\" && a >= 0);\n var l = a % 26, h = (a - l) / 26, y = 67108863 >>> 26 - l << 26 - l, w;\n if (l !== 0) {\n var M = 0;\n for (w = 0; w < this.length; w++) {\n var E = this.words[w] & y, m = (this.words[w] | 0) - E << l;\n this.words[w] = m | M, M = E >>> 26 - l;\n }\n M && (this.words[w] = M, this.length++);\n }\n if (h !== 0) {\n for (w = this.length - 1; w >= 0; w--)\n this.words[w + h] = this.words[w];\n for (w = 0; w < h; w++)\n this.words[w] = 0;\n this.length += h;\n }\n return this._strip();\n }, i.prototype.ishln = function(a) {\n return r(this.negative === 0), this.iushln(a);\n }, i.prototype.iushrn = function(a, l, h) {\n r(typeof a == \"number\" && a >= 0);\n var y;\n l ? y = (l - l % 26) / 26 : y = 0;\n var w = a % 26, M = Math.min((a - w) / 26, this.length), E = 67108863 ^ 67108863 >>> w << w, m = h;\n if (y -= M, y = Math.max(0, y), m) {\n for (var u = 0; u < M; u++)\n m.words[u] = this.words[u];\n m.length = M;\n }\n if (M !== 0) if (this.length > M)\n for (this.length -= M, u = 0; u < this.length; u++)\n this.words[u] = this.words[u + M];\n else\n this.words[0] = 0, this.length = 1;\n var g = 0;\n for (u = this.length - 1; u >= 0 && (g !== 0 || u >= y); u--) {\n var G = this.words[u] | 0;\n this.words[u] = g << 26 - w | G >>> w, g = G & E;\n }\n return m && g !== 0 && (m.words[m.length++] = g), this.length === 0 && (this.words[0] = 0, this.length = 1), this._strip();\n }, i.prototype.ishrn = function(a, l, h) {\n return r(this.negative === 0), this.iushrn(a, l, h);\n }, i.prototype.shln = function(a) {\n return this.clone().ishln(a);\n }, i.prototype.ushln = function(a) {\n return this.clone().iushln(a);\n }, i.prototype.shrn = function(a) {\n return this.clone().ishrn(a);\n }, i.prototype.ushrn = function(a) {\n return this.clone().iushrn(a);\n }, i.prototype.testn = function(a) {\n r(typeof a == \"number\" && a >= 0);\n var l = a % 26, h = (a - l) / 26, y = 1 << l;\n if (this.length <= h) return !1;\n var w = this.words[h];\n return !!(w & y);\n }, i.prototype.imaskn = function(a) {\n r(typeof a == \"number\" && a >= 0);\n var l = a % 26, h = (a - l) / 26;\n if (r(this.negative === 0, \"imaskn works only with positive numbers\"), this.length <= h)\n return this;\n if (l !== 0 && h++, this.length = Math.min(h, this.length), l !== 0) {\n var y = 67108863 ^ 67108863 >>> l << l;\n this.words[this.length - 1] &= y;\n }\n return this._strip();\n }, i.prototype.maskn = function(a) {\n return this.clone().imaskn(a);\n }, i.prototype.iaddn = function(a) {\n return r(typeof a == \"number\"), r(a < 67108864), a < 0 ? this.isubn(-a) : this.negative !== 0 ? this.length === 1 && (this.words[0] | 0) <= a ? (this.words[0] = a - (this.words[0] | 0), this.negative = 0, this) : (this.negative = 0, this.isubn(a), this.negative = 1, this) : this._iaddn(a);\n }, i.prototype._iaddn = function(a) {\n this.words[0] += a;\n for (var l = 0; l < this.length && this.words[l] >= 67108864; l++)\n this.words[l] -= 67108864, l === this.length - 1 ? this.words[l + 1] = 1 : this.words[l + 1]++;\n return this.length = Math.max(this.length, l + 1), this;\n }, i.prototype.isubn = function(a) {\n if (r(typeof a == \"number\"), r(a < 67108864), a < 0) return this.iaddn(-a);\n if (this.negative !== 0)\n return this.negative = 0, this.iaddn(a), this.negative = 1, this;\n if (this.words[0] -= a, this.length === 1 && this.words[0] < 0)\n this.words[0] = -this.words[0], this.negative = 1;\n else\n for (var l = 0; l < this.length && this.words[l] < 0; l++)\n this.words[l] += 67108864, this.words[l + 1] -= 1;\n return this._strip();\n }, i.prototype.addn = function(a) {\n return this.clone().iaddn(a);\n }, i.prototype.subn = function(a) {\n return this.clone().isubn(a);\n }, i.prototype.iabs = function() {\n return this.negative = 0, this;\n }, i.prototype.abs = function() {\n return this.clone().iabs();\n }, i.prototype._ishlnsubmul = function(a, l, h) {\n var y = a.length + h, w;\n this._expand(y);\n var M, E = 0;\n for (w = 0; w < a.length; w++) {\n M = (this.words[w + h] | 0) + E;\n var m = (a.words[w] | 0) * l;\n M -= m & 67108863, E = (M >> 26) - (m / 67108864 | 0), this.words[w + h] = M & 67108863;\n }\n for (; w < this.length - h; w++)\n M = (this.words[w + h] | 0) + E, E = M >> 26, this.words[w + h] = M & 67108863;\n if (E === 0) return this._strip();\n for (r(E === -1), E = 0, w = 0; w < this.length; w++)\n M = -(this.words[w] | 0) + E, E = M >> 26, this.words[w] = M & 67108863;\n return this.negative = 1, this._strip();\n }, i.prototype._wordDiv = function(a, l) {\n var h = this.length - a.length, y = this.clone(), w = a, M = w.words[w.length - 1] | 0, E = this._countBits(M);\n h = 26 - E, h !== 0 && (w = w.ushln(h), y.iushln(h), M = w.words[w.length - 1] | 0);\n var m = y.length - w.length, u;\n if (l !== \"mod\") {\n u = new i(null), u.length = m + 1, u.words = new Array(u.length);\n for (var g = 0; g < u.length; g++)\n u.words[g] = 0;\n }\n var G = y.clone()._ishlnsubmul(w, 1, m);\n G.negative === 0 && (y = G, u && (u.words[m] = 1));\n for (var f = m - 1; f >= 0; f--) {\n var A = (y.words[w.length + f] | 0) * 67108864 + (y.words[w.length + f - 1] | 0);\n for (A = Math.min(A / M | 0, 67108863), y._ishlnsubmul(w, A, f); y.negative !== 0; )\n A--, y.negative = 0, y._ishlnsubmul(w, 1, f), y.isZero() || (y.negative ^= 1);\n u && (u.words[f] = A);\n }\n return u && u._strip(), y._strip(), l !== \"div\" && h !== 0 && y.iushrn(h), {\n div: u || null,\n mod: y\n };\n }, i.prototype.divmod = function(a, l, h) {\n if (r(!a.isZero()), this.isZero())\n return {\n div: new i(0),\n mod: new i(0)\n };\n var y, w, M;\n return this.negative !== 0 && a.negative === 0 ? (M = this.neg().divmod(a, l), l !== \"mod\" && (y = M.div.neg()), l !== \"div\" && (w = M.mod.neg(), h && w.negative !== 0 && w.iadd(a)), {\n div: y,\n mod: w\n }) : this.negative === 0 && a.negative !== 0 ? (M = this.divmod(a.neg(), l), l !== \"mod\" && (y = M.div.neg()), {\n div: y,\n mod: M.mod\n }) : this.negative & a.negative ? (M = this.neg().divmod(a.neg(), l), l !== \"div\" && (w = M.mod.neg(), h && w.negative !== 0 && w.isub(a)), {\n div: M.div,\n mod: w\n }) : a.length > this.length || this.cmp(a) < 0 ? {\n div: new i(0),\n mod: this\n } : a.length === 1 ? l === \"div\" ? {\n div: this.divn(a.words[0]),\n mod: null\n } : l === \"mod\" ? {\n div: null,\n mod: new i(this.modrn(a.words[0]))\n } : {\n div: this.divn(a.words[0]),\n mod: new i(this.modrn(a.words[0]))\n } : this._wordDiv(a, l);\n }, i.prototype.div = function(a) {\n return this.divmod(a, \"div\", !1).div;\n }, i.prototype.mod = function(a) {\n return this.divmod(a, \"mod\", !1).mod;\n }, i.prototype.umod = function(a) {\n return this.divmod(a, \"mod\", !0).mod;\n }, i.prototype.divRound = function(a) {\n var l = this.divmod(a);\n if (l.mod.isZero()) return l.div;\n var h = l.div.negative !== 0 ? l.mod.isub(a) : l.mod, y = a.ushrn(1), w = a.andln(1), M = h.cmp(y);\n return M < 0 || w === 1 && M === 0 ? l.div : l.div.negative !== 0 ? l.div.isubn(1) : l.div.iaddn(1);\n }, i.prototype.modrn = function(a) {\n var l = a < 0;\n l && (a = -a), r(a <= 67108863);\n for (var h = (1 << 26) % a, y = 0, w = this.length - 1; w >= 0; w--)\n y = (h * y + (this.words[w] | 0)) % a;\n return l ? -y : y;\n }, i.prototype.modn = function(a) {\n return this.modrn(a);\n }, i.prototype.idivn = function(a) {\n var l = a < 0;\n l && (a = -a), r(a <= 67108863);\n for (var h = 0, y = this.length - 1; y >= 0; y--) {\n var w = (this.words[y] | 0) + h * 67108864;\n this.words[y] = w / a | 0, h = w % a;\n }\n return this._strip(), l ? this.ineg() : this;\n }, i.prototype.divn = function(a) {\n return this.clone().idivn(a);\n }, i.prototype.egcd = function(a) {\n r(a.negative === 0), r(!a.isZero());\n var l = this, h = a.clone();\n l.negative !== 0 ? l = l.umod(a) : l = l.clone();\n for (var y = new i(1), w = new i(0), M = new i(0), E = new i(1), m = 0; l.isEven() && h.isEven(); )\n l.iushrn(1), h.iushrn(1), ++m;\n for (var u = h.clone(), g = l.clone(); !l.isZero(); ) {\n for (var G = 0, f = 1; !(l.words[0] & f) && G < 26; ++G, f <<= 1) ;\n if (G > 0)\n for (l.iushrn(G); G-- > 0; )\n (y.isOdd() || w.isOdd()) && (y.iadd(u), w.isub(g)), y.iushrn(1), w.iushrn(1);\n for (var A = 0, _ = 1; !(h.words[0] & _) && A < 26; ++A, _ <<= 1) ;\n if (A > 0)\n for (h.iushrn(A); A-- > 0; )\n (M.isOdd() || E.isOdd()) && (M.iadd(u), E.isub(g)), M.iushrn(1), E.iushrn(1);\n l.cmp(h) >= 0 ? (l.isub(h), y.isub(M), w.isub(E)) : (h.isub(l), M.isub(y), E.isub(w));\n }\n return {\n a: M,\n b: E,\n gcd: h.iushln(m)\n };\n }, i.prototype._invmp = function(a) {\n r(a.negative === 0), r(!a.isZero());\n var l = this, h = a.clone();\n l.negative !== 0 ? l = l.umod(a) : l = l.clone();\n for (var y = new i(1), w = new i(0), M = h.clone(); l.cmpn(1) > 0 && h.cmpn(1) > 0; ) {\n for (var E = 0, m = 1; !(l.words[0] & m) && E < 26; ++E, m <<= 1) ;\n if (E > 0)\n for (l.iushrn(E); E-- > 0; )\n y.isOdd() && y.iadd(M), y.iushrn(1);\n for (var u = 0, g = 1; !(h.words[0] & g) && u < 26; ++u, g <<= 1) ;\n if (u > 0)\n for (h.iushrn(u); u-- > 0; )\n w.isOdd() && w.iadd(M), w.iushrn(1);\n l.cmp(h) >= 0 ? (l.isub(h), y.isub(w)) : (h.isub(l), w.isub(y));\n }\n var G;\n return l.cmpn(1) === 0 ? G = y : G = w, G.cmpn(0) < 0 && G.iadd(a), G;\n }, i.prototype.gcd = function(a) {\n if (this.isZero()) return a.abs();\n if (a.isZero()) return this.abs();\n var l = this.clone(), h = a.clone();\n l.negative = 0, h.negative = 0;\n for (var y = 0; l.isEven() && h.isEven(); y++)\n l.iushrn(1), h.iushrn(1);\n do {\n for (; l.isEven(); )\n l.iushrn(1);\n for (; h.isEven(); )\n h.iushrn(1);\n var w = l.cmp(h);\n if (w < 0) {\n var M = l;\n l = h, h = M;\n } else if (w === 0 || h.cmpn(1) === 0)\n break;\n l.isub(h);\n } while (!0);\n return h.iushln(y);\n }, i.prototype.invm = function(a) {\n return this.egcd(a).a.umod(a);\n }, i.prototype.isEven = function() {\n return (this.words[0] & 1) === 0;\n }, i.prototype.isOdd = function() {\n return (this.words[0] & 1) === 1;\n }, i.prototype.andln = function(a) {\n return this.words[0] & a;\n }, i.prototype.bincn = function(a) {\n r(typeof a == \"number\");\n var l = a % 26, h = (a - l) / 26, y = 1 << l;\n if (this.length <= h)\n return this._expand(h + 1), this.words[h] |= y, this;\n for (var w = y, M = h; w !== 0 && M < this.length; M++) {\n var E = this.words[M] | 0;\n E += w, w = E >>> 26, E &= 67108863, this.words[M] = E;\n }\n return w !== 0 && (this.words[M] = w, this.length++), this;\n }, i.prototype.isZero = function() {\n return this.length === 1 && this.words[0] === 0;\n }, i.prototype.cmpn = function(a) {\n var l = a < 0;\n if (this.negative !== 0 && !l) return -1;\n if (this.negative === 0 && l) return 1;\n this._strip();\n var h;\n if (this.length > 1)\n h = 1;\n else {\n l && (a = -a), r(a <= 67108863, \"Number is too big\");\n var y = this.words[0] | 0;\n h = y === a ? 0 : y < a ? -1 : 1;\n }\n return this.negative !== 0 ? -h | 0 : h;\n }, i.prototype.cmp = function(a) {\n if (this.negative !== 0 && a.negative === 0) return -1;\n if (this.negative === 0 && a.negative !== 0) return 1;\n var l = this.ucmp(a);\n return this.negative !== 0 ? -l | 0 : l;\n }, i.prototype.ucmp = function(a) {\n if (this.length > a.length) return 1;\n if (this.length < a.length) return -1;\n for (var l = 0, h = this.length - 1; h >= 0; h--) {\n var y = this.words[h] | 0, w = a.words[h] | 0;\n if (y !== w) {\n y < w ? l = -1 : y > w && (l = 1);\n break;\n }\n }\n return l;\n }, i.prototype.gtn = function(a) {\n return this.cmpn(a) === 1;\n }, i.prototype.gt = function(a) {\n return this.cmp(a) === 1;\n }, i.prototype.gten = function(a) {\n return this.cmpn(a) >= 0;\n }, i.prototype.gte = function(a) {\n return this.cmp(a) >= 0;\n }, i.prototype.ltn = function(a) {\n return this.cmpn(a) === -1;\n }, i.prototype.lt = function(a) {\n return this.cmp(a) === -1;\n }, i.prototype.lten = function(a) {\n return this.cmpn(a) <= 0;\n }, i.prototype.lte = function(a) {\n return this.cmp(a) <= 0;\n }, i.prototype.eqn = function(a) {\n return this.cmpn(a) === 0;\n }, i.prototype.eq = function(a) {\n return this.cmp(a) === 0;\n }, i.red = function(a) {\n return new Z(a);\n }, i.prototype.toRed = function(a) {\n return r(!this.red, \"Already a number in reduction context\"), r(this.negative === 0, \"red works only with positives\"), a.convertTo(this)._forceRed(a);\n }, i.prototype.fromRed = function() {\n return r(this.red, \"fromRed works only with numbers in reduction context\"), this.red.convertFrom(this);\n }, i.prototype._forceRed = function(a) {\n return this.red = a, this;\n }, i.prototype.forceRed = function(a) {\n return r(!this.red, \"Already a number in reduction context\"), this._forceRed(a);\n }, i.prototype.redAdd = function(a) {\n return r(this.red, \"redAdd works only with red numbers\"), this.red.add(this, a);\n }, i.prototype.redIAdd = function(a) {\n return r(this.red, \"redIAdd works only with red numbers\"), this.red.iadd(this, a);\n }, i.prototype.redSub = function(a) {\n return r(this.red, \"redSub works only with red numbers\"), this.red.sub(this, a);\n }, i.prototype.redISub = function(a) {\n return r(this.red, \"redISub works only with red numbers\"), this.red.isub(this, a);\n }, i.prototype.redShl = function(a) {\n return r(this.red, \"redShl works only with red numbers\"), this.red.shl(this, a);\n }, i.prototype.redMul = function(a) {\n return r(this.red, \"redMul works only with red numbers\"), this.red._verify2(this, a), this.red.mul(this, a);\n }, i.prototype.redIMul = function(a) {\n return r(this.red, \"redMul works only with red numbers\"), this.red._verify2(this, a), this.red.imul(this, a);\n }, i.prototype.redSqr = function() {\n return r(this.red, \"redSqr works only with red numbers\"), this.red._verify1(this), this.red.sqr(this);\n }, i.prototype.redISqr = function() {\n return r(this.red, \"redISqr works only with red numbers\"), this.red._verify1(this), this.red.isqr(this);\n }, i.prototype.redSqrt = function() {\n return r(this.red, \"redSqrt works only with red numbers\"), this.red._verify1(this), this.red.sqrt(this);\n }, i.prototype.redInvm = function() {\n return r(this.red, \"redInvm works only with red numbers\"), this.red._verify1(this), this.red.invm(this);\n }, i.prototype.redNeg = function() {\n return r(this.red, \"redNeg works only with red numbers\"), this.red._verify1(this), this.red.neg(this);\n }, i.prototype.redPow = function(a) {\n return r(this.red && !a.red, \"redPow(normalNum)\"), this.red._verify1(this), this.red.pow(this, a);\n };\n var et = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n function Q(v, a) {\n this.name = v, this.p = new i(a, 16), this.n = this.p.bitLength(), this.k = new i(1).iushln(this.n).isub(this.p), this.tmp = this._tmp();\n }\n Q.prototype._tmp = function() {\n var a = new i(null);\n return a.words = new Array(Math.ceil(this.n / 13)), a;\n }, Q.prototype.ireduce = function(a) {\n var l = a, h;\n do\n this.split(l, this.tmp), l = this.imulK(l), l = l.iadd(this.tmp), h = l.bitLength();\n while (h > this.n);\n var y = h < this.n ? -1 : l.ucmp(this.p);\n return y === 0 ? (l.words[0] = 0, l.length = 1) : y > 0 ? l.isub(this.p) : l.strip !== void 0 ? l.strip() : l._strip(), l;\n }, Q.prototype.split = function(a, l) {\n a.iushrn(this.n, 0, l);\n }, Q.prototype.imulK = function(a) {\n return a.imul(this.k);\n };\n function tt() {\n Q.call(\n this,\n \"k256\",\n \"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f\"\n );\n }\n s(tt, Q), tt.prototype.split = function(a, l) {\n for (var h = 4194303, y = Math.min(a.length, 9), w = 0; w < y; w++)\n l.words[w] = a.words[w];\n if (l.length = y, a.length <= 9) {\n a.words[0] = 0, a.length = 1;\n return;\n }\n var M = a.words[9];\n for (l.words[l.length++] = M & h, w = 10; w < a.length; w++) {\n var E = a.words[w] | 0;\n a.words[w - 10] = (E & h) << 4 | M >>> 22, M = E;\n }\n M >>>= 22, a.words[w - 10] = M, M === 0 && a.length > 10 ? a.length -= 10 : a.length -= 9;\n }, tt.prototype.imulK = function(a) {\n a.words[a.length] = 0, a.words[a.length + 1] = 0, a.length += 2;\n for (var l = 0, h = 0; h < a.length; h++) {\n var y = a.words[h] | 0;\n l += y * 977, a.words[h] = l & 67108863, l = y * 64 + (l / 67108864 | 0);\n }\n return a.words[a.length - 1] === 0 && (a.length--, a.words[a.length - 1] === 0 && a.length--), a;\n };\n function Xe() {\n Q.call(\n this,\n \"p224\",\n \"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001\"\n );\n }\n s(Xe, Q);\n function nt() {\n Q.call(\n this,\n \"p192\",\n \"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff\"\n );\n }\n s(nt, Q);\n function dt() {\n Q.call(\n this,\n \"25519\",\n \"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed\"\n );\n }\n s(dt, Q), dt.prototype.imulK = function(a) {\n for (var l = 0, h = 0; h < a.length; h++) {\n var y = (a.words[h] | 0) * 19 + l, w = y & 67108863;\n y >>>= 26, a.words[h] = w, l = y;\n }\n return l !== 0 && (a.words[a.length++] = l), a;\n }, i._prime = function(a) {\n if (et[a]) return et[a];\n var l;\n if (a === \"k256\")\n l = new tt();\n else if (a === \"p224\")\n l = new Xe();\n else if (a === \"p192\")\n l = new nt();\n else if (a === \"p25519\")\n l = new dt();\n else\n throw new Error(\"Unknown prime \" + a);\n return et[a] = l, l;\n };\n function Z(v) {\n if (typeof v == \"string\") {\n var a = i._prime(v);\n this.m = a.p, this.prime = a;\n } else\n r(v.gtn(1), \"modulus must be greater than 1\"), this.m = v, this.prime = null;\n }\n Z.prototype._verify1 = function(a) {\n r(a.negative === 0, \"red works only with positives\"), r(a.red, \"red works only with red numbers\");\n }, Z.prototype._verify2 = function(a, l) {\n r((a.negative | l.negative) === 0, \"red works only with positives\"), r(\n a.red && a.red === l.red,\n \"red works only with red numbers\"\n );\n }, Z.prototype.imod = function(a) {\n return this.prime ? this.prime.ireduce(a)._forceRed(this) : (b(a, a.umod(this.m)._forceRed(this)), a);\n }, Z.prototype.neg = function(a) {\n return a.isZero() ? a.clone() : this.m.sub(a)._forceRed(this);\n }, Z.prototype.add = function(a, l) {\n this._verify2(a, l);\n var h = a.add(l);\n return h.cmp(this.m) >= 0 && h.isub(this.m), h._forceRed(this);\n }, Z.prototype.iadd = function(a, l) {\n this._verify2(a, l);\n var h = a.iadd(l);\n return h.cmp(this.m) >= 0 && h.isub(this.m), h;\n }, Z.prototype.sub = function(a, l) {\n this._verify2(a, l);\n var h = a.sub(l);\n return h.cmpn(0) < 0 && h.iadd(this.m), h._forceRed(this);\n }, Z.prototype.isub = function(a, l) {\n this._verify2(a, l);\n var h = a.isub(l);\n return h.cmpn(0) < 0 && h.iadd(this.m), h;\n }, Z.prototype.shl = function(a, l) {\n return this._verify1(a), this.imod(a.ushln(l));\n }, Z.prototype.imul = function(a, l) {\n return this._verify2(a, l), this.imod(a.imul(l));\n }, Z.prototype.mul = function(a, l) {\n return this._verify2(a, l), this.imod(a.mul(l));\n }, Z.prototype.isqr = function(a) {\n return this.imul(a, a.clone());\n }, Z.prototype.sqr = function(a) {\n return this.mul(a, a);\n }, Z.prototype.sqrt = function(a) {\n if (a.isZero()) return a.clone();\n var l = this.m.andln(3);\n if (r(l % 2 === 1), l === 3) {\n var h = this.m.add(new i(1)).iushrn(2);\n return this.pow(a, h);\n }\n for (var y = this.m.subn(1), w = 0; !y.isZero() && y.andln(1) === 0; )\n w++, y.iushrn(1);\n r(!y.isZero());\n var M = new i(1).toRed(this), E = M.redNeg(), m = this.m.subn(1).iushrn(1), u = this.m.bitLength();\n for (u = new i(2 * u * u).toRed(this); this.pow(u, m).cmp(E) !== 0; )\n u.redIAdd(E);\n for (var g = this.pow(u, y), G = this.pow(a, y.addn(1).iushrn(1)), f = this.pow(a, y), A = w; f.cmp(M) !== 0; ) {\n for (var _ = f, N = 0; _.cmp(M) !== 0; N++)\n _ = _.redSqr();\n r(N < A);\n var S = this.pow(g, new i(1).iushln(A - N - 1));\n G = G.redMul(S), g = S.redSqr(), f = f.redMul(g), A = N;\n }\n return G;\n }, Z.prototype.invm = function(a) {\n var l = a._invmp(this.m);\n return l.negative !== 0 ? (l.negative = 0, this.imod(l).redNeg()) : this.imod(l);\n }, Z.prototype.pow = function(a, l) {\n if (l.isZero()) return new i(1).toRed(this);\n if (l.cmpn(1) === 0) return a.clone();\n var h = 4, y = new Array(1 << h);\n y[0] = new i(1).toRed(this), y[1] = a;\n for (var w = 2; w < y.length; w++)\n y[w] = this.mul(y[w - 1], a);\n var M = y[0], E = 0, m = 0, u = l.bitLength() % 26;\n for (u === 0 && (u = 26), w = l.length - 1; w >= 0; w--) {\n for (var g = l.words[w], G = u - 1; G >= 0; G--) {\n var f = g >> G & 1;\n if (M !== y[0] && (M = this.sqr(M)), f === 0 && E === 0) {\n m = 0;\n continue;\n }\n E <<= 1, E |= f, m++, !(m !== h && (w !== 0 || G !== 0)) && (M = this.mul(M, y[E]), m = 0, E = 0);\n }\n u = 26;\n }\n return M;\n }, Z.prototype.convertTo = function(a) {\n var l = a.umod(this.m);\n return l === a ? l.clone() : l;\n }, Z.prototype.convertFrom = function(a) {\n var l = a.clone();\n return l.red = null, l;\n }, i.mont = function(a) {\n return new Ze(a);\n };\n function Ze(v) {\n Z.call(this, v), this.shift = this.m.bitLength(), this.shift % 26 !== 0 && (this.shift += 26 - this.shift % 26), this.r = new i(1).iushln(this.shift), this.r2 = this.imod(this.r.sqr()), this.rinv = this.r._invmp(this.m), this.minv = this.rinv.mul(this.r).isubn(1).div(this.m), this.minv = this.minv.umod(this.r), this.minv = this.r.sub(this.minv);\n }\n s(Ze, Z), Ze.prototype.convertTo = function(a) {\n return this.imod(a.ushln(this.shift));\n }, Ze.prototype.convertFrom = function(a) {\n var l = this.imod(a.mul(this.rinv));\n return l.red = null, l;\n }, Ze.prototype.imul = function(a, l) {\n if (a.isZero() || l.isZero())\n return a.words[0] = 0, a.length = 1, a;\n var h = a.imul(l), y = h.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m), w = h.isub(y).iushrn(this.shift), M = w;\n return w.cmp(this.m) >= 0 ? M = w.isub(this.m) : w.cmpn(0) < 0 && (M = w.iadd(this.m)), M._forceRed(this);\n }, Ze.prototype.mul = function(a, l) {\n if (a.isZero() || l.isZero()) return new i(0)._forceRed(this);\n var h = a.mul(l), y = h.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m), w = h.isub(y).iushrn(this.shift), M = w;\n return w.cmp(this.m) >= 0 ? M = w.isub(this.m) : w.cmpn(0) < 0 && (M = w.iadd(this.m)), M._forceRed(this);\n }, Ze.prototype.invm = function(a) {\n var l = this.imod(a._invmp(this.m).mul(this.r2));\n return l._forceRed(this);\n };\n })(n, Hr);\n})(mr);\nvar Vi = mr.exports;\nconst ji = /* @__PURE__ */ Zr(Vi), Kr = \"bignumber/5.8.0\";\nvar In = ji.BN;\nconst pt = new k(Kr), sr = {}, Rr = 9007199254740991;\nfunction Hi(n) {\n return n != null && (j.isBigNumber(n) || typeof n == \"number\" && n % 1 === 0 || typeof n == \"string\" && !!n.match(/^-?[0-9]+$/) || He(n) || typeof n == \"bigint\" || rn(n));\n}\nlet Ir = !1;\nclass j {\n constructor(e, t) {\n e !== sr && pt.throwError(\"cannot call constructor directly; use BigNumber.from\", k.errors.UNSUPPORTED_OPERATION, {\n operation: \"new (BigNumber)\"\n }), this._hex = t, this._isBigNumber = !0, Object.freeze(this);\n }\n fromTwos(e) {\n return We(H(this).fromTwos(e));\n }\n toTwos(e) {\n return We(H(this).toTwos(e));\n }\n abs() {\n return this._hex[0] === \"-\" ? j.from(this._hex.substring(1)) : this;\n }\n add(e) {\n return We(H(this).add(H(e)));\n }\n sub(e) {\n return We(H(this).sub(H(e)));\n }\n div(e) {\n return j.from(e).isZero() && Ye(\"division-by-zero\", \"div\"), We(H(this).div(H(e)));\n }\n mul(e) {\n return We(H(this).mul(H(e)));\n }\n mod(e) {\n const t = H(e);\n return t.isNeg() && Ye(\"division-by-zero\", \"mod\"), We(H(this).umod(t));\n }\n pow(e) {\n const t = H(e);\n return t.isNeg() && Ye(\"negative-power\", \"pow\"), We(H(this).pow(t));\n }\n and(e) {\n const t = H(e);\n return (this.isNegative() || t.isNeg()) && Ye(\"unbound-bitwise-result\", \"and\"), We(H(this).and(t));\n }\n or(e) {\n const t = H(e);\n return (this.isNegative() || t.isNeg()) && Ye(\"unbound-bitwise-result\", \"or\"), We(H(this).or(t));\n }\n xor(e) {\n const t = H(e);\n return (this.isNegative() || t.isNeg()) && Ye(\"unbound-bitwise-result\", \"xor\"), We(H(this).xor(t));\n }\n mask(e) {\n return (this.isNegative() || e < 0) && Ye(\"negative-width\", \"mask\"), We(H(this).maskn(e));\n }\n shl(e) {\n return (this.isNegative() || e < 0) && Ye(\"negative-width\", \"shl\"), We(H(this).shln(e));\n }\n shr(e) {\n return (this.isNegative() || e < 0) && Ye(\"negative-width\", \"shr\"), We(H(this).shrn(e));\n }\n eq(e) {\n return H(this).eq(H(e));\n }\n lt(e) {\n return H(this).lt(H(e));\n }\n lte(e) {\n return H(this).lte(H(e));\n }\n gt(e) {\n return H(this).gt(H(e));\n }\n gte(e) {\n return H(this).gte(H(e));\n }\n isNegative() {\n return this._hex[0] === \"-\";\n }\n isZero() {\n return H(this).isZero();\n }\n toNumber() {\n try {\n return H(this).toNumber();\n } catch {\n Ye(\"overflow\", \"toNumber\", this.toString());\n }\n return null;\n }\n toBigInt() {\n try {\n return BigInt(this.toString());\n } catch {\n }\n return pt.throwError(\"this platform does not support BigInt\", k.errors.UNSUPPORTED_OPERATION, {\n value: this.toString()\n });\n }\n toString() {\n return arguments.length > 0 && (arguments[0] === 10 ? Ir || (Ir = !0, pt.warn(\"BigNumber.toString does not accept any parameters; base-10 is assumed\")) : arguments[0] === 16 ? pt.throwError(\"BigNumber.toString does not accept any parameters; use bigNumber.toHexString()\", k.errors.UNEXPECTED_ARGUMENT, {}) : pt.throwError(\"BigNumber.toString does not accept parameters\", k.errors.UNEXPECTED_ARGUMENT, {})), H(this).toString(10);\n }\n toHexString() {\n return this._hex;\n }\n toJSON(e) {\n return { type: \"BigNumber\", hex: this.toHexString() };\n }\n static from(e) {\n if (e instanceof j)\n return e;\n if (typeof e == \"string\")\n return e.match(/^-?0x[0-9a-f]+$/i) ? new j(sr, fn(e)) : e.match(/^-?[0-9]+$/) ? new j(sr, fn(new In(e))) : pt.throwArgumentError(\"invalid BigNumber string\", \"value\", e);\n if (typeof e == \"number\")\n return e % 1 && Ye(\"underflow\", \"BigNumber.from\", e), (e >= Rr || e <= -Rr) && Ye(\"overflow\", \"BigNumber.from\", e), j.from(String(e));\n const t = e;\n if (typeof t == \"bigint\")\n return j.from(t.toString());\n if (rn(t))\n return j.from(Ue(t));\n if (t)\n if (t.toHexString) {\n const r = t.toHexString();\n if (typeof r == \"string\")\n return j.from(r);\n } else {\n let r = t._hex;\n if (r == null && t.type === \"BigNumber\" && (r = t.hex), typeof r == \"string\" && (He(r) || r[0] === \"-\" && He(r.substring(1))))\n return j.from(r);\n }\n return pt.throwArgumentError(\"invalid BigNumber value\", \"value\", e);\n }\n static isBigNumber(e) {\n return !!(e && e._isBigNumber);\n }\n}\nfunction fn(n) {\n if (typeof n != \"string\")\n return fn(n.toString(16));\n if (n[0] === \"-\")\n return n = n.substring(1), n[0] === \"-\" && pt.throwArgumentError(\"invalid hex\", \"value\", n), n = fn(n), n === \"0x00\" ? n : \"-\" + n;\n if (n.substring(0, 2) !== \"0x\" && (n = \"0x\" + n), n === \"0x\")\n return \"0x00\";\n for (n.length % 2 && (n = \"0x0\" + n.substring(2)); n.length > 4 && n.substring(0, 4) === \"0x00\"; )\n n = \"0x\" + n.substring(4);\n return n;\n}\nfunction We(n) {\n return j.from(fn(n));\n}\nfunction H(n) {\n const e = j.from(n).toHexString();\n return e[0] === \"-\" ? new In(\"-\" + e.substring(3), 16) : new In(e.substring(2), 16);\n}\nfunction Ye(n, e, t) {\n const r = { fault: n, operation: e };\n return t != null && (r.value = t), pt.throwError(n, k.errors.NUMERIC_FAULT, r);\n}\nfunction Zi(n) {\n return new In(n, 36).toString(16);\n}\nconst je = new k(Kr), un = {}, Xr = j.from(0), Yr = j.from(-1);\nfunction Qr(n, e, t, r) {\n const s = { fault: e, operation: t };\n return r !== void 0 && (s.value = r), je.throwError(n, k.errors.NUMERIC_FAULT, s);\n}\nlet ln = \"0\";\nfor (; ln.length < 256; )\n ln += ln;\nfunction yr(n) {\n if (typeof n != \"number\")\n try {\n n = j.from(n).toNumber();\n } catch {\n }\n return typeof n == \"number\" && n >= 0 && n <= 256 && !(n % 1) ? \"1\" + ln.substring(0, n) : je.throwArgumentError(\"invalid decimal size\", \"decimals\", n);\n}\nfunction Tn(n, e) {\n e == null && (e = 0);\n const t = yr(e);\n n = j.from(n);\n const r = n.lt(Xr);\n r && (n = n.mul(Yr));\n let s = n.mod(t).toString();\n for (; s.length < t.length - 1; )\n s = \"0\" + s;\n s = s.match(/^([0-9]*[1-9]|0)(0*)/)[1];\n const i = n.div(t).toString();\n return t.length === 1 ? n = i : n = i + \".\" + s, r && (n = \"-\" + n), n;\n}\nfunction ht(n, e) {\n e == null && (e = 0);\n const t = yr(e);\n (typeof n != \"string\" || !n.match(/^-?[0-9.]+$/)) && je.throwArgumentError(\"invalid decimal value\", \"value\", n);\n const r = n.substring(0, 1) === \"-\";\n r && (n = n.substring(1)), n === \".\" && je.throwArgumentError(\"missing value\", \"value\", n);\n const s = n.split(\".\");\n s.length > 2 && je.throwArgumentError(\"too many decimal points\", \"value\", n);\n let i = s[0], o = s[1];\n for (i || (i = \"0\"), o || (o = \"0\"); o[o.length - 1] === \"0\"; )\n o = o.substring(0, o.length - 1);\n for (o.length > t.length - 1 && Qr(\"fractional component exceeds decimals\", \"underflow\", \"parseFixed\"), o === \"\" && (o = \"0\"); o.length < t.length - 1; )\n o += \"0\";\n const d = j.from(i), c = j.from(o);\n let p = d.mul(t).add(c);\n return r && (p = p.mul(Yr)), p;\n}\nclass Qt {\n constructor(e, t, r, s) {\n e !== un && je.throwError(\"cannot use FixedFormat constructor; use FixedFormat.from\", k.errors.UNSUPPORTED_OPERATION, {\n operation: \"new FixedFormat\"\n }), this.signed = t, this.width = r, this.decimals = s, this.name = (t ? \"\" : \"u\") + \"fixed\" + String(r) + \"x\" + String(s), this._multiplier = yr(s), Object.freeze(this);\n }\n static from(e) {\n if (e instanceof Qt)\n return e;\n typeof e == \"number\" && (e = `fixed128x${e}`);\n let t = !0, r = 128, s = 18;\n if (typeof e == \"string\") {\n if (e !== \"fixed\") if (e === \"ufixed\")\n t = !1;\n else {\n const i = e.match(/^(u?)fixed([0-9]+)x([0-9]+)$/);\n i || je.throwArgumentError(\"invalid fixed format\", \"format\", e), t = i[1] !== \"u\", r = parseInt(i[2]), s = parseInt(i[3]);\n }\n } else if (e) {\n const i = (o, d, c) => e[o] == null ? c : (typeof e[o] !== d && je.throwArgumentError(\"invalid fixed format (\" + o + \" not \" + d + \")\", \"format.\" + o, e[o]), e[o]);\n t = i(\"signed\", \"boolean\", t), r = i(\"width\", \"number\", r), s = i(\"decimals\", \"number\", s);\n }\n return r % 8 && je.throwArgumentError(\"invalid fixed format width (not byte aligned)\", \"format.width\", r), s > 80 && je.throwArgumentError(\"invalid fixed format (decimals too large)\", \"format.decimals\", s), new Qt(un, t, r, s);\n }\n}\nclass qe {\n constructor(e, t, r, s) {\n e !== un && je.throwError(\"cannot use FixedNumber constructor; use FixedNumber.from\", k.errors.UNSUPPORTED_OPERATION, {\n operation: \"new FixedFormat\"\n }), this.format = s, this._hex = t, this._value = r, this._isFixedNumber = !0, Object.freeze(this);\n }\n _checkFormat(e) {\n this.format.name !== e.format.name && je.throwArgumentError(\"incompatible format; use fixedNumber.toFormat\", \"other\", e);\n }\n addUnsafe(e) {\n this._checkFormat(e);\n const t = ht(this._value, this.format.decimals), r = ht(e._value, e.format.decimals);\n return qe.fromValue(t.add(r), this.format.decimals, this.format);\n }\n subUnsafe(e) {\n this._checkFormat(e);\n const t = ht(this._value, this.format.decimals), r = ht(e._value, e.format.decimals);\n return qe.fromValue(t.sub(r), this.format.decimals, this.format);\n }\n mulUnsafe(e) {\n this._checkFormat(e);\n const t = ht(this._value, this.format.decimals), r = ht(e._value, e.format.decimals);\n return qe.fromValue(t.mul(r).div(this.format._multiplier), this.format.decimals, this.format);\n }\n divUnsafe(e) {\n this._checkFormat(e);\n const t = ht(this._value, this.format.decimals), r = ht(e._value, e.format.decimals);\n return qe.fromValue(t.mul(this.format._multiplier).div(r), this.format.decimals, this.format);\n }\n floor() {\n const e = this.toString().split(\".\");\n e.length === 1 && e.push(\"0\");\n let t = qe.from(e[0], this.format);\n const r = !e[1].match(/^(0*)$/);\n return this.isNegative() && r && (t = t.subUnsafe(Sr.toFormat(t.format))), t;\n }\n ceiling() {\n const e = this.toString().split(\".\");\n e.length === 1 && e.push(\"0\");\n let t = qe.from(e[0], this.format);\n const r = !e[1].match(/^(0*)$/);\n return !this.isNegative() && r && (t = t.addUnsafe(Sr.toFormat(t.format))), t;\n }\n // @TODO: Support other rounding algorithms\n round(e) {\n e == null && (e = 0);\n const t = this.toString().split(\".\");\n if (t.length === 1 && t.push(\"0\"), (e < 0 || e > 80 || e % 1) && je.throwArgumentError(\"invalid decimal count\", \"decimals\", e), t[1].length <= e)\n return this;\n const r = qe.from(\"1\" + ln.substring(0, e), this.format), s = Wi.toFormat(this.format);\n return this.mulUnsafe(r).addUnsafe(s).floor().divUnsafe(r);\n }\n isZero() {\n return this._value === \"0.0\" || this._value === \"0\";\n }\n isNegative() {\n return this._value[0] === \"-\";\n }\n toString() {\n return this._value;\n }\n toHexString(e) {\n if (e == null)\n return this._hex;\n e % 8 && je.throwArgumentError(\"invalid byte width\", \"width\", e);\n const t = j.from(this._hex).fromTwos(this.format.width).toTwos(e).toHexString();\n return Rn(t, e / 8);\n }\n toUnsafeFloat() {\n return parseFloat(this.toString());\n }\n toFormat(e) {\n return qe.fromString(this._value, e);\n }\n static fromValue(e, t, r) {\n return r == null && t != null && !Hi(t) && (r = t, t = null), t == null && (t = 0), r == null && (r = \"fixed\"), qe.fromString(Tn(e, t), Qt.from(r));\n }\n static fromString(e, t) {\n t == null && (t = \"fixed\");\n const r = Qt.from(t), s = ht(e, r.decimals);\n !r.signed && s.lt(Xr) && Qr(\"unsigned value cannot be negative\", \"overflow\", \"value\", e);\n let i = null;\n r.signed ? i = s.toTwos(r.width).toHexString() : (i = s.toHexString(), i = Rn(i, r.width / 8));\n const o = Tn(s, r.decimals);\n return new qe(un, i, o, r);\n }\n static fromBytes(e, t) {\n t == null && (t = \"fixed\");\n const r = Qt.from(t);\n if (Le(e).length > r.width / 8)\n throw new Error(\"overflow\");\n let s = j.from(e);\n r.signed && (s = s.fromTwos(r.width));\n const i = s.toTwos((r.signed ? 0 : 1) + r.width).toHexString(), o = Tn(s, r.decimals);\n return new qe(un, i, o, r);\n }\n static from(e, t) {\n if (typeof e == \"string\")\n return qe.fromString(e, t);\n if (rn(e))\n return qe.fromBytes(e, t);\n try {\n return qe.fromValue(e, 0, t);\n } catch (r) {\n if (r.code !== k.errors.INVALID_ARGUMENT)\n throw r;\n }\n return je.throwArgumentError(\"invalid FixedNumber value\", \"value\", e);\n }\n static isFixedNumber(e) {\n return !!(e && e._isFixedNumber);\n }\n}\nconst Sr = qe.from(1), Wi = qe.from(\"0.5\");\nvar ei = { exports: {} };\n/**\n * [js-sha3]{@link https://github.com/emn178/js-sha3}\n *\n * @version 0.8.0\n * @author Chen, Yi-Cyuan [emn178@gmail.com]\n * @copyright Chen, Yi-Cyuan 2015-2018\n * @license MIT\n */\n(function(n) {\n (function() {\n var e = \"input is invalid type\", t = \"finalize already called\", r = typeof window == \"object\", s = r ? window : {};\n s.JS_SHA3_NO_WINDOW && (r = !1);\n var i = !r && typeof self == \"object\", o = !s.JS_SHA3_NO_NODE_JS && typeof process == \"object\" && process.versions && process.versions.node;\n o ? s = Hr : i && (s = self);\n var d = !s.JS_SHA3_NO_COMMON_JS && !0 && n.exports, c = !s.JS_SHA3_NO_ARRAY_BUFFER && typeof ArrayBuffer < \"u\", p = \"0123456789abcdef\".split(\"\"), b = [31, 7936, 2031616, 520093696], x = [4, 1024, 262144, 67108864], T = [1, 256, 65536, 16777216], P = [6, 1536, 393216, 100663296], D = [0, 8, 16, 24], q = [\n 1,\n 0,\n 32898,\n 0,\n 32906,\n 2147483648,\n 2147516416,\n 2147483648,\n 32907,\n 0,\n 2147483649,\n 0,\n 2147516545,\n 2147483648,\n 32777,\n 2147483648,\n 138,\n 0,\n 136,\n 0,\n 2147516425,\n 0,\n 2147483658,\n 0,\n 2147516555,\n 0,\n 139,\n 2147483648,\n 32905,\n 2147483648,\n 32771,\n 2147483648,\n 32770,\n 2147483648,\n 128,\n 2147483648,\n 32778,\n 0,\n 2147483658,\n 2147483648,\n 2147516545,\n 2147483648,\n 32896,\n 2147483648,\n 2147483649,\n 0,\n 2147516424,\n 2147483648\n ], Fe = [224, 256, 384, 512], X = [128, 256], $e = [\"hex\", \"buffer\", \"arrayBuffer\", \"array\", \"digest\"], J = {\n 128: 168,\n 256: 136\n };\n (s.JS_SHA3_NO_NODE_JS || !Array.isArray) && (Array.isArray = function(f) {\n return Object.prototype.toString.call(f) === \"[object Array]\";\n }), c && (s.JS_SHA3_NO_ARRAY_BUFFER_IS_VIEW || !ArrayBuffer.isView) && (ArrayBuffer.isView = function(f) {\n return typeof f == \"object\" && f.buffer && f.buffer.constructor === ArrayBuffer;\n });\n for (var Ce = function(f, A, _) {\n return function(N) {\n return new u(f, A, f).update(N)[_]();\n };\n }, et = function(f, A, _) {\n return function(N, S) {\n return new u(f, A, S).update(N)[_]();\n };\n }, Q = function(f, A, _) {\n return function(N, S, L, C) {\n return a[\"cshake\" + f].update(N, S, L, C)[_]();\n };\n }, tt = function(f, A, _) {\n return function(N, S, L, C) {\n return a[\"kmac\" + f].update(N, S, L, C)[_]();\n };\n }, Xe = function(f, A, _, N) {\n for (var S = 0; S < $e.length; ++S) {\n var L = $e[S];\n f[L] = A(_, N, L);\n }\n return f;\n }, nt = function(f, A) {\n var _ = Ce(f, A, \"hex\");\n return _.create = function() {\n return new u(f, A, f);\n }, _.update = function(N) {\n return _.create().update(N);\n }, Xe(_, Ce, f, A);\n }, dt = function(f, A) {\n var _ = et(f, A, \"hex\");\n return _.create = function(N) {\n return new u(f, A, N);\n }, _.update = function(N, S) {\n return _.create(S).update(N);\n }, Xe(_, et, f, A);\n }, Z = function(f, A) {\n var _ = J[f], N = Q(f, A, \"hex\");\n return N.create = function(S, L, C) {\n return !L && !C ? a[\"shake\" + f].create(S) : new u(f, A, S).bytepad([L, C], _);\n }, N.update = function(S, L, C, O) {\n return N.create(L, C, O).update(S);\n }, Xe(N, Q, f, A);\n }, Ze = function(f, A) {\n var _ = J[f], N = tt(f, A, \"hex\");\n return N.create = function(S, L, C) {\n return new g(f, A, L).bytepad([\"KMAC\", C], _).bytepad([S], _);\n }, N.update = function(S, L, C, O) {\n return N.create(S, C, O).update(L);\n }, Xe(N, tt, f, A);\n }, v = [\n { name: \"keccak\", padding: T, bits: Fe, createMethod: nt },\n { name: \"sha3\", padding: P, bits: Fe, createMethod: nt },\n { name: \"shake\", padding: b, bits: X, createMethod: dt },\n { name: \"cshake\", padding: x, bits: X, createMethod: Z },\n { name: \"kmac\", padding: x, bits: X, createMethod: Ze }\n ], a = {}, l = [], h = 0; h < v.length; ++h)\n for (var y = v[h], w = y.bits, M = 0; M < w.length; ++M) {\n var E = y.name + \"_\" + w[M];\n if (l.push(E), a[E] = y.createMethod(w[M], y.padding), y.name !== \"sha3\") {\n var m = y.name + w[M];\n l.push(m), a[m] = a[E];\n }\n }\n function u(f, A, _) {\n this.blocks = [], this.s = [], this.padding = A, this.outputBits = _, this.reset = !0, this.finalized = !1, this.block = 0, this.start = 0, this.blockCount = 1600 - (f << 1) >> 5, this.byteCount = this.blockCount << 2, this.outputBlocks = _ >> 5, this.extraBytes = (_ & 31) >> 3;\n for (var N = 0; N < 50; ++N)\n this.s[N] = 0;\n }\n u.prototype.update = function(f) {\n if (this.finalized)\n throw new Error(t);\n var A, _ = typeof f;\n if (_ !== \"string\") {\n if (_ === \"object\") {\n if (f === null)\n throw new Error(e);\n if (c && f.constructor === ArrayBuffer)\n f = new Uint8Array(f);\n else if (!Array.isArray(f) && (!c || !ArrayBuffer.isView(f)))\n throw new Error(e);\n } else\n throw new Error(e);\n A = !0;\n }\n for (var N = this.blocks, S = this.byteCount, L = f.length, C = this.blockCount, O = 0, Pe = this.s, U, V; O < L; ) {\n if (this.reset)\n for (this.reset = !1, N[0] = this.block, U = 1; U < C + 1; ++U)\n N[U] = 0;\n if (A)\n for (U = this.start; O < L && U < S; ++O)\n N[U >> 2] |= f[O] << D[U++ & 3];\n else\n for (U = this.start; O < L && U < S; ++O)\n V = f.charCodeAt(O), V < 128 ? N[U >> 2] |= V << D[U++ & 3] : V < 2048 ? (N[U >> 2] |= (192 | V >> 6) << D[U++ & 3], N[U >> 2] |= (128 | V & 63) << D[U++ & 3]) : V < 55296 || V >= 57344 ? (N[U >> 2] |= (224 | V >> 12) << D[U++ & 3], N[U >> 2] |= (128 | V >> 6 & 63) << D[U++ & 3], N[U >> 2] |= (128 | V & 63) << D[U++ & 3]) : (V = 65536 + ((V & 1023) << 10 | f.charCodeAt(++O) & 1023), N[U >> 2] |= (240 | V >> 18) << D[U++ & 3], N[U >> 2] |= (128 | V >> 12 & 63) << D[U++ & 3], N[U >> 2] |= (128 | V >> 6 & 63) << D[U++ & 3], N[U >> 2] |= (128 | V & 63) << D[U++ & 3]);\n if (this.lastByteIndex = U, U >= S) {\n for (this.start = U - S, this.block = N[C], U = 0; U < C; ++U)\n Pe[U] ^= N[U];\n G(Pe), this.reset = !0;\n } else\n this.start = U;\n }\n return this;\n }, u.prototype.encode = function(f, A) {\n var _ = f & 255, N = 1, S = [_];\n for (f = f >> 8, _ = f & 255; _ > 0; )\n S.unshift(_), f = f >> 8, _ = f & 255, ++N;\n return A ? S.push(N) : S.unshift(N), this.update(S), S.length;\n }, u.prototype.encodeString = function(f) {\n var A, _ = typeof f;\n if (_ !== \"string\") {\n if (_ === \"object\") {\n if (f === null)\n throw new Error(e);\n if (c && f.constructor === ArrayBuffer)\n f = new Uint8Array(f);\n else if (!Array.isArray(f) && (!c || !ArrayBuffer.isView(f)))\n throw new Error(e);\n } else\n throw new Error(e);\n A = !0;\n }\n var N = 0, S = f.length;\n if (A)\n N = S;\n else\n for (var L = 0; L < f.length; ++L) {\n var C = f.charCodeAt(L);\n C < 128 ? N += 1 : C < 2048 ? N += 2 : C < 55296 || C >= 57344 ? N += 3 : (C = 65536 + ((C & 1023) << 10 | f.charCodeAt(++L) & 1023), N += 4);\n }\n return N += this.encode(N * 8), this.update(f), N;\n }, u.prototype.bytepad = function(f, A) {\n for (var _ = this.encode(A), N = 0; N < f.length; ++N)\n _ += this.encodeString(f[N]);\n var S = A - _ % A, L = [];\n return L.length = S, this.update(L), this;\n }, u.prototype.finalize = function() {\n if (!this.finalized) {\n this.finalized = !0;\n var f = this.blocks, A = this.lastByteIndex, _ = this.blockCount, N = this.s;\n if (f[A >> 2] |= this.padding[A & 3], this.lastByteIndex === this.byteCount)\n for (f[0] = f[_], A = 1; A < _ + 1; ++A)\n f[A] = 0;\n for (f[_ - 1] |= 2147483648, A = 0; A < _; ++A)\n N[A] ^= f[A];\n G(N);\n }\n }, u.prototype.toString = u.prototype.hex = function() {\n this.finalize();\n for (var f = this.blockCount, A = this.s, _ = this.outputBlocks, N = this.extraBytes, S = 0, L = 0, C = \"\", O; L < _; ) {\n for (S = 0; S < f && L < _; ++S, ++L)\n O = A[S], C += p[O >> 4 & 15] + p[O & 15] + p[O >> 12 & 15] + p[O >> 8 & 15] + p[O >> 20 & 15] + p[O >> 16 & 15] + p[O >> 28 & 15] + p[O >> 24 & 15];\n L % f === 0 && (G(A), S = 0);\n }\n return N && (O = A[S], C += p[O >> 4 & 15] + p[O & 15], N > 1 && (C += p[O >> 12 & 15] + p[O >> 8 & 15]), N > 2 && (C += p[O >> 20 & 15] + p[O >> 16 & 15])), C;\n }, u.prototype.arrayBuffer = function() {\n this.finalize();\n var f = this.blockCount, A = this.s, _ = this.outputBlocks, N = this.extraBytes, S = 0, L = 0, C = this.outputBits >> 3, O;\n N ? O = new ArrayBuffer(_ + 1 << 2) : O = new ArrayBuffer(C);\n for (var Pe = new Uint32Array(O); L < _; ) {\n for (S = 0; S < f && L < _; ++S, ++L)\n Pe[L] = A[S];\n L % f === 0 && G(A);\n }\n return N && (Pe[S] = A[S], O = O.slice(0, C)), O;\n }, u.prototype.buffer = u.prototype.arrayBuffer, u.prototype.digest = u.prototype.array = function() {\n this.finalize();\n for (var f = this.blockCount, A = this.s, _ = this.outputBlocks, N = this.extraBytes, S = 0, L = 0, C = [], O, Pe; L < _; ) {\n for (S = 0; S < f && L < _; ++S, ++L)\n O = L << 2, Pe = A[S], C[O] = Pe & 255, C[O + 1] = Pe >> 8 & 255, C[O + 2] = Pe >> 16 & 255, C[O + 3] = Pe >> 24 & 255;\n L % f === 0 && G(A);\n }\n return N && (O = L << 2, Pe = A[S], C[O] = Pe & 255, N > 1 && (C[O + 1] = Pe >> 8 & 255), N > 2 && (C[O + 2] = Pe >> 16 & 255)), C;\n };\n function g(f, A, _) {\n u.call(this, f, A, _);\n }\n g.prototype = new u(), g.prototype.finalize = function() {\n return this.encode(this.outputBits, !0), u.prototype.finalize.call(this);\n };\n var G = function(f) {\n var A, _, N, S, L, C, O, Pe, U, V, St, ee, te, kt, ne, re, Pt, ie, se, Ot, ae, oe, Ct, ue, le, Ut, fe, de, Bt, he, pe, Ft, ce, me, Dt, ye, ge, Lt, we, ve, Gt, be, Me, $t, xe, Ee, qt, Te, Ae, zt, _e, Ne, Vt, Re, Ie, jt, Se, ke, vt, bt, Mt, xt, Et;\n for (N = 0; N < 48; N += 2)\n S = f[0] ^ f[10] ^ f[20] ^ f[30] ^ f[40], L = f[1] ^ f[11] ^ f[21] ^ f[31] ^ f[41], C = f[2] ^ f[12] ^ f[22] ^ f[32] ^ f[42], O = f[3] ^ f[13] ^ f[23] ^ f[33] ^ f[43], Pe = f[4] ^ f[14] ^ f[24] ^ f[34] ^ f[44], U = f[5] ^ f[15] ^ f[25] ^ f[35] ^ f[45], V = f[6] ^ f[16] ^ f[26] ^ f[36] ^ f[46], St = f[7] ^ f[17] ^ f[27] ^ f[37] ^ f[47], ee = f[8] ^ f[18] ^ f[28] ^ f[38] ^ f[48], te = f[9] ^ f[19] ^ f[29] ^ f[39] ^ f[49], A = ee ^ (C << 1 | O >>> 31), _ = te ^ (O << 1 | C >>> 31), f[0] ^= A, f[1] ^= _, f[10] ^= A, f[11] ^= _, f[20] ^= A, f[21] ^= _, f[30] ^= A, f[31] ^= _, f[40] ^= A, f[41] ^= _, A = S ^ (Pe << 1 | U >>> 31), _ = L ^ (U << 1 | Pe >>> 31), f[2] ^= A, f[3] ^= _, f[12] ^= A, f[13] ^= _, f[22] ^= A, f[23] ^= _, f[32] ^= A, f[33] ^= _, f[42] ^= A, f[43] ^= _, A = C ^ (V << 1 | St >>> 31), _ = O ^ (St << 1 | V >>> 31), f[4] ^= A, f[5] ^= _, f[14] ^= A, f[15] ^= _, f[24] ^= A, f[25] ^= _, f[34] ^= A, f[35] ^= _, f[44] ^= A, f[45] ^= _, A = Pe ^ (ee << 1 | te >>> 31), _ = U ^ (te << 1 | ee >>> 31), f[6] ^= A, f[7] ^= _, f[16] ^= A, f[17] ^= _, f[26] ^= A, f[27] ^= _, f[36] ^= A, f[37] ^= _, f[46] ^= A, f[47] ^= _, A = V ^ (S << 1 | L >>> 31), _ = St ^ (L << 1 | S >>> 31), f[8] ^= A, f[9] ^= _, f[18] ^= A, f[19] ^= _, f[28] ^= A, f[29] ^= _, f[38] ^= A, f[39] ^= _, f[48] ^= A, f[49] ^= _, kt = f[0], ne = f[1], Ee = f[11] << 4 | f[10] >>> 28, qt = f[10] << 4 | f[11] >>> 28, de = f[20] << 3 | f[21] >>> 29, Bt = f[21] << 3 | f[20] >>> 29, bt = f[31] << 9 | f[30] >>> 23, Mt = f[30] << 9 | f[31] >>> 23, be = f[40] << 18 | f[41] >>> 14, Me = f[41] << 18 | f[40] >>> 14, me = f[2] << 1 | f[3] >>> 31, Dt = f[3] << 1 | f[2] >>> 31, re = f[13] << 12 | f[12] >>> 20, Pt = f[12] << 12 | f[13] >>> 20, Te = f[22] << 10 | f[23] >>> 22, Ae = f[23] << 10 | f[22] >>> 22, he = f[33] << 13 | f[32] >>> 19, pe = f[32] << 13 | f[33] >>> 19, xt = f[42] << 2 | f[43] >>> 30, Et = f[43] << 2 | f[42] >>> 30, Re = f[5] << 30 | f[4] >>> 2, Ie = f[4] << 30 | f[5] >>> 2, ye = f[14] << 6 | f[15] >>> 26, ge = f[15] << 6 | f[14] >>> 26, ie = f[25] << 11 | f[24] >>> 21, se = f[24] << 11 | f[25] >>> 21, zt = f[34] << 15 | f[35] >>> 17, _e = f[35] << 15 | f[34] >>> 17, Ft = f[45] << 29 | f[44] >>> 3, ce = f[44] << 29 | f[45] >>> 3, ue = f[6] << 28 | f[7] >>> 4, le = f[7] << 28 | f[6] >>> 4, jt = f[17] << 23 | f[16] >>> 9, Se = f[16] << 23 | f[17] >>> 9, Lt = f[26] << 25 | f[27] >>> 7, we = f[27] << 25 | f[26] >>> 7, Ot = f[36] << 21 | f[37] >>> 11, ae = f[37] << 21 | f[36] >>> 11, Ne = f[47] << 24 | f[46] >>> 8, Vt = f[46] << 24 | f[47] >>> 8, $t = f[8] << 27 | f[9] >>> 5, xe = f[9] << 27 | f[8] >>> 5, Ut = f[18] << 20 | f[19] >>> 12, fe = f[19] << 20 | f[18] >>> 12, ke = f[29] << 7 | f[28] >>> 25, vt = f[28] << 7 | f[29] >>> 25, ve = f[38] << 8 | f[39] >>> 24, Gt = f[39] << 8 | f[38] >>> 24, oe = f[48] << 14 | f[49] >>> 18, Ct = f[49] << 14 | f[48] >>> 18, f[0] = kt ^ ~re & ie, f[1] = ne ^ ~Pt & se, f[10] = ue ^ ~Ut & de, f[11] = le ^ ~fe & Bt, f[20] = me ^ ~ye & Lt, f[21] = Dt ^ ~ge & we, f[30] = $t ^ ~Ee & Te, f[31] = xe ^ ~qt & Ae, f[40] = Re ^ ~jt & ke, f[41] = Ie ^ ~Se & vt, f[2] = re ^ ~ie & Ot, f[3] = Pt ^ ~se & ae, f[12] = Ut ^ ~de & he, f[13] = fe ^ ~Bt & pe, f[22] = ye ^ ~Lt & ve, f[23] = ge ^ ~we & Gt, f[32] = Ee ^ ~Te & zt, f[33] = qt ^ ~Ae & _e, f[42] = jt ^ ~ke & bt, f[43] = Se ^ ~vt & Mt, f[4] = ie ^ ~Ot & oe, f[5] = se ^ ~ae & Ct, f[14] = de ^ ~he & Ft, f[15] = Bt ^ ~pe & ce, f[24] = Lt ^ ~ve & be, f[25] = we ^ ~Gt & Me, f[34] = Te ^ ~zt & Ne, f[35] = Ae ^ ~_e & Vt, f[44] = ke ^ ~bt & xt, f[45] = vt ^ ~Mt & Et, f[6] = Ot ^ ~oe & kt, f[7] = ae ^ ~Ct & ne, f[16] = he ^ ~Ft & ue, f[17] = pe ^ ~ce & le, f[26] = ve ^ ~be & me, f[27] = Gt ^ ~Me & Dt, f[36] = zt ^ ~Ne & $t, f[37] = _e ^ ~Vt & xe, f[46] = bt ^ ~xt & Re, f[47] = Mt ^ ~Et & Ie, f[8] = oe ^ ~kt & re, f[9] = Ct ^ ~ne & Pt, f[18] = Ft ^ ~ue & Ut, f[19] = ce ^ ~le & fe, f[28] = be ^ ~me & ye, f[29] = Me ^ ~Dt & ge, f[38] = Ne ^ ~$t & Ee, f[39] = Vt ^ ~xe & qt, f[48] = xt ^ ~Re & jt, f[49] = Et ^ ~Ie & Se, f[0] ^= q[N], f[1] ^= q[N + 1];\n };\n if (d)\n n.exports = a;\n else\n for (h = 0; h < l.length; ++h)\n s[l[h]] = a[l[h]];\n })();\n})(ei);\nvar Ji = ei.exports;\nconst Ki = /* @__PURE__ */ Zr(Ji);\nfunction dn(n) {\n return \"0x\" + Ki.keccak_256(Le(n));\n}\nconst Xi = \"rlp/5.8.0\", Yi = new k(Xi);\nfunction kr(n) {\n const e = [];\n for (; n; )\n e.unshift(n & 255), n >>= 8;\n return e;\n}\nfunction ti(n) {\n if (Array.isArray(n)) {\n let r = [];\n if (n.forEach(function(i) {\n r = r.concat(ti(i));\n }), r.length <= 55)\n return r.unshift(192 + r.length), r;\n const s = kr(r.length);\n return s.unshift(247 + s.length), s.concat(r);\n }\n Fi(n) || Yi.throwArgumentError(\"RLP object must be BytesLike\", \"object\", n);\n const e = Array.prototype.slice.call(Le(n));\n if (e.length === 1 && e[0] <= 127)\n return e;\n if (e.length <= 55)\n return e.unshift(128 + e.length), e;\n const t = kr(e.length);\n return t.unshift(183 + t.length), t.concat(e);\n}\nfunction Qi(n) {\n return Ue(ti(n));\n}\nconst es = \"address/5.8.0\", Jt = new k(es);\nfunction Pr(n) {\n He(n, 20) || Jt.throwArgumentError(\"invalid address\", \"address\", n), n = n.toLowerCase();\n const e = n.substring(2).split(\"\"), t = new Uint8Array(40);\n for (let s = 0; s < 40; s++)\n t[s] = e[s].charCodeAt(0);\n const r = Le(dn(t));\n for (let s = 0; s < 40; s += 2)\n r[s >> 1] >> 4 >= 8 && (e[s] = e[s].toUpperCase()), (r[s >> 1] & 15) >= 8 && (e[s + 1] = e[s + 1].toUpperCase());\n return \"0x\" + e.join(\"\");\n}\nconst ts = 9007199254740991;\nfunction ns(n) {\n return Math.log10 ? Math.log10(n) : Math.log(n) / Math.LN10;\n}\nconst gr = {};\nfor (let n = 0; n < 10; n++)\n gr[String(n)] = String(n);\nfor (let n = 0; n < 26; n++)\n gr[String.fromCharCode(65 + n)] = String(10 + n);\nconst Or = Math.floor(ns(ts));\nfunction rs(n) {\n n = n.toUpperCase(), n = n.substring(4) + n.substring(0, 2) + \"00\";\n let e = n.split(\"\").map((r) => gr[r]).join(\"\");\n for (; e.length >= Or; ) {\n let r = e.substring(0, Or);\n e = parseInt(r, 10) % 97 + e.substring(r.length);\n }\n let t = String(98 - parseInt(e, 10) % 97);\n for (; t.length < 2; )\n t = \"0\" + t;\n return t;\n}\nfunction lt(n) {\n let e = null;\n if (typeof n != \"string\" && Jt.throwArgumentError(\"invalid address\", \"address\", n), n.match(/^(0x)?[0-9a-fA-F]{40}$/))\n n.substring(0, 2) !== \"0x\" && (n = \"0x\" + n), e = Pr(n), n.match(/([A-F].*[a-f])|([a-f].*[A-F])/) && e !== n && Jt.throwArgumentError(\"bad address checksum\", \"address\", n);\n else if (n.match(/^XE[0-9]{2}[0-9A-Za-z]{30,31}$/)) {\n for (n.substring(2, 4) !== rs(n) && Jt.throwArgumentError(\"bad icap checksum\", \"address\", n), e = Zi(n.substring(4)); e.length < 40; )\n e = \"0\" + e;\n e = Pr(\"0x\" + e);\n } else\n Jt.throwArgumentError(\"invalid address\", \"address\", n);\n return e;\n}\nfunction is(n) {\n try {\n return lt(n), !0;\n } catch {\n }\n return !1;\n}\nfunction ss(n) {\n let e = null;\n try {\n e = lt(n.from);\n } catch {\n Jt.throwArgumentError(\"missing from address\", \"transaction\", n);\n }\n const t = Di(Le(j.from(n.nonce).toHexString()));\n return lt(Jr(dn(Qi([e, t])), 12));\n}\nconst as = \"properties/5.8.0\";\nvar os = function(n, e, t, r) {\n function s(i) {\n return i instanceof t ? i : new t(function(o) {\n o(i);\n });\n }\n return new (t || (t = Promise))(function(i, o) {\n function d(b) {\n try {\n p(r.next(b));\n } catch (x) {\n o(x);\n }\n }\n function c(b) {\n try {\n p(r.throw(b));\n } catch (x) {\n o(x);\n }\n }\n function p(b) {\n b.done ? i(b.value) : s(b.value).then(d, c);\n }\n p((r = r.apply(n, e || [])).next());\n });\n};\nconst ni = new k(as);\nfunction B(n, e, t) {\n Object.defineProperty(n, e, {\n enumerable: !0,\n value: t,\n writable: !1\n });\n}\nfunction an(n, e) {\n for (let t = 0; t < 32; t++) {\n if (n[e])\n return n[e];\n if (!n.prototype || typeof n.prototype != \"object\")\n break;\n n = Object.getPrototypeOf(n.prototype).constructor;\n }\n return null;\n}\nfunction _t(n) {\n return os(this, void 0, void 0, function* () {\n const e = Object.keys(n).map((r) => {\n const s = n[r];\n return Promise.resolve(s).then((i) => ({ key: r, value: i }));\n });\n return (yield Promise.all(e)).reduce((r, s) => (r[s.key] = s.value, r), {});\n });\n}\nfunction en(n) {\n const e = {};\n for (const t in n)\n e[t] = n[t];\n return e;\n}\nconst us = { bigint: !0, boolean: !0, function: !0, number: !0, string: !0 };\nfunction ri(n) {\n if (n == null || us[typeof n])\n return !0;\n if (Array.isArray(n) || typeof n == \"object\") {\n if (!Object.isFrozen(n))\n return !1;\n const e = Object.keys(n);\n for (let t = 0; t < e.length; t++) {\n let r = null;\n try {\n r = n[e[t]];\n } catch {\n continue;\n }\n if (!ri(r))\n return !1;\n }\n return !0;\n }\n return ni.throwArgumentError(`Cannot deepCopy ${typeof n}`, \"object\", n);\n}\nfunction ls(n) {\n if (ri(n))\n return n;\n if (Array.isArray(n))\n return Object.freeze(n.map((e) => hn(e)));\n if (typeof n == \"object\") {\n const e = {};\n for (const t in n) {\n const r = n[t];\n r !== void 0 && B(e, t, hn(r));\n }\n return e;\n }\n return ni.throwArgumentError(`Cannot deepCopy ${typeof n}`, \"object\", n);\n}\nfunction hn(n) {\n return ls(n);\n}\nclass Bn {\n constructor(e) {\n for (const t in e)\n this[t] = hn(e[t]);\n }\n}\nconst wn = \"abi/5.8.0\", W = new k(wn), Ht = {};\nlet Cr = { calldata: !0, memory: !0, storage: !0 }, fs = { calldata: !0, memory: !0 };\nfunction vn(n, e) {\n if (n === \"bytes\" || n === \"string\") {\n if (Cr[e])\n return !0;\n } else if (n === \"address\") {\n if (e === \"payable\")\n return !0;\n } else if ((n.indexOf(\"[\") >= 0 || n === \"tuple\") && fs[e])\n return !0;\n return (Cr[e] || e === \"payable\") && W.throwArgumentError(\"invalid modifier\", \"name\", e), !1;\n}\nfunction ds(n, e) {\n let t = n;\n function r(d) {\n W.throwArgumentError(`unexpected character at position ${d}`, \"param\", n);\n }\n n = n.replace(/\\s/g, \" \");\n function s(d) {\n let c = { type: \"\", name: \"\", parent: d, state: { allowType: !0 } };\n return e && (c.indexed = !1), c;\n }\n let i = { type: \"\", name: \"\", state: { allowType: !0 } }, o = i;\n for (let d = 0; d < n.length; d++) {\n let c = n[d];\n switch (c) {\n case \"(\":\n o.state.allowType && o.type === \"\" ? o.type = \"tuple\" : o.state.allowParams || r(d), o.state.allowType = !1, o.type = Wt(o.type), o.components = [s(o)], o = o.components[0];\n break;\n case \")\":\n delete o.state, o.name === \"indexed\" && (e || r(d), o.indexed = !0, o.name = \"\"), vn(o.type, o.name) && (o.name = \"\"), o.type = Wt(o.type);\n let p = o;\n o = o.parent, o || r(d), delete p.parent, o.state.allowParams = !1, o.state.allowName = !0, o.state.allowArray = !0;\n break;\n case \",\":\n delete o.state, o.name === \"indexed\" && (e || r(d), o.indexed = !0, o.name = \"\"), vn(o.type, o.name) && (o.name = \"\"), o.type = Wt(o.type);\n let b = s(o.parent);\n o.parent.components.push(b), delete o.parent, o = b;\n break;\n case \" \":\n o.state.allowType && o.type !== \"\" && (o.type = Wt(o.type), delete o.state.allowType, o.state.allowName = !0, o.state.allowParams = !0), o.state.allowName && o.name !== \"\" && (o.name === \"indexed\" ? (e || r(d), o.indexed && r(d), o.indexed = !0, o.name = \"\") : vn(o.type, o.name) ? o.name = \"\" : o.state.allowName = !1);\n break;\n case \"[\":\n o.state.allowArray || r(d), o.type += c, o.state.allowArray = !1, o.state.allowName = !1, o.state.readArray = !0;\n break;\n case \"]\":\n o.state.readArray || r(d), o.type += c, o.state.readArray = !1, o.state.allowArray = !0, o.state.allowName = !0;\n break;\n default:\n o.state.allowType ? (o.type += c, o.state.allowParams = !0, o.state.allowArray = !0) : o.state.allowName ? (o.name += c, delete o.state.allowArray) : o.state.readArray ? o.type += c : r(d);\n }\n }\n return o.parent && W.throwArgumentError(\"unexpected eof\", \"param\", n), delete i.state, o.name === \"indexed\" ? (e || r(t.length - 7), o.indexed && r(t.length - 7), o.indexed = !0, o.name = \"\") : vn(o.type, o.name) && (o.name = \"\"), i.type = Wt(i.type), i;\n}\nfunction An(n, e) {\n for (let t in e)\n B(n, t, e[t]);\n}\nconst K = Object.freeze({\n // Bare formatting, as is needed for computing a sighash of an event or function\n sighash: \"sighash\",\n // Human-Readable with Minimal spacing and without names (compact human-readable)\n minimal: \"minimal\",\n // Human-Readable with nice spacing, including all names\n full: \"full\",\n // JSON-format a la Solidity\n json: \"json\"\n}), hs = new RegExp(/^(.*)\\[([0-9]*)\\]$/);\nclass Ge {\n constructor(e, t) {\n e !== Ht && W.throwError(\"use fromString\", k.errors.UNSUPPORTED_OPERATION, {\n operation: \"new ParamType()\"\n }), An(this, t);\n let r = this.type.match(hs);\n r ? An(this, {\n arrayLength: parseInt(r[2] || \"-1\"),\n arrayChildren: Ge.fromObject({\n type: r[1],\n components: this.components\n }),\n baseType: \"array\"\n }) : An(this, {\n arrayLength: null,\n arrayChildren: null,\n baseType: this.components != null ? \"tuple\" : this.type\n }), this._isParamType = !0, Object.freeze(this);\n }\n // Format the parameter fragment\n // - sighash: \"(uint256,address)\"\n // - minimal: \"tuple(uint256,address) indexed\"\n // - full: \"tuple(uint256 foo, address bar) indexed baz\"\n format(e) {\n if (e || (e = K.sighash), K[e] || W.throwArgumentError(\"invalid format type\", \"format\", e), e === K.json) {\n let r = {\n type: this.baseType === \"tuple\" ? \"tuple\" : this.type,\n name: this.name || void 0\n };\n return typeof this.indexed == \"boolean\" && (r.indexed = this.indexed), this.components && (r.components = this.components.map((s) => JSON.parse(s.format(e)))), JSON.stringify(r);\n }\n let t = \"\";\n return this.baseType === \"array\" ? (t += this.arrayChildren.format(e), t += \"[\" + (this.arrayLength < 0 ? \"\" : String(this.arrayLength)) + \"]\") : this.baseType === \"tuple\" ? (e !== K.sighash && (t += this.type), t += \"(\" + this.components.map((r) => r.format(e)).join(e === K.full ? \", \" : \",\") + \")\") : t += this.type, e !== K.sighash && (this.indexed === !0 && (t += \" indexed\"), e === K.full && this.name && (t += \" \" + this.name)), t;\n }\n static from(e, t) {\n return typeof e == \"string\" ? Ge.fromString(e, t) : Ge.fromObject(e);\n }\n static fromObject(e) {\n return Ge.isParamType(e) ? e : new Ge(Ht, {\n name: e.name || null,\n type: Wt(e.type),\n indexed: e.indexed == null ? null : !!e.indexed,\n components: e.components ? e.components.map(Ge.fromObject) : null\n });\n }\n static fromString(e, t) {\n function r(s) {\n return Ge.fromObject({\n name: s.name,\n type: s.type,\n indexed: s.indexed,\n components: s.components\n });\n }\n return r(ds(e, !!t));\n }\n static isParamType(e) {\n return !!(e != null && e._isParamType);\n }\n}\nfunction pn(n, e) {\n return cs(n).map((t) => Ge.fromString(t, e));\n}\nclass mt {\n constructor(e, t) {\n e !== Ht && W.throwError(\"use a static from method\", k.errors.UNSUPPORTED_OPERATION, {\n operation: \"new Fragment()\"\n }), An(this, t), this._isFragment = !0, Object.freeze(this);\n }\n static from(e) {\n return mt.isFragment(e) ? e : typeof e == \"string\" ? mt.fromString(e) : mt.fromObject(e);\n }\n static fromObject(e) {\n if (mt.isFragment(e))\n return e;\n switch (e.type) {\n case \"function\":\n return ut.fromObject(e);\n case \"event\":\n return ct.fromObject(e);\n case \"constructor\":\n return ot.fromObject(e);\n case \"error\":\n return At.fromObject(e);\n case \"fallback\":\n case \"receive\":\n return null;\n }\n return W.throwArgumentError(\"invalid fragment object\", \"value\", e);\n }\n static fromString(e) {\n return e = e.replace(/\\s/g, \" \"), e = e.replace(/\\(/g, \" (\").replace(/\\)/g, \") \").replace(/\\s+/g, \" \"), e = e.trim(), e.split(\" \")[0] === \"event\" ? ct.fromString(e.substring(5).trim()) : e.split(\" \")[0] === \"function\" ? ut.fromString(e.substring(8).trim()) : e.split(\"(\")[0].trim() === \"constructor\" ? ot.fromString(e.trim()) : e.split(\" \")[0] === \"error\" ? At.fromString(e.substring(5).trim()) : W.throwArgumentError(\"unsupported fragment\", \"value\", e);\n }\n static isFragment(e) {\n return !!(e && e._isFragment);\n }\n}\nclass ct extends mt {\n format(e) {\n if (e || (e = K.sighash), K[e] || W.throwArgumentError(\"invalid format type\", \"format\", e), e === K.json)\n return JSON.stringify({\n type: \"event\",\n anonymous: this.anonymous,\n name: this.name,\n inputs: this.inputs.map((r) => JSON.parse(r.format(e)))\n });\n let t = \"\";\n return e !== K.sighash && (t += \"event \"), t += this.name + \"(\" + this.inputs.map((r) => r.format(e)).join(e === K.full ? \", \" : \",\") + \") \", e !== K.sighash && this.anonymous && (t += \"anonymous \"), t.trim();\n }\n static from(e) {\n return typeof e == \"string\" ? ct.fromString(e) : ct.fromObject(e);\n }\n static fromObject(e) {\n if (ct.isEventFragment(e))\n return e;\n e.type !== \"event\" && W.throwArgumentError(\"invalid event object\", \"value\", e);\n const t = {\n name: cn(e.name),\n anonymous: e.anonymous,\n inputs: e.inputs ? e.inputs.map(Ge.fromObject) : [],\n type: \"event\"\n };\n return new ct(Ht, t);\n }\n static fromString(e) {\n let t = e.match(mn);\n t || W.throwArgumentError(\"invalid event string\", \"value\", e);\n let r = !1;\n return t[3].split(\" \").forEach((s) => {\n switch (s.trim()) {\n case \"anonymous\":\n r = !0;\n break;\n case \"\":\n break;\n default:\n W.warn(\"unknown modifier: \" + s);\n }\n }), ct.fromObject({\n name: t[1].trim(),\n anonymous: r,\n inputs: pn(t[2], !0),\n type: \"event\"\n });\n }\n static isEventFragment(e) {\n return e && e._isFragment && e.type === \"event\";\n }\n}\nfunction ii(n, e) {\n e.gas = null;\n let t = n.split(\"@\");\n return t.length !== 1 ? (t.length > 2 && W.throwArgumentError(\"invalid human-readable ABI signature\", \"value\", n), t[1].match(/^[0-9]+$/) || W.throwArgumentError(\"invalid human-readable ABI signature gas\", \"value\", n), e.gas = j.from(t[1]), t[0]) : n;\n}\nfunction si(n, e) {\n e.constant = !1, e.payable = !1, e.stateMutability = \"nonpayable\", n.split(\" \").forEach((t) => {\n switch (t.trim()) {\n case \"constant\":\n e.constant = !0;\n break;\n case \"payable\":\n e.payable = !0, e.stateMutability = \"payable\";\n break;\n case \"nonpayable\":\n e.payable = !1, e.stateMutability = \"nonpayable\";\n break;\n case \"pure\":\n e.constant = !0, e.stateMutability = \"pure\";\n break;\n case \"view\":\n e.constant = !0, e.stateMutability = \"view\";\n break;\n case \"external\":\n case \"public\":\n case \"\":\n break;\n default:\n console.log(\"unknown modifier: \" + t);\n }\n });\n}\nfunction ai(n) {\n let e = {\n constant: !1,\n payable: !0,\n stateMutability: \"payable\"\n };\n return n.stateMutability != null ? (e.stateMutability = n.stateMutability, e.constant = e.stateMutability === \"view\" || e.stateMutability === \"pure\", n.constant != null && !!n.constant !== e.constant && W.throwArgumentError(\"cannot have constant function with mutability \" + e.stateMutability, \"value\", n), e.payable = e.stateMutability === \"payable\", n.payable != null && !!n.payable !== e.payable && W.throwArgumentError(\"cannot have payable function with mutability \" + e.stateMutability, \"value\", n)) : n.payable != null ? (e.payable = !!n.payable, n.constant == null && !e.payable && n.type !== \"constructor\" && W.throwArgumentError(\"unable to determine stateMutability\", \"value\", n), e.constant = !!n.constant, e.constant ? e.stateMutability = \"view\" : e.stateMutability = e.payable ? \"payable\" : \"nonpayable\", e.payable && e.constant && W.throwArgumentError(\"cannot have constant payable function\", \"value\", n)) : n.constant != null ? (e.constant = !!n.constant, e.payable = !e.constant, e.stateMutability = e.constant ? \"view\" : \"payable\") : n.type !== \"constructor\" && W.throwArgumentError(\"unable to determine stateMutability\", \"value\", n), e;\n}\nclass ot extends mt {\n format(e) {\n if (e || (e = K.sighash), K[e] || W.throwArgumentError(\"invalid format type\", \"format\", e), e === K.json)\n return JSON.stringify({\n type: \"constructor\",\n stateMutability: this.stateMutability !== \"nonpayable\" ? this.stateMutability : void 0,\n payable: this.payable,\n gas: this.gas ? this.gas.toNumber() : void 0,\n inputs: this.inputs.map((r) => JSON.parse(r.format(e)))\n });\n e === K.sighash && W.throwError(\"cannot format a constructor for sighash\", k.errors.UNSUPPORTED_OPERATION, {\n operation: \"format(sighash)\"\n });\n let t = \"constructor(\" + this.inputs.map((r) => r.format(e)).join(e === K.full ? \", \" : \",\") + \") \";\n return this.stateMutability && this.stateMutability !== \"nonpayable\" && (t += this.stateMutability + \" \"), t.trim();\n }\n static from(e) {\n return typeof e == \"string\" ? ot.fromString(e) : ot.fromObject(e);\n }\n static fromObject(e) {\n if (ot.isConstructorFragment(e))\n return e;\n e.type !== \"constructor\" && W.throwArgumentError(\"invalid constructor object\", \"value\", e);\n let t = ai(e);\n t.constant && W.throwArgumentError(\"constructor cannot be constant\", \"value\", e);\n const r = {\n name: null,\n type: e.type,\n inputs: e.inputs ? e.inputs.map(Ge.fromObject) : [],\n payable: t.payable,\n stateMutability: t.stateMutability,\n gas: e.gas ? j.from(e.gas) : null\n };\n return new ot(Ht, r);\n }\n static fromString(e) {\n let t = { type: \"constructor\" };\n e = ii(e, t);\n let r = e.match(mn);\n return (!r || r[1].trim() !== \"constructor\") && W.throwArgumentError(\"invalid constructor string\", \"value\", e), t.inputs = pn(r[2].trim(), !1), si(r[3].trim(), t), ot.fromObject(t);\n }\n static isConstructorFragment(e) {\n return e && e._isFragment && e.type === \"constructor\";\n }\n}\nclass ut extends ot {\n format(e) {\n if (e || (e = K.sighash), K[e] || W.throwArgumentError(\"invalid format type\", \"format\", e), e === K.json)\n return JSON.stringify({\n type: \"function\",\n name: this.name,\n constant: this.constant,\n stateMutability: this.stateMutability !== \"nonpayable\" ? this.stateMutability : void 0,\n payable: this.payable,\n gas: this.gas ? this.gas.toNumber() : void 0,\n inputs: this.inputs.map((r) => JSON.parse(r.format(e))),\n outputs: this.outputs.map((r) => JSON.parse(r.format(e)))\n });\n let t = \"\";\n return e !== K.sighash && (t += \"function \"), t += this.name + \"(\" + this.inputs.map((r) => r.format(e)).join(e === K.full ? \", \" : \",\") + \") \", e !== K.sighash && (this.stateMutability ? this.stateMutability !== \"nonpayable\" && (t += this.stateMutability + \" \") : this.constant && (t += \"view \"), this.outputs && this.outputs.length && (t += \"returns (\" + this.outputs.map((r) => r.format(e)).join(\", \") + \") \"), this.gas != null && (t += \"@\" + this.gas.toString() + \" \")), t.trim();\n }\n static from(e) {\n return typeof e == \"string\" ? ut.fromString(e) : ut.fromObject(e);\n }\n static fromObject(e) {\n if (ut.isFunctionFragment(e))\n return e;\n e.type !== \"function\" && W.throwArgumentError(\"invalid function object\", \"value\", e);\n let t = ai(e);\n const r = {\n type: e.type,\n name: cn(e.name),\n constant: t.constant,\n inputs: e.inputs ? e.inputs.map(Ge.fromObject) : [],\n outputs: e.outputs ? e.outputs.map(Ge.fromObject) : [],\n payable: t.payable,\n stateMutability: t.stateMutability,\n gas: e.gas ? j.from(e.gas) : null\n };\n return new ut(Ht, r);\n }\n static fromString(e) {\n let t = { type: \"function\" };\n e = ii(e, t);\n let r = e.split(\" returns \");\n r.length > 2 && W.throwArgumentError(\"invalid function string\", \"value\", e);\n let s = r[0].match(mn);\n if (s || W.throwArgumentError(\"invalid function signature\", \"value\", e), t.name = s[1].trim(), t.name && cn(t.name), t.inputs = pn(s[2], !1), si(s[3].trim(), t), r.length > 1) {\n let i = r[1].match(mn);\n (i[1].trim() != \"\" || i[3].trim() != \"\") && W.throwArgumentError(\"unexpected tokens\", \"value\", e), t.outputs = pn(i[2], !1);\n } else\n t.outputs = [];\n return ut.fromObject(t);\n }\n static isFunctionFragment(e) {\n return e && e._isFragment && e.type === \"function\";\n }\n}\nfunction Ur(n) {\n const e = n.format();\n return (e === \"Error(string)\" || e === \"Panic(uint256)\") && W.throwArgumentError(`cannot specify user defined ${e} error`, \"fragment\", n), n;\n}\nclass At extends mt {\n format(e) {\n if (e || (e = K.sighash), K[e] || W.throwArgumentError(\"invalid format type\", \"format\", e), e === K.json)\n return JSON.stringify({\n type: \"error\",\n name: this.name,\n inputs: this.inputs.map((r) => JSON.parse(r.format(e)))\n });\n let t = \"\";\n return e !== K.sighash && (t += \"error \"), t += this.name + \"(\" + this.inputs.map((r) => r.format(e)).join(e === K.full ? \", \" : \",\") + \") \", t.trim();\n }\n static from(e) {\n return typeof e == \"string\" ? At.fromString(e) : At.fromObject(e);\n }\n static fromObject(e) {\n if (At.isErrorFragment(e))\n return e;\n e.type !== \"error\" && W.throwArgumentError(\"invalid error object\", \"value\", e);\n const t = {\n type: e.type,\n name: cn(e.name),\n inputs: e.inputs ? e.inputs.map(Ge.fromObject) : []\n };\n return Ur(new At(Ht, t));\n }\n static fromString(e) {\n let t = { type: \"error\" }, r = e.match(mn);\n return r || W.throwArgumentError(\"invalid error signature\", \"value\", e), t.name = r[1].trim(), t.name && cn(t.name), t.inputs = pn(r[2], !1), Ur(At.fromObject(t));\n }\n static isErrorFragment(e) {\n return e && e._isFragment && e.type === \"error\";\n }\n}\nfunction Wt(n) {\n return n.match(/^uint($|[^1-9])/) ? n = \"uint256\" + n.substring(4) : n.match(/^int($|[^1-9])/) && (n = \"int256\" + n.substring(3)), n;\n}\nconst ps = new RegExp(\"^[a-zA-Z$_][a-zA-Z0-9$_]*$\");\nfunction cn(n) {\n return (!n || !n.match(ps)) && W.throwArgumentError(`invalid identifier \"${n}\"`, \"value\", n), n;\n}\nconst mn = new RegExp(\"^([^)(]*)\\\\((.*)\\\\)([^)(]*)$\");\nfunction cs(n) {\n n = n.trim();\n let e = [], t = \"\", r = 0;\n for (let s = 0; s < n.length; s++) {\n let i = n[s];\n i === \",\" && r === 0 ? (e.push(t), t = \"\") : (t += i, i === \"(\" ? r++ : i === \")\" && (r--, r === -1 && W.throwArgumentError(\"unbalanced parenthesis\", \"value\", n)));\n }\n return t && e.push(t), e;\n}\nconst wr = new k(wn);\nfunction ms(n) {\n const e = [], t = function(r, s) {\n if (Array.isArray(s))\n for (let i in s) {\n const o = r.slice();\n o.push(i);\n try {\n t(o, s[i]);\n } catch (d) {\n e.push({ path: o, error: d });\n }\n }\n };\n return t([], n), e;\n}\nclass wt {\n constructor(e, t, r, s) {\n this.name = e, this.type = t, this.localName = r, this.dynamic = s;\n }\n _throwError(e, t) {\n wr.throwArgumentError(e, this.localName, t);\n }\n}\nclass ur {\n constructor(e) {\n B(this, \"wordSize\", e || 32), this._data = [], this._dataLength = 0, this._padding = new Uint8Array(e);\n }\n get data() {\n return Gi(this._data);\n }\n get length() {\n return this._dataLength;\n }\n _writeData(e) {\n return this._data.push(e), this._dataLength += e.length, e.length;\n }\n appendWriter(e) {\n return this._writeData(Yt(e._data));\n }\n // Arrayish items; padded on the right to wordSize\n writeBytes(e) {\n let t = Le(e);\n const r = t.length % this.wordSize;\n return r && (t = Yt([t, this._padding.slice(r)])), this._writeData(t);\n }\n _getValue(e) {\n let t = Le(j.from(e));\n return t.length > this.wordSize && wr.throwError(\"value out-of-bounds\", k.errors.BUFFER_OVERRUN, {\n length: this.wordSize,\n offset: t.length\n }), t.length % this.wordSize && (t = Yt([this._padding.slice(t.length % this.wordSize), t])), t;\n }\n // BigNumberish items; padded on the left to wordSize\n writeValue(e) {\n return this._writeData(this._getValue(e));\n }\n writeUpdatableValue() {\n const e = this._data.length;\n return this._data.push(this._padding), this._dataLength += this.wordSize, (t) => {\n this._data[e] = this._getValue(t);\n };\n }\n}\nclass Sn {\n constructor(e, t, r, s) {\n B(this, \"_data\", Le(e)), B(this, \"wordSize\", t || 32), B(this, \"_coerceFunc\", r), B(this, \"allowLoose\", s), this._offset = 0;\n }\n get data() {\n return Ue(this._data);\n }\n get consumed() {\n return this._offset;\n }\n // The default Coerce function\n static coerce(e, t) {\n let r = e.match(\"^u?int([0-9]+)$\");\n return r && parseInt(r[1]) <= 48 && (t = t.toNumber()), t;\n }\n coerce(e, t) {\n return this._coerceFunc ? this._coerceFunc(e, t) : Sn.coerce(e, t);\n }\n _peekBytes(e, t, r) {\n let s = Math.ceil(t / this.wordSize) * this.wordSize;\n return this._offset + s > this._data.length && (this.allowLoose && r && this._offset + t <= this._data.length ? s = t : wr.throwError(\"data out-of-bounds\", k.errors.BUFFER_OVERRUN, {\n length: this._data.length,\n offset: this._offset + s\n })), this._data.slice(this._offset, this._offset + s);\n }\n subReader(e) {\n return new Sn(this._data.slice(this._offset + e), this.wordSize, this._coerceFunc, this.allowLoose);\n }\n readBytes(e, t) {\n let r = this._peekBytes(0, e, !!t);\n return this._offset += r.length, r.slice(0, e);\n }\n readValue() {\n return j.from(this.readBytes(this.wordSize));\n }\n}\nclass ys extends wt {\n constructor(e) {\n super(\"address\", \"address\", e, !1);\n }\n defaultValue() {\n return \"0x0000000000000000000000000000000000000000\";\n }\n encode(e, t) {\n try {\n t = lt(t);\n } catch (r) {\n this._throwError(r.message, t);\n }\n return e.writeValue(t);\n }\n decode(e) {\n return lt(Rn(e.readValue().toHexString(), 20));\n }\n}\nclass gs extends wt {\n constructor(e) {\n super(e.name, e.type, void 0, e.dynamic), this.coder = e;\n }\n defaultValue() {\n return this.coder.defaultValue();\n }\n encode(e, t) {\n return this.coder.encode(e, t);\n }\n decode(e) {\n return this.coder.decode(e);\n }\n}\nconst Kt = new k(wn);\nfunction oi(n, e, t) {\n let r = null;\n if (Array.isArray(t))\n r = t;\n else if (t && typeof t == \"object\") {\n let c = {};\n r = e.map((p) => {\n const b = p.localName;\n return b || Kt.throwError(\"cannot encode object for signature with missing names\", k.errors.INVALID_ARGUMENT, {\n argument: \"values\",\n coder: p,\n value: t\n }), c[b] && Kt.throwError(\"cannot encode object for signature with duplicate names\", k.errors.INVALID_ARGUMENT, {\n argument: \"values\",\n coder: p,\n value: t\n }), c[b] = !0, t[b];\n });\n } else\n Kt.throwArgumentError(\"invalid tuple value\", \"tuple\", t);\n e.length !== r.length && Kt.throwArgumentError(\"types/value length mismatch\", \"tuple\", t);\n let s = new ur(n.wordSize), i = new ur(n.wordSize), o = [];\n e.forEach((c, p) => {\n let b = r[p];\n if (c.dynamic) {\n let x = i.length;\n c.encode(i, b);\n let T = s.writeUpdatableValue();\n o.push((P) => {\n T(P + x);\n });\n } else\n c.encode(s, b);\n }), o.forEach((c) => {\n c(s.length);\n });\n let d = n.appendWriter(s);\n return d += n.appendWriter(i), d;\n}\nfunction ui(n, e) {\n let t = [], r = n.subReader(0);\n e.forEach((i) => {\n let o = null;\n if (i.dynamic) {\n let d = n.readValue(), c = r.subReader(d.toNumber());\n try {\n o = i.decode(c);\n } catch (p) {\n if (p.code === k.errors.BUFFER_OVERRUN)\n throw p;\n o = p, o.baseType = i.name, o.name = i.localName, o.type = i.type;\n }\n } else\n try {\n o = i.decode(n);\n } catch (d) {\n if (d.code === k.errors.BUFFER_OVERRUN)\n throw d;\n o = d, o.baseType = i.name, o.name = i.localName, o.type = i.type;\n }\n o != null && t.push(o);\n });\n const s = e.reduce((i, o) => {\n const d = o.localName;\n return d && (i[d] || (i[d] = 0), i[d]++), i;\n }, {});\n e.forEach((i, o) => {\n let d = i.localName;\n if (!d || s[d] !== 1 || (d === \"length\" && (d = \"_length\"), t[d] != null))\n return;\n const c = t[o];\n c instanceof Error ? Object.defineProperty(t, d, {\n enumerable: !0,\n get: () => {\n throw c;\n }\n }) : t[d] = c;\n });\n for (let i = 0; i < t.length; i++) {\n const o = t[i];\n o instanceof Error && Object.defineProperty(t, i, {\n enumerable: !0,\n get: () => {\n throw o;\n }\n });\n }\n return Object.freeze(t);\n}\nclass ws extends wt {\n constructor(e, t, r) {\n const s = e.type + \"[\" + (t >= 0 ? t : \"\") + \"]\", i = t === -1 || e.dynamic;\n super(\"array\", s, r, i), this.coder = e, this.length = t;\n }\n defaultValue() {\n const e = this.coder.defaultValue(), t = [];\n for (let r = 0; r < this.length; r++)\n t.push(e);\n return t;\n }\n encode(e, t) {\n Array.isArray(t) || this._throwError(\"expected array value\", t);\n let r = this.length;\n r === -1 && (r = t.length, e.writeValue(t.length)), Kt.checkArgumentCount(t.length, r, \"coder array\" + (this.localName ? \" \" + this.localName : \"\"));\n let s = [];\n for (let i = 0; i < t.length; i++)\n s.push(this.coder);\n return oi(e, s, t);\n }\n decode(e) {\n let t = this.length;\n t === -1 && (t = e.readValue().toNumber(), t * 32 > e._data.length && Kt.throwError(\"insufficient data length\", k.errors.BUFFER_OVERRUN, {\n length: e._data.length,\n count: t\n }));\n let r = [];\n for (let s = 0; s < t; s++)\n r.push(new gs(this.coder));\n return e.coerce(this.name, ui(e, r));\n }\n}\nclass vs extends wt {\n constructor(e) {\n super(\"bool\", \"bool\", e, !1);\n }\n defaultValue() {\n return !1;\n }\n encode(e, t) {\n return e.writeValue(t ? 1 : 0);\n }\n decode(e) {\n return e.coerce(this.type, !e.readValue().isZero());\n }\n}\nclass li extends wt {\n constructor(e, t) {\n super(e, e, t, !0);\n }\n defaultValue() {\n return \"0x\";\n }\n encode(e, t) {\n t = Le(t);\n let r = e.writeValue(t.length);\n return r += e.writeBytes(t), r;\n }\n decode(e) {\n return e.readBytes(e.readValue().toNumber(), !0);\n }\n}\nclass bs extends li {\n constructor(e) {\n super(\"bytes\", e);\n }\n decode(e) {\n return e.coerce(this.name, Ue(super.decode(e)));\n }\n}\nclass Ms extends wt {\n constructor(e, t) {\n let r = \"bytes\" + String(e);\n super(r, r, t, !1), this.size = e;\n }\n defaultValue() {\n return \"0x0000000000000000000000000000000000000000000000000000000000000000\".substring(0, 2 + this.size * 2);\n }\n encode(e, t) {\n let r = Le(t);\n return r.length !== this.size && this._throwError(\"incorrect data length\", t), e.writeBytes(r);\n }\n decode(e) {\n return e.coerce(this.name, Ue(e.readBytes(this.size)));\n }\n}\nclass xs extends wt {\n constructor(e) {\n super(\"null\", \"\", e, !1);\n }\n defaultValue() {\n return null;\n }\n encode(e, t) {\n return t != null && this._throwError(\"not null\", t), e.writeBytes([]);\n }\n decode(e) {\n return e.readBytes(0), e.coerce(this.name, null);\n }\n}\nconst Es = /* @__PURE__ */ j.from(-1), Ts = /* @__PURE__ */ j.from(0), As = /* @__PURE__ */ j.from(1), _s = /* @__PURE__ */ j.from(\"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\");\nclass Ns extends wt {\n constructor(e, t, r) {\n const s = (t ? \"int\" : \"uint\") + e * 8;\n super(s, s, r, !1), this.size = e, this.signed = t;\n }\n defaultValue() {\n return 0;\n }\n encode(e, t) {\n let r = j.from(t), s = _s.mask(e.wordSize * 8);\n if (this.signed) {\n let i = s.mask(this.size * 8 - 1);\n (r.gt(i) || r.lt(i.add(As).mul(Es))) && this._throwError(\"value out-of-bounds\", t);\n } else (r.lt(Ts) || r.gt(s.mask(this.size * 8))) && this._throwError(\"value out-of-bounds\", t);\n return r = r.toTwos(this.size * 8).mask(this.size * 8), this.signed && (r = r.fromTwos(this.size * 8).toTwos(8 * e.wordSize)), e.writeValue(r);\n }\n decode(e) {\n let t = e.readValue().mask(this.size * 8);\n return this.signed && (t = t.fromTwos(this.size * 8)), e.coerce(this.name, t);\n }\n}\nconst Rs = \"strings/5.8.0\", fi = new k(Rs);\nvar kn;\n(function(n) {\n n.current = \"\", n.NFC = \"NFC\", n.NFD = \"NFD\", n.NFKC = \"NFKC\", n.NFKD = \"NFKD\";\n})(kn || (kn = {}));\nvar Ke;\n(function(n) {\n n.UNEXPECTED_CONTINUE = \"unexpected continuation byte\", n.BAD_PREFIX = \"bad codepoint prefix\", n.OVERRUN = \"string overrun\", n.MISSING_CONTINUE = \"missing continuation byte\", n.OUT_OF_RANGE = \"out of UTF-8 range\", n.UTF16_SURROGATE = \"UTF-16 surrogate\", n.OVERLONG = \"overlong representation\";\n})(Ke || (Ke = {}));\nfunction Is(n, e, t, r, s) {\n return fi.throwArgumentError(`invalid codepoint at offset ${e}; ${n}`, \"bytes\", t);\n}\nfunction di(n, e, t, r, s) {\n if (n === Ke.BAD_PREFIX || n === Ke.UNEXPECTED_CONTINUE) {\n let i = 0;\n for (let o = e + 1; o < t.length && t[o] >> 6 === 2; o++)\n i++;\n return i;\n }\n return n === Ke.OVERRUN ? t.length - e - 1 : 0;\n}\nfunction Ss(n, e, t, r, s) {\n return n === Ke.OVERLONG ? (r.push(s), 0) : (r.push(65533), di(n, e, t));\n}\nconst ks = Object.freeze({\n error: Is,\n ignore: di,\n replace: Ss\n});\nfunction Ps(n, e) {\n e == null && (e = ks.error), n = Le(n);\n const t = [];\n let r = 0;\n for (; r < n.length; ) {\n const s = n[r++];\n if (!(s >> 7)) {\n t.push(s);\n continue;\n }\n let i = null, o = null;\n if ((s & 224) === 192)\n i = 1, o = 127;\n else if ((s & 240) === 224)\n i = 2, o = 2047;\n else if ((s & 248) === 240)\n i = 3, o = 65535;\n else {\n (s & 192) === 128 ? r += e(Ke.UNEXPECTED_CONTINUE, r - 1, n, t) : r += e(Ke.BAD_PREFIX, r - 1, n, t);\n continue;\n }\n if (r - 1 + i >= n.length) {\n r += e(Ke.OVERRUN, r - 1, n, t);\n continue;\n }\n let d = s & (1 << 8 - i - 1) - 1;\n for (let c = 0; c < i; c++) {\n let p = n[r];\n if ((p & 192) != 128) {\n r += e(Ke.MISSING_CONTINUE, r, n, t), d = null;\n break;\n }\n d = d << 6 | p & 63, r++;\n }\n if (d !== null) {\n if (d > 1114111) {\n r += e(Ke.OUT_OF_RANGE, r - 1 - i, n, t, d);\n continue;\n }\n if (d >= 55296 && d <= 57343) {\n r += e(Ke.UTF16_SURROGATE, r - 1 - i, n, t, d);\n continue;\n }\n if (d <= o) {\n r += e(Ke.OVERLONG, r - 1 - i, n, t, d);\n continue;\n }\n t.push(d);\n }\n }\n return t;\n}\nfunction hi(n, e = kn.current) {\n e != kn.current && (fi.checkNormalize(), n = n.normalize(e));\n let t = [];\n for (let r = 0; r < n.length; r++) {\n const s = n.charCodeAt(r);\n if (s < 128)\n t.push(s);\n else if (s < 2048)\n t.push(s >> 6 | 192), t.push(s & 63 | 128);\n else if ((s & 64512) == 55296) {\n r++;\n const i = n.charCodeAt(r);\n if (r >= n.length || (i & 64512) !== 56320)\n throw new Error(\"invalid utf-8 string\");\n const o = 65536 + ((s & 1023) << 10) + (i & 1023);\n t.push(o >> 18 | 240), t.push(o >> 12 & 63 | 128), t.push(o >> 6 & 63 | 128), t.push(o & 63 | 128);\n } else\n t.push(s >> 12 | 224), t.push(s >> 6 & 63 | 128), t.push(s & 63 | 128);\n }\n return Le(t);\n}\nfunction Os(n) {\n return n.map((e) => e <= 65535 ? String.fromCharCode(e) : (e -= 65536, String.fromCharCode((e >> 10 & 1023) + 55296, (e & 1023) + 56320))).join(\"\");\n}\nfunction Cs(n, e) {\n return Os(Ps(n, e));\n}\nclass Us extends li {\n constructor(e) {\n super(\"string\", e);\n }\n defaultValue() {\n return \"\";\n }\n encode(e, t) {\n return super.encode(e, hi(t));\n }\n decode(e) {\n return Cs(super.decode(e));\n }\n}\nclass bn extends wt {\n constructor(e, t) {\n let r = !1;\n const s = [];\n e.forEach((o) => {\n o.dynamic && (r = !0), s.push(o.type);\n });\n const i = \"tuple(\" + s.join(\",\") + \")\";\n super(\"tuple\", i, t, r), this.coders = e;\n }\n defaultValue() {\n const e = [];\n this.coders.forEach((r) => {\n e.push(r.defaultValue());\n });\n const t = this.coders.reduce((r, s) => {\n const i = s.localName;\n return i && (r[i] || (r[i] = 0), r[i]++), r;\n }, {});\n return this.coders.forEach((r, s) => {\n let i = r.localName;\n !i || t[i] !== 1 || (i === \"length\" && (i = \"_length\"), e[i] == null && (e[i] = e[s]));\n }), Object.freeze(e);\n }\n encode(e, t) {\n return oi(e, this.coders, t);\n }\n decode(e) {\n return e.coerce(this.name, ui(e, this.coders));\n }\n}\nconst Mn = new k(wn), Bs = new RegExp(/^bytes([0-9]*)$/), Fs = new RegExp(/^(u?int)([0-9]*)$/);\nclass Ds {\n constructor(e) {\n B(this, \"coerceFunc\", e || null);\n }\n _getCoder(e) {\n switch (e.baseType) {\n case \"address\":\n return new ys(e.name);\n case \"bool\":\n return new vs(e.name);\n case \"string\":\n return new Us(e.name);\n case \"bytes\":\n return new bs(e.name);\n case \"array\":\n return new ws(this._getCoder(e.arrayChildren), e.arrayLength, e.name);\n case \"tuple\":\n return new bn((e.components || []).map((r) => this._getCoder(r)), e.name);\n case \"\":\n return new xs(e.name);\n }\n let t = e.type.match(Fs);\n if (t) {\n let r = parseInt(t[2] || \"256\");\n return (r === 0 || r > 256 || r % 8 !== 0) && Mn.throwArgumentError(\"invalid \" + t[1] + \" bit length\", \"param\", e), new Ns(r / 8, t[1] === \"int\", e.name);\n }\n if (t = e.type.match(Bs), t) {\n let r = parseInt(t[1]);\n return (r === 0 || r > 32) && Mn.throwArgumentError(\"invalid bytes length\", \"param\", e), new Ms(r, e.name);\n }\n return Mn.throwArgumentError(\"invalid type\", \"type\", e.type);\n }\n _getWordSize() {\n return 32;\n }\n _getReader(e, t) {\n return new Sn(e, this._getWordSize(), this.coerceFunc, t);\n }\n _getWriter() {\n return new ur(this._getWordSize());\n }\n getDefaultValue(e) {\n const t = e.map((s) => this._getCoder(Ge.from(s)));\n return new bn(t, \"_\").defaultValue();\n }\n encode(e, t) {\n e.length !== t.length && Mn.throwError(\"types/values length mismatch\", k.errors.INVALID_ARGUMENT, {\n count: { types: e.length, values: t.length },\n value: { types: e, values: t }\n });\n const r = e.map((o) => this._getCoder(Ge.from(o))), s = new bn(r, \"_\"), i = this._getWriter();\n return s.encode(i, t), i.data;\n }\n decode(e, t, r) {\n const s = e.map((o) => this._getCoder(Ge.from(o)));\n return new bn(s, \"_\").decode(this._getReader(Le(t), r));\n }\n}\nconst Ls = new Ds();\nfunction xn(n) {\n return dn(hi(n));\n}\nconst Oe = new k(wn);\nclass Gs extends Bn {\n}\nclass $s extends Bn {\n}\nclass qs extends Bn {\n}\nclass lr extends Bn {\n static isIndexed(e) {\n return !!(e && e._isIndexed);\n }\n}\nconst zs = {\n \"0x08c379a0\": { signature: \"Error(string)\", name: \"Error\", inputs: [\"string\"], reason: !0 },\n \"0x4e487b71\": { signature: \"Panic(uint256)\", name: \"Panic\", inputs: [\"uint256\"] }\n};\nfunction Br(n, e) {\n const t = new Error(`deferred error during ABI decoding triggered accessing ${n}`);\n return t.error = e, t;\n}\nclass Fr {\n constructor(e) {\n let t = [];\n typeof e == \"string\" ? t = JSON.parse(e) : t = e, B(this, \"fragments\", t.map((r) => mt.from(r)).filter((r) => r != null)), B(this, \"_abiCoder\", an(new.target, \"getAbiCoder\")()), B(this, \"functions\", {}), B(this, \"errors\", {}), B(this, \"events\", {}), B(this, \"structs\", {}), this.fragments.forEach((r) => {\n let s = null;\n switch (r.type) {\n case \"constructor\":\n if (this.deploy) {\n Oe.warn(\"duplicate definition - constructor\");\n return;\n }\n B(this, \"deploy\", r);\n return;\n case \"function\":\n s = this.functions;\n break;\n case \"event\":\n s = this.events;\n break;\n case \"error\":\n s = this.errors;\n break;\n default:\n return;\n }\n let i = r.format();\n if (s[i]) {\n Oe.warn(\"duplicate definition - \" + i);\n return;\n }\n s[i] = r;\n }), this.deploy || B(this, \"deploy\", ot.from({\n payable: !1,\n type: \"constructor\"\n })), B(this, \"_isInterface\", !0);\n }\n format(e) {\n e || (e = K.full), e === K.sighash && Oe.throwArgumentError(\"interface does not support formatting sighash\", \"format\", e);\n const t = this.fragments.map((r) => r.format(e));\n return e === K.json ? JSON.stringify(t.map((r) => JSON.parse(r))) : t;\n }\n // Sub-classes can override these to handle other blockchains\n static getAbiCoder() {\n return Ls;\n }\n static getAddress(e) {\n return lt(e);\n }\n static getSighash(e) {\n return Jr(xn(e.format()), 0, 4);\n }\n static getEventTopic(e) {\n return xn(e.format());\n }\n // Find a function definition by any means necessary (unless it is ambiguous)\n getFunction(e) {\n if (He(e)) {\n for (const r in this.functions)\n if (e === this.getSighash(r))\n return this.functions[r];\n Oe.throwArgumentError(\"no matching function\", \"sighash\", e);\n }\n if (e.indexOf(\"(\") === -1) {\n const r = e.trim(), s = Object.keys(this.functions).filter((i) => i.split(\n \"(\"\n /* fix:) */\n )[0] === r);\n return s.length === 0 ? Oe.throwArgumentError(\"no matching function\", \"name\", r) : s.length > 1 && Oe.throwArgumentError(\"multiple matching functions\", \"name\", r), this.functions[s[0]];\n }\n const t = this.functions[ut.fromString(e).format()];\n return t || Oe.throwArgumentError(\"no matching function\", \"signature\", e), t;\n }\n // Find an event definition by any means necessary (unless it is ambiguous)\n getEvent(e) {\n if (He(e)) {\n const r = e.toLowerCase();\n for (const s in this.events)\n if (r === this.getEventTopic(s))\n return this.events[s];\n Oe.throwArgumentError(\"no matching event\", \"topichash\", r);\n }\n if (e.indexOf(\"(\") === -1) {\n const r = e.trim(), s = Object.keys(this.events).filter((i) => i.split(\n \"(\"\n /* fix:) */\n )[0] === r);\n return s.length === 0 ? Oe.throwArgumentError(\"no matching event\", \"name\", r) : s.length > 1 && Oe.throwArgumentError(\"multiple matching events\", \"name\", r), this.events[s[0]];\n }\n const t = this.events[ct.fromString(e).format()];\n return t || Oe.throwArgumentError(\"no matching event\", \"signature\", e), t;\n }\n // Find a function definition by any means necessary (unless it is ambiguous)\n getError(e) {\n if (He(e)) {\n const r = an(this.constructor, \"getSighash\");\n for (const s in this.errors) {\n const i = this.errors[s];\n if (e === r(i))\n return this.errors[s];\n }\n Oe.throwArgumentError(\"no matching error\", \"sighash\", e);\n }\n if (e.indexOf(\"(\") === -1) {\n const r = e.trim(), s = Object.keys(this.errors).filter((i) => i.split(\n \"(\"\n /* fix:) */\n )[0] === r);\n return s.length === 0 ? Oe.throwArgumentError(\"no matching error\", \"name\", r) : s.length > 1 && Oe.throwArgumentError(\"multiple matching errors\", \"name\", r), this.errors[s[0]];\n }\n const t = this.errors[ut.fromString(e).format()];\n return t || Oe.throwArgumentError(\"no matching error\", \"signature\", e), t;\n }\n // Get the sighash (the bytes4 selector) used by Solidity to identify a function\n getSighash(e) {\n if (typeof e == \"string\")\n try {\n e = this.getFunction(e);\n } catch (t) {\n try {\n e = this.getError(e);\n } catch {\n throw t;\n }\n }\n return an(this.constructor, \"getSighash\")(e);\n }\n // Get the topic (the bytes32 hash) used by Solidity to identify an event\n getEventTopic(e) {\n return typeof e == \"string\" && (e = this.getEvent(e)), an(this.constructor, \"getEventTopic\")(e);\n }\n _decodeParams(e, t) {\n return this._abiCoder.decode(e, t);\n }\n _encodeParams(e, t) {\n return this._abiCoder.encode(e, t);\n }\n encodeDeploy(e) {\n return this._encodeParams(this.deploy.inputs, e || []);\n }\n decodeErrorResult(e, t) {\n typeof e == \"string\" && (e = this.getError(e));\n const r = Le(t);\n return Ue(r.slice(0, 4)) !== this.getSighash(e) && Oe.throwArgumentError(`data signature does not match error ${e.name}.`, \"data\", Ue(r)), this._decodeParams(e.inputs, r.slice(4));\n }\n encodeErrorResult(e, t) {\n return typeof e == \"string\" && (e = this.getError(e)), Ue(Yt([\n this.getSighash(e),\n this._encodeParams(e.inputs, t || [])\n ]));\n }\n // Decode the data for a function call (e.g. tx.data)\n decodeFunctionData(e, t) {\n typeof e == \"string\" && (e = this.getFunction(e));\n const r = Le(t);\n return Ue(r.slice(0, 4)) !== this.getSighash(e) && Oe.throwArgumentError(`data signature does not match function ${e.name}.`, \"data\", Ue(r)), this._decodeParams(e.inputs, r.slice(4));\n }\n // Encode the data for a function call (e.g. tx.data)\n encodeFunctionData(e, t) {\n return typeof e == \"string\" && (e = this.getFunction(e)), Ue(Yt([\n this.getSighash(e),\n this._encodeParams(e.inputs, t || [])\n ]));\n }\n // Decode the result from a function call (e.g. from eth_call)\n decodeFunctionResult(e, t) {\n typeof e == \"string\" && (e = this.getFunction(e));\n let r = Le(t), s = null, i = \"\", o = null, d = null, c = null;\n switch (r.length % this._abiCoder._getWordSize()) {\n case 0:\n try {\n return this._abiCoder.decode(e.outputs, r);\n } catch {\n }\n break;\n case 4: {\n const p = Ue(r.slice(0, 4)), b = zs[p];\n if (b)\n o = this._abiCoder.decode(b.inputs, r.slice(4)), d = b.name, c = b.signature, b.reason && (s = o[0]), d === \"Error\" ? i = `; VM Exception while processing transaction: reverted with reason string ${JSON.stringify(o[0])}` : d === \"Panic\" && (i = `; VM Exception while processing transaction: reverted with panic code ${o[0]}`);\n else\n try {\n const x = this.getError(p);\n o = this._abiCoder.decode(x.inputs, r.slice(4)), d = x.name, c = x.format();\n } catch {\n }\n break;\n }\n }\n return Oe.throwError(\"call revert exception\" + i, k.errors.CALL_EXCEPTION, {\n method: e.format(),\n data: Ue(t),\n errorArgs: o,\n errorName: d,\n errorSignature: c,\n reason: s\n });\n }\n // Encode the result for a function call (e.g. for eth_call)\n encodeFunctionResult(e, t) {\n return typeof e == \"string\" && (e = this.getFunction(e)), Ue(this._abiCoder.encode(e.outputs, t || []));\n }\n // Create the filter for the event with search criteria (e.g. for eth_filterLog)\n encodeFilterTopics(e, t) {\n typeof e == \"string\" && (e = this.getEvent(e)), t.length > e.inputs.length && Oe.throwError(\"too many arguments for \" + e.format(), k.errors.UNEXPECTED_ARGUMENT, {\n argument: \"values\",\n value: t\n });\n let r = [];\n e.anonymous || r.push(this.getEventTopic(e));\n const s = (i, o) => i.type === \"string\" ? xn(o) : i.type === \"bytes\" ? dn(Ue(o)) : (i.type === \"bool\" && typeof o == \"boolean\" && (o = o ? \"0x01\" : \"0x00\"), i.type.match(/^u?int/) && (o = j.from(o).toHexString()), i.type === \"address\" && this._abiCoder.encode([\"address\"], [o]), Rn(Ue(o), 32));\n for (t.forEach((i, o) => {\n let d = e.inputs[o];\n if (!d.indexed) {\n i != null && Oe.throwArgumentError(\"cannot filter non-indexed parameters; must be null\", \"contract.\" + d.name, i);\n return;\n }\n i == null ? r.push(null) : d.baseType === \"array\" || d.baseType === \"tuple\" ? Oe.throwArgumentError(\"filtering with tuples or arrays not supported\", \"contract.\" + d.name, i) : Array.isArray(i) ? r.push(i.map((c) => s(d, c))) : r.push(s(d, i));\n }); r.length && r[r.length - 1] === null; )\n r.pop();\n return r;\n }\n encodeEventLog(e, t) {\n typeof e == \"string\" && (e = this.getEvent(e));\n const r = [], s = [], i = [];\n return e.anonymous || r.push(this.getEventTopic(e)), t.length !== e.inputs.length && Oe.throwArgumentError(\"event arguments/values mismatch\", \"values\", t), e.inputs.forEach((o, d) => {\n const c = t[d];\n if (o.indexed)\n if (o.type === \"string\")\n r.push(xn(c));\n else if (o.type === \"bytes\")\n r.push(dn(c));\n else {\n if (o.baseType === \"tuple\" || o.baseType === \"array\")\n throw new Error(\"not implemented\");\n r.push(this._abiCoder.encode([o.type], [c]));\n }\n else\n s.push(o), i.push(c);\n }), {\n data: this._abiCoder.encode(s, i),\n topics: r\n };\n }\n // Decode a filter for the event and the search criteria\n decodeEventLog(e, t, r) {\n if (typeof e == \"string\" && (e = this.getEvent(e)), r != null && !e.anonymous) {\n let T = this.getEventTopic(e);\n (!He(r[0], 32) || r[0].toLowerCase() !== T) && Oe.throwError(\"fragment/topic mismatch\", k.errors.INVALID_ARGUMENT, { argument: \"topics[0]\", expected: T, value: r[0] }), r = r.slice(1);\n }\n let s = [], i = [], o = [];\n e.inputs.forEach((T, P) => {\n T.indexed ? T.type === \"string\" || T.type === \"bytes\" || T.baseType === \"tuple\" || T.baseType === \"array\" ? (s.push(Ge.fromObject({ type: \"bytes32\", name: T.name })), o.push(!0)) : (s.push(T), o.push(!1)) : (i.push(T), o.push(!1));\n });\n let d = r != null ? this._abiCoder.decode(s, Yt(r)) : null, c = this._abiCoder.decode(i, t, !0), p = [], b = 0, x = 0;\n e.inputs.forEach((T, P) => {\n if (T.indexed)\n if (d == null)\n p[P] = new lr({ _isIndexed: !0, hash: null });\n else if (o[P])\n p[P] = new lr({ _isIndexed: !0, hash: d[x++] });\n else\n try {\n p[P] = d[x++];\n } catch (D) {\n p[P] = D;\n }\n else\n try {\n p[P] = c[b++];\n } catch (D) {\n p[P] = D;\n }\n if (T.name && p[T.name] == null) {\n const D = p[P];\n D instanceof Error ? Object.defineProperty(p, T.name, {\n enumerable: !0,\n get: () => {\n throw Br(`property ${JSON.stringify(T.name)}`, D);\n }\n }) : p[T.name] = D;\n }\n });\n for (let T = 0; T < p.length; T++) {\n const P = p[T];\n P instanceof Error && Object.defineProperty(p, T, {\n enumerable: !0,\n get: () => {\n throw Br(`index ${T}`, P);\n }\n });\n }\n return Object.freeze(p);\n }\n // Given a transaction, find the matching function fragment (if any) and\n // determine all its properties and call parameters\n parseTransaction(e) {\n let t = this.getFunction(e.data.substring(0, 10).toLowerCase());\n return t ? new $s({\n args: this._abiCoder.decode(t.inputs, \"0x\" + e.data.substring(10)),\n functionFragment: t,\n name: t.name,\n signature: t.format(),\n sighash: this.getSighash(t),\n value: j.from(e.value || \"0\")\n }) : null;\n }\n // @TODO\n //parseCallResult(data: BytesLike): ??\n // Given an event log, find the matching event fragment (if any) and\n // determine all its properties and values\n parseLog(e) {\n let t = this.getEvent(e.topics[0]);\n return !t || t.anonymous ? null : new Gs({\n eventFragment: t,\n name: t.name,\n signature: t.format(),\n topic: this.getEventTopic(t),\n args: this.decodeEventLog(t, e.data, e.topics)\n });\n }\n parseError(e) {\n const t = Ue(e);\n let r = this.getError(t.substring(0, 10).toLowerCase());\n return r ? new qs({\n args: this._abiCoder.decode(r.inputs, \"0x\" + t.substring(10)),\n errorFragment: r,\n name: r.name,\n signature: r.format(),\n sighash: this.getSighash(r)\n }) : null;\n }\n /*\n static from(value: Array<Fragment | string | JsonAbi> | string | Interface) {\n if (Interface.isInterface(value)) {\n return value;\n }\n if (typeof(value) === \"string\") {\n return new Interface(JSON.parse(value));\n }\n return new Interface(value);\n }\n */\n static isInterface(e) {\n return !!(e && e._isInterface);\n }\n}\nconst Vs = \"abstract-provider/5.8.0\";\nvar js = function(n, e, t, r) {\n function s(i) {\n return i instanceof t ? i : new t(function(o) {\n o(i);\n });\n }\n return new (t || (t = Promise))(function(i, o) {\n function d(b) {\n try {\n p(r.next(b));\n } catch (x) {\n o(x);\n }\n }\n function c(b) {\n try {\n p(r.throw(b));\n } catch (x) {\n o(x);\n }\n }\n function p(b) {\n b.done ? i(b.value) : s(b.value).then(d, c);\n }\n p((r = r.apply(n, e || [])).next());\n });\n};\nconst Hs = new k(Vs);\nclass vr {\n constructor() {\n Hs.checkAbstract(new.target, vr), B(this, \"_isProvider\", !0);\n }\n getFeeData() {\n return js(this, void 0, void 0, function* () {\n const { block: e, gasPrice: t } = yield _t({\n block: this.getBlock(\"latest\"),\n gasPrice: this.getGasPrice().catch((o) => null)\n });\n let r = null, s = null, i = null;\n return e && e.baseFeePerGas && (r = e.baseFeePerGas, i = j.from(\"1500000000\"), s = e.baseFeePerGas.mul(2).add(i)), { lastBaseFeePerGas: r, maxFeePerGas: s, maxPriorityFeePerGas: i, gasPrice: t };\n });\n }\n // Alias for \"on\"\n addListener(e, t) {\n return this.on(e, t);\n }\n // Alias for \"off\"\n removeListener(e, t) {\n return this.off(e, t);\n }\n static isProvider(e) {\n return !!(e && e._isProvider);\n }\n}\nconst Zs = \"abstract-signer/5.8.0\";\nvar rt = function(n, e, t, r) {\n function s(i) {\n return i instanceof t ? i : new t(function(o) {\n o(i);\n });\n }\n return new (t || (t = Promise))(function(i, o) {\n function d(b) {\n try {\n p(r.next(b));\n } catch (x) {\n o(x);\n }\n }\n function c(b) {\n try {\n p(r.throw(b));\n } catch (x) {\n o(x);\n }\n }\n function p(b) {\n b.done ? i(b.value) : s(b.value).then(d, c);\n }\n p((r = r.apply(n, e || [])).next());\n });\n};\nconst Qe = new k(Zs), Ws = [\n \"accessList\",\n \"ccipReadEnabled\",\n \"chainId\",\n \"customData\",\n \"data\",\n \"from\",\n \"gasLimit\",\n \"gasPrice\",\n \"maxFeePerGas\",\n \"maxPriorityFeePerGas\",\n \"nonce\",\n \"to\",\n \"type\",\n \"value\"\n], Js = [\n k.errors.INSUFFICIENT_FUNDS,\n k.errors.NONCE_EXPIRED,\n k.errors.REPLACEMENT_UNDERPRICED\n];\nclass Fn {\n ///////////////////\n // Sub-classes MUST call super\n constructor() {\n Qe.checkAbstract(new.target, Fn), B(this, \"_isSigner\", !0);\n }\n ///////////////////\n // Sub-classes MAY override these\n getBalance(e) {\n return rt(this, void 0, void 0, function* () {\n return this._checkProvider(\"getBalance\"), yield this.provider.getBalance(this.getAddress(), e);\n });\n }\n getTransactionCount(e) {\n return rt(this, void 0, void 0, function* () {\n return this._checkProvider(\"getTransactionCount\"), yield this.provider.getTransactionCount(this.getAddress(), e);\n });\n }\n // Populates \"from\" if unspecified, and estimates the gas for the transaction\n estimateGas(e) {\n return rt(this, void 0, void 0, function* () {\n this._checkProvider(\"estimateGas\");\n const t = yield _t(this.checkTransaction(e));\n return yield this.provider.estimateGas(t);\n });\n }\n // Populates \"from\" if unspecified, and calls with the transaction\n call(e, t) {\n return rt(this, void 0, void 0, function* () {\n this._checkProvider(\"call\");\n const r = yield _t(this.checkTransaction(e));\n return yield this.provider.call(r, t);\n });\n }\n // Populates all fields in a transaction, signs it and sends it to the network\n sendTransaction(e) {\n return rt(this, void 0, void 0, function* () {\n this._checkProvider(\"sendTransaction\");\n const t = yield this.populateTransaction(e), r = yield this.signTransaction(t);\n return yield this.provider.sendTransaction(r);\n });\n }\n getChainId() {\n return rt(this, void 0, void 0, function* () {\n return this._checkProvider(\"getChainId\"), (yield this.provider.getNetwork()).chainId;\n });\n }\n getGasPrice() {\n return rt(this, void 0, void 0, function* () {\n return this._checkProvider(\"getGasPrice\"), yield this.provider.getGasPrice();\n });\n }\n getFeeData() {\n return rt(this, void 0, void 0, function* () {\n return this._checkProvider(\"getFeeData\"), yield this.provider.getFeeData();\n });\n }\n resolveName(e) {\n return rt(this, void 0, void 0, function* () {\n return this._checkProvider(\"resolveName\"), yield this.provider.resolveName(e);\n });\n }\n // Checks a transaction does not contain invalid keys and if\n // no \"from\" is provided, populates it.\n // - does NOT require a provider\n // - adds \"from\" is not present\n // - returns a COPY (safe to mutate the result)\n // By default called from: (overriding these prevents it)\n // - call\n // - estimateGas\n // - populateTransaction (and therefor sendTransaction)\n checkTransaction(e) {\n for (const r in e)\n Ws.indexOf(r) === -1 && Qe.throwArgumentError(\"invalid transaction key: \" + r, \"transaction\", e);\n const t = en(e);\n return t.from == null ? t.from = this.getAddress() : t.from = Promise.all([\n Promise.resolve(t.from),\n this.getAddress()\n ]).then((r) => (r[0].toLowerCase() !== r[1].toLowerCase() && Qe.throwArgumentError(\"from address mismatch\", \"transaction\", e), r[0])), t;\n }\n // Populates ALL keys for a transaction and checks that \"from\" matches\n // this Signer. Should be used by sendTransaction but NOT by signTransaction.\n // By default called from: (overriding these prevents it)\n // - sendTransaction\n //\n // Notes:\n // - We allow gasPrice for EIP-1559 as long as it matches maxFeePerGas\n populateTransaction(e) {\n return rt(this, void 0, void 0, function* () {\n const t = yield _t(this.checkTransaction(e));\n t.to != null && (t.to = Promise.resolve(t.to).then((s) => rt(this, void 0, void 0, function* () {\n if (s == null)\n return null;\n const i = yield this.resolveName(s);\n return i == null && Qe.throwArgumentError(\"provided ENS name resolves to null\", \"tx.to\", s), i;\n })), t.to.catch((s) => {\n }));\n const r = t.maxFeePerGas != null || t.maxPriorityFeePerGas != null;\n if (t.gasPrice != null && (t.type === 2 || r) ? Qe.throwArgumentError(\"eip-1559 transaction do not support gasPrice\", \"transaction\", e) : (t.type === 0 || t.type === 1) && r && Qe.throwArgumentError(\"pre-eip-1559 transaction do not support maxFeePerGas/maxPriorityFeePerGas\", \"transaction\", e), (t.type === 2 || t.type == null) && t.maxFeePerGas != null && t.maxPriorityFeePerGas != null)\n t.type = 2;\n else if (t.type === 0 || t.type === 1)\n t.gasPrice == null && (t.gasPrice = this.getGasPrice());\n else {\n const s = yield this.getFeeData();\n if (t.type == null)\n if (s.maxFeePerGas != null && s.maxPriorityFeePerGas != null)\n if (t.type = 2, t.gasPrice != null) {\n const i = t.gasPrice;\n delete t.gasPrice, t.maxFeePerGas = i, t.maxPriorityFeePerGas = i;\n } else\n t.maxFeePerGas == null && (t.maxFeePerGas = s.maxFeePerGas), t.maxPriorityFeePerGas == null && (t.maxPriorityFeePerGas = s.maxPriorityFeePerGas);\n else s.gasPrice != null ? (r && Qe.throwError(\"network does not support EIP-1559\", k.errors.UNSUPPORTED_OPERATION, {\n operation: \"populateTransaction\"\n }), t.gasPrice == null && (t.gasPrice = s.gasPrice), t.type = 0) : Qe.throwError(\"failed to get consistent fee data\", k.errors.UNSUPPORTED_OPERATION, {\n operation: \"signer.getFeeData\"\n });\n else t.type === 2 && (t.maxFeePerGas == null && (t.maxFeePerGas = s.maxFeePerGas), t.maxPriorityFeePerGas == null && (t.maxPriorityFeePerGas = s.maxPriorityFeePerGas));\n }\n return t.nonce == null && (t.nonce = this.getTransactionCount(\"pending\")), t.gasLimit == null && (t.gasLimit = this.estimateGas(t).catch((s) => {\n if (Js.indexOf(s.code) >= 0)\n throw s;\n return Qe.throwError(\"cannot estimate gas; transaction may fail or may require manual gas limit\", k.errors.UNPREDICTABLE_GAS_LIMIT, {\n error: s,\n tx: t\n });\n })), t.chainId == null ? t.chainId = this.getChainId() : t.chainId = Promise.all([\n Promise.resolve(t.chainId),\n this.getChainId()\n ]).then((s) => (s[1] !== 0 && s[0] !== s[1] && Qe.throwArgumentError(\"chainId address mismatch\", \"transaction\", e), s[0])), yield _t(t);\n });\n }\n ///////////////////\n // Sub-classes SHOULD leave these alone\n _checkProvider(e) {\n this.provider || Qe.throwError(\"missing provider\", k.errors.UNSUPPORTED_OPERATION, {\n operation: e || \"_checkProvider\"\n });\n }\n static isSigner(e) {\n return !!(e && e._isSigner);\n }\n}\nclass br extends Fn {\n constructor(e, t) {\n super(), B(this, \"address\", e), B(this, \"provider\", t || null);\n }\n getAddress() {\n return Promise.resolve(this.address);\n }\n _fail(e, t) {\n return Promise.resolve().then(() => {\n Qe.throwError(e, k.errors.UNSUPPORTED_OPERATION, { operation: t });\n });\n }\n signMessage(e) {\n return this._fail(\"VoidSigner cannot sign messages\", \"signMessage\");\n }\n signTransaction(e) {\n return this._fail(\"VoidSigner cannot sign transactions\", \"signTransaction\");\n }\n _signTypedData(e, t, r) {\n return this._fail(\"VoidSigner cannot sign typed data\", \"signTypedData\");\n }\n connect(e) {\n return new br(this.address, e);\n }\n}\nconst Ks = \"transactions/5.8.0\", pi = new k(Ks);\nvar Dr;\n(function(n) {\n n[n.legacy = 0] = \"legacy\", n[n.eip2930 = 1] = \"eip2930\", n[n.eip1559 = 2] = \"eip1559\";\n})(Dr || (Dr = {}));\nfunction ar(n, e) {\n return {\n address: lt(n),\n storageKeys: (e || []).map((t, r) => (Li(t) !== 32 && pi.throwArgumentError(\"invalid access list storageKey\", `accessList[${n}:${r}]`, t), t.toLowerCase()))\n };\n}\nfunction Xs(n) {\n if (Array.isArray(n))\n return n.map((t, r) => Array.isArray(t) ? (t.length > 2 && pi.throwArgumentError(\"access list expected to be [ address, storageKeys[] ]\", `value[${r}]`, t), ar(t[0], t[1])) : ar(t.address, t.storageKeys));\n const e = Object.keys(n).map((t) => {\n const r = n[t].reduce((s, i) => (s[i] = !0, s), {});\n return ar(t, Object.keys(r).sort());\n });\n return e.sort((t, r) => t.address.localeCompare(r.address)), e;\n}\nconst Ys = \"contracts/5.8.0\";\nvar Zt = function(n, e, t, r) {\n function s(i) {\n return i instanceof t ? i : new t(function(o) {\n o(i);\n });\n }\n return new (t || (t = Promise))(function(i, o) {\n function d(b) {\n try {\n p(r.next(b));\n } catch (x) {\n o(x);\n }\n }\n function c(b) {\n try {\n p(r.throw(b));\n } catch (x) {\n o(x);\n }\n }\n function p(b) {\n b.done ? i(b.value) : s(b.value).then(d, c);\n }\n p((r = r.apply(n, e || [])).next());\n });\n};\nconst Be = new k(Ys);\nfunction Pn(n, e) {\n return Zt(this, void 0, void 0, function* () {\n const t = yield e;\n typeof t != \"string\" && Be.throwArgumentError(\"invalid address or ENS name\", \"name\", t);\n try {\n return lt(t);\n } catch {\n }\n n || Be.throwError(\"a provider or signer is needed to resolve ENS names\", k.errors.UNSUPPORTED_OPERATION, {\n operation: \"resolveName\"\n });\n const r = yield n.resolveName(t);\n return r == null && Be.throwArgumentError(\"resolver or addr is not configured for ENS name\", \"name\", t), r;\n });\n}\nfunction _n(n, e, t) {\n return Zt(this, void 0, void 0, function* () {\n return Array.isArray(t) ? yield Promise.all(t.map((r, s) => _n(n, Array.isArray(e) ? e[s] : e[r.name], r))) : t.type === \"address\" ? yield Pn(n, e) : t.type === \"tuple\" ? yield _n(n, e, t.components) : t.baseType === \"array\" ? Array.isArray(e) ? yield Promise.all(e.map((r) => _n(n, r, t.arrayChildren))) : Promise.reject(Be.makeError(\"invalid value for array\", k.errors.INVALID_ARGUMENT, {\n argument: \"value\",\n value: e\n })) : e;\n });\n}\nfunction Dn(n, e, t) {\n return Zt(this, void 0, void 0, function* () {\n let r = {};\n t.length === e.inputs.length + 1 && typeof t[t.length - 1] == \"object\" && (r = en(t.pop())), Be.checkArgumentCount(t.length, e.inputs.length, \"passed to contract\"), n.signer ? r.from ? r.from = _t({\n override: Pn(n.signer, r.from),\n signer: n.signer.getAddress()\n }).then((p) => Zt(this, void 0, void 0, function* () {\n return lt(p.signer) !== p.override && Be.throwError(\"Contract with a Signer cannot override from\", k.errors.UNSUPPORTED_OPERATION, {\n operation: \"overrides.from\"\n }), p.override;\n })) : r.from = n.signer.getAddress() : r.from && (r.from = Pn(n.provider, r.from));\n const s = yield _t({\n args: _n(n.signer || n.provider, t, e.inputs),\n address: n.resolvedAddress,\n overrides: _t(r) || {}\n }), i = n.interface.encodeFunctionData(e, s.args), o = {\n data: i,\n to: s.address\n }, d = s.overrides;\n if (d.nonce != null && (o.nonce = j.from(d.nonce).toNumber()), d.gasLimit != null && (o.gasLimit = j.from(d.gasLimit)), d.gasPrice != null && (o.gasPrice = j.from(d.gasPrice)), d.maxFeePerGas != null && (o.maxFeePerGas = j.from(d.maxFeePerGas)), d.maxPriorityFeePerGas != null && (o.maxPriorityFeePerGas = j.from(d.maxPriorityFeePerGas)), d.from != null && (o.from = d.from), d.type != null && (o.type = d.type), d.accessList != null && (o.accessList = Xs(d.accessList)), o.gasLimit == null && e.gas != null) {\n let p = 21e3;\n const b = Le(i);\n for (let x = 0; x < b.length; x++)\n p += 4, b[x] && (p += 64);\n o.gasLimit = j.from(e.gas).add(p);\n }\n if (d.value) {\n const p = j.from(d.value);\n !p.isZero() && !e.payable && Be.throwError(\"non-payable method cannot override value\", k.errors.UNSUPPORTED_OPERATION, {\n operation: \"overrides.value\",\n value: r.value\n }), o.value = p;\n }\n d.customData && (o.customData = en(d.customData)), d.ccipReadEnabled && (o.ccipReadEnabled = !!d.ccipReadEnabled), delete r.nonce, delete r.gasLimit, delete r.gasPrice, delete r.from, delete r.value, delete r.type, delete r.accessList, delete r.maxFeePerGas, delete r.maxPriorityFeePerGas, delete r.customData, delete r.ccipReadEnabled;\n const c = Object.keys(r).filter((p) => r[p] != null);\n return c.length && Be.throwError(`cannot override ${c.map((p) => JSON.stringify(p)).join(\",\")}`, k.errors.UNSUPPORTED_OPERATION, {\n operation: \"overrides\",\n overrides: c\n }), o;\n });\n}\nfunction Qs(n, e) {\n return function(...t) {\n return Dn(n, e, t);\n };\n}\nfunction ea(n, e) {\n const t = n.signer || n.provider;\n return function(...r) {\n return Zt(this, void 0, void 0, function* () {\n t || Be.throwError(\"estimate require a provider or signer\", k.errors.UNSUPPORTED_OPERATION, {\n operation: \"estimateGas\"\n });\n const s = yield Dn(n, e, r);\n return yield t.estimateGas(s);\n });\n };\n}\nfunction ta(n, e) {\n const t = e.wait.bind(e);\n e.wait = (r) => t(r).then((s) => (s.events = s.logs.map((i) => {\n let o = hn(i), d = null;\n try {\n d = n.interface.parseLog(i);\n } catch {\n }\n return d && (o.args = d.args, o.decode = (c, p) => n.interface.decodeEventLog(d.eventFragment, c, p), o.event = d.name, o.eventSignature = d.signature), o.removeListener = () => n.provider, o.getBlock = () => n.provider.getBlock(s.blockHash), o.getTransaction = () => n.provider.getTransaction(s.transactionHash), o.getTransactionReceipt = () => Promise.resolve(s), o;\n }), s));\n}\nfunction ci(n, e, t) {\n const r = n.signer || n.provider;\n return function(...s) {\n return Zt(this, void 0, void 0, function* () {\n let i;\n if (s.length === e.inputs.length + 1 && typeof s[s.length - 1] == \"object\") {\n const c = en(s.pop());\n c.blockTag != null && (i = yield c.blockTag), delete c.blockTag, s.push(c);\n }\n n.deployTransaction != null && (yield n._deployed(i));\n const o = yield Dn(n, e, s), d = yield r.call(o, i);\n try {\n let c = n.interface.decodeFunctionResult(e, d);\n return t && e.outputs.length === 1 && (c = c[0]), c;\n } catch (c) {\n throw c.code === k.errors.CALL_EXCEPTION && (c.address = n.address, c.args = s, c.transaction = o), c;\n }\n });\n };\n}\nfunction na(n, e) {\n return function(...t) {\n return Zt(this, void 0, void 0, function* () {\n n.signer || Be.throwError(\"sending a transaction requires a signer\", k.errors.UNSUPPORTED_OPERATION, {\n operation: \"sendTransaction\"\n }), n.deployTransaction != null && (yield n._deployed());\n const r = yield Dn(n, e, t), s = yield n.signer.sendTransaction(r);\n return ta(n, s), s;\n });\n };\n}\nfunction Lr(n, e, t) {\n return e.constant ? ci(n, e, t) : na(n, e);\n}\nfunction mi(n) {\n return n.address && (n.topics == null || n.topics.length === 0) ? \"*\" : (n.address || \"*\") + \"@\" + (n.topics ? n.topics.map((e) => Array.isArray(e) ? e.join(\"|\") : e).join(\":\") : \"\");\n}\nclass yn {\n constructor(e, t) {\n B(this, \"tag\", e), B(this, \"filter\", t), this._listeners = [];\n }\n addListener(e, t) {\n this._listeners.push({ listener: e, once: t });\n }\n removeListener(e) {\n let t = !1;\n this._listeners = this._listeners.filter((r) => t || r.listener !== e ? !0 : (t = !0, !1));\n }\n removeAllListeners() {\n this._listeners = [];\n }\n listeners() {\n return this._listeners.map((e) => e.listener);\n }\n listenerCount() {\n return this._listeners.length;\n }\n run(e) {\n const t = this.listenerCount();\n return this._listeners = this._listeners.filter((r) => {\n const s = e.slice();\n return setTimeout(() => {\n r.listener.apply(this, s);\n }, 0), !r.once;\n }), t;\n }\n prepareEvent(e) {\n }\n // Returns the array that will be applied to an emit\n getEmit(e) {\n return [e];\n }\n}\nclass ra extends yn {\n constructor() {\n super(\"error\", null);\n }\n}\nclass Gr extends yn {\n constructor(e, t, r, s) {\n const i = {\n address: e\n };\n let o = t.getEventTopic(r);\n s ? (o !== s[0] && Be.throwArgumentError(\"topic mismatch\", \"topics\", s), i.topics = s.slice()) : i.topics = [o], super(mi(i), i), B(this, \"address\", e), B(this, \"interface\", t), B(this, \"fragment\", r);\n }\n prepareEvent(e) {\n super.prepareEvent(e), e.event = this.fragment.name, e.eventSignature = this.fragment.format(), e.decode = (t, r) => this.interface.decodeEventLog(this.fragment, t, r);\n try {\n e.args = this.interface.decodeEventLog(this.fragment, e.data, e.topics);\n } catch (t) {\n e.args = null, e.decodeError = t;\n }\n }\n getEmit(e) {\n const t = ms(e.args);\n if (t.length)\n throw t[0].error;\n const r = (e.args || []).slice();\n return r.push(e), r;\n }\n}\nclass $r extends yn {\n constructor(e, t) {\n super(\"*\", { address: e }), B(this, \"address\", e), B(this, \"interface\", t);\n }\n prepareEvent(e) {\n super.prepareEvent(e);\n try {\n const t = this.interface.parseLog(e);\n e.event = t.name, e.eventSignature = t.signature, e.decode = (r, s) => this.interface.decodeEventLog(t.eventFragment, r, s), e.args = t.args;\n } catch {\n }\n }\n}\nclass ia {\n constructor(e, t, r) {\n B(this, \"interface\", an(new.target, \"getInterface\")(t)), r == null ? (B(this, \"provider\", null), B(this, \"signer\", null)) : Fn.isSigner(r) ? (B(this, \"provider\", r.provider || null), B(this, \"signer\", r)) : vr.isProvider(r) ? (B(this, \"provider\", r), B(this, \"signer\", null)) : Be.throwArgumentError(\"invalid signer or provider\", \"signerOrProvider\", r), B(this, \"callStatic\", {}), B(this, \"estimateGas\", {}), B(this, \"functions\", {}), B(this, \"populateTransaction\", {}), B(this, \"filters\", {});\n {\n const o = {};\n Object.keys(this.interface.events).forEach((d) => {\n const c = this.interface.events[d];\n B(this.filters, d, (...p) => ({\n address: this.address,\n topics: this.interface.encodeFilterTopics(c, p)\n })), o[c.name] || (o[c.name] = []), o[c.name].push(d);\n }), Object.keys(o).forEach((d) => {\n const c = o[d];\n c.length === 1 ? B(this.filters, d, this.filters[c[0]]) : Be.warn(`Duplicate definition of ${d} (${c.join(\", \")})`);\n });\n }\n if (B(this, \"_runningEvents\", {}), B(this, \"_wrappedEmits\", {}), e == null && Be.throwArgumentError(\"invalid contract address or ENS name\", \"addressOrName\", e), B(this, \"address\", e), this.provider)\n B(this, \"resolvedAddress\", Pn(this.provider, e));\n else\n try {\n B(this, \"resolvedAddress\", Promise.resolve(lt(e)));\n } catch {\n Be.throwError(\"provider is required to use ENS name as contract address\", k.errors.UNSUPPORTED_OPERATION, {\n operation: \"new Contract\"\n });\n }\n this.resolvedAddress.catch((o) => {\n });\n const s = {}, i = {};\n Object.keys(this.interface.functions).forEach((o) => {\n const d = this.interface.functions[o];\n if (i[o]) {\n Be.warn(`Duplicate ABI entry for ${JSON.stringify(o)}`);\n return;\n }\n i[o] = !0;\n {\n const c = d.name;\n s[`%${c}`] || (s[`%${c}`] = []), s[`%${c}`].push(o);\n }\n this[o] == null && B(this, o, Lr(this, d, !0)), this.functions[o] == null && B(this.functions, o, Lr(this, d, !1)), this.callStatic[o] == null && B(this.callStatic, o, ci(this, d, !0)), this.populateTransaction[o] == null && B(this.populateTransaction, o, Qs(this, d)), this.estimateGas[o] == null && B(this.estimateGas, o, ea(this, d));\n }), Object.keys(s).forEach((o) => {\n const d = s[o];\n if (d.length > 1)\n return;\n o = o.substring(1);\n const c = d[0];\n try {\n this[o] == null && B(this, o, this[c]);\n } catch {\n }\n this.functions[o] == null && B(this.functions, o, this.functions[c]), this.callStatic[o] == null && B(this.callStatic, o, this.callStatic[c]), this.populateTransaction[o] == null && B(this.populateTransaction, o, this.populateTransaction[c]), this.estimateGas[o] == null && B(this.estimateGas, o, this.estimateGas[c]);\n });\n }\n static getContractAddress(e) {\n return ss(e);\n }\n static getInterface(e) {\n return Fr.isInterface(e) ? e : new Fr(e);\n }\n // @TODO: Allow timeout?\n deployed() {\n return this._deployed();\n }\n _deployed(e) {\n return this._deployedPromise || (this.deployTransaction ? this._deployedPromise = this.deployTransaction.wait().then(() => this) : this._deployedPromise = this.provider.getCode(this.address, e).then((t) => (t === \"0x\" && Be.throwError(\"contract not deployed\", k.errors.UNSUPPORTED_OPERATION, {\n contractAddress: this.address,\n operation: \"getDeployed\"\n }), this))), this._deployedPromise;\n }\n // @TODO:\n // estimateFallback(overrides?: TransactionRequest): Promise<BigNumber>\n // @TODO:\n // estimateDeploy(bytecode: string, ...args): Promise<BigNumber>\n fallback(e) {\n this.signer || Be.throwError(\"sending a transactions require a signer\", k.errors.UNSUPPORTED_OPERATION, { operation: \"sendTransaction(fallback)\" });\n const t = en(e || {});\n return [\"from\", \"to\"].forEach(function(r) {\n t[r] != null && Be.throwError(\"cannot override \" + r, k.errors.UNSUPPORTED_OPERATION, { operation: r });\n }), t.to = this.resolvedAddress, this.deployed().then(() => this.signer.sendTransaction(t));\n }\n // Reconnect to a different signer or provider\n connect(e) {\n typeof e == \"string\" && (e = new br(e, this.provider));\n const t = new this.constructor(this.address, this.interface, e);\n return this.deployTransaction && B(t, \"deployTransaction\", this.deployTransaction), t;\n }\n // Re-attach to a different on-chain instance of this contract\n attach(e) {\n return new this.constructor(e, this.interface, this.signer || this.provider);\n }\n static isIndexed(e) {\n return lr.isIndexed(e);\n }\n _normalizeRunningEvent(e) {\n return this._runningEvents[e.tag] ? this._runningEvents[e.tag] : e;\n }\n _getRunningEvent(e) {\n if (typeof e == \"string\") {\n if (e === \"error\")\n return this._normalizeRunningEvent(new ra());\n if (e === \"event\")\n return this._normalizeRunningEvent(new yn(\"event\", null));\n if (e === \"*\")\n return this._normalizeRunningEvent(new $r(this.address, this.interface));\n const t = this.interface.getEvent(e);\n return this._normalizeRunningEvent(new Gr(this.address, this.interface, t));\n }\n if (e.topics && e.topics.length > 0) {\n try {\n const r = e.topics[0];\n if (typeof r != \"string\")\n throw new Error(\"invalid topic\");\n const s = this.interface.getEvent(r);\n return this._normalizeRunningEvent(new Gr(this.address, this.interface, s, e.topics));\n } catch {\n }\n const t = {\n address: this.address,\n topics: e.topics\n };\n return this._normalizeRunningEvent(new yn(mi(t), t));\n }\n return this._normalizeRunningEvent(new $r(this.address, this.interface));\n }\n _checkRunningEvents(e) {\n if (e.listenerCount() === 0) {\n delete this._runningEvents[e.tag];\n const t = this._wrappedEmits[e.tag];\n t && e.filter && (this.provider.off(e.filter, t), delete this._wrappedEmits[e.tag]);\n }\n }\n // Subclasses can override this to gracefully recover\n // from parse errors if they wish\n _wrapEvent(e, t, r) {\n const s = hn(t);\n return s.removeListener = () => {\n r && (e.removeListener(r), this._checkRunningEvents(e));\n }, s.getBlock = () => this.provider.getBlock(t.blockHash), s.getTransaction = () => this.provider.getTransaction(t.transactionHash), s.getTransactionReceipt = () => this.provider.getTransactionReceipt(t.transactionHash), e.prepareEvent(s), s;\n }\n _addEventListener(e, t, r) {\n if (this.provider || Be.throwError(\"events require a provider or a signer with a provider\", k.errors.UNSUPPORTED_OPERATION, { operation: \"once\" }), e.addListener(t, r), this._runningEvents[e.tag] = e, !this._wrappedEmits[e.tag]) {\n const s = (i) => {\n let o = this._wrapEvent(e, i, t);\n if (o.decodeError == null)\n try {\n const d = e.getEmit(o);\n this.emit(e.filter, ...d);\n } catch (d) {\n o.decodeError = d.error;\n }\n e.filter != null && this.emit(\"event\", o), o.decodeError != null && this.emit(\"error\", o.decodeError, o);\n };\n this._wrappedEmits[e.tag] = s, e.filter != null && this.provider.on(e.filter, s);\n }\n }\n queryFilter(e, t, r) {\n const s = this._getRunningEvent(e), i = en(s.filter);\n return typeof t == \"string\" && He(t, 32) ? (r != null && Be.throwArgumentError(\"cannot specify toBlock with blockhash\", \"toBlock\", r), i.blockHash = t) : (i.fromBlock = t ?? 0, i.toBlock = r ?? \"latest\"), this.provider.getLogs(i).then((o) => o.map((d) => this._wrapEvent(s, d, null)));\n }\n on(e, t) {\n return this._addEventListener(this._getRunningEvent(e), t, !1), this;\n }\n once(e, t) {\n return this._addEventListener(this._getRunningEvent(e), t, !0), this;\n }\n emit(e, ...t) {\n if (!this.provider)\n return !1;\n const r = this._getRunningEvent(e), s = r.run(t) > 0;\n return this._checkRunningEvents(r), s;\n }\n listenerCount(e) {\n return this.provider ? e == null ? Object.keys(this._runningEvents).reduce((t, r) => t + this._runningEvents[r].listenerCount(), 0) : this._getRunningEvent(e).listenerCount() : 0;\n }\n listeners(e) {\n if (!this.provider)\n return [];\n if (e == null) {\n const t = [];\n for (let r in this._runningEvents)\n this._runningEvents[r].listeners().forEach((s) => {\n t.push(s);\n });\n return t;\n }\n return this._getRunningEvent(e).listeners();\n }\n removeAllListeners(e) {\n if (!this.provider)\n return this;\n if (e == null) {\n for (const r in this._runningEvents) {\n const s = this._runningEvents[r];\n s.removeAllListeners(), this._checkRunningEvents(s);\n }\n return this;\n }\n const t = this._getRunningEvent(e);\n return t.removeAllListeners(), this._checkRunningEvents(t), this;\n }\n off(e, t) {\n if (!this.provider)\n return this;\n const r = this._getRunningEvent(e);\n return r.removeListener(t), this._checkRunningEvents(r), this;\n }\n removeListener(e, t) {\n return this.off(e, t);\n }\n}\nclass sa extends ia {\n}\nconst aa = \"units/5.7.0\", oa = new k(aa), ua = [\n \"wei\",\n \"kwei\",\n \"mwei\",\n \"gwei\",\n \"szabo\",\n \"finney\",\n \"ether\"\n];\nfunction la(n) {\n const e = String(n).split(\".\");\n (e.length > 2 || !e[0].match(/^-?[0-9]*$/) || e[1] && !e[1].match(/^[0-9]*$/) || n === \".\" || n === \"-.\") && oa.throwArgumentError(\"invalid value\", \"value\", n);\n let t = e[0], r = \"\";\n for (t.substring(0, 1) === \"-\" && (r = \"-\", t = t.substring(1)); t.substring(0, 1) === \"0\"; )\n t = t.substring(1);\n t === \"\" && (t = \"0\");\n let s = \"\";\n for (e.length === 2 && (s = \".\" + (e[1] || \"0\")); s.length > 2 && s[s.length - 1] === \"0\"; )\n s = s.substring(0, s.length - 1);\n const i = [];\n for (; t.length; )\n if (t.length <= 3) {\n i.unshift(t);\n break;\n } else {\n const o = t.length - 3;\n i.unshift(t.substring(o)), t = t.substring(0, o);\n }\n return r + i.join(\",\") + s;\n}\nfunction qr(n, e) {\n if (typeof e == \"string\") {\n const t = ua.indexOf(e);\n t !== -1 && (e = 3 * t);\n }\n return Tn(n, e ?? 18);\n}\n/*!\n * decimal.js v10.4.3\n * An arbitrary-precision Decimal type for JavaScript.\n * https://github.com/MikeMcl/decimal.js\n * Copyright (c) 2022 Michael Mclaughlin <M8ch88l@gmail.com>\n * MIT Licence\n */\nvar Xt = 9e15, It = 1e9, fr = \"0123456789abcdef\", On = \"2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058\", Cn = \"3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789\", dr = {\n // These values must be integers within the stated ranges (inclusive).\n // Most of these values can be changed at run-time using the `Decimal.config` method.\n // The maximum number of significant digits of the result of a calculation or base conversion.\n // E.g. `Decimal.config({ precision: 20 });`\n precision: 20,\n // 1 to MAX_DIGITS\n // The rounding mode used when rounding to `precision`.\n //\n // ROUND_UP 0 Away from zero.\n // ROUND_DOWN 1 Towards zero.\n // ROUND_CEIL 2 Towards +Infinity.\n // ROUND_FLOOR 3 Towards -Infinity.\n // ROUND_HALF_UP 4 Towards nearest neighbour. If equidistant, up.\n // ROUND_HALF_DOWN 5 Towards nearest neighbour. If equidistant, down.\n // ROUND_HALF_EVEN 6 Towards nearest neighbour. If equidistant, towards even neighbour.\n // ROUND_HALF_CEIL 7 Towards nearest neighbour. If equidistant, towards +Infinity.\n // ROUND_HALF_FLOOR 8 Towards nearest neighbour. If equidistant, towards -Infinity.\n //\n // E.g.\n // `Decimal.rounding = 4;`\n // `Decimal.rounding = Decimal.ROUND_HALF_UP;`\n rounding: 4,\n // 0 to 8\n // The modulo mode used when calculating the modulus: a mod n.\n // The quotient (q = a / n) is calculated according to the corresponding rounding mode.\n // The remainder (r) is calculated as: r = a - n * q.\n //\n // UP 0 The remainder is positive if the dividend is negative, else is negative.\n // DOWN 1 The remainder has the same sign as the dividend (JavaScript %).\n // FLOOR 3 The remainder has the same sign as the divisor (Python %).\n // HALF_EVEN 6 The IEEE 754 remainder function.\n // EUCLID 9 Euclidian division. q = sign(n) * floor(a / abs(n)). Always positive.\n //\n // Truncated division (1), floored division (3), the IEEE 754 remainder (6), and Euclidian\n // division (9) are commonly used for the modulus operation. The other rounding modes can also\n // be used, but they may not give useful results.\n modulo: 1,\n // 0 to 9\n // The exponent value at and beneath which `toString` returns exponential notation.\n // JavaScript numbers: -7\n toExpNeg: -7,\n // 0 to -EXP_LIMIT\n // The exponent value at and above which `toString` returns exponential notation.\n // JavaScript numbers: 21\n toExpPos: 21,\n // 0 to EXP_LIMIT\n // The minimum exponent value, beneath which underflow to zero occurs.\n // JavaScript numbers: -324 (5e-324)\n minE: -Xt,\n // -1 to -EXP_LIMIT\n // The maximum exponent value, above which overflow to Infinity occurs.\n // JavaScript numbers: 308 (1.7976931348623157e+308)\n maxE: Xt,\n // 1 to EXP_LIMIT\n // Whether to use cryptographically-secure random number generation, if available.\n crypto: !1\n // true/false\n}, yi, yt, z = !0, Ln = \"[DecimalError] \", Rt = Ln + \"Invalid argument: \", gi = Ln + \"Precision limit exceeded\", wi = Ln + \"crypto unavailable\", vi = \"[object Decimal]\", Ve = Math.floor, De = Math.pow, fa = /^0b([01]+(\\.[01]*)?|\\.[01]+)(p[+-]?\\d+)?$/i, da = /^0x([0-9a-f]+(\\.[0-9a-f]*)?|\\.[0-9a-f]+)(p[+-]?\\d+)?$/i, ha = /^0o([0-7]+(\\.[0-7]*)?|\\.[0-7]+)(p[+-]?\\d+)?$/i, bi = /^(\\d+(\\.\\d*)?|\\.\\d+)(e[+-]?\\d+)?$/i, at = 1e7, $ = 7, pa = 9007199254740991, ca = On.length - 1, hr = Cn.length - 1, R = { toStringTag: vi };\nR.absoluteValue = R.abs = function() {\n var n = new this.constructor(this);\n return n.s < 0 && (n.s = 1), F(n);\n};\nR.ceil = function() {\n return F(new this.constructor(this), this.e + 1, 2);\n};\nR.clampedTo = R.clamp = function(n, e) {\n var t, r = this, s = r.constructor;\n if (n = new s(n), e = new s(e), !n.s || !e.s) return new s(NaN);\n if (n.gt(e)) throw Error(Rt + e);\n return t = r.cmp(n), t < 0 ? n : r.cmp(e) > 0 ? e : new s(r);\n};\nR.comparedTo = R.cmp = function(n) {\n var e, t, r, s, i = this, o = i.d, d = (n = new i.constructor(n)).d, c = i.s, p = n.s;\n if (!o || !d)\n return !c || !p ? NaN : c !== p ? c : o === d ? 0 : !o ^ c < 0 ? 1 : -1;\n if (!o[0] || !d[0]) return o[0] ? c : d[0] ? -p : 0;\n if (c !== p) return c;\n if (i.e !== n.e) return i.e > n.e ^ c < 0 ? 1 : -1;\n for (r = o.length, s = d.length, e = 0, t = r < s ? r : s; e < t; ++e)\n if (o[e] !== d[e]) return o[e] > d[e] ^ c < 0 ? 1 : -1;\n return r === s ? 0 : r > s ^ c < 0 ? 1 : -1;\n};\nR.cosine = R.cos = function() {\n var n, e, t = this, r = t.constructor;\n return t.d ? t.d[0] ? (n = r.precision, e = r.rounding, r.precision = n + Math.max(t.e, t.sd()) + $, r.rounding = 1, t = ma(r, Ai(r, t)), r.precision = n, r.rounding = e, F(yt == 2 || yt == 3 ? t.neg() : t, n, e, !0)) : new r(1) : new r(NaN);\n};\nR.cubeRoot = R.cbrt = function() {\n var n, e, t, r, s, i, o, d, c, p, b = this, x = b.constructor;\n if (!b.isFinite() || b.isZero()) return new x(b);\n for (z = !1, i = b.s * De(b.s * b, 1 / 3), !i || Math.abs(i) == 1 / 0 ? (t = ze(b.d), n = b.e, (i = (n - t.length + 1) % 3) && (t += i == 1 || i == -2 ? \"0\" : \"00\"), i = De(t, 1 / 3), n = Ve((n + 1) / 3) - (n % 3 == (n < 0 ? -1 : 2)), i == 1 / 0 ? t = \"5e\" + n : (t = i.toExponential(), t = t.slice(0, t.indexOf(\"e\") + 1) + n), r = new x(t), r.s = b.s) : r = new x(i.toString()), o = (n = x.precision) + 3; ; )\n if (d = r, c = d.times(d).times(d), p = c.plus(b), r = Y(p.plus(b).times(d), p.plus(c), o + 2, 1), ze(d.d).slice(0, o) === (t = ze(r.d)).slice(0, o))\n if (t = t.slice(o - 3, o + 1), t == \"9999\" || !s && t == \"4999\") {\n if (!s && (F(d, n + 1, 0), d.times(d).times(d).eq(b))) {\n r = d;\n break;\n }\n o += 4, s = 1;\n } else {\n (!+t || !+t.slice(1) && t.charAt(0) == \"5\") && (F(r, n + 1, 1), e = !r.times(r).times(r).eq(b));\n break;\n }\n return z = !0, F(r, n, x.rounding, e);\n};\nR.decimalPlaces = R.dp = function() {\n var n, e = this.d, t = NaN;\n if (e) {\n if (n = e.length - 1, t = (n - Ve(this.e / $)) * $, n = e[n], n) for (; n % 10 == 0; n /= 10) t--;\n t < 0 && (t = 0);\n }\n return t;\n};\nR.dividedBy = R.div = function(n) {\n return Y(this, new this.constructor(n));\n};\nR.dividedToIntegerBy = R.divToInt = function(n) {\n var e = this, t = e.constructor;\n return F(Y(e, new t(n), 0, 1, 1), t.precision, t.rounding);\n};\nR.equals = R.eq = function(n) {\n return this.cmp(n) === 0;\n};\nR.floor = function() {\n return F(new this.constructor(this), this.e + 1, 3);\n};\nR.greaterThan = R.gt = function(n) {\n return this.cmp(n) > 0;\n};\nR.greaterThanOrEqualTo = R.gte = function(n) {\n var e = this.cmp(n);\n return e == 1 || e === 0;\n};\nR.hyperbolicCosine = R.cosh = function() {\n var n, e, t, r, s, i = this, o = i.constructor, d = new o(1);\n if (!i.isFinite()) return new o(i.s ? 1 / 0 : NaN);\n if (i.isZero()) return d;\n t = o.precision, r = o.rounding, o.precision = t + Math.max(i.e, i.sd()) + 4, o.rounding = 1, s = i.d.length, s < 32 ? (n = Math.ceil(s / 3), e = (1 / $n(4, n)).toString()) : (n = 16, e = \"2.3283064365386962890625e-10\"), i = tn(o, 1, i.times(e), new o(1), !0);\n for (var c, p = n, b = new o(8); p--; )\n c = i.times(i), i = d.minus(c.times(b.minus(c.times(b))));\n return F(i, o.precision = t, o.rounding = r, !0);\n};\nR.hyperbolicSine = R.sinh = function() {\n var n, e, t, r, s = this, i = s.constructor;\n if (!s.isFinite() || s.isZero()) return new i(s);\n if (e = i.precision, t = i.rounding, i.precision = e + Math.max(s.e, s.sd()) + 4, i.rounding = 1, r = s.d.length, r < 3)\n s = tn(i, 2, s, s, !0);\n else {\n n = 1.4 * Math.sqrt(r), n = n > 16 ? 16 : n | 0, s = s.times(1 / $n(5, n)), s = tn(i, 2, s, s, !0);\n for (var o, d = new i(5), c = new i(16), p = new i(20); n--; )\n o = s.times(s), s = s.times(d.plus(o.times(c.times(o).plus(p))));\n }\n return i.precision = e, i.rounding = t, F(s, e, t, !0);\n};\nR.hyperbolicTangent = R.tanh = function() {\n var n, e, t = this, r = t.constructor;\n return t.isFinite() ? t.isZero() ? new r(t) : (n = r.precision, e = r.rounding, r.precision = n + 7, r.rounding = 1, Y(t.sinh(), t.cosh(), r.precision = n, r.rounding = e)) : new r(t.s);\n};\nR.inverseCosine = R.acos = function() {\n var n, e = this, t = e.constructor, r = e.abs().cmp(1), s = t.precision, i = t.rounding;\n return r !== -1 ? r === 0 ? e.isNeg() ? st(t, s, i) : new t(0) : new t(NaN) : e.isZero() ? st(t, s + 4, i).times(0.5) : (t.precision = s + 6, t.rounding = 1, e = e.asin(), n = st(t, s + 4, i).times(0.5), t.precision = s, t.rounding = i, n.minus(e));\n};\nR.inverseHyperbolicCosine = R.acosh = function() {\n var n, e, t = this, r = t.constructor;\n return t.lte(1) ? new r(t.eq(1) ? 0 : NaN) : t.isFinite() ? (n = r.precision, e = r.rounding, r.precision = n + Math.max(Math.abs(t.e), t.sd()) + 4, r.rounding = 1, z = !1, t = t.times(t).minus(1).sqrt().plus(t), z = !0, r.precision = n, r.rounding = e, t.ln()) : new r(t);\n};\nR.inverseHyperbolicSine = R.asinh = function() {\n var n, e, t = this, r = t.constructor;\n return !t.isFinite() || t.isZero() ? new r(t) : (n = r.precision, e = r.rounding, r.precision = n + 2 * Math.max(Math.abs(t.e), t.sd()) + 6, r.rounding = 1, z = !1, t = t.times(t).plus(1).sqrt().plus(t), z = !0, r.precision = n, r.rounding = e, t.ln());\n};\nR.inverseHyperbolicTangent = R.atanh = function() {\n var n, e, t, r, s = this, i = s.constructor;\n return s.isFinite() ? s.e >= 0 ? new i(s.abs().eq(1) ? s.s / 0 : s.isZero() ? s : NaN) : (n = i.precision, e = i.rounding, r = s.sd(), Math.max(r, n) < 2 * -s.e - 1 ? F(new i(s), n, e, !0) : (i.precision = t = r - s.e, s = Y(s.plus(1), new i(1).minus(s), t + n, 1), i.precision = n + 4, i.rounding = 1, s = s.ln(), i.precision = n, i.rounding = e, s.times(0.5))) : new i(NaN);\n};\nR.inverseSine = R.asin = function() {\n var n, e, t, r, s = this, i = s.constructor;\n return s.isZero() ? new i(s) : (e = s.abs().cmp(1), t = i.precision, r = i.rounding, e !== -1 ? e === 0 ? (n = st(i, t + 4, r).times(0.5), n.s = s.s, n) : new i(NaN) : (i.precision = t + 6, i.rounding = 1, s = s.div(new i(1).minus(s.times(s)).sqrt().plus(1)).atan(), i.precision = t, i.rounding = r, s.times(2)));\n};\nR.inverseTangent = R.atan = function() {\n var n, e, t, r, s, i, o, d, c, p = this, b = p.constructor, x = b.precision, T = b.rounding;\n if (p.isFinite()) {\n if (p.isZero())\n return new b(p);\n if (p.abs().eq(1) && x + 4 <= hr)\n return o = st(b, x + 4, T).times(0.25), o.s = p.s, o;\n } else {\n if (!p.s) return new b(NaN);\n if (x + 4 <= hr)\n return o = st(b, x + 4, T).times(0.5), o.s = p.s, o;\n }\n for (b.precision = d = x + 10, b.rounding = 1, t = Math.min(28, d / $ + 2 | 0), n = t; n; --n) p = p.div(p.times(p).plus(1).sqrt().plus(1));\n for (z = !1, e = Math.ceil(d / $), r = 1, c = p.times(p), o = new b(p), s = p; n !== -1; )\n if (s = s.times(c), i = o.minus(s.div(r += 2)), s = s.times(c), o = i.plus(s.div(r += 2)), o.d[e] !== void 0) for (n = e; o.d[n] === i.d[n] && n--; ) ;\n return t && (o = o.times(2 << t - 1)), z = !0, F(o, b.precision = x, b.rounding = T, !0);\n};\nR.isFinite = function() {\n return !!this.d;\n};\nR.isInteger = R.isInt = function() {\n return !!this.d && Ve(this.e / $) > this.d.length - 2;\n};\nR.isNaN = function() {\n return !this.s;\n};\nR.isNegative = R.isNeg = function() {\n return this.s < 0;\n};\nR.isPositive = R.isPos = function() {\n return this.s > 0;\n};\nR.isZero = function() {\n return !!this.d && this.d[0] === 0;\n};\nR.lessThan = R.lt = function(n) {\n return this.cmp(n) < 0;\n};\nR.lessThanOrEqualTo = R.lte = function(n) {\n return this.cmp(n) < 1;\n};\nR.logarithm = R.log = function(n) {\n var e, t, r, s, i, o, d, c, p = this, b = p.constructor, x = b.precision, T = b.rounding, P = 5;\n if (n == null)\n n = new b(10), e = !0;\n else {\n if (n = new b(n), t = n.d, n.s < 0 || !t || !t[0] || n.eq(1)) return new b(NaN);\n e = n.eq(10);\n }\n if (t = p.d, p.s < 0 || !t || !t[0] || p.eq(1))\n return new b(t && !t[0] ? -1 / 0 : p.s != 1 ? NaN : t ? 0 : 1 / 0);\n if (e)\n if (t.length > 1)\n i = !0;\n else {\n for (s = t[0]; s % 10 === 0; ) s /= 10;\n i = s !== 1;\n }\n if (z = !1, d = x + P, o = Nt(p, d), r = e ? Un(b, d + 10) : Nt(n, d), c = Y(o, r, d, 1), gn(c.d, s = x, T))\n do\n if (d += 10, o = Nt(p, d), r = e ? Un(b, d + 10) : Nt(n, d), c = Y(o, r, d, 1), !i) {\n +ze(c.d).slice(s + 1, s + 15) + 1 == 1e14 && (c = F(c, x + 1, 0));\n break;\n }\n while (gn(c.d, s += 10, T));\n return z = !0, F(c, x, T);\n};\nR.minus = R.sub = function(n) {\n var e, t, r, s, i, o, d, c, p, b, x, T, P = this, D = P.constructor;\n if (n = new D(n), !P.d || !n.d)\n return !P.s || !n.s ? n = new D(NaN) : P.d ? n.s = -n.s : n = new D(n.d || P.s !== n.s ? P : NaN), n;\n if (P.s != n.s)\n return n.s = -n.s, P.plus(n);\n if (p = P.d, T = n.d, d = D.precision, c = D.rounding, !p[0] || !T[0]) {\n if (T[0]) n.s = -n.s;\n else if (p[0]) n = new D(P);\n else return new D(c === 3 ? -0 : 0);\n return z ? F(n, d, c) : n;\n }\n if (t = Ve(n.e / $), b = Ve(P.e / $), p = p.slice(), i = b - t, i) {\n for (x = i < 0, x ? (e = p, i = -i, o = T.length) : (e = T, t = b, o = p.length), r = Math.max(Math.ceil(d / $), o) + 2, i > r && (i = r, e.length = 1), e.reverse(), r = i; r--; ) e.push(0);\n e.reverse();\n } else {\n for (r = p.length, o = T.length, x = r < o, x && (o = r), r = 0; r < o; r++)\n if (p[r] != T[r]) {\n x = p[r] < T[r];\n break;\n }\n i = 0;\n }\n for (x && (e = p, p = T, T = e, n.s = -n.s), o = p.length, r = T.length - o; r > 0; --r) p[o++] = 0;\n for (r = T.length; r > i; ) {\n if (p[--r] < T[r]) {\n for (s = r; s && p[--s] === 0; ) p[s] = at - 1;\n --p[s], p[r] += at;\n }\n p[r] -= T[r];\n }\n for (; p[--o] === 0; ) p.pop();\n for (; p[0] === 0; p.shift()) --t;\n return p[0] ? (n.d = p, n.e = Gn(p, t), z ? F(n, d, c) : n) : new D(c === 3 ? -0 : 0);\n};\nR.modulo = R.mod = function(n) {\n var e, t = this, r = t.constructor;\n return n = new r(n), !t.d || !n.s || n.d && !n.d[0] ? new r(NaN) : !n.d || t.d && !t.d[0] ? F(new r(t), r.precision, r.rounding) : (z = !1, r.modulo == 9 ? (e = Y(t, n.abs(), 0, 3, 1), e.s *= n.s) : e = Y(t, n, 0, r.modulo, 1), e = e.times(n), z = !0, t.minus(e));\n};\nR.naturalExponential = R.exp = function() {\n return pr(this);\n};\nR.naturalLogarithm = R.ln = function() {\n return Nt(this);\n};\nR.negated = R.neg = function() {\n var n = new this.constructor(this);\n return n.s = -n.s, F(n);\n};\nR.plus = R.add = function(n) {\n var e, t, r, s, i, o, d, c, p, b, x = this, T = x.constructor;\n if (n = new T(n), !x.d || !n.d)\n return !x.s || !n.s ? n = new T(NaN) : x.d || (n = new T(n.d || x.s === n.s ? x : NaN)), n;\n if (x.s != n.s)\n return n.s = -n.s, x.minus(n);\n if (p = x.d, b = n.d, d = T.precision, c = T.rounding, !p[0] || !b[0])\n return b[0] || (n = new T(x)), z ? F(n, d, c) : n;\n if (i = Ve(x.e / $), r = Ve(n.e / $), p = p.slice(), s = i - r, s) {\n for (s < 0 ? (t = p, s = -s, o = b.length) : (t = b, r = i, o = p.length), i = Math.ceil(d / $), o = i > o ? i + 1 : o + 1, s > o && (s = o, t.length = 1), t.reverse(); s--; ) t.push(0);\n t.reverse();\n }\n for (o = p.length, s = b.length, o - s < 0 && (s = o, t = b, b = p, p = t), e = 0; s; )\n e = (p[--s] = p[s] + b[s] + e) / at | 0, p[s] %= at;\n for (e && (p.unshift(e), ++r), o = p.length; p[--o] == 0; ) p.pop();\n return n.d = p, n.e = Gn(p, r), z ? F(n, d, c) : n;\n};\nR.precision = R.sd = function(n) {\n var e, t = this;\n if (n !== void 0 && n !== !!n && n !== 1 && n !== 0) throw Error(Rt + n);\n return t.d ? (e = Mi(t.d), n && t.e + 1 > e && (e = t.e + 1)) : e = NaN, e;\n};\nR.round = function() {\n var n = this, e = n.constructor;\n return F(new e(n), n.e + 1, e.rounding);\n};\nR.sine = R.sin = function() {\n var n, e, t = this, r = t.constructor;\n return t.isFinite() ? t.isZero() ? new r(t) : (n = r.precision, e = r.rounding, r.precision = n + Math.max(t.e, t.sd()) + $, r.rounding = 1, t = ga(r, Ai(r, t)), r.precision = n, r.rounding = e, F(yt > 2 ? t.neg() : t, n, e, !0)) : new r(NaN);\n};\nR.squareRoot = R.sqrt = function() {\n var n, e, t, r, s, i, o = this, d = o.d, c = o.e, p = o.s, b = o.constructor;\n if (p !== 1 || !d || !d[0])\n return new b(!p || p < 0 && (!d || d[0]) ? NaN : d ? o : 1 / 0);\n for (z = !1, p = Math.sqrt(+o), p == 0 || p == 1 / 0 ? (e = ze(d), (e.length + c) % 2 == 0 && (e += \"0\"), p = Math.sqrt(e), c = Ve((c + 1) / 2) - (c < 0 || c % 2), p == 1 / 0 ? e = \"5e\" + c : (e = p.toExponential(), e = e.slice(0, e.indexOf(\"e\") + 1) + c), r = new b(e)) : r = new b(p.toString()), t = (c = b.precision) + 3; ; )\n if (i = r, r = i.plus(Y(o, i, t + 2, 1)).times(0.5), ze(i.d).slice(0, t) === (e = ze(r.d)).slice(0, t))\n if (e = e.slice(t - 3, t + 1), e == \"9999\" || !s && e == \"4999\") {\n if (!s && (F(i, c + 1, 0), i.times(i).eq(o))) {\n r = i;\n break;\n }\n t += 4, s = 1;\n } else {\n (!+e || !+e.slice(1) && e.charAt(0) == \"5\") && (F(r, c + 1, 1), n = !r.times(r).eq(o));\n break;\n }\n return z = !0, F(r, c, b.rounding, n);\n};\nR.tangent = R.tan = function() {\n var n, e, t = this, r = t.constructor;\n return t.isFinite() ? t.isZero() ? new r(t) : (n = r.precision, e = r.rounding, r.precision = n + 10, r.rounding = 1, t = t.sin(), t.s = 1, t = Y(t, new r(1).minus(t.times(t)).sqrt(), n + 10, 0), r.precision = n, r.rounding = e, F(yt == 2 || yt == 4 ? t.neg() : t, n, e, !0)) : new r(NaN);\n};\nR.times = R.mul = function(n) {\n var e, t, r, s, i, o, d, c, p, b = this, x = b.constructor, T = b.d, P = (n = new x(n)).d;\n if (n.s *= b.s, !T || !T[0] || !P || !P[0])\n return new x(!n.s || T && !T[0] && !P || P && !P[0] && !T ? NaN : !T || !P ? n.s / 0 : n.s * 0);\n for (t = Ve(b.e / $) + Ve(n.e / $), c = T.length, p = P.length, c < p && (i = T, T = P, P = i, o = c, c = p, p = o), i = [], o = c + p, r = o; r--; ) i.push(0);\n for (r = p; --r >= 0; ) {\n for (e = 0, s = c + r; s > r; )\n d = i[s] + P[r] * T[s - r - 1] + e, i[s--] = d % at | 0, e = d / at | 0;\n i[s] = (i[s] + e) % at | 0;\n }\n for (; !i[--o]; ) i.pop();\n return e ? ++t : i.shift(), n.d = i, n.e = Gn(i, t), z ? F(n, x.precision, x.rounding) : n;\n};\nR.toBinary = function(n, e) {\n return Mr(this, 2, n, e);\n};\nR.toDecimalPlaces = R.toDP = function(n, e) {\n var t = this, r = t.constructor;\n return t = new r(t), n === void 0 ? t : (Je(n, 0, It), e === void 0 ? e = r.rounding : Je(e, 0, 8), F(t, n + t.e + 1, e));\n};\nR.toExponential = function(n, e) {\n var t, r = this, s = r.constructor;\n return n === void 0 ? t = ft(r, !0) : (Je(n, 0, It), e === void 0 ? e = s.rounding : Je(e, 0, 8), r = F(new s(r), n + 1, e), t = ft(r, !0, n + 1)), r.isNeg() && !r.isZero() ? \"-\" + t : t;\n};\nR.toFixed = function(n, e) {\n var t, r, s = this, i = s.constructor;\n return n === void 0 ? t = ft(s) : (Je(n, 0, It), e === void 0 ? e = i.rounding : Je(e, 0, 8), r = F(new i(s), n + s.e + 1, e), t = ft(r, !1, n + r.e + 1)), s.isNeg() && !s.isZero() ? \"-\" + t : t;\n};\nR.toFraction = function(n) {\n var e, t, r, s, i, o, d, c, p, b, x, T, P = this, D = P.d, q = P.constructor;\n if (!D) return new q(P);\n if (p = t = new q(1), r = c = new q(0), e = new q(r), i = e.e = Mi(D) - P.e - 1, o = i % $, e.d[0] = De(10, o < 0 ? $ + o : o), n == null)\n n = i > 0 ? e : p;\n else {\n if (d = new q(n), !d.isInt() || d.lt(p)) throw Error(Rt + d);\n n = d.gt(e) ? i > 0 ? e : p : d;\n }\n for (z = !1, d = new q(ze(D)), b = q.precision, q.precision = i = D.length * $ * 2; x = Y(d, e, 0, 1, 1), s = t.plus(x.times(r)), s.cmp(n) != 1; )\n t = r, r = s, s = p, p = c.plus(x.times(s)), c = s, s = e, e = d.minus(x.times(s)), d = s;\n return s = Y(n.minus(t), r, 0, 1, 1), c = c.plus(s.times(p)), t = t.plus(s.times(r)), c.s = p.s = P.s, T = Y(p, r, i, 1).minus(P).abs().cmp(Y(c, t, i, 1).minus(P).abs()) < 1 ? [p, r] : [c, t], q.precision = b, z = !0, T;\n};\nR.toHexadecimal = R.toHex = function(n, e) {\n return Mr(this, 16, n, e);\n};\nR.toNearest = function(n, e) {\n var t = this, r = t.constructor;\n if (t = new r(t), n == null) {\n if (!t.d) return t;\n n = new r(1), e = r.rounding;\n } else {\n if (n = new r(n), e === void 0 ? e = r.rounding : Je(e, 0, 8), !t.d) return n.s ? t : n;\n if (!n.d)\n return n.s && (n.s = t.s), n;\n }\n return n.d[0] ? (z = !1, t = Y(t, n, 0, e, 1).times(n), z = !0, F(t)) : (n.s = t.s, t = n), t;\n};\nR.toNumber = function() {\n return +this;\n};\nR.toOctal = function(n, e) {\n return Mr(this, 8, n, e);\n};\nR.toPower = R.pow = function(n) {\n var e, t, r, s, i, o, d = this, c = d.constructor, p = +(n = new c(n));\n if (!d.d || !n.d || !d.d[0] || !n.d[0]) return new c(De(+d, p));\n if (d = new c(d), d.eq(1)) return d;\n if (r = c.precision, i = c.rounding, n.eq(1)) return F(d, r, i);\n if (e = Ve(n.e / $), e >= n.d.length - 1 && (t = p < 0 ? -p : p) <= pa)\n return s = xi(c, d, t, r), n.s < 0 ? new c(1).div(s) : F(s, r, i);\n if (o = d.s, o < 0) {\n if (e < n.d.length - 1) return new c(NaN);\n if (n.d[e] & 1 || (o = 1), d.e == 0 && d.d[0] == 1 && d.d.length == 1)\n return d.s = o, d;\n }\n return t = De(+d, p), e = t == 0 || !isFinite(t) ? Ve(p * (Math.log(\"0.\" + ze(d.d)) / Math.LN10 + d.e + 1)) : new c(t + \"\").e, e > c.maxE + 1 || e < c.minE - 1 ? new c(e > 0 ? o / 0 : 0) : (z = !1, c.rounding = d.s = 1, t = Math.min(12, (e + \"\").length), s = pr(n.times(Nt(d, r + t)), r), s.d && (s = F(s, r + 5, 1), gn(s.d, r, i) && (e = r + 10, s = F(pr(n.times(Nt(d, e + t)), e), e + 5, 1), +ze(s.d).slice(r + 1, r + 15) + 1 == 1e14 && (s = F(s, r + 1, 0)))), s.s = o, z = !0, c.rounding = i, F(s, r, i));\n};\nR.toPrecision = function(n, e) {\n var t, r = this, s = r.constructor;\n return n === void 0 ? t = ft(r, r.e <= s.toExpNeg || r.e >= s.toExpPos) : (Je(n, 1, It), e === void 0 ? e = s.rounding : Je(e, 0, 8), r = F(new s(r), n, e), t = ft(r, n <= r.e || r.e <= s.toExpNeg, n)), r.isNeg() && !r.isZero() ? \"-\" + t : t;\n};\nR.toSignificantDigits = R.toSD = function(n, e) {\n var t = this, r = t.constructor;\n return n === void 0 ? (n = r.precision, e = r.rounding) : (Je(n, 1, It), e === void 0 ? e = r.rounding : Je(e, 0, 8)), F(new r(t), n, e);\n};\nR.toString = function() {\n var n = this, e = n.constructor, t = ft(n, n.e <= e.toExpNeg || n.e >= e.toExpPos);\n return n.isNeg() && !n.isZero() ? \"-\" + t : t;\n};\nR.truncated = R.trunc = function() {\n return F(new this.constructor(this), this.e + 1, 1);\n};\nR.valueOf = R.toJSON = function() {\n var n = this, e = n.constructor, t = ft(n, n.e <= e.toExpNeg || n.e >= e.toExpPos);\n return n.isNeg() ? \"-\" + t : t;\n};\nfunction ze(n) {\n var e, t, r, s = n.length - 1, i = \"\", o = n[0];\n if (s > 0) {\n for (i += o, e = 1; e < s; e++)\n r = n[e] + \"\", t = $ - r.length, t && (i += Tt(t)), i += r;\n o = n[e], r = o + \"\", t = $ - r.length, t && (i += Tt(t));\n } else if (o === 0)\n return \"0\";\n for (; o % 10 === 0; ) o /= 10;\n return i + o;\n}\nfunction Je(n, e, t) {\n if (n !== ~~n || n < e || n > t)\n throw Error(Rt + n);\n}\nfunction gn(n, e, t, r) {\n var s, i, o, d;\n for (i = n[0]; i >= 10; i /= 10) --e;\n return --e < 0 ? (e += $, s = 0) : (s = Math.ceil((e + 1) / $), e %= $), i = De(10, $ - e), d = n[s] % i | 0, r == null ? e < 3 ? (e == 0 ? d = d / 100 | 0 : e == 1 && (d = d / 10 | 0), o = t < 4 && d == 99999 || t > 3 && d == 49999 || d == 5e4 || d == 0) : o = (t < 4 && d + 1 == i || t > 3 && d + 1 == i / 2) && (n[s + 1] / i / 100 | 0) == De(10, e - 2) - 1 || (d == i / 2 || d == 0) && (n[s + 1] / i / 100 | 0) == 0 : e < 4 ? (e == 0 ? d = d / 1e3 | 0 : e == 1 ? d = d / 100 | 0 : e == 2 && (d = d / 10 | 0), o = (r || t < 4) && d == 9999 || !r && t > 3 && d == 4999) : o = ((r || t < 4) && d + 1 == i || !r && t > 3 && d + 1 == i / 2) && (n[s + 1] / i / 1e3 | 0) == De(10, e - 3) - 1, o;\n}\nfunction Nn(n, e, t) {\n for (var r, s = [0], i, o = 0, d = n.length; o < d; ) {\n for (i = s.length; i--; ) s[i] *= e;\n for (s[0] += fr.indexOf(n.charAt(o++)), r = 0; r < s.length; r++)\n s[r] > t - 1 && (s[r + 1] === void 0 && (s[r + 1] = 0), s[r + 1] += s[r] / t | 0, s[r] %= t);\n }\n return s.reverse();\n}\nfunction ma(n, e) {\n var t, r, s;\n if (e.isZero()) return e;\n r = e.d.length, r < 32 ? (t = Math.ceil(r / 3), s = (1 / $n(4, t)).toString()) : (t = 16, s = \"2.3283064365386962890625e-10\"), n.precision += t, e = tn(n, 1, e.times(s), new n(1));\n for (var i = t; i--; ) {\n var o = e.times(e);\n e = o.times(o).minus(o).times(8).plus(1);\n }\n return n.precision -= t, e;\n}\nvar Y = /* @__PURE__ */ function() {\n function n(r, s, i) {\n var o, d = 0, c = r.length;\n for (r = r.slice(); c--; )\n o = r[c] * s + d, r[c] = o % i | 0, d = o / i | 0;\n return d && r.unshift(d), r;\n }\n function e(r, s, i, o) {\n var d, c;\n if (i != o)\n c = i > o ? 1 : -1;\n else\n for (d = c = 0; d < i; d++)\n if (r[d] != s[d]) {\n c = r[d] > s[d] ? 1 : -1;\n break;\n }\n return c;\n }\n function t(r, s, i, o) {\n for (var d = 0; i--; )\n r[i] -= d, d = r[i] < s[i] ? 1 : 0, r[i] = d * o + r[i] - s[i];\n for (; !r[0] && r.length > 1; ) r.shift();\n }\n return function(r, s, i, o, d, c) {\n var p, b, x, T, P, D, q, Fe, X, $e, J, Ce, et, Q, tt, Xe, nt, dt, Z, Ze, v = r.constructor, a = r.s == s.s ? 1 : -1, l = r.d, h = s.d;\n if (!l || !l[0] || !h || !h[0])\n return new v(\n // Return NaN if either NaN, or both Infinity or 0.\n !r.s || !s.s || (l ? h && l[0] == h[0] : !h) ? NaN : (\n // Return ±0 if x is 0 or y is ±Infinity, or return ±Infinity as y is 0.\n l && l[0] == 0 || !h ? a * 0 : a / 0\n )\n );\n for (c ? (P = 1, b = r.e - s.e) : (c = at, P = $, b = Ve(r.e / P) - Ve(s.e / P)), Z = h.length, nt = l.length, X = new v(a), $e = X.d = [], x = 0; h[x] == (l[x] || 0); x++) ;\n if (h[x] > (l[x] || 0) && b--, i == null ? (Q = i = v.precision, o = v.rounding) : d ? Q = i + (r.e - s.e) + 1 : Q = i, Q < 0)\n $e.push(1), D = !0;\n else {\n if (Q = Q / P + 2 | 0, x = 0, Z == 1) {\n for (T = 0, h = h[0], Q++; (x < nt || T) && Q--; x++)\n tt = T * c + (l[x] || 0), $e[x] = tt / h | 0, T = tt % h | 0;\n D = T || x < nt;\n } else {\n for (T = c / (h[0] + 1) | 0, T > 1 && (h = n(h, T, c), l = n(l, T, c), Z = h.length, nt = l.length), Xe = Z, J = l.slice(0, Z), Ce = J.length; Ce < Z; ) J[Ce++] = 0;\n Ze = h.slice(), Ze.unshift(0), dt = h[0], h[1] >= c / 2 && ++dt;\n do\n T = 0, p = e(h, J, Z, Ce), p < 0 ? (et = J[0], Z != Ce && (et = et * c + (J[1] || 0)), T = et / dt | 0, T > 1 ? (T >= c && (T = c - 1), q = n(h, T, c), Fe = q.length, Ce = J.length, p = e(q, J, Fe, Ce), p == 1 && (T--, t(q, Z < Fe ? Ze : h, Fe, c))) : (T == 0 && (p = T = 1), q = h.slice()), Fe = q.length, Fe < Ce && q.unshift(0), t(J, q, Ce, c), p == -1 && (Ce = J.length, p = e(h, J, Z, Ce), p < 1 && (T++, t(J, Z < Ce ? Ze : h, Ce, c))), Ce = J.length) : p === 0 && (T++, J = [0]), $e[x++] = T, p && J[0] ? J[Ce++] = l[Xe] || 0 : (J = [l[Xe]], Ce = 1);\n while ((Xe++ < nt || J[0] !== void 0) && Q--);\n D = J[0] !== void 0;\n }\n $e[0] || $e.shift();\n }\n if (P == 1)\n X.e = b, yi = D;\n else {\n for (x = 1, T = $e[0]; T >= 10; T /= 10) x++;\n X.e = x + b * P - 1, F(X, d ? i + X.e + 1 : i, o, D);\n }\n return X;\n };\n}();\nfunction F(n, e, t, r) {\n var s, i, o, d, c, p, b, x, T, P = n.constructor;\n e: if (e != null) {\n if (x = n.d, !x) return n;\n for (s = 1, d = x[0]; d >= 10; d /= 10) s++;\n if (i = e - s, i < 0)\n i += $, o = e, b = x[T = 0], c = b / De(10, s - o - 1) % 10 | 0;\n else if (T = Math.ceil((i + 1) / $), d = x.length, T >= d)\n if (r) {\n for (; d++ <= T; ) x.push(0);\n b = c = 0, s = 1, i %= $, o = i - $ + 1;\n } else\n break e;\n else {\n for (b = d = x[T], s = 1; d >= 10; d /= 10) s++;\n i %= $, o = i - $ + s, c = o < 0 ? 0 : b / De(10, s - o - 1) % 10 | 0;\n }\n if (r = r || e < 0 || x[T + 1] !== void 0 || (o < 0 ? b : b % De(10, s - o - 1)), p = t < 4 ? (c || r) && (t == 0 || t == (n.s < 0 ? 3 : 2)) : c > 5 || c == 5 && (t == 4 || r || t == 6 && // Check whether the digit to the left of the rounding digit is odd.\n (i > 0 ? o > 0 ? b / De(10, s - o) : 0 : x[T - 1]) % 10 & 1 || t == (n.s < 0 ? 8 : 7)), e < 1 || !x[0])\n return x.length = 0, p ? (e -= n.e + 1, x[0] = De(10, ($ - e % $) % $), n.e = -e || 0) : x[0] = n.e = 0, n;\n if (i == 0 ? (x.length = T, d = 1, T--) : (x.length = T + 1, d = De(10, $ - i), x[T] = o > 0 ? (b / De(10, s - o) % De(10, o) | 0) * d : 0), p)\n for (; ; )\n if (T == 0) {\n for (i = 1, o = x[0]; o >= 10; o /= 10) i++;\n for (o = x[0] += d, d = 1; o >= 10; o /= 10) d++;\n i != d && (n.e++, x[0] == at && (x[0] = 1));\n break;\n } else {\n if (x[T] += d, x[T] != at) break;\n x[T--] = 0, d = 1;\n }\n for (i = x.length; x[--i] === 0; ) x.pop();\n }\n return z && (n.e > P.maxE ? (n.d = null, n.e = NaN) : n.e < P.minE && (n.e = 0, n.d = [0])), n;\n}\nfunction ft(n, e, t) {\n if (!n.isFinite()) return Ti(n);\n var r, s = n.e, i = ze(n.d), o = i.length;\n return e ? (t && (r = t - o) > 0 ? i = i.charAt(0) + \".\" + i.slice(1) + Tt(r) : o > 1 && (i = i.charAt(0) + \".\" + i.slice(1)), i = i + (n.e < 0 ? \"e\" : \"e+\") + n.e) : s < 0 ? (i = \"0.\" + Tt(-s - 1) + i, t && (r = t - o) > 0 && (i += Tt(r))) : s >= o ? (i += Tt(s + 1 - o), t && (r = t - s - 1) > 0 && (i = i + \".\" + Tt(r))) : ((r = s + 1) < o && (i = i.slice(0, r) + \".\" + i.slice(r)), t && (r = t - o) > 0 && (s + 1 === o && (i += \".\"), i += Tt(r))), i;\n}\nfunction Gn(n, e) {\n var t = n[0];\n for (e *= $; t >= 10; t /= 10) e++;\n return e;\n}\nfunction Un(n, e, t) {\n if (e > ca)\n throw z = !0, t && (n.precision = t), Error(gi);\n return F(new n(On), e, 1, !0);\n}\nfunction st(n, e, t) {\n if (e > hr) throw Error(gi);\n return F(new n(Cn), e, t, !0);\n}\nfunction Mi(n) {\n var e = n.length - 1, t = e * $ + 1;\n if (e = n[e], e) {\n for (; e % 10 == 0; e /= 10) t--;\n for (e = n[0]; e >= 10; e /= 10) t++;\n }\n return t;\n}\nfunction Tt(n) {\n for (var e = \"\"; n--; ) e += \"0\";\n return e;\n}\nfunction xi(n, e, t, r) {\n var s, i = new n(1), o = Math.ceil(r / $ + 4);\n for (z = !1; ; ) {\n if (t % 2 && (i = i.times(e), Vr(i.d, o) && (s = !0)), t = Ve(t / 2), t === 0) {\n t = i.d.length - 1, s && i.d[t] === 0 && ++i.d[t];\n break;\n }\n e = e.times(e), Vr(e.d, o);\n }\n return z = !0, i;\n}\nfunction zr(n) {\n return n.d[n.d.length - 1] & 1;\n}\nfunction Ei(n, e, t) {\n for (var r, s = new n(e[0]), i = 0; ++i < e.length; )\n if (r = new n(e[i]), r.s)\n s[t](r) && (s = r);\n else {\n s = r;\n break;\n }\n return s;\n}\nfunction pr(n, e) {\n var t, r, s, i, o, d, c, p = 0, b = 0, x = 0, T = n.constructor, P = T.rounding, D = T.precision;\n if (!n.d || !n.d[0] || n.e > 17)\n return new T(n.d ? n.d[0] ? n.s < 0 ? 0 : 1 / 0 : 1 : n.s ? n.s < 0 ? 0 : n : NaN);\n for (e == null ? (z = !1, c = D) : c = e, d = new T(0.03125); n.e > -2; )\n n = n.times(d), x += 5;\n for (r = Math.log(De(2, x)) / Math.LN10 * 2 + 5 | 0, c += r, t = i = o = new T(1), T.precision = c; ; ) {\n if (i = F(i.times(n), c, 1), t = t.times(++b), d = o.plus(Y(i, t, c, 1)), ze(d.d).slice(0, c) === ze(o.d).slice(0, c)) {\n for (s = x; s--; ) o = F(o.times(o), c, 1);\n if (e == null)\n if (p < 3 && gn(o.d, c - r, P, p))\n T.precision = c += 10, t = i = d = new T(1), b = 0, p++;\n else\n return F(o, T.precision = D, P, z = !0);\n else\n return T.precision = D, o;\n }\n o = d;\n }\n}\nfunction Nt(n, e) {\n var t, r, s, i, o, d, c, p, b, x, T, P = 1, D = 10, q = n, Fe = q.d, X = q.constructor, $e = X.rounding, J = X.precision;\n if (q.s < 0 || !Fe || !Fe[0] || !q.e && Fe[0] == 1 && Fe.length == 1)\n return new X(Fe && !Fe[0] ? -1 / 0 : q.s != 1 ? NaN : Fe ? 0 : q);\n if (e == null ? (z = !1, b = J) : b = e, X.precision = b += D, t = ze(Fe), r = t.charAt(0), Math.abs(i = q.e) < 15e14) {\n for (; r < 7 && r != 1 || r == 1 && t.charAt(1) > 3; )\n q = q.times(n), t = ze(q.d), r = t.charAt(0), P++;\n i = q.e, r > 1 ? (q = new X(\"0.\" + t), i++) : q = new X(r + \".\" + t.slice(1));\n } else\n return p = Un(X, b + 2, J).times(i + \"\"), q = Nt(new X(r + \".\" + t.slice(1)), b - D).plus(p), X.precision = J, e == null ? F(q, J, $e, z = !0) : q;\n for (x = q, c = o = q = Y(q.minus(1), q.plus(1), b, 1), T = F(q.times(q), b, 1), s = 3; ; ) {\n if (o = F(o.times(T), b, 1), p = c.plus(Y(o, new X(s), b, 1)), ze(p.d).slice(0, b) === ze(c.d).slice(0, b))\n if (c = c.times(2), i !== 0 && (c = c.plus(Un(X, b + 2, J).times(i + \"\"))), c = Y(c, new X(P), b, 1), e == null)\n if (gn(c.d, b - D, $e, d))\n X.precision = b += D, p = o = q = Y(x.minus(1), x.plus(1), b, 1), T = F(q.times(q), b, 1), s = d = 1;\n else\n return F(c, X.precision = J, $e, z = !0);\n else\n return X.precision = J, c;\n c = p, s += 2;\n }\n}\nfunction Ti(n) {\n return String(n.s * n.s / 0);\n}\nfunction cr(n, e) {\n var t, r, s;\n for ((t = e.indexOf(\".\")) > -1 && (e = e.replace(\".\", \"\")), (r = e.search(/e/i)) > 0 ? (t < 0 && (t = r), t += +e.slice(r + 1), e = e.substring(0, r)) : t < 0 && (t = e.length), r = 0; e.charCodeAt(r) === 48; r++) ;\n for (s = e.length; e.charCodeAt(s - 1) === 48; --s) ;\n if (e = e.slice(r, s), e) {\n if (s -= r, n.e = t = t - r - 1, n.d = [], r = (t + 1) % $, t < 0 && (r += $), r < s) {\n for (r && n.d.push(+e.slice(0, r)), s -= $; r < s; ) n.d.push(+e.slice(r, r += $));\n e = e.slice(r), r = $ - e.length;\n } else\n r -= s;\n for (; r--; ) e += \"0\";\n n.d.push(+e), z && (n.e > n.constructor.maxE ? (n.d = null, n.e = NaN) : n.e < n.constructor.minE && (n.e = 0, n.d = [0]));\n } else\n n.e = 0, n.d = [0];\n return n;\n}\nfunction ya(n, e) {\n var t, r, s, i, o, d, c, p, b;\n if (e.indexOf(\"_\") > -1) {\n if (e = e.replace(/(\\d)_(?=\\d)/g, \"$1\"), bi.test(e)) return cr(n, e);\n } else if (e === \"Infinity\" || e === \"NaN\")\n return +e || (n.s = NaN), n.e = NaN, n.d = null, n;\n if (da.test(e))\n t = 16, e = e.toLowerCase();\n else if (fa.test(e))\n t = 2;\n else if (ha.test(e))\n t = 8;\n else\n throw Error(Rt + e);\n for (i = e.search(/p/i), i > 0 ? (c = +e.slice(i + 1), e = e.substring(2, i)) : e = e.slice(2), i = e.indexOf(\".\"), o = i >= 0, r = n.constructor, o && (e = e.replace(\".\", \"\"), d = e.length, i = d - i, s = xi(r, new r(t), i, i * 2)), p = Nn(e, t, at), b = p.length - 1, i = b; p[i] === 0; --i) p.pop();\n return i < 0 ? new r(n.s * 0) : (n.e = Gn(p, b), n.d = p, z = !1, o && (n = Y(n, s, d * 4)), c && (n = n.times(Math.abs(c) < 54 ? De(2, c) : nn.pow(2, c))), z = !0, n);\n}\nfunction ga(n, e) {\n var t, r = e.d.length;\n if (r < 3)\n return e.isZero() ? e : tn(n, 2, e, e);\n t = 1.4 * Math.sqrt(r), t = t > 16 ? 16 : t | 0, e = e.times(1 / $n(5, t)), e = tn(n, 2, e, e);\n for (var s, i = new n(5), o = new n(16), d = new n(20); t--; )\n s = e.times(e), e = e.times(i.plus(s.times(o.times(s).minus(d))));\n return e;\n}\nfunction tn(n, e, t, r, s) {\n var i, o, d, c, p = n.precision, b = Math.ceil(p / $);\n for (z = !1, c = t.times(t), d = new n(r); ; ) {\n if (o = Y(d.times(c), new n(e++ * e++), p, 1), d = s ? r.plus(o) : r.minus(o), r = Y(o.times(c), new n(e++ * e++), p, 1), o = d.plus(r), o.d[b] !== void 0) {\n for (i = b; o.d[i] === d.d[i] && i--; ) ;\n if (i == -1) break;\n }\n i = d, d = r, r = o, o = i;\n }\n return z = !0, o.d.length = b + 1, o;\n}\nfunction $n(n, e) {\n for (var t = n; --e; ) t *= n;\n return t;\n}\nfunction Ai(n, e) {\n var t, r = e.s < 0, s = st(n, n.precision, 1), i = s.times(0.5);\n if (e = e.abs(), e.lte(i))\n return yt = r ? 4 : 1, e;\n if (t = e.divToInt(s), t.isZero())\n yt = r ? 3 : 2;\n else {\n if (e = e.minus(t.times(s)), e.lte(i))\n return yt = zr(t) ? r ? 2 : 3 : r ? 4 : 1, e;\n yt = zr(t) ? r ? 1 : 4 : r ? 3 : 2;\n }\n return e.minus(s).abs();\n}\nfunction Mr(n, e, t, r) {\n var s, i, o, d, c, p, b, x, T, P = n.constructor, D = t !== void 0;\n if (D ? (Je(t, 1, It), r === void 0 ? r = P.rounding : Je(r, 0, 8)) : (t = P.precision, r = P.rounding), !n.isFinite())\n b = Ti(n);\n else {\n for (b = ft(n), o = b.indexOf(\".\"), D ? (s = 2, e == 16 ? t = t * 4 - 3 : e == 8 && (t = t * 3 - 2)) : s = e, o >= 0 && (b = b.replace(\".\", \"\"), T = new P(1), T.e = b.length - o, T.d = Nn(ft(T), 10, s), T.e = T.d.length), x = Nn(b, 10, s), i = c = x.length; x[--c] == 0; ) x.pop();\n if (!x[0])\n b = D ? \"0p+0\" : \"0\";\n else {\n if (o < 0 ? i-- : (n = new P(n), n.d = x, n.e = i, n = Y(n, T, t, r, 0, s), x = n.d, i = n.e, p = yi), o = x[t], d = s / 2, p = p || x[t + 1] !== void 0, p = r < 4 ? (o !== void 0 || p) && (r === 0 || r === (n.s < 0 ? 3 : 2)) : o > d || o === d && (r === 4 || p || r === 6 && x[t - 1] & 1 || r === (n.s < 0 ? 8 : 7)), x.length = t, p)\n for (; ++x[--t] > s - 1; )\n x[t] = 0, t || (++i, x.unshift(1));\n for (c = x.length; !x[c - 1]; --c) ;\n for (o = 0, b = \"\"; o < c; o++) b += fr.charAt(x[o]);\n if (D) {\n if (c > 1)\n if (e == 16 || e == 8) {\n for (o = e == 16 ? 4 : 3, --c; c % o; c++) b += \"0\";\n for (x = Nn(b, s, e), c = x.length; !x[c - 1]; --c) ;\n for (o = 1, b = \"1.\"; o < c; o++) b += fr.charAt(x[o]);\n } else\n b = b.charAt(0) + \".\" + b.slice(1);\n b = b + (i < 0 ? \"p\" : \"p+\") + i;\n } else if (i < 0) {\n for (; ++i; ) b = \"0\" + b;\n b = \"0.\" + b;\n } else if (++i > c) for (i -= c; i--; ) b += \"0\";\n else i < c && (b = b.slice(0, i) + \".\" + b.slice(i));\n }\n b = (e == 16 ? \"0x\" : e == 2 ? \"0b\" : e == 8 ? \"0o\" : \"\") + b;\n }\n return n.s < 0 ? \"-\" + b : b;\n}\nfunction Vr(n, e) {\n if (n.length > e)\n return n.length = e, !0;\n}\nfunction wa(n) {\n return new this(n).abs();\n}\nfunction va(n) {\n return new this(n).acos();\n}\nfunction ba(n) {\n return new this(n).acosh();\n}\nfunction Ma(n, e) {\n return new this(n).plus(e);\n}\nfunction xa(n) {\n return new this(n).asin();\n}\nfunction Ea(n) {\n return new this(n).asinh();\n}\nfunction Ta(n) {\n return new this(n).atan();\n}\nfunction Aa(n) {\n return new this(n).atanh();\n}\nfunction _a(n, e) {\n n = new this(n), e = new this(e);\n var t, r = this.precision, s = this.rounding, i = r + 4;\n return !n.s || !e.s ? t = new this(NaN) : !n.d && !e.d ? (t = st(this, i, 1).times(e.s > 0 ? 0.25 : 0.75), t.s = n.s) : !e.d || n.isZero() ? (t = e.s < 0 ? st(this, r, s) : new this(0), t.s = n.s) : !n.d || e.isZero() ? (t = st(this, i, 1).times(0.5), t.s = n.s) : e.s < 0 ? (this.precision = i, this.rounding = 1, t = this.atan(Y(n, e, i, 1)), e = st(this, i, 1), this.precision = r, this.rounding = s, t = n.s < 0 ? t.minus(e) : t.plus(e)) : t = this.atan(Y(n, e, i, 1)), t;\n}\nfunction Na(n) {\n return new this(n).cbrt();\n}\nfunction Ra(n) {\n return F(n = new this(n), n.e + 1, 2);\n}\nfunction Ia(n, e, t) {\n return new this(n).clamp(e, t);\n}\nfunction Sa(n) {\n if (!n || typeof n != \"object\") throw Error(Ln + \"Object expected\");\n var e, t, r, s = n.defaults === !0, i = [\n \"precision\",\n 1,\n It,\n \"rounding\",\n 0,\n 8,\n \"toExpNeg\",\n -Xt,\n 0,\n \"toExpPos\",\n 0,\n Xt,\n \"maxE\",\n 0,\n Xt,\n \"minE\",\n -Xt,\n 0,\n \"modulo\",\n 0,\n 9\n ];\n for (e = 0; e < i.length; e += 3)\n if (t = i[e], s && (this[t] = dr[t]), (r = n[t]) !== void 0)\n if (Ve(r) === r && r >= i[e + 1] && r <= i[e + 2]) this[t] = r;\n else throw Error(Rt + t + \": \" + r);\n if (t = \"crypto\", s && (this[t] = dr[t]), (r = n[t]) !== void 0)\n if (r === !0 || r === !1 || r === 0 || r === 1)\n if (r)\n if (typeof crypto < \"u\" && crypto && (crypto.getRandomValues || crypto.randomBytes))\n this[t] = !0;\n else\n throw Error(wi);\n else\n this[t] = !1;\n else\n throw Error(Rt + t + \": \" + r);\n return this;\n}\nfunction ka(n) {\n return new this(n).cos();\n}\nfunction Pa(n) {\n return new this(n).cosh();\n}\nfunction _i(n) {\n var e, t, r;\n function s(i) {\n var o, d, c, p = this;\n if (!(p instanceof s)) return new s(i);\n if (p.constructor = s, jr(i)) {\n p.s = i.s, z ? !i.d || i.e > s.maxE ? (p.e = NaN, p.d = null) : i.e < s.minE ? (p.e = 0, p.d = [0]) : (p.e = i.e, p.d = i.d.slice()) : (p.e = i.e, p.d = i.d ? i.d.slice() : i.d);\n return;\n }\n if (c = typeof i, c === \"number\") {\n if (i === 0) {\n p.s = 1 / i < 0 ? -1 : 1, p.e = 0, p.d = [0];\n return;\n }\n if (i < 0 ? (i = -i, p.s = -1) : p.s = 1, i === ~~i && i < 1e7) {\n for (o = 0, d = i; d >= 10; d /= 10) o++;\n z ? o > s.maxE ? (p.e = NaN, p.d = null) : o < s.minE ? (p.e = 0, p.d = [0]) : (p.e = o, p.d = [i]) : (p.e = o, p.d = [i]);\n return;\n } else if (i * 0 !== 0) {\n i || (p.s = NaN), p.e = NaN, p.d = null;\n return;\n }\n return cr(p, i.toString());\n } else if (c !== \"string\")\n throw Error(Rt + i);\n return (d = i.charCodeAt(0)) === 45 ? (i = i.slice(1), p.s = -1) : (d === 43 && (i = i.slice(1)), p.s = 1), bi.test(i) ? cr(p, i) : ya(p, i);\n }\n if (s.prototype = R, s.ROUND_UP = 0, s.ROUND_DOWN = 1, s.ROUND_CEIL = 2, s.ROUND_FLOOR = 3, s.ROUND_HALF_UP = 4, s.ROUND_HALF_DOWN = 5, s.ROUND_HALF_EVEN = 6, s.ROUND_HALF_CEIL = 7, s.ROUND_HALF_FLOOR = 8, s.EUCLID = 9, s.config = s.set = Sa, s.clone = _i, s.isDecimal = jr, s.abs = wa, s.acos = va, s.acosh = ba, s.add = Ma, s.asin = xa, s.asinh = Ea, s.atan = Ta, s.atanh = Aa, s.atan2 = _a, s.cbrt = Na, s.ceil = Ra, s.clamp = Ia, s.cos = ka, s.cosh = Pa, s.div = Oa, s.exp = Ca, s.floor = Ua, s.hypot = Ba, s.ln = Fa, s.log = Da, s.log10 = Ga, s.log2 = La, s.max = $a, s.min = qa, s.mod = za, s.mul = Va, s.pow = ja, s.random = Ha, s.round = Za, s.sign = Wa, s.sin = Ja, s.sinh = Ka, s.sqrt = Xa, s.sub = Ya, s.sum = Qa, s.tan = eo, s.tanh = to, s.trunc = no, n === void 0 && (n = {}), n && n.defaults !== !0)\n for (r = [\"precision\", \"rounding\", \"toExpNeg\", \"toExpPos\", \"maxE\", \"minE\", \"modulo\", \"crypto\"], e = 0; e < r.length; ) n.hasOwnProperty(t = r[e++]) || (n[t] = this[t]);\n return s.config(n), s;\n}\nfunction Oa(n, e) {\n return new this(n).div(e);\n}\nfunction Ca(n) {\n return new this(n).exp();\n}\nfunction Ua(n) {\n return F(n = new this(n), n.e + 1, 3);\n}\nfunction Ba() {\n var n, e, t = new this(0);\n for (z = !1, n = 0; n < arguments.length; )\n if (e = new this(arguments[n++]), e.d)\n t.d && (t = t.plus(e.times(e)));\n else {\n if (e.s)\n return z = !0, new this(1 / 0);\n t = e;\n }\n return z = !0, t.sqrt();\n}\nfunction jr(n) {\n return n instanceof nn || n && n.toStringTag === vi || !1;\n}\nfunction Fa(n) {\n return new this(n).ln();\n}\nfunction Da(n, e) {\n return new this(n).log(e);\n}\nfunction La(n) {\n return new this(n).log(2);\n}\nfunction Ga(n) {\n return new this(n).log(10);\n}\nfunction $a() {\n return Ei(this, arguments, \"lt\");\n}\nfunction qa() {\n return Ei(this, arguments, \"gt\");\n}\nfunction za(n, e) {\n return new this(n).mod(e);\n}\nfunction Va(n, e) {\n return new this(n).mul(e);\n}\nfunction ja(n, e) {\n return new this(n).pow(e);\n}\nfunction Ha(n) {\n var e, t, r, s, i = 0, o = new this(1), d = [];\n if (n === void 0 ? n = this.precision : Je(n, 1, It), r = Math.ceil(n / $), this.crypto)\n if (crypto.getRandomValues)\n for (e = crypto.getRandomValues(new Uint32Array(r)); i < r; )\n s = e[i], s >= 429e7 ? e[i] = crypto.getRandomValues(new Uint32Array(1))[0] : d[i++] = s % 1e7;\n else if (crypto.randomBytes) {\n for (e = crypto.randomBytes(r *= 4); i < r; )\n s = e[i] + (e[i + 1] << 8) + (e[i + 2] << 16) + ((e[i + 3] & 127) << 24), s >= 214e7 ? crypto.randomBytes(4).copy(e, i) : (d.push(s % 1e7), i += 4);\n i = r / 4;\n } else\n throw Error(wi);\n else for (; i < r; ) d[i++] = Math.random() * 1e7 | 0;\n for (r = d[--i], n %= $, r && n && (s = De(10, $ - n), d[i] = (r / s | 0) * s); d[i] === 0; i--) d.pop();\n if (i < 0)\n t = 0, d = [0];\n else {\n for (t = -1; d[0] === 0; t -= $) d.shift();\n for (r = 1, s = d[0]; s >= 10; s /= 10) r++;\n r < $ && (t -= $ - r);\n }\n return o.e = t, o.d = d, o;\n}\nfunction Za(n) {\n return F(n = new this(n), n.e + 1, this.rounding);\n}\nfunction Wa(n) {\n return n = new this(n), n.d ? n.d[0] ? n.s : 0 * n.s : n.s || NaN;\n}\nfunction Ja(n) {\n return new this(n).sin();\n}\nfunction Ka(n) {\n return new this(n).sinh();\n}\nfunction Xa(n) {\n return new this(n).sqrt();\n}\nfunction Ya(n, e) {\n return new this(n).sub(e);\n}\nfunction Qa() {\n var n = 0, e = arguments, t = new this(e[n]);\n for (z = !1; t.s && ++n < e.length; ) t = t.plus(e[n]);\n return z = !0, F(t, this.precision, this.rounding);\n}\nfunction eo(n) {\n return new this(n).tan();\n}\nfunction to(n) {\n return new this(n).tanh();\n}\nfunction no(n) {\n return F(n = new this(n), n.e + 1, 1);\n}\nR[Symbol.for(\"nodejs.util.inspect.custom\")] = R.toString;\nR[Symbol.toStringTag] = \"Decimal\";\nvar nn = R.constructor = _i(dr);\nOn = new nn(On);\nCn = new nn(Cn);\nvar Ni = {};\nconst ro = [\n {\n constant: !0,\n inputs: [],\n name: \"name\",\n outputs: [\n {\n name: \"\",\n type: \"string\"\n }\n ],\n payable: !1,\n stateMutability: \"view\",\n type: \"function\"\n },\n {\n constant: !1,\n inputs: [\n {\n name: \"_spender\",\n type: \"address\"\n },\n {\n name: \"_value\",\n type: \"uint256\"\n }\n ],\n name: \"approve\",\n outputs: [\n {\n name: \"\",\n type: \"bool\"\n }\n ],\n payable: !1,\n stateMutability: \"nonpayable\",\n type: \"function\"\n },\n {\n constant: !0,\n inputs: [],\n name: \"totalSupply\",\n outputs: [\n {\n name: \"\",\n type: \"uint256\"\n }\n ],\n payable: !1,\n stateMutability: \"view\",\n type: \"function\"\n },\n {\n constant: !1,\n inputs: [\n {\n name: \"_from\",\n type: \"address\"\n },\n {\n name: \"_to\",\n type: \"address\"\n },\n {\n name: \"_value\",\n type: \"uint256\"\n }\n ],\n name: \"transferFrom\",\n outputs: [\n {\n name: \"\",\n type: \"bool\"\n }\n ],\n payable: !1,\n stateMutability: \"nonpayable\",\n type: \"function\"\n },\n {\n constant: !0,\n inputs: [],\n name: \"decimals\",\n outputs: [\n {\n name: \"\",\n type: \"uint8\"\n }\n ],\n payable: !1,\n stateMutability: \"view\",\n type: \"function\"\n },\n {\n constant: !0,\n inputs: [\n {\n name: \"_owner\",\n type: \"address\"\n }\n ],\n name: \"balanceOf\",\n outputs: [\n {\n name: \"balance\",\n type: \"uint256\"\n }\n ],\n payable: !1,\n stateMutability: \"view\",\n type: \"function\"\n },\n {\n constant: !0,\n inputs: [],\n name: \"symbol\",\n outputs: [\n {\n name: \"\",\n type: \"string\"\n }\n ],\n payable: !1,\n stateMutability: \"view\",\n type: \"function\"\n },\n {\n constant: !1,\n inputs: [\n {\n name: \"_to\",\n type: \"address\"\n },\n {\n name: \"_value\",\n type: \"uint256\"\n }\n ],\n name: \"transfer\",\n outputs: [\n {\n name: \"\",\n type: \"bool\"\n }\n ],\n payable: !1,\n stateMutability: \"nonpayable\",\n type: \"function\"\n },\n {\n constant: !0,\n inputs: [\n {\n name: \"_owner\",\n type: \"address\"\n },\n {\n name: \"_spender\",\n type: \"address\"\n }\n ],\n name: \"allowance\",\n outputs: [\n {\n name: \"\",\n type: \"uint256\"\n }\n ],\n payable: !1,\n stateMutability: \"view\",\n type: \"function\"\n },\n {\n payable: !0,\n stateMutability: \"payable\",\n type: \"fallback\"\n },\n {\n anonymous: !1,\n inputs: [\n {\n indexed: !0,\n name: \"owner\",\n type: \"address\"\n },\n {\n indexed: !0,\n name: \"spender\",\n type: \"address\"\n },\n {\n indexed: !1,\n name: \"value\",\n type: \"uint256\"\n }\n ],\n name: \"Approval\",\n type: \"event\"\n },\n {\n anonymous: !1,\n inputs: [\n {\n indexed: !0,\n name: \"from\",\n type: \"address\"\n },\n {\n indexed: !0,\n name: \"to\",\n type: \"address\"\n },\n {\n indexed: !1,\n name: \"value\",\n type: \"uint256\"\n }\n ],\n name: \"Transfer\",\n type: \"event\"\n }\n], io = {\n ERC20ABI: ro\n}, so = [\n {\n inputs: [\n {\n internalType: \"string\",\n name: \"name_\",\n type: \"string\"\n },\n {\n internalType: \"string\",\n name: \"symbol_\",\n type: \"string\"\n }\n ],\n stateMutability: \"nonpayable\",\n type: \"constructor\"\n },\n {\n anonymous: !1,\n inputs: [\n {\n indexed: !0,\n internalType: \"address\",\n name: \"owner\",\n type: \"address\"\n },\n {\n indexed: !0,\n internalType: \"address\",\n name: \"approved\",\n type: \"address\"\n },\n {\n indexed: !0,\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\"\n }\n ],\n name: \"Approval\",\n type: \"event\"\n },\n {\n anonymous: !1,\n inputs: [\n {\n indexed: !0,\n internalType: \"address\",\n name: \"owner\",\n type: \"address\"\n },\n {\n indexed: !0,\n internalType: \"address\",\n name: \"operator\",\n type: \"address\"\n },\n {\n indexed: !1,\n internalType: \"bool\",\n name: \"approved\",\n type: \"bool\"\n }\n ],\n name: \"ApprovalForAll\",\n type: \"event\"\n },\n {\n anonymous: !1,\n inputs: [\n {\n indexed: !0,\n internalType: \"address\",\n name: \"from\",\n type: \"address\"\n },\n {\n indexed: !0,\n internalType: \"address\",\n name: \"to\",\n type: \"address\"\n },\n {\n indexed: !0,\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\"\n }\n ],\n name: \"Transfer\",\n type: \"event\"\n },\n {\n inputs: [\n {\n internalType: \"bytes4\",\n name: \"interfaceId\",\n type: \"bytes4\"\n }\n ],\n name: \"supportsInterface\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\"\n }\n ],\n stateMutability: \"view\",\n type: \"function\"\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"owner\",\n type: \"address\"\n }\n ],\n name: \"balanceOf\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\"\n }\n ],\n stateMutability: \"view\",\n type: \"function\"\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\"\n }\n ],\n name: \"ownerOf\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\"\n }\n ],\n stateMutability: \"view\",\n type: \"function\"\n },\n {\n inputs: [],\n name: \"name\",\n outputs: [\n {\n internalType: \"string\",\n name: \"\",\n type: \"string\"\n }\n ],\n stateMutability: \"view\",\n type: \"function\"\n },\n {\n inputs: [],\n name: \"symbol\",\n outputs: [\n {\n internalType: \"string\",\n name: \"\",\n type: \"string\"\n }\n ],\n stateMutability: \"view\",\n type: \"function\"\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\"\n }\n ],\n name: \"tokenURI\",\n outputs: [\n {\n internalType: \"string\",\n name: \"\",\n type: \"string\"\n }\n ],\n stateMutability: \"view\",\n type: \"function\"\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"to\",\n type: \"address\"\n },\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\"\n }\n ],\n name: \"approve\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\"\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\"\n }\n ],\n name: \"getApproved\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\"\n }\n ],\n stateMutability: \"view\",\n type: \"function\"\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"operator\",\n type: \"address\"\n },\n {\n internalType: \"bool\",\n name: \"approved\",\n type: \"bool\"\n }\n ],\n name: \"setApprovalForAll\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\"\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"owner\",\n type: \"address\"\n },\n {\n internalType: \"address\",\n name: \"operator\",\n type: \"address\"\n }\n ],\n name: \"isApprovedForAll\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\"\n }\n ],\n stateMutability: \"view\",\n type: \"function\"\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"from\",\n type: \"address\"\n },\n {\n internalType: \"address\",\n name: \"to\",\n type: \"address\"\n },\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\"\n }\n ],\n name: \"transferFrom\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\"\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"from\",\n type: \"address\"\n },\n {\n internalType: \"address\",\n name: \"to\",\n type: \"address\"\n },\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\"\n }\n ],\n name: \"safeTransferFrom\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\"\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"from\",\n type: \"address\"\n },\n {\n internalType: \"address\",\n name: \"to\",\n type: \"address\"\n },\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\"\n },\n {\n internalType: \"bytes\",\n name: \"_data\",\n type: \"bytes\"\n }\n ],\n name: \"safeTransferFrom\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\"\n }\n], ao = {\n ERC721ABI: so\n}, oo = [\n {\n anonymous: !1,\n inputs: [\n {\n indexed: !0,\n internalType: \"address\",\n name: \"account\",\n type: \"address\"\n },\n {\n indexed: !0,\n internalType: \"address\",\n name: \"sender\",\n type: \"address\"\n }\n ],\n name: \"AdminApproved\",\n type: \"event\"\n },\n {\n anonymous: !1,\n inputs: [\n {\n indexed: !0,\n internalType: \"address\",\n name: \"account\",\n type: \"address\"\n },\n {\n indexed: !0,\n internalType: \"address\",\n name: \"sender\",\n type: \"address\"\n }\n ],\n name: \"AdminRevoked\",\n type: \"event\"\n },\n {\n anonymous: !1,\n inputs: [\n {\n indexed: !0,\n internalType: \"address\",\n name: \"owner\",\n type: \"address\"\n },\n {\n indexed: !0,\n internalType: \"address\",\n name: \"approved\",\n type: \"address\"\n },\n {\n indexed: !0,\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\"\n }\n ],\n name: \"Approval\",\n type: \"event\"\n },\n {\n anonymous: !1,\n inputs: [\n {\n indexed: !0,\n internalType: \"address\",\n name: \"owner\",\n type: \"address\"\n },\n {\n indexed: !0,\n internalType: \"address\",\n name: \"operator\",\n type: \"address\"\n },\n {\n indexed: !1,\n internalType: \"bool\",\n name: \"approved\",\n type: \"bool\"\n }\n ],\n name: \"ApprovalForAll\",\n type: \"event\"\n },\n {\n anonymous: !1,\n inputs: [\n {\n indexed: !1,\n internalType: \"address\",\n name: \"extension\",\n type: \"address\"\n }\n ],\n name: \"ApproveTransferUpdated\",\n type: \"event\"\n },\n {\n anonymous: !1,\n inputs: [\n {\n indexed: !1,\n internalType: \"address payable[]\",\n name: \"receivers\",\n type: \"address[]\"\n },\n {\n indexed: !1,\n internalType: \"uint256[]\",\n name: \"basisPoints\",\n type: \"uint256[]\"\n }\n ],\n name: \"DefaultRoyaltiesUpdated\",\n type: \"event\"\n },\n {\n anonymous: !1,\n inputs: [\n {\n indexed: !0,\n internalType: \"address\",\n name: \"extension\",\n type: \"address\"\n },\n {\n indexed: !1,\n internalType: \"bool\",\n name: \"enabled\",\n type: \"bool\"\n }\n ],\n name: \"ExtensionApproveTransferUpdated\",\n type: \"event\"\n },\n {\n anonymous: !1,\n inputs: [\n {\n indexed: !0,\n internalType: \"address\",\n name: \"extension\",\n type: \"address\"\n },\n {\n indexed: !0,\n internalType: \"address\",\n name: \"sender\",\n type: \"address\"\n }\n ],\n name: \"ExtensionBlacklisted\",\n type: \"event\"\n },\n {\n anonymous: !1,\n inputs: [\n {\n indexed: !0,\n internalType: \"address\",\n name: \"extension\",\n type: \"address\"\n },\n {\n indexed: !0,\n internalType: \"address\",\n name: \"sender\",\n type: \"address\"\n }\n ],\n name: \"ExtensionRegistered\",\n type: \"event\"\n },\n {\n anonymous: !1,\n inputs: [\n {\n indexed: !0,\n internalType: \"address\",\n name: \"extension\",\n type: \"address\"\n },\n {\n indexed: !1,\n internalType: \"address payable[]\",\n name: \"receivers\",\n type: \"address[]\"\n },\n {\n indexed: !1,\n internalType: \"uint256[]\",\n name: \"basisPoints\",\n type: \"uint256[]\"\n }\n ],\n name: \"ExtensionRoyaltiesUpdated\",\n type: \"event\"\n },\n {\n anonymous: !1,\n inputs: [\n {\n indexed: !0,\n internalType: \"address\",\n name: \"extension\",\n type: \"address\"\n },\n {\n indexed: !0,\n internalType: \"address\",\n name: \"sender\",\n type: \"address\"\n }\n ],\n name: \"ExtensionUnregistered\",\n type: \"event\"\n },\n {\n anonymous: !1,\n inputs: [\n {\n indexed: !1,\n internalType: \"uint8\",\n name: \"version\",\n type: \"uint8\"\n }\n ],\n name: \"Initialized\",\n type: \"event\"\n },\n {\n anonymous: !1,\n inputs: [\n {\n indexed: !0,\n internalType: \"address\",\n name: \"extension\",\n type: \"address\"\n },\n {\n indexed: !0,\n internalType: \"address\",\n name: \"permissions\",\n type: \"address\"\n },\n {\n indexed: !0,\n internalType: \"address\",\n name: \"sender\",\n type: \"address\"\n }\n ],\n name: \"MintPermissionsUpdated\",\n type: \"event\"\n },\n {\n anonymous: !1,\n inputs: [\n {\n indexed: !0,\n internalType: \"address\",\n name: \"previousOwner\",\n type: \"address\"\n },\n {\n indexed: !0,\n internalType: \"address\",\n name: \"newOwner\",\n type: \"address\"\n }\n ],\n name: \"OwnershipTransferred\",\n type: \"event\"\n },\n {\n anonymous: !1,\n inputs: [\n {\n indexed: !0,\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\"\n },\n {\n indexed: !1,\n internalType: \"address payable[]\",\n name: \"receivers\",\n type: \"address[]\"\n },\n {\n indexed: !1,\n internalType: \"uint256[]\",\n name: \"basisPoints\",\n type: \"uint256[]\"\n }\n ],\n name: \"RoyaltiesUpdated\",\n type: \"event\"\n },\n {\n anonymous: !1,\n inputs: [\n {\n indexed: !0,\n internalType: \"address\",\n name: \"from\",\n type: \"address\"\n },\n {\n indexed: !0,\n internalType: \"address\",\n name: \"to\",\n type: \"address\"\n },\n {\n indexed: !0,\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\"\n }\n ],\n name: \"Transfer\",\n type: \"event\"\n },\n {\n inputs: [],\n name: \"VERSION\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\"\n }\n ],\n stateMutability: \"view\",\n type: \"function\"\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"to\",\n type: \"address\"\n },\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\"\n }\n ],\n name: \"approve\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\"\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"admin\",\n type: \"address\"\n }\n ],\n name: \"approveAdmin\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\"\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"owner\",\n type: \"address\"\n }\n ],\n name: \"balanceOf\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\"\n }\n ],\n stateMutability: \"view\",\n type: \"function\"\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"extension\",\n type: \"address\"\n }\n ],\n name: \"blacklistExtension\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\"\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\"\n }\n ],\n name: \"burn\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\"\n },\n {\n inputs: [],\n name: \"getAdmins\",\n outputs: [\n {\n internalType: \"address[]\",\n name: \"admins\",\n type: \"address[]\"\n }\n ],\n stateMutability: \"view\",\n type: \"function\"\n },\n {\n inputs: [],\n name: \"getApproveTransfer\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\"\n }\n ],\n stateMutability: \"view\",\n type: \"function\"\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\"\n }\n ],\n name: \"getApproved\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\"\n }\n ],\n stateMutability: \"view\",\n type: \"function\"\n },\n {\n inputs: [],\n name: \"getExtensions\",\n outputs: [\n {\n internalType: \"address[]\",\n name: \"extensions\",\n type: \"address[]\"\n }\n ],\n stateMutability: \"view\",\n type: \"function\"\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\"\n }\n ],\n name: \"getFeeBps\",\n outputs: [\n {\n internalType: \"uint256[]\",\n name: \"\",\n type: \"uint256[]\"\n }\n ],\n stateMutability: \"view\",\n type: \"function\"\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\"\n }\n ],\n name: \"getFeeRecipients\",\n outputs: [\n {\n internalType: \"address payable[]\",\n name: \"\",\n type: \"address[]\"\n }\n ],\n stateMutability: \"view\",\n type: \"function\"\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\"\n }\n ],\n name: \"getFees\",\n outputs: [\n {\n internalType: \"address payable[]\",\n name: \"\",\n type: \"address[]\"\n },\n {\n internalType: \"uint256[]\",\n name: \"\",\n type: \"uint256[]\"\n }\n ],\n stateMutability: \"view\",\n type: \"function\"\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\"\n }\n ],\n name: \"getRoyalties\",\n outputs: [\n {\n internalType: \"address payable[]\",\n name: \"\",\n type: \"address[]\"\n },\n {\n internalType: \"uint256[]\",\n name: \"\",\n type: \"uint256[]\"\n }\n ],\n stateMutability: \"view\",\n type: \"function\"\n },\n {\n inputs: [\n {\n internalType: \"string\",\n name: \"_name\",\n type: \"string\"\n },\n {\n internalType: \"string\",\n name: \"_symbol\",\n type: \"string\"\n }\n ],\n name: \"initialize\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\"\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"admin\",\n type: \"address\"\n }\n ],\n name: \"isAdmin\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\"\n }\n ],\n stateMutability: \"view\",\n type: \"function\"\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"owner\",\n type: \"address\"\n },\n {\n internalType: \"address\",\n name: \"operator\",\n type: \"address\"\n }\n ],\n name: \"isApprovedForAll\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\"\n }\n ],\n stateMutability: \"view\",\n type: \"function\"\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"to\",\n type: \"address\"\n }\n ],\n name: \"mintBase\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\"\n }\n ],\n stateMutability: \"nonpayable\",\n type: \"function\"\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"to\",\n type: \"address\"\n },\n {\n internalType: \"string\",\n name: \"uri\",\n type: \"string\"\n }\n ],\n name: \"mintBase\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\"\n }\n ],\n stateMutability: \"nonpayable\",\n type: \"function\"\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"to\",\n type: \"address\"\n },\n {\n internalType: \"string[]\",\n name: \"uris\",\n type: \"string[]\"\n }\n ],\n name: \"mintBaseBatch\",\n outputs: [\n {\n internalType: \"uint256[]\",\n name: \"tokenIds\",\n type: \"uint256[]\"\n }\n ],\n stateMutability: \"nonpayable\",\n type: \"function\"\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"to\",\n type: \"address\"\n },\n {\n internalType: \"uint16\",\n name: \"count\",\n type: \"uint16\"\n }\n ],\n name: \"mintBaseBatch\",\n outputs: [\n {\n internalType: \"uint256[]\",\n name: \"tokenIds\",\n type: \"uint256[]\"\n }\n ],\n stateMutability: \"nonpayable\",\n type: \"function\"\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"to\",\n type: \"address\"\n }\n ],\n name: \"mintExtension\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\"\n }\n ],\n stateMutability: \"nonpayable\",\n type: \"function\"\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"to\",\n type: \"address\"\n },\n {\n internalType: \"string\",\n name: \"uri\",\n type: \"string\"\n }\n ],\n name: \"mintExtension\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\"\n }\n ],\n stateMutability: \"nonpayable\",\n type: \"function\"\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"to\",\n type: \"address\"\n },\n {\n internalType: \"string[]\",\n name: \"uris\",\n type: \"string[]\"\n }\n ],\n name: \"mintExtensionBatch\",\n outputs: [\n {\n internalType: \"uint256[]\",\n name: \"tokenIds\",\n type: \"uint256[]\"\n }\n ],\n stateMutability: \"nonpayable\",\n type: \"function\"\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"to\",\n type: \"address\"\n },\n {\n internalType: \"uint16\",\n name: \"count\",\n type: \"uint16\"\n }\n ],\n name: \"mintExtensionBatch\",\n outputs: [\n {\n internalType: \"uint256[]\",\n name: \"tokenIds\",\n type: \"uint256[]\"\n }\n ],\n stateMutability: \"nonpayable\",\n type: \"function\"\n },\n {\n inputs: [],\n name: \"name\",\n outputs: [\n {\n internalType: \"string\",\n name: \"\",\n type: \"string\"\n }\n ],\n stateMutability: \"view\",\n type: \"function\"\n },\n {\n inputs: [],\n name: \"owner\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\"\n }\n ],\n stateMutability: \"view\",\n type: \"function\"\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\"\n }\n ],\n name: \"ownerOf\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\"\n }\n ],\n stateMutability: \"view\",\n type: \"function\"\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"extension\",\n type: \"address\"\n },\n {\n internalType: \"string\",\n name: \"baseURI\",\n type: \"string\"\n }\n ],\n name: \"registerExtension\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\"\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"extension\",\n type: \"address\"\n },\n {\n internalType: \"string\",\n name: \"baseURI\",\n type: \"string\"\n },\n {\n internalType: \"bool\",\n name: \"baseURIIdentical\",\n type: \"bool\"\n }\n ],\n name: \"registerExtension\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\"\n },\n {\n inputs: [],\n name: \"renounceOwnership\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\"\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"admin\",\n type: \"address\"\n }\n ],\n name: \"revokeAdmin\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\"\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\"\n },\n {\n internalType: \"uint256\",\n name: \"value\",\n type: \"uint256\"\n }\n ],\n name: \"royaltyInfo\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\"\n },\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\"\n }\n ],\n stateMutability: \"view\",\n type: \"function\"\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"from\",\n type: \"address\"\n },\n {\n internalType: \"address\",\n name: \"to\",\n type: \"address\"\n },\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\"\n }\n ],\n name: \"safeTransferFrom\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\"\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"from\",\n type: \"address\"\n },\n {\n internalType: \"address\",\n name: \"to\",\n type: \"address\"\n },\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\"\n },\n {\n internalType: \"bytes\",\n name: \"data\",\n type: \"bytes\"\n }\n ],\n name: \"safeTransferFrom\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\"\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"operator\",\n type: \"address\"\n },\n {\n internalType: \"bool\",\n name: \"approved\",\n type: \"bool\"\n }\n ],\n name: \"setApprovalForAll\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\"\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"extension\",\n type: \"address\"\n }\n ],\n name: \"setApproveTransfer\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\"\n },\n {\n inputs: [\n {\n internalType: \"bool\",\n name: \"enabled\",\n type: \"bool\"\n }\n ],\n name: \"setApproveTransferExtension\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\"\n },\n {\n inputs: [\n {\n internalType: \"string\",\n name: \"uri\",\n type: \"string\"\n }\n ],\n name: \"setBaseTokenURI\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\"\n },\n {\n inputs: [\n {\n internalType: \"string\",\n name: \"uri\",\n type: \"string\"\n }\n ],\n name: \"setBaseTokenURIExtension\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\"\n },\n {\n inputs: [\n {\n internalType: \"string\",\n name: \"uri\",\n type: \"string\"\n },\n {\n internalType: \"bool\",\n name: \"identical\",\n type: \"bool\"\n }\n ],\n name: \"setBaseTokenURIExtension\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\"\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"extension\",\n type: \"address\"\n },\n {\n internalType: \"address\",\n name: \"permissions\",\n type: \"address\"\n }\n ],\n name: \"setMintPermissions\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\"\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\"\n },\n {\n internalType: \"address payable[]\",\n name: \"receivers\",\n type: \"address[]\"\n },\n {\n internalType: \"uint256[]\",\n name: \"basisPoints\",\n type: \"uint256[]\"\n }\n ],\n name: \"setRoyalties\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\"\n },\n {\n inputs: [\n {\n internalType: \"address payable[]\",\n name: \"receivers\",\n type: \"address[]\"\n },\n {\n internalType: \"uint256[]\",\n name: \"basisPoints\",\n type: \"uint256[]\"\n }\n ],\n name: \"setRoyalties\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\"\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"extension\",\n type: \"address\"\n },\n {\n internalType: \"address payable[]\",\n name: \"receivers\",\n type: \"address[]\"\n },\n {\n internalType: \"uint256[]\",\n name: \"basisPoints\",\n type: \"uint256[]\"\n }\n ],\n name: \"setRoyaltiesExtension\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\"\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\"\n },\n {\n internalType: \"string\",\n name: \"uri\",\n type: \"string\"\n }\n ],\n name: \"setTokenURI\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\"\n },\n {\n inputs: [\n {\n internalType: \"uint256[]\",\n name: \"tokenIds\",\n type: \"uint256[]\"\n },\n {\n internalType: \"string[]\",\n name: \"uris\",\n type: \"string[]\"\n }\n ],\n name: \"setTokenURI\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\"\n },\n {\n inputs: [\n {\n internalType: \"uint256[]\",\n name: \"tokenIds\",\n type: \"uint256[]\"\n },\n {\n internalType: \"string[]\",\n name: \"uris\",\n type: \"string[]\"\n }\n ],\n name: \"setTokenURIExtension\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\"\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\"\n },\n {\n internalType: \"string\",\n name: \"uri\",\n type: \"string\"\n }\n ],\n name: \"setTokenURIExtension\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\"\n },\n {\n inputs: [\n {\n internalType: \"string\",\n name: \"prefix\",\n type: \"string\"\n }\n ],\n name: \"setTokenURIPrefix\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\"\n },\n {\n inputs: [\n {\n internalType: \"string\",\n name: \"prefix\",\n type: \"string\"\n }\n ],\n name: \"setTokenURIPrefixExtension\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\"\n },\n {\n inputs: [\n {\n internalType: \"bytes4\",\n name: \"interfaceId\",\n type: \"bytes4\"\n }\n ],\n name: \"supportsInterface\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\"\n }\n ],\n stateMutability: \"view\",\n type: \"function\"\n },\n {\n inputs: [],\n name: \"symbol\",\n outputs: [\n {\n internalType: \"string\",\n name: \"\",\n type: \"string\"\n }\n ],\n stateMutability: \"view\",\n type: \"function\"\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\"\n }\n ],\n name: \"tokenExtension\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\"\n }\n ],\n stateMutability: \"view\",\n type: \"function\"\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\"\n }\n ],\n name: \"tokenURI\",\n outputs: [\n {\n internalType: \"string\",\n name: \"\",\n type: \"string\"\n }\n ],\n stateMutability: \"view\",\n type: \"function\"\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"from\",\n type: \"address\"\n },\n {\n internalType: \"address\",\n name: \"to\",\n type: \"address\"\n },\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\"\n }\n ],\n name: \"transferFrom\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\"\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"newOwner\",\n type: \"address\"\n }\n ],\n name: \"transferOwnership\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\"\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"extension\",\n type: \"address\"\n }\n ],\n name: \"unregisterExtension\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\"\n }\n], uo = {\n ERC721CreatorABI: oo\n}, lo = [\n {\n inputs: [\n {\n internalType: \"string\",\n name: \"uri_\",\n type: \"string\"\n }\n ],\n stateMutability: \"nonpayable\",\n type: \"constructor\"\n },\n {\n anonymous: !1,\n inputs: [\n {\n indexed: !0,\n internalType: \"address\",\n name: \"account\",\n type: \"address\"\n },\n {\n indexed: !0,\n internalType: \"address\",\n name: \"operator\",\n type: \"address\"\n },\n {\n indexed: !1,\n internalType: \"bool\",\n name: \"approved\",\n type: \"bool\"\n }\n ],\n name: \"ApprovalForAll\",\n type: \"event\"\n },\n {\n anonymous: !1,\n inputs: [\n {\n indexed: !0,\n internalType: \"address\",\n name: \"operator\",\n type: \"address\"\n },\n {\n indexed: !0,\n internalType: \"address\",\n name: \"from\",\n type: \"address\"\n },\n {\n indexed: !0,\n internalType: \"address\",\n name: \"to\",\n type: \"address\"\n },\n {\n indexed: !1,\n internalType: \"uint256[]\",\n name: \"ids\",\n type: \"uint256[]\"\n },\n {\n indexed: !1,\n internalType: \"uint256[]\",\n name: \"values\",\n type: \"uint256[]\"\n }\n ],\n name: \"TransferBatch\",\n type: \"event\"\n },\n {\n anonymous: !1,\n inputs: [\n {\n indexed: !0,\n internalType: \"address\",\n name: \"operator\",\n type: \"address\"\n },\n {\n indexed: !0,\n internalType: \"address\",\n name: \"from\",\n type: \"address\"\n },\n {\n indexed: !0,\n internalType: \"address\",\n name: \"to\",\n type: \"address\"\n },\n {\n indexed: !1,\n internalType: \"uint256\",\n name: \"id\",\n type: \"uint256\"\n },\n {\n indexed: !1,\n internalType: \"uint256\",\n name: \"value\",\n type: \"uint256\"\n }\n ],\n name: \"TransferSingle\",\n type: \"event\"\n },\n {\n anonymous: !1,\n inputs: [\n {\n indexed: !1,\n internalType: \"string\",\n name: \"value\",\n type: \"string\"\n },\n {\n indexed: !0,\n internalType: \"uint256\",\n name: \"id\",\n type: \"uint256\"\n }\n ],\n name: \"URI\",\n type: \"event\"\n },\n {\n inputs: [\n {\n internalType: \"bytes4\",\n name: \"interfaceId\",\n type: \"bytes4\"\n }\n ],\n name: \"supportsInterface\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\"\n }\n ],\n stateMutability: \"view\",\n type: \"function\"\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\"\n }\n ],\n name: \"uri\",\n outputs: [\n {\n internalType: \"string\",\n name: \"\",\n type: \"string\"\n }\n ],\n stateMutability: \"view\",\n type: \"function\"\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"account\",\n type: \"address\"\n },\n {\n internalType: \"uint256\",\n name: \"id\",\n type: \"uint256\"\n }\n ],\n name: \"balanceOf\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\"\n }\n ],\n stateMutability: \"view\",\n type: \"function\"\n },\n {\n inputs: [\n {\n internalType: \"address[]\",\n name: \"accounts\",\n type: \"address[]\"\n },\n {\n internalType: \"uint256[]\",\n name: \"ids\",\n type: \"uint256[]\"\n }\n ],\n name: \"balanceOfBatch\",\n outputs: [\n {\n internalType: \"uint256[]\",\n name: \"\",\n type: \"uint256[]\"\n }\n ],\n stateMutability: \"view\",\n type: \"function\"\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"operator\",\n type: \"address\"\n },\n {\n internalType: \"bool\",\n name: \"approved\",\n type: \"bool\"\n }\n ],\n name: \"setApprovalForAll\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\"\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"account\",\n type: \"address\"\n },\n {\n internalType: \"address\",\n name: \"operator\",\n type: \"address\"\n }\n ],\n name: \"isApprovedForAll\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\"\n }\n ],\n stateMutability: \"view\",\n type: \"function\"\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"from\",\n type: \"address\"\n },\n {\n internalType: \"address\",\n name: \"to\",\n type: \"address\"\n },\n {\n internalType: \"uint256\",\n name: \"id\",\n type: \"uint256\"\n },\n {\n internalType: \"uint256\",\n name: \"amount\",\n type: \"uint256\"\n },\n {\n internalType: \"bytes\",\n name: \"data\",\n type: \"bytes\"\n }\n ],\n name: \"safeTransferFrom\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\"\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"from\",\n type: \"address\"\n },\n {\n internalType: \"address\",\n name: \"to\",\n type: \"address\"\n },\n {\n internalType: \"uint256[]\",\n name: \"ids\",\n type: \"uint256[]\"\n },\n {\n internalType: \"uint256[]\",\n name: \"amounts\",\n type: \"uint256[]\"\n },\n {\n internalType: \"bytes\",\n name: \"data\",\n type: \"bytes\"\n }\n ],\n name: \"safeBatchTransferFrom\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\"\n }\n], fo = {\n ERC1155ABI: lo\n}, ho = [\n {\n anonymous: !1,\n inputs: [\n {\n indexed: !0,\n internalType: \"address\",\n name: \"account\",\n type: \"address\"\n },\n {\n indexed: !0,\n internalType: \"address\",\n name: \"sender\",\n type: \"address\"\n }\n ],\n name: \"AdminApproved\",\n type: \"event\"\n },\n {\n anonymous: !1,\n inputs: [\n {\n indexed: !0,\n internalType: \"address\",\n name: \"account\",\n type: \"address\"\n },\n {\n indexed: !0,\n internalType: \"address\",\n name: \"sender\",\n type: \"address\"\n }\n ],\n name: \"AdminRevoked\",\n type: \"event\"\n },\n {\n anonymous: !1,\n inputs: [\n {\n indexed: !0,\n internalType: \"address\",\n name: \"account\",\n type: \"address\"\n },\n {\n indexed: !0,\n internalType: \"address\",\n name: \"operator\",\n type: \"address\"\n },\n {\n indexed: !1,\n internalType: \"bool\",\n name: \"approved\",\n type: \"bool\"\n }\n ],\n name: \"ApprovalForAll\",\n type: \"event\"\n },\n {\n anonymous: !1,\n inputs: [\n {\n indexed: !1,\n internalType: \"address\",\n name: \"extension\",\n type: \"address\"\n }\n ],\n name: \"ApproveTransferUpdated\",\n type: \"event\"\n },\n {\n anonymous: !1,\n inputs: [\n {\n indexed: !1,\n internalType: \"address payable[]\",\n name: \"receivers\",\n type: \"address[]\"\n },\n {\n indexed: !1,\n internalType: \"uint256[]\",\n name: \"basisPoints\",\n type: \"uint256[]\"\n }\n ],\n name: \"DefaultRoyaltiesUpdated\",\n type: \"event\"\n },\n {\n anonymous: !1,\n inputs: [\n {\n indexed: !0,\n internalType: \"address\",\n name: \"extension\",\n type: \"address\"\n },\n {\n indexed: !1,\n internalType: \"bool\",\n name: \"enabled\",\n type: \"bool\"\n }\n ],\n name: \"ExtensionApproveTransferUpdated\",\n type: \"event\"\n },\n {\n anonymous: !1,\n inputs: [\n {\n indexed: !0,\n internalType: \"address\",\n name: \"extension\",\n type: \"address\"\n },\n {\n indexed: !0,\n internalType: \"address\",\n name: \"sender\",\n type: \"address\"\n }\n ],\n name: \"ExtensionBlacklisted\",\n type: \"event\"\n },\n {\n anonymous: !1,\n inputs: [\n {\n indexed: !0,\n internalType: \"address\",\n name: \"extension\",\n type: \"address\"\n },\n {\n indexed: !0,\n internalType: \"address\",\n name: \"sender\",\n type: \"address\"\n }\n ],\n name: \"ExtensionRegistered\",\n type: \"event\"\n },\n {\n anonymous: !1,\n inputs: [\n {\n indexed: !0,\n internalType: \"address\",\n name: \"extension\",\n type: \"address\"\n },\n {\n indexed: !1,\n internalType: \"address payable[]\",\n name: \"receivers\",\n type: \"address[]\"\n },\n {\n indexed: !1,\n internalType: \"uint256[]\",\n name: \"basisPoints\",\n type: \"uint256[]\"\n }\n ],\n name: \"ExtensionRoyaltiesUpdated\",\n type: \"event\"\n },\n {\n anonymous: !1,\n inputs: [\n {\n indexed: !0,\n internalType: \"address\",\n name: \"extension\",\n type: \"address\"\n },\n {\n indexed: !0,\n internalType: \"address\",\n name: \"sender\",\n type: \"address\"\n }\n ],\n name: \"ExtensionUnregistered\",\n type: \"event\"\n },\n {\n anonymous: !1,\n inputs: [\n {\n indexed: !1,\n internalType: \"uint8\",\n name: \"version\",\n type: \"uint8\"\n }\n ],\n name: \"Initialized\",\n type: \"event\"\n },\n {\n anonymous: !1,\n inputs: [\n {\n indexed: !0,\n internalType: \"address\",\n name: \"extension\",\n type: \"address\"\n },\n {\n indexed: !0,\n internalType: \"address\",\n name: \"permissions\",\n type: \"address\"\n },\n {\n indexed: !0,\n internalType: \"address\",\n name: \"sender\",\n type: \"address\"\n }\n ],\n name: \"MintPermissionsUpdated\",\n type: \"event\"\n },\n {\n anonymous: !1,\n inputs: [\n {\n indexed: !0,\n internalType: \"address\",\n name: \"previousOwner\",\n type: \"address\"\n },\n {\n indexed: !0,\n internalType: \"address\",\n name: \"newOwner\",\n type: \"address\"\n }\n ],\n name: \"OwnershipTransferred\",\n type: \"event\"\n },\n {\n anonymous: !1,\n inputs: [\n {\n indexed: !0,\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\"\n },\n {\n indexed: !1,\n internalType: \"address payable[]\",\n name: \"receivers\",\n type: \"address[]\"\n },\n {\n indexed: !1,\n internalType: \"uint256[]\",\n name: \"basisPoints\",\n type: \"uint256[]\"\n }\n ],\n name: \"RoyaltiesUpdated\",\n type: \"event\"\n },\n {\n anonymous: !1,\n inputs: [\n {\n indexed: !0,\n internalType: \"address\",\n name: \"operator\",\n type: \"address\"\n },\n {\n indexed: !0,\n internalType: \"address\",\n name: \"from\",\n type: \"address\"\n },\n {\n indexed: !0,\n internalType: \"address\",\n name: \"to\",\n type: \"address\"\n },\n {\n indexed: !1,\n internalType: \"uint256[]\",\n name: \"ids\",\n type: \"uint256[]\"\n },\n {\n indexed: !1,\n internalType: \"uint256[]\",\n name: \"values\",\n type: \"uint256[]\"\n }\n ],\n name: \"TransferBatch\",\n type: \"event\"\n },\n {\n anonymous: !1,\n inputs: [\n {\n indexed: !0,\n internalType: \"address\",\n name: \"operator\",\n type: \"address\"\n },\n {\n indexed: !0,\n internalType: \"address\",\n name: \"from\",\n type: \"address\"\n },\n {\n indexed: !0,\n internalType: \"address\",\n name: \"to\",\n type: \"address\"\n },\n {\n indexed: !1,\n internalType: \"uint256\",\n name: \"id\",\n type: \"uint256\"\n },\n {\n indexed: !1,\n internalType: \"uint256\",\n name: \"value\",\n type: \"uint256\"\n }\n ],\n name: \"TransferSingle\",\n type: \"event\"\n },\n {\n anonymous: !1,\n inputs: [\n {\n indexed: !1,\n internalType: \"string\",\n name: \"value\",\n type: \"string\"\n },\n {\n indexed: !0,\n internalType: \"uint256\",\n name: \"id\",\n type: \"uint256\"\n }\n ],\n name: \"URI\",\n type: \"event\"\n },\n {\n inputs: [],\n name: \"VERSION\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\"\n }\n ],\n stateMutability: \"view\",\n type: \"function\"\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"admin\",\n type: \"address\"\n }\n ],\n name: \"approveAdmin\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\"\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"account\",\n type: \"address\"\n },\n {\n internalType: \"uint256\",\n name: \"id\",\n type: \"uint256\"\n }\n ],\n name: \"balanceOf\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\"\n }\n ],\n stateMutability: \"view\",\n type: \"function\"\n },\n {\n inputs: [\n {\n internalType: \"address[]\",\n name: \"accounts\",\n type: \"address[]\"\n },\n {\n internalType: \"uint256[]\",\n name: \"ids\",\n type: \"uint256[]\"\n }\n ],\n name: \"balanceOfBatch\",\n outputs: [\n {\n internalType: \"uint256[]\",\n name: \"\",\n type: \"uint256[]\"\n }\n ],\n stateMutability: \"view\",\n type: \"function\"\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"extension\",\n type: \"address\"\n }\n ],\n name: \"blacklistExtension\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\"\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"account\",\n type: \"address\"\n },\n {\n internalType: \"uint256[]\",\n name: \"tokenIds\",\n type: \"uint256[]\"\n },\n {\n internalType: \"uint256[]\",\n name: \"amounts\",\n type: \"uint256[]\"\n }\n ],\n name: \"burn\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\"\n },\n {\n inputs: [],\n name: \"getAdmins\",\n outputs: [\n {\n internalType: \"address[]\",\n name: \"admins\",\n type: \"address[]\"\n }\n ],\n stateMutability: \"view\",\n type: \"function\"\n },\n {\n inputs: [],\n name: \"getApproveTransfer\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\"\n }\n ],\n stateMutability: \"view\",\n type: \"function\"\n },\n {\n inputs: [],\n name: \"getExtensions\",\n outputs: [\n {\n internalType: \"address[]\",\n name: \"extensions\",\n type: \"address[]\"\n }\n ],\n stateMutability: \"view\",\n type: \"function\"\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\"\n }\n ],\n name: \"getFeeBps\",\n outputs: [\n {\n internalType: \"uint256[]\",\n name: \"\",\n type: \"uint256[]\"\n }\n ],\n stateMutability: \"view\",\n type: \"function\"\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\"\n }\n ],\n name: \"getFeeRecipients\",\n outputs: [\n {\n internalType: \"address payable[]\",\n name: \"\",\n type: \"address[]\"\n }\n ],\n stateMutability: \"view\",\n type: \"function\"\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\"\n }\n ],\n name: \"getFees\",\n outputs: [\n {\n internalType: \"address payable[]\",\n name: \"\",\n type: \"address[]\"\n },\n {\n internalType: \"uint256[]\",\n name: \"\",\n type: \"uint256[]\"\n }\n ],\n stateMutability: \"view\",\n type: \"function\"\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\"\n }\n ],\n name: \"getRoyalties\",\n outputs: [\n {\n internalType: \"address payable[]\",\n name: \"\",\n type: \"address[]\"\n },\n {\n internalType: \"uint256[]\",\n name: \"\",\n type: \"uint256[]\"\n }\n ],\n stateMutability: \"view\",\n type: \"function\"\n },\n {\n inputs: [\n {\n internalType: \"string\",\n name: \"_name\",\n type: \"string\"\n },\n {\n internalType: \"string\",\n name: \"_symbol\",\n type: \"string\"\n }\n ],\n name: \"initialize\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\"\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"admin\",\n type: \"address\"\n }\n ],\n name: \"isAdmin\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\"\n }\n ],\n stateMutability: \"view\",\n type: \"function\"\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"account\",\n type: \"address\"\n },\n {\n internalType: \"address\",\n name: \"operator\",\n type: \"address\"\n }\n ],\n name: \"isApprovedForAll\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\"\n }\n ],\n stateMutability: \"view\",\n type: \"function\"\n },\n {\n inputs: [\n {\n internalType: \"address[]\",\n name: \"to\",\n type: \"address[]\"\n },\n {\n internalType: \"uint256[]\",\n name: \"tokenIds\",\n type: \"uint256[]\"\n },\n {\n internalType: \"uint256[]\",\n name: \"amounts\",\n type: \"uint256[]\"\n }\n ],\n name: \"mintBaseExisting\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\"\n },\n {\n inputs: [\n {\n internalType: \"address[]\",\n name: \"to\",\n type: \"address[]\"\n },\n {\n internalType: \"uint256[]\",\n name: \"amounts\",\n type: \"uint256[]\"\n },\n {\n internalType: \"string[]\",\n name: \"uris\",\n type: \"string[]\"\n }\n ],\n name: \"mintBaseNew\",\n outputs: [\n {\n internalType: \"uint256[]\",\n name: \"\",\n type: \"uint256[]\"\n }\n ],\n stateMutability: \"nonpayable\",\n type: \"function\"\n },\n {\n inputs: [\n {\n internalType: \"address[]\",\n name: \"to\",\n type: \"address[]\"\n },\n {\n internalType: \"uint256[]\",\n name: \"tokenIds\",\n type: \"uint256[]\"\n },\n {\n internalType: \"uint256[]\",\n name: \"amounts\",\n type: \"uint256[]\"\n }\n ],\n name: \"mintExtensionExisting\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\"\n },\n {\n inputs: [\n {\n internalType: \"address[]\",\n name: \"to\",\n type: \"address[]\"\n },\n {\n internalType: \"uint256[]\",\n name: \"amounts\",\n type: \"uint256[]\"\n },\n {\n internalType: \"string[]\",\n name: \"uris\",\n type: \"string[]\"\n }\n ],\n name: \"mintExtensionNew\",\n outputs: [\n {\n internalType: \"uint256[]\",\n name: \"tokenIds\",\n type: \"uint256[]\"\n }\n ],\n stateMutability: \"nonpayable\",\n type: \"function\"\n },\n {\n inputs: [],\n name: \"name\",\n outputs: [\n {\n internalType: \"string\",\n name: \"\",\n type: \"string\"\n }\n ],\n stateMutability: \"view\",\n type: \"function\"\n },\n {\n inputs: [],\n name: \"owner\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\"\n }\n ],\n stateMutability: \"view\",\n type: \"function\"\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"extension\",\n type: \"address\"\n },\n {\n internalType: \"string\",\n name: \"baseURI\",\n type: \"string\"\n }\n ],\n name: \"registerExtension\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\"\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"extension\",\n type: \"address\"\n },\n {\n internalType: \"string\",\n name: \"baseURI\",\n type: \"string\"\n },\n {\n internalType: \"bool\",\n name: \"baseURIIdentical\",\n type: \"bool\"\n }\n ],\n name: \"registerExtension\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\"\n },\n {\n inputs: [],\n name: \"renounceOwnership\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\"\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"admin\",\n type: \"address\"\n }\n ],\n name: \"revokeAdmin\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\"\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\"\n },\n {\n internalType: \"uint256\",\n name: \"value\",\n type: \"uint256\"\n }\n ],\n name: \"royaltyInfo\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\"\n },\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\"\n }\n ],\n stateMutability: \"view\",\n type: \"function\"\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"from\",\n type: \"address\"\n },\n {\n internalType: \"address\",\n name: \"to\",\n type: \"address\"\n },\n {\n internalType: \"uint256[]\",\n name: \"ids\",\n type: \"uint256[]\"\n },\n {\n internalType: \"uint256[]\",\n name: \"amounts\",\n type: \"uint256[]\"\n },\n {\n internalType: \"bytes\",\n name: \"data\",\n type: \"bytes\"\n }\n ],\n name: \"safeBatchTransferFrom\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\"\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"from\",\n type: \"address\"\n },\n {\n internalType: \"address\",\n name: \"to\",\n type: \"address\"\n },\n {\n internalType: \"uint256\",\n name: \"id\",\n type: \"uint256\"\n },\n {\n internalType: \"uint256\",\n name: \"amount\",\n type: \"uint256\"\n },\n {\n internalType: \"bytes\",\n name: \"data\",\n type: \"bytes\"\n }\n ],\n name: \"safeTransferFrom\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\"\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"operator\",\n type: \"address\"\n },\n {\n internalType: \"bool\",\n name: \"approved\",\n type: \"bool\"\n }\n ],\n name: \"setApprovalForAll\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\"\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"extension\",\n type: \"address\"\n }\n ],\n name: \"setApproveTransfer\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\"\n },\n {\n inputs: [\n {\n internalType: \"bool\",\n name: \"enabled\",\n type: \"bool\"\n }\n ],\n name: \"setApproveTransferExtension\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\"\n },\n {\n inputs: [\n {\n internalType: \"string\",\n name: \"uri_\",\n type: \"string\"\n }\n ],\n name: \"setBaseTokenURI\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\"\n },\n {\n inputs: [\n {\n internalType: \"string\",\n name: \"uri_\",\n type: \"string\"\n }\n ],\n name: \"setBaseTokenURIExtension\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\"\n },\n {\n inputs: [\n {\n internalType: \"string\",\n name: \"uri_\",\n type: \"string\"\n },\n {\n internalType: \"bool\",\n name: \"identical\",\n type: \"bool\"\n }\n ],\n name: \"setBaseTokenURIExtension\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\"\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"extension\",\n type: \"address\"\n },\n {\n internalType: \"address\",\n name: \"permissions\",\n type: \"address\"\n }\n ],\n name: \"setMintPermissions\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\"\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\"\n },\n {\n internalType: \"address payable[]\",\n name: \"receivers\",\n type: \"address[]\"\n },\n {\n internalType: \"uint256[]\",\n name: \"basisPoints\",\n type: \"uint256[]\"\n }\n ],\n name: \"setRoyalties\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\"\n },\n {\n inputs: [\n {\n internalType: \"address payable[]\",\n name: \"receivers\",\n type: \"address[]\"\n },\n {\n internalType: \"uint256[]\",\n name: \"basisPoints\",\n type: \"uint256[]\"\n }\n ],\n name: \"setRoyalties\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\"\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"extension\",\n type: \"address\"\n },\n {\n internalType: \"address payable[]\",\n name: \"receivers\",\n type: \"address[]\"\n },\n {\n internalType: \"uint256[]\",\n name: \"basisPoints\",\n type: \"uint256[]\"\n }\n ],\n name: \"setRoyaltiesExtension\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\"\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\"\n },\n {\n internalType: \"string\",\n name: \"uri_\",\n type: \"string\"\n }\n ],\n name: \"setTokenURI\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\"\n },\n {\n inputs: [\n {\n internalType: \"uint256[]\",\n name: \"tokenIds\",\n type: \"uint256[]\"\n },\n {\n internalType: \"string[]\",\n name: \"uris\",\n type: \"string[]\"\n }\n ],\n name: \"setTokenURI\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\"\n },\n {\n inputs: [\n {\n internalType: \"uint256[]\",\n name: \"tokenIds\",\n type: \"uint256[]\"\n },\n {\n internalType: \"string[]\",\n name: \"uris\",\n type: \"string[]\"\n }\n ],\n name: \"setTokenURIExtension\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\"\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\"\n },\n {\n internalType: \"string\",\n name: \"uri_\",\n type: \"string\"\n }\n ],\n name: \"setTokenURIExtension\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\"\n },\n {\n inputs: [\n {\n internalType: \"string\",\n name: \"prefix\",\n type: \"string\"\n }\n ],\n name: \"setTokenURIPrefix\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\"\n },\n {\n inputs: [\n {\n internalType: \"string\",\n name: \"prefix\",\n type: \"string\"\n }\n ],\n name: \"setTokenURIPrefixExtension\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\"\n },\n {\n inputs: [\n {\n internalType: \"bytes4\",\n name: \"interfaceId\",\n type: \"bytes4\"\n }\n ],\n name: \"supportsInterface\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\"\n }\n ],\n stateMutability: \"view\",\n type: \"function\"\n },\n {\n inputs: [],\n name: \"symbol\",\n outputs: [\n {\n internalType: \"string\",\n name: \"\",\n type: \"string\"\n }\n ],\n stateMutability: \"view\",\n type: \"function\"\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\"\n }\n ],\n name: \"tokenExtension\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\"\n }\n ],\n stateMutability: \"view\",\n type: \"function\"\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\"\n }\n ],\n name: \"totalSupply\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\"\n }\n ],\n stateMutability: \"view\",\n type: \"function\"\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"newOwner\",\n type: \"address\"\n }\n ],\n name: \"transferOwnership\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\"\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"extension\",\n type: \"address\"\n }\n ],\n name: \"unregisterExtension\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\"\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\"\n }\n ],\n name: \"uri\",\n outputs: [\n {\n internalType: \"string\",\n name: \"\",\n type: \"string\"\n }\n ],\n stateMutability: \"view\",\n type: \"function\"\n }\n], po = {\n ERC1155CreatorABI: ho\n}, co = [\n {\n anonymous: !1,\n inputs: [\n {\n indexed: !1,\n internalType: \"address\",\n name: \"caller\",\n type: \"address\"\n },\n {\n indexed: !1,\n internalType: \"address\",\n name: \"creator\",\n type: \"address\"\n },\n {\n indexed: !1,\n internalType: \"uint256\",\n name: \"series\",\n type: \"uint256\"\n },\n {\n indexed: !1,\n internalType: \"uint256\",\n name: \"maxSupply\",\n type: \"uint256\"\n }\n ],\n name: \"SeriesCreated\",\n type: \"event\"\n },\n {\n inputs: [\n {\n internalType: \"bytes4\",\n name: \"interfaceId\",\n type: \"bytes4\"\n }\n ],\n name: \"supportsInterface\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\"\n }\n ],\n stateMutability: \"view\",\n type: \"function\"\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"creator\",\n type: \"address\"\n },\n {\n internalType: \"uint256\",\n name: \"series\",\n type: \"uint256\"\n }\n ],\n name: \"totalSupply\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\"\n }\n ],\n stateMutability: \"view\",\n type: \"function\"\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"creator\",\n type: \"address\"\n },\n {\n internalType: \"uint256\",\n name: \"series\",\n type: \"uint256\"\n }\n ],\n name: \"maxSupply\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\"\n }\n ],\n stateMutability: \"view\",\n type: \"function\"\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"creator\",\n type: \"address\"\n },\n {\n internalType: \"uint256\",\n name: \"maxSupply_\",\n type: \"uint256\"\n },\n {\n internalType: \"string\",\n name: \"prefix\",\n type: \"string\"\n }\n ],\n name: \"createSeries\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\"\n }\n ],\n stateMutability: \"nonpayable\",\n type: \"function\"\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"creator\",\n type: \"address\"\n }\n ],\n name: \"latestSeries\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\"\n }\n ],\n stateMutability: \"view\",\n type: \"function\"\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"creator\",\n type: \"address\"\n },\n {\n internalType: \"uint256\",\n name: \"series\",\n type: \"uint256\"\n },\n {\n internalType: \"string\",\n name: \"prefix\",\n type: \"string\"\n }\n ],\n name: \"setTokenURIPrefix\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\"\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"creator\",\n type: \"address\"\n },\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\"\n }\n ],\n name: \"tokenURI\",\n outputs: [\n {\n internalType: \"string\",\n name: \"\",\n type: \"string\"\n }\n ],\n stateMutability: \"view\",\n type: \"function\"\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"creator\",\n type: \"address\"\n },\n {\n internalType: \"uint256\",\n name: \"series\",\n type: \"uint256\"\n },\n {\n internalType: \"address[]\",\n name: \"recipients\",\n type: \"address[]\"\n }\n ],\n name: \"mint\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\"\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"creator\",\n type: \"address\"\n },\n {\n internalType: \"uint256\",\n name: \"series\",\n type: \"uint256\"\n },\n {\n internalType: \"address\",\n name: \"recipient\",\n type: \"address\"\n },\n {\n internalType: \"uint16\",\n name: \"count\",\n type: \"uint16\"\n }\n ],\n name: \"mint\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\"\n }\n], mo = {\n ManifoldERC721EditionABI: co\n};\n(function(n) {\n Object.defineProperty(n, \"__esModule\", { value: !0 }), n.ERC1155CreatorABI = n.ERC721CreatorABI = n.ERC1155ABI = n.ManifoldERC721EditionABI = n.ERC721ABI = n.ERC20ABI = void 0;\n var e = io;\n Object.defineProperty(n, \"ERC20ABI\", { enumerable: !0, get: function() {\n return e.ERC20ABI;\n } });\n var t = ao;\n Object.defineProperty(n, \"ERC721ABI\", { enumerable: !0, get: function() {\n return t.ERC721ABI;\n } });\n var r = uo;\n Object.defineProperty(n, \"ERC721CreatorABI\", { enumerable: !0, get: function() {\n return r.ERC721CreatorABI;\n } });\n var s = fo;\n Object.defineProperty(n, \"ERC1155ABI\", { enumerable: !0, get: function() {\n return s.ERC1155ABI;\n } });\n var i = po;\n Object.defineProperty(n, \"ERC1155CreatorABI\", { enumerable: !0, get: function() {\n return i.ERC1155CreatorABI;\n } });\n var o = mo;\n Object.defineProperty(n, \"ManifoldERC721EditionABI\", { enumerable: !0, get: function() {\n return o.ManifoldERC721EditionABI;\n } });\n})(Ni);\nclass yo extends Error {\n constructor({ message: e, networkId: t }) {\n super(e), this.name = \"WrongNetworkError\", this.networkId = t;\n }\n}\nconst qn = {\n APE: {\n coinGeckoId: \"apecoin\",\n symbol: \"APE\",\n erc20: {\n [I.Mainnet]: {\n address: \"0x4d224452801aced8b2f0aebe155379bb5d594381\",\n decimals: 18\n },\n [I.Sepolia]: {\n address: void 0,\n decimals: 18\n },\n [I.Optimism]: {\n address: void 0,\n decimals: 18\n },\n [I.Base]: {\n address: void 0,\n decimals: 18\n },\n [I.Matic]: {\n address: void 0,\n decimals: 18\n },\n [I.Shape]: {\n address: void 0,\n decimals: 18\n },\n [I.ApeChain]: {\n address: \"0x0000000000000000000000000000000000000000\",\n decimals: 18\n }\n },\n name: \"ApeCoin\"\n },\n ASH: {\n coinGeckoId: \"ash\",\n symbol: \"ASH\",\n erc20: {\n [I.Mainnet]: {\n address: \"0x64d91f12ece7362f91a6f8e7940cd55f05060b92\",\n decimals: 18\n },\n [I.Sepolia]: {\n address: void 0,\n decimals: 18\n },\n [I.Optimism]: {\n address: void 0,\n decimals: 18\n },\n [I.Base]: {\n address: void 0,\n decimals: 18\n },\n [I.Matic]: {\n address: void 0,\n decimals: 18\n },\n [I.Shape]: {\n address: void 0,\n decimals: 18\n },\n [I.ApeChain]: {\n address: void 0,\n decimals: 18\n }\n },\n name: \"Burn\"\n },\n DAI: {\n coinGeckoId: \"dai\",\n symbol: \"DAI\",\n erc20: {\n [I.Mainnet]: {\n address: \"0x6b175474e89094c44da98b954eedeac495271d0f\",\n decimals: 18\n },\n [I.Sepolia]: {\n address: void 0,\n decimals: 18\n },\n [I.Optimism]: {\n address: \"0xda10009cbd5d07dd0cecc66161fc93d7c9000da1\",\n decimals: 18\n },\n [I.Base]: {\n address: \"0x50c5725949a6f0c72e6c4a641f24049a917db0cb\",\n decimals: 18\n },\n [I.Matic]: {\n address: void 0,\n decimals: 18\n },\n [I.Shape]: {\n address: void 0,\n decimals: 18\n },\n [I.ApeChain]: {\n address: void 0,\n decimals: 18\n }\n },\n name: \"Dai Stablecoin\"\n },\n ETH: {\n coinGeckoId: \"ethereum\",\n symbol: \"ETH\",\n erc20: {\n [I.Mainnet]: {\n address: sn,\n decimals: 18\n },\n [I.Sepolia]: {\n address: sn,\n decimals: 18\n },\n [I.Optimism]: {\n address: sn,\n decimals: 18\n },\n [I.Base]: {\n address: sn,\n decimals: 18\n },\n [I.Matic]: {\n address: void 0,\n decimals: 18\n },\n [I.Shape]: {\n address: sn,\n decimals: 18\n },\n [I.ApeChain]: {\n address: void 0,\n decimals: 18\n }\n },\n name: \"Ether\"\n },\n LOOKS: {\n coinGeckoId: \"looksrare\",\n symbol: \"LOOKS\",\n erc20: {\n [I.Mainnet]: {\n address: \"0xf4d2888d29d722226fafa5d9b24f9164c092421e\",\n decimals: 18\n },\n [I.Sepolia]: {\n address: void 0,\n decimals: 18\n },\n [I.Optimism]: {\n address: void 0,\n decimals: 18\n },\n [I.Base]: {\n address: void 0,\n decimals: 18\n },\n [I.Matic]: {\n address: void 0,\n decimals: 18\n },\n [I.Shape]: {\n address: void 0,\n decimals: 18\n },\n [I.ApeChain]: {\n address: void 0,\n decimals: 18\n }\n },\n name: \"LooksRare Token\"\n },\n PEPE: {\n coinGeckoId: \"pepe\",\n symbol: \"PEPE\",\n erc20: {\n [I.Mainnet]: {\n address: \"0x6982508145454ce325ddbe47a25d4ec3d2311933\",\n decimals: 18\n },\n [I.Sepolia]: {\n address: void 0,\n decimals: 18\n },\n [I.Optimism]: {\n address: void 0,\n decimals: 18\n },\n [I.Base]: {\n address: void 0,\n decimals: 18\n },\n [I.Matic]: {\n address: void 0,\n decimals: 18\n },\n [I.Shape]: {\n address: void 0,\n decimals: 18\n },\n [I.ApeChain]: {\n address: void 0,\n decimals: 18\n }\n },\n name: \"PEPE\"\n },\n RARE: {\n coinGeckoId: \"superrare\",\n symbol: \"RARE\",\n erc20: {\n [I.Mainnet]: {\n address: \"0xba5bde662c17e2adff1075610382b9b691296350\",\n decimals: 18\n },\n [I.Sepolia]: {\n address: void 0,\n decimals: 18\n },\n [I.Optimism]: {\n address: void 0,\n decimals: 18\n },\n [I.Base]: {\n address: void 0,\n decimals: 18\n },\n [I.Matic]: {\n address: void 0,\n decimals: 18\n },\n [I.Shape]: {\n address: void 0,\n decimals: 18\n },\n [I.ApeChain]: {\n address: void 0,\n decimals: 18\n }\n },\n name: \"SuperRare\"\n },\n TURBO: {\n coinGeckoId: \"turbo\",\n symbol: \"TURBO\",\n erc20: {\n [I.Mainnet]: {\n address: \"0x4d224452801aced8b2f0aebe155379bb5d594381\",\n decimals: 18\n },\n [I.Sepolia]: {\n address: void 0,\n decimals: 18\n },\n [I.Optimism]: {\n address: void 0,\n decimals: 18\n },\n [I.Base]: {\n address: void 0,\n decimals: 18\n },\n [I.Matic]: {\n address: void 0,\n decimals: 18\n },\n [I.Shape]: {\n address: void 0,\n decimals: 18\n },\n [I.ApeChain]: {\n address: void 0,\n decimals: 18\n }\n },\n name: \"Turbo\"\n },\n USDC: {\n coinGeckoId: \"usd-coin\",\n symbol: \"USDC\",\n erc20: {\n [I.Mainnet]: {\n address: \"0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48\",\n decimals: 6\n },\n [I.Sepolia]: {\n address: void 0,\n decimals: 6\n },\n [I.Matic]: {\n address: \"0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359\",\n decimals: 6\n },\n [I.Optimism]: {\n address: \"0x0b2c639c533813f4aa9d7837caf62653d097ff85\",\n decimals: 6\n },\n [I.Base]: {\n address: \"0x833589fcd6edb6e08f4c7c32d4f71b54bda02913\",\n decimals: 6\n },\n [I.Shape]: {\n address: \"0xdb7dd8b00edc5778fe00b2408bf35c7c054f8bbe\",\n decimals: 6\n },\n [I.ApeChain]: {\n address: void 0,\n decimals: 6\n }\n },\n name: \"USDC\"\n },\n USDT: {\n coinGeckoId: \"tether\",\n symbol: \"USDT\",\n erc20: {\n [I.Mainnet]: {\n address: \"0xdac17f958d2ee523a2206206994597c13d831ec7\",\n decimals: 6\n },\n [I.Sepolia]: {\n address: void 0,\n decimals: 6\n },\n [I.Matic]: {\n address: void 0,\n decimals: 6\n },\n [I.Optimism]: {\n address: \"0x94b008aa00579c1307b0ef2c499ad98a8ce58e58\",\n decimals: 6\n },\n [I.Base]: {\n address: void 0,\n decimals: 6\n },\n [I.Shape]: {\n address: void 0,\n decimals: 6\n },\n [I.ApeChain]: {\n address: void 0,\n decimals: 6\n }\n },\n name: \"Tether USD\"\n },\n WETH: {\n coinGeckoId: \"weth\",\n symbol: \"WETH\",\n erc20: {\n [I.Mainnet]: {\n address: \"0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2\",\n decimals: 18\n },\n [I.Sepolia]: {\n address: void 0,\n decimals: 18\n },\n [I.Matic]: {\n address: \"0x7ceb23fd6bc0add59e62ac25578270cff1b9f619\",\n decimals: 18\n },\n [I.Optimism]: {\n address: \"0x4200000000000000000000000000000000000006\",\n decimals: 18\n },\n [I.Base]: {\n address: \"0x4200000000000000000000000000000000000006\",\n decimals: 18\n },\n [I.Shape]: {\n address: \"0x4200000000000000000000000000000000000006\",\n decimals: 18\n },\n [I.ApeChain]: {\n address: void 0,\n decimals: 18\n }\n },\n name: \"Wrapped Ether\"\n },\n POL: {\n coinGeckoId: \"polygon\",\n symbol: \"POL\",\n erc20: {\n [I.Matic]: {\n address: \"0x0000000000000000000000000000000000000000\",\n decimals: 18\n },\n [I.Mainnet]: {\n address: \"0x455e53cbb86018ac2b8092fdcd39d8444affc3f6\",\n decimals: 18\n },\n [I.Sepolia]: {\n address: void 0,\n decimals: 18\n },\n [I.Optimism]: {\n address: void 0,\n decimals: 18\n },\n [I.Base]: {\n address: void 0,\n decimals: 18\n },\n [I.Shape]: {\n address: void 0,\n decimals: 18\n },\n [I.ApeChain]: {\n address: void 0,\n decimals: 18\n }\n },\n name: \"Polygon Token\"\n }\n};\nfunction Ri(n, e) {\n return new nn(n).toFixed(e, nn.ROUND_UP);\n}\nfunction go(n, e) {\n return la(Ri(n, e));\n}\nfunction wo(n) {\n switch (n) {\n case I.Mainnet:\n return \"ETH\";\n case I.Optimism:\n return \"OETH\";\n case I.Base:\n return \"BETH\";\n case I.Matic:\n return \"POL\";\n case I.ApeChain:\n return \"APE\";\n case I.Shape:\n return \"SETH\";\n default:\n return \"ETH\";\n }\n}\nfunction Ii(n) {\n return n in qn;\n}\nconst Si = (n) => {\n if (!Ii(n))\n throw new Error(`Currency ${n} not supported`);\n return qn[n];\n}, vo = (n) => Oi(n) ? Object.entries(qn).filter(([, e]) => e.erc20[n].address).map(([e]) => e) : [];\nasync function ki(n, e, t) {\n var o, d;\n for (const [c, p] of Object.entries(qn))\n if (((d = (o = p.erc20[n]) == null ? void 0 : o.address) == null ? void 0 : d.toLowerCase()) === e.toLowerCase())\n return {\n symbol: c,\n decimals: p.erc20[n].decimals\n };\n if (!t)\n throw new Error(\"Provider is required for custom tokens\");\n if (n !== Number(t._network.chainId))\n throw new yo({\n message: \"Please switch to the correct network\",\n networkId: n\n });\n const r = new sa(e, Ni.ERC20ABI, t), [s, i] = await Promise.all([r.decimals(), r.symbol()]);\n return {\n symbol: i,\n decimals: s\n };\n}\nasync function bo(n, e, t, r) {\n if (n === \"0\")\n return \"Free\";\n if (e && t) {\n let s;\n if (is(e)) {\n if (!r)\n throw new Error(\"Provider is required\");\n return s = await ki(t, e, r), `${n ? qr(n, s.decimals).toString() : \"\"} ${s.symbol}`;\n } else\n return s = Si(e), `${n ? qr(n, s.erc20[t].decimals).toString() : \"\"} ${e}`;\n }\n return \"\";\n}\nconst To = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n commifiedRoundedNumberString: go,\n ethCurrencyNameForNetwork: wo,\n formatCurrency: bo,\n getCurrenciesOnNetwork: vo,\n getERC20Metadata: ki,\n getSupportedCurrencyInfo: Si,\n isSupportedCurrency: Ii,\n numberStringRound: Ri\n}, Symbol.toStringTag, { value: \"Module\" }));\nexport {\n go as a,\n vo as b,\n To as c,\n ki as d,\n wo as e,\n bo as f,\n Si as g,\n Ii as i,\n Ri as n\n};\n","import { N as n, i as S, g as c, S as $, a as T } from \"./network-BRHI3AkZ.js\";\nconst w = \"https://manifold.gallery\";\nfunction u(e) {\n const r = S(e) ? \"https://testnets.opensea.io\" : \"https://opensea.io\";\n let t = c(e);\n return t === \"mainnet\" && (t = \"ethereum\"), e === 137 && (t = \"matic\"), e === 33139 && (t = \"ape_chain\"), `${r}/assets/${t}`;\n}\nfunction b(e, r) {\n return `${u(e)}/${r}`;\n}\nfunction O(e, r, t) {\n return `${u(e)}/${r}/${t}`;\n}\nfunction C(e, r) {\n if (e !== n.Mainnet)\n throw new Error(\"Unsupported Network passed to getLooksRareCollectionURL\");\n return `https://looksrare.org/collections/${r}`;\n}\nfunction x(e, r, t) {\n if (e !== n.Mainnet)\n throw new Error(\"Unsupported Network passed to getLooksRareTokenURL\");\n return `https://looksrare.org/collections/${r}/${t}`;\n}\nfunction p(e) {\n switch (e) {\n case n.Optimism:\n return \"https://optimistic.etherscan.io\";\n case n.Sepolia:\n return \"https://sepolia.etherscan.io\";\n case n.Base:\n return \"https://basescan.org\";\n case n.Mainnet:\n return \"https://etherscan.io\";\n case n.Matic:\n return \"https://polygonscan.com\";\n case n.Shape:\n return \"https://shapescan.xyz/\";\n case n.ApeChain:\n return \"https://apescan.io/\";\n default:\n throw new Error(\"Unsupported Network passed to getEtherscanBaseURL\");\n }\n}\nfunction A(e, r, t) {\n return `${p(e)}/nft/${r}/${t}`;\n}\nfunction _(e, r) {\n return `${p(e)}/tx/${r}`;\n}\nfunction f(e, r) {\n return `${p(e)}/address/${r}`;\n}\nfunction P(e, r) {\n return f(e, r);\n}\nfunction v(e, r) {\n return f(e, r);\n}\nfunction d(e) {\n return e === 1 ? \"https://gallery.manifold.xyz\" : e === 137 ? \"https://gallery.manifold.xyz/matic\" : `https://gallery.manifold.xyz/${c(e)}`;\n}\nfunction B(e, r, t) {\n if (![n.Mainnet, n.Matic, n.Base, n.ApeChain].includes(e))\n throw new Error(\"Unsupported Network passed to getMagicEdenTokenURL\");\n let a = c(e);\n return a === \"mainnet\" && (a = \"ethereum\"), t ? `https://magiceden.io/item-details/${a}/${r}/${t}` : `https://magiceden.io/collections/${a}/${r}`;\n}\nconst W = {\n [n.Mainnet]: \"eth\",\n [n.Optimism]: \"oeth\",\n [n.Matic]: \"pol\",\n [n.Base]: \"base\",\n [n.Sepolia]: \"sep\",\n [n.Shape]: \"shape\",\n [n.ApeChain]: \"ape\"\n}, L = {\n [n.Mainnet]: \"eth\",\n [n.Optimism]: \"op\",\n [n.Matic]: \"pol\",\n [n.Base]: \"base\",\n [n.Shape]: \"shape\",\n [n.Sepolia]: \"sep\"\n};\nfunction k(e, r) {\n if (!T(e)) {\n const t = r === \"contract\" ? \"getManifoldGalleryContractURL\" : \"getManifoldGalleryTokenURL\";\n throw new Error(`Unsupported Network passed to ${t}`);\n }\n return `${w}/${W[e]}:`;\n}\nfunction z(e, r, t) {\n return `${k(e, \"token\")}${r}/${t}`;\n}\nfunction D(e, r) {\n return `${k(e, \"contract\")}${r}`;\n}\nfunction F(e) {\n return `${w}/${e}`;\n}\nfunction h(e) {\n if (typeof e == \"number\" && e <= 0)\n throw new Error(\"Invalid workspace identifier provided\");\n if (!e)\n throw new Error(\"Workspace identifier is required\");\n return `https://manifold.xyz/@${e}`;\n}\nfunction G({\n workspaceIdentifier: e,\n contractId: r\n}) {\n return `${h(e)}/contract/${r}`;\n}\nfunction J(e, r) {\n const t = L[e];\n if (!t)\n throw new Error(\"Unsupported Network\");\n return `https://manifold.xyz/${t}/${r}`;\n}\nfunction H(e, r, t) {\n const a = L[e];\n if (!a)\n throw new Error(\"Unsupported Network\");\n return `https://manifold.xyz/${a}/${r}/${t}`;\n}\nfunction q({\n workspaceIdentifier: e,\n contractId: r,\n tokenId: t\n}) {\n return `${h(e)}/contract/${r}/${t}`;\n}\nfunction V(e, r, t) {\n if (!$.includes(e))\n throw new Error(\"Unsupported Network passed to getManifoldMarketplaceTokenURL\");\n return `${d(e)}/${r}/${t}`;\n}\nfunction Y(e, r) {\n if (!$.includes(e))\n throw new Error(\"Unsupported Network passed to getManifoldMarketplaceListingURL\");\n return `${d(e)}/listing?listingId=${r}`;\n}\nfunction I(e, r, t) {\n if (![n.Mainnet, n.Matic, n.Base].includes(e))\n throw new Error(\"Unsupported Network passed to getRaribleTokenURL\");\n return `https://rarible.com/token/${e === 1 ? \"\" : `${c(e)}/`}${r}:${t}`;\n}\nfunction K(e) {\n return e.includes(\"https://www.youtube.com\") || e.includes(\"https://youtu.be\") || e.includes(\"https://youtube.com\") || e.includes(\"https://www.youtube-nocookie.com\");\n}\nconst X = (e, r) => {\n let t = e;\n if (t.includes(\"ipfs://ipfs/\"))\n t = t.replace(\"ipfs://ipfs/\", \"https://ipfs.io/ipfs/\");\n else if (t.includes(\"ipfs://\"))\n t = t.replace(\"ipfs://\", \"https://ipfs.io/ipfs/\");\n else if (t.includes(\"ipfs:\\\\/\\\\/\"))\n t = t.replace(\"ipfs:\\\\/\\\\/\", \"https://ipfs.io/ipfs/\");\n else if (t.includes(\"ar://\"))\n t = t.replace(\"ar://\", \"https://arweave.net/\");\n else if (t.includes(\"ar:\\\\/\\\\/\"))\n t = t.replace(\"ar:\\\\/\\\\/\", \"https://arweave.net/\");\n else if (r && t.includes(\"api.opensea.io/api/v1/metadata/\") && t.includes(\"{id}\")) {\n let a = r.toHexString();\n a = a.replace(\"0x\", \"\"), t = t.replace(\"{id}\", a);\n }\n return t;\n};\nfunction Q(e) {\n e = e.trim();\n try {\n return JSON.parse(e);\n } catch {\n }\n try {\n return JSON.parse(unescape(e));\n } catch {\n }\n try {\n return JSON.parse(decodeURIComponent(e));\n } catch {\n }\n if (e.indexOf(`\n`) !== -1) {\n e = e.replace(/\\n/g, \"\\\\n\");\n try {\n return JSON.parse(e);\n } catch {\n }\n try {\n return JSON.parse(unescape(e));\n } catch {\n }\n try {\n return JSON.parse(decodeURIComponent(e));\n } catch {\n }\n }\n throw new Error(`Could not parse json: ${e}`);\n}\nconst M = \"data:\", Z = {\n utf8: \"charset=utf-8\",\n \"utf-8\": \"charset=utf-8\",\n ascii: \"charset=ascii\"\n};\nfunction j(e) {\n const r = e.slice(M.length), t = r.indexOf(\",\");\n if (t === -1)\n throw new Error(`Invalid data URI: ${e}`);\n const a = r.slice(0, t), g = r.slice(t + 1), [m, ...y] = a.toLowerCase().split(\";\"), l = y.reduce((s, i) => {\n let U = i;\n if (!i.includes(\"=\")) {\n if (i === \"base64\")\n return s.base64 = !0, s;\n const R = Z[i];\n if (!R)\n return s;\n U = R;\n }\n const [N, E] = U.split(\"=\");\n return s[N] = E, s;\n }, {});\n let o;\n return l.base64 ? o = Buffer.from(g, \"base64\").toString(l.charset || \"utf-8\") : o = decodeURIComponent(g), m === \"application/json\" && (o = Q(o)), {\n parameters: l,\n mediaType: m,\n data: o\n };\n}\nfunction ee(e) {\n let r;\n try {\n return e.toLowerCase().startsWith(M) ? j(e).data : void 0;\n } catch {\n }\n return r;\n}\nconst re = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n convertPotentialWeb3ProtocolURLToWeb2URL: X,\n getEtherscanBaseURL: p,\n getEtherscanURLForAddress: f,\n getEtherscanURLForContract: P,\n getEtherscanURLForToken: A,\n getEtherscanURLForTransactionHash: _,\n getEtherscanURLForWallet: v,\n getLooksRareCollectionURL: C,\n getLooksRareTokenURL: x,\n getMagicEdenTokenURL: B,\n getManifoldContractURL: G,\n getManifoldContractUrlWithNetwork: J,\n getManifoldGalleryContractURL: D,\n getManifoldGalleryTokenURL: z,\n getManifoldGalleryWalletURL: F,\n getManifoldMarketplaceBaseURL: d,\n getManifoldMarketplaceListingURL: Y,\n getManifoldMarketplaceTokenURL: V,\n getManifoldTokenURL: q,\n getManifoldTokenUrlWithNetwork: H,\n getManifoldWorkspaceURL: h,\n getOpenSeaBaseURL: u,\n getOpenSeaCollectionURL: b,\n getOpenSeaTokenURL: O,\n getRaribleTokenURL: I,\n isYoutubeVideoURL: K,\n parseOnChainMetadata: ee\n}, Symbol.toStringTag, { value: \"Module\" }));\nexport {\n X as A,\n ee as B,\n B as a,\n x as b,\n I as c,\n O as d,\n u as e,\n b as f,\n z as g,\n C as h,\n p as i,\n A as j,\n _ as k,\n f as l,\n P as m,\n v as n,\n d as o,\n D as p,\n F as q,\n h as r,\n G as s,\n J as t,\n re as u,\n H as v,\n q as w,\n V as x,\n Y as y,\n K as z\n};\n","import { c as _ } from \"./_commonjsHelpers-BVfed4GL.js\";\nvar o = {}, E = {};\n(function(i) {\n Object.defineProperty(i, \"__esModule\", { value: !0 }), i.CHAIN_CHANGED = i.PROVIDER_CHANGED = i.ADDRESS_CHANGED = i.MANIFOLD_ETHEREUM_EXISTS = i.MANIFOLD_ETHEREUM_INITIALIZED = i.EthereumProviderErrorName = void 0, function(n) {\n n.EthereumProviderMultipleChains = \"EthereumProviderMultipleChains\", n.WindowEthereumConnectionError = \"WindowEthereumConnectionError\";\n }(i.EthereumProviderErrorName || (i.EthereumProviderErrorName = {})), i.MANIFOLD_ETHEREUM_INITIALIZED = \"manifold-ethereum-initialized\", i.MANIFOLD_ETHEREUM_EXISTS = \"manifold-ethereum-exists\", i.ADDRESS_CHANGED = \"ethereum-address-changed\", i.PROVIDER_CHANGED = \"frontend-provider-changed\", i.CHAIN_CHANGED = \"frontend-provider-chain-changed\";\n})(E);\nvar t = {};\n(function(i) {\n Object.defineProperty(i, \"__esModule\", { value: !0 }), i.EthereumNetwork = void 0, function(n) {\n n[n.MAINNET = 1] = \"MAINNET\", n[n.GOERLI = 5] = \"GOERLI\", n[n.OPTIMISM = 10] = \"OPTIMISM\", n[n.BSC = 56] = \"BSC\", n[n.MATIC = 137] = \"MATIC\", n[n.OPTIMISM_GOERLI = 420] = \"OPTIMISM_GOERLI\", n[n.BASE = 8453] = \"BASE\", n[n.ARBITRUM = 42161] = \"ARBITRUM\", n[n.AVALANCHE_FUJI = 43113] = \"AVALANCHE_FUJI\", n[n.AVALANCHE = 43114] = \"AVALANCHE\", n[n.ARBITRUM_GOERLI = 421613] = \"ARBITRUM_GOERLI\", n[n.MUMBAI = 80001] = \"MUMBAI\", n[n.BASE_GOERLI = 84531] = \"BASE_GOERLI\", n[n.SEPOLIA = 11155111] = \"SEPOLIA\";\n }(i.EthereumNetwork || (i.EthereumNetwork = {}));\n})(t);\nvar f = {};\n(function(i) {\n Object.defineProperty(i, \"__esModule\", { value: !0 }), i.OAuthGrantType = void 0, function(n) {\n n.TOKEN = \"token\", n.SIGNATURE = \"signature\", n.SIWE = \"siwe\";\n }(i.OAuthGrantType || (i.OAuthGrantType = {}));\n})(f);\n(function(i) {\n var n = _ && _.__createBinding || (Object.create ? function(a, e, d, A) {\n A === void 0 && (A = d);\n var I = Object.getOwnPropertyDescriptor(e, d);\n (!I || (\"get\" in I ? !e.__esModule : I.writable || I.configurable)) && (I = { enumerable: !0, get: function() {\n return e[d];\n } }), Object.defineProperty(a, A, I);\n } : function(a, e, d, A) {\n A === void 0 && (A = d), a[A] = e[d];\n }), c = _ && _.__exportStar || function(a, e) {\n for (var d in a) d !== \"default\" && !Object.prototype.hasOwnProperty.call(e, d) && n(e, a, d);\n };\n Object.defineProperty(i, \"__esModule\", { value: !0 }), c(E, i), c(t, i), c(f, i);\n})(o);\nfunction r(i) {\n let n;\n function a() {\n n = setTimeout(() => {\n n = void 0;\n }, 1e3);\n }\n function e(d) {\n d === \"address\" ? (n && (clearTimeout(n), a()), i()) : n || (n = setTimeout(() => {\n a(), i();\n }, 1e3));\n }\n window.addEventListener(o.ADDRESS_CHANGED, async () => {\n e(\"address\");\n }), window.addEventListener(o.CHAIN_CHANGED, async () => {\n e(\"chain\");\n }), window.addEventListener(o.PROVIDER_CHANGED, async () => {\n e(\"provider\");\n });\n}\nconst M = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n default: r\n}, Symbol.toStringTag, { value: \"Module\" }));\nexport {\n M as p,\n r as s\n};\n","function E(e, N) {\n return e && e.code === N;\n}\n[\"NFD\", \"NFC\", \"NFKD\", \"NFKC\"].reduce((e, N) => {\n try {\n if (\"test\".normalize(N) !== \"test\")\n throw new Error(\"bad\");\n if (N === \"NFD\" && \"é\".normalize(\"NFD\") !== \"é\")\n throw new Error(\"broken\");\n e.push(N);\n } catch {\n }\n return e;\n}, []);\nvar t = /* @__PURE__ */ ((e) => (e[e.REJECTED = 0] = \"REJECTED\", e[e.REPLACED = 1] = \"REPLACED\", e[e.CANCELLED = 2] = \"CANCELLED\", e[e.EXCEPTION = 3] = \"EXCEPTION\", e[e.LEDGER_ERROR = 4] = \"LEDGER_ERROR\", e[e.INSUFFICIENT_FUNDS = 5] = \"INSUFFICIENT_FUNDS\", e[e.PENDING = 6] = \"PENDING\", e[e.OTHER = 7] = \"OTHER\", e))(t || {});\nconst u = (e) => E(e, \"ACTION_REJECTED\") ? 0 : E(e, \"TRANSACTION_REPLACED\") ? 1 : E(e, \"INSUFFICIENT_FUNDS\") ? 5 : e.message.includes(\"Ledger\") ? 4 : e.message.includes(\"UserRefusedOnDevice\") ? 0 : parseInt(e.code) === -32002 && e.message && e.message.includes(\"pending\") ? (console.warn(\"Transaction pending in wallet error\"), 6) : e.message.includes(\"cancelled\") && !(e != null && e.cancelled) ? 0 : E(e, \"CANCELLED\") ? 2 : E(e, \"CALL_EXCEPTION\") ? 3 : (E(e, \"UNKNOWN_ERROR\"), 7), R = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n TransactionErrors: t,\n parseEthersError: u\n}, Symbol.toStringTag, { value: \"Module\" }));\nexport {\n t as T,\n u as p,\n R as w\n};\n","import type { NetworkConfig } from '../types/config';\nimport type { NetworkId } from '../types/common';\nimport { Network } from '@manifoldxyz/js-ts-utils';\n\n/**\n * Network configurations from @manifoldxyz/js-ts-utils\n * Maps NetworkId to NetworkConfig, converting from the package's format\n */\nexport const NETWORK_CONFIGS: Record<NetworkId, NetworkConfig> = Object.entries(\n Network.NETWORK_CONFIGS,\n).reduce(\n (acc, [networkId, config]) => {\n const id = parseInt(networkId);\n acc[id] = {\n networkId: id,\n chainId: id,\n name: config.chainName,\n nativeCurrency: config.nativeCurrency.symbol,\n rpcUrl: config.rpcUrls[0] || `https://eth.llamarpc.com`,\n explorerUrl: config.blockExplorerUrls[0] || 'https://etherscan.io',\n };\n return acc;\n },\n {} as Record<NetworkId, NetworkConfig>,\n);\n\n/**\n * Get network configuration by ID\n */\nexport function getNetworkConfig(networkId: NetworkId): NetworkConfig | undefined {\n return NETWORK_CONFIGS[networkId];\n}\n\n/**\n * Get supported network IDs\n */\nexport function getSupportedNetworks(): NetworkId[] {\n return Object.keys(NETWORK_CONFIGS).map((id) => parseInt(id));\n}\n\n/**\n * Check if network is supported\n */\nexport function isNetworkSupported(networkId: NetworkId): boolean {\n return networkId in NETWORK_CONFIGS;\n}\n","import * as ethers from 'ethers';\nimport { ManifoldBridgeProvider } from '@manifoldxyz/manifold-provider-client';\nimport type { NetworkId } from '../types/common';\nimport { getNetworkConfig } from '../config/networks';\n\n/**\n * Provider factory for dual-provider architecture\n * Based on CONTRACT_PATTERNS.md dual-provider implementation\n */\n\n// =============================================================================\n// PROVIDER TYPES\n// =============================================================================\n\nexport interface ProviderFactoryOptions {\n networkId: NetworkId;\n customRpcUrls?: Record<NetworkId, string>;\n}\n\n// =============================================================================\n// PROVIDER FACTORY\n// =============================================================================\n\n/**\n * Create dual provider instance with primary and bridge providers as fallback\n */\nexport function createProvider(options: ProviderFactoryOptions): ethers.providers.JsonRpcProvider {\n const { networkId, customRpcUrls } = options;\n\n // Create bridge provider using ManifoldBridgeProvider\n const bridge = new ManifoldBridgeProvider(networkId);\n\n // Create primary provider from custom RPC URLs if available\n const primary = createPrimaryProvider(networkId, customRpcUrls);\n return primary || bridge; // fallback to bridge if primary is not available\n}\n\n// =============================================================================\n// PROVIDER CREATION FUNCTIONS\n// =============================================================================\n\n/**\n * Create primary provider from custom RPC URLs\n */\nfunction createPrimaryProvider(\n networkId: NetworkId,\n customRpcUrls?: Record<NetworkId, string>,\n): ethers.providers.JsonRpcProvider | null {\n try {\n // Create JSON-RPC provider from custom URLs if available\n if (customRpcUrls?.[networkId]) {\n const networkConfig = getNetworkConfig(networkId);\n return new ethers.providers.JsonRpcProvider(customRpcUrls[networkId], {\n name: networkConfig?.name ?? `network-${networkId}`,\n chainId: networkConfig?.chainId ?? networkId,\n });\n }\n\n return null;\n } catch (error) {\n console.log('errrr', error);\n return null;\n }\n}\n","export const GachaExtensionERC1155ABIv2 = [\n {\n inputs: [{ internalType: 'address', name: 'initialOwner', type: 'address' }],\n stateMutability: 'nonpayable',\n type: 'constructor',\n },\n { inputs: [], name: 'CannotChangePaymentToken', type: 'error' },\n { inputs: [], name: 'CannotChangeTokenVariations', type: 'error' },\n { inputs: [], name: 'CannotLowerTotalMaxBeyondTotal', type: 'error' },\n { inputs: [], name: 'CannotLowertokenVariationsBeyondVariations', type: 'error' },\n { inputs: [], name: 'CannotMintFromContract', type: 'error' },\n { inputs: [], name: 'CannotMintMoreThanReserved', type: 'error' },\n { inputs: [], name: 'ClaimAlreadyInitialized', type: 'error' },\n { inputs: [], name: 'ClaimInactive', type: 'error' },\n { inputs: [], name: 'ClaimNotInitialized', type: 'error' },\n { inputs: [], name: 'ClaimSoldOut', type: 'error' },\n { inputs: [], name: 'ContractDeprecated', type: 'error' },\n { inputs: [], name: 'FailedToTransfer', type: 'error' },\n { inputs: [], name: 'InvalidDate', type: 'error' },\n { inputs: [], name: 'InvalidInput', type: 'error' },\n { inputs: [], name: 'InvalidInstance', type: 'error' },\n { inputs: [], name: 'InvalidMintCount', type: 'error' },\n { inputs: [], name: 'InvalidPayment', type: 'error' },\n { inputs: [], name: 'InvalidSignature', type: 'error' },\n { inputs: [], name: 'InvalidStartingTokenId', type: 'error' },\n { inputs: [], name: 'InvalidStorageProtocol', type: 'error' },\n { inputs: [], name: 'InvalidVariationIndex', type: 'error' },\n { inputs: [], name: 'TokenDNE', type: 'error' },\n { inputs: [], name: 'TooManyRequested', type: 'error' },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: 'address', name: 'account', type: 'address' },\n { indexed: true, internalType: 'address', name: 'sender', type: 'address' },\n ],\n name: 'AdminApproved',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: 'address', name: 'account', type: 'address' },\n { indexed: true, internalType: 'address', name: 'sender', type: 'address' },\n ],\n name: 'AdminRevoked',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: 'address', name: 'previousOwner', type: 'address' },\n { indexed: true, internalType: 'address', name: 'newOwner', type: 'address' },\n ],\n name: 'OwnershipTransferred',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: 'address', name: 'creatorContract', type: 'address' },\n { indexed: true, internalType: 'uint256', name: 'instanceId', type: 'uint256' },\n { indexed: false, internalType: 'address', name: 'initializer', type: 'address' },\n ],\n name: 'SerendipityClaimInitialized',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: 'address', name: 'creatorContract', type: 'address' },\n { indexed: true, internalType: 'uint256', name: 'instanceId', type: 'uint256' },\n ],\n name: 'SerendipityClaimUpdated',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: 'address', name: 'creatorContract', type: 'address' },\n { indexed: true, internalType: 'uint256', name: 'instanceId', type: 'uint256' },\n { indexed: true, internalType: 'address', name: 'collector', type: 'address' },\n { indexed: false, internalType: 'uint32', name: 'mintCount', type: 'uint32' },\n ],\n name: 'SerendipityMintReserved',\n type: 'event',\n },\n {\n inputs: [],\n name: 'MINT_FEE',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'address', name: 'admin', type: 'address' }],\n name: 'approveAdmin',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n components: [\n { internalType: 'address', name: 'creatorContractAddress', type: 'address' },\n { internalType: 'uint256', name: 'instanceId', type: 'uint256' },\n {\n components: [\n { internalType: 'uint8', name: 'variationIndex', type: 'uint8' },\n { internalType: 'uint32', name: 'amount', type: 'uint32' },\n { internalType: 'address', name: 'recipient', type: 'address' },\n ],\n internalType: 'struct ISerendipity.VariationMint[]',\n name: 'variationMints',\n type: 'tuple[]',\n },\n ],\n internalType: 'struct ISerendipity.ClaimMint[]',\n name: 'mints',\n type: 'tuple[]',\n },\n ],\n name: 'deliverMints',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'bool', name: '_deprecated', type: 'bool' }],\n name: 'deprecate',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [],\n name: 'deprecated',\n outputs: [{ internalType: 'bool', name: '', type: 'bool' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'getAdmins',\n outputs: [{ internalType: 'address[]', name: 'admins', type: 'address[]' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n { internalType: 'address', name: 'creatorContractAddress', type: 'address' },\n { internalType: 'uint256', name: 'instanceId', type: 'uint256' },\n ],\n name: 'getClaim',\n outputs: [\n {\n components: [\n {\n internalType: 'enum ISerendipity.StorageProtocol',\n name: 'storageProtocol',\n type: 'uint8',\n },\n { internalType: 'uint32', name: 'total', type: 'uint32' },\n { internalType: 'uint32', name: 'totalMax', type: 'uint32' },\n { internalType: 'uint48', name: 'startDate', type: 'uint48' },\n { internalType: 'uint48', name: 'endDate', type: 'uint48' },\n { internalType: 'uint80', name: 'startingTokenId', type: 'uint80' },\n { internalType: 'uint8', name: 'tokenVariations', type: 'uint8' },\n { internalType: 'string', name: 'location', type: 'string' },\n { internalType: 'address payable', name: 'paymentReceiver', type: 'address' },\n { internalType: 'uint96', name: 'cost', type: 'uint96' },\n { internalType: 'address', name: 'erc20', type: 'address' },\n ],\n internalType: 'struct IERC1155Serendipity.Claim',\n name: '',\n type: 'tuple',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n { internalType: 'address', name: 'creatorContractAddress', type: 'address' },\n { internalType: 'uint256', name: 'tokenId', type: 'uint256' },\n ],\n name: 'getClaimForToken',\n outputs: [\n { internalType: 'uint256', name: 'instanceId', type: 'uint256' },\n {\n components: [\n {\n internalType: 'enum ISerendipity.StorageProtocol',\n name: 'storageProtocol',\n type: 'uint8',\n },\n { internalType: 'uint32', name: 'total', type: 'uint32' },\n { internalType: 'uint32', name: 'totalMax', type: 'uint32' },\n { internalType: 'uint48', name: 'startDate', type: 'uint48' },\n { internalType: 'uint48', name: 'endDate', type: 'uint48' },\n { internalType: 'uint80', name: 'startingTokenId', type: 'uint80' },\n { internalType: 'uint8', name: 'tokenVariations', type: 'uint8' },\n { internalType: 'string', name: 'location', type: 'string' },\n { internalType: 'address payable', name: 'paymentReceiver', type: 'address' },\n { internalType: 'uint96', name: 'cost', type: 'uint96' },\n { internalType: 'address', name: 'erc20', type: 'address' },\n ],\n internalType: 'struct IERC1155Serendipity.Claim',\n name: 'claim',\n type: 'tuple',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n { internalType: 'address', name: 'minter', type: 'address' },\n { internalType: 'address', name: 'creatorContractAddress', type: 'address' },\n { internalType: 'uint256', name: 'instanceId', type: 'uint256' },\n ],\n name: 'getUserMints',\n outputs: [\n {\n components: [\n { internalType: 'uint32', name: 'reservedCount', type: 'uint32' },\n { internalType: 'uint32', name: 'deliveredCount', type: 'uint32' },\n ],\n internalType: 'struct ISerendipity.UserMintDetails',\n name: '',\n type: 'tuple',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n { internalType: 'address', name: 'creatorContractAddress', type: 'address' },\n { internalType: 'uint256', name: 'instanceId', type: 'uint256' },\n {\n components: [\n {\n internalType: 'enum ISerendipity.StorageProtocol',\n name: 'storageProtocol',\n type: 'uint8',\n },\n { internalType: 'uint32', name: 'totalMax', type: 'uint32' },\n { internalType: 'uint48', name: 'startDate', type: 'uint48' },\n { internalType: 'uint48', name: 'endDate', type: 'uint48' },\n { internalType: 'uint8', name: 'tokenVariations', type: 'uint8' },\n { internalType: 'string', name: 'location', type: 'string' },\n { internalType: 'address payable', name: 'paymentReceiver', type: 'address' },\n { internalType: 'uint96', name: 'cost', type: 'uint96' },\n { internalType: 'address', name: 'erc20', type: 'address' },\n ],\n internalType: 'struct IERC1155Serendipity.ClaimParameters',\n name: 'claimParameters',\n type: 'tuple',\n },\n ],\n name: 'initializeClaim',\n outputs: [],\n stateMutability: 'payable',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'address', name: 'admin', type: 'address' }],\n name: 'isAdmin',\n outputs: [{ internalType: 'bool', name: '', type: 'bool' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n { internalType: 'address', name: 'creatorContractAddress', type: 'address' },\n { internalType: 'uint256', name: 'instanceId', type: 'uint256' },\n { internalType: 'uint32', name: 'mintCount', type: 'uint32' },\n ],\n name: 'mintReserve',\n outputs: [],\n stateMutability: 'payable',\n type: 'function',\n },\n {\n inputs: [],\n name: 'owner',\n outputs: [{ internalType: 'address', name: '', type: 'address' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'renounceOwnership',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'address', name: 'admin', type: 'address' }],\n name: 'revokeAdmin',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'address', name: 'signer', type: 'address' }],\n name: 'setSigner',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'bytes4', name: 'interfaceId', type: 'bytes4' }],\n name: 'supportsInterface',\n outputs: [{ internalType: 'bool', name: '', type: 'bool' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n { internalType: 'address', name: 'creatorContractAddress', type: 'address' },\n { internalType: 'uint256', name: 'tokenId', type: 'uint256' },\n ],\n name: 'tokenURI',\n outputs: [{ internalType: 'string', name: 'uri', type: 'string' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'address', name: 'newOwner', type: 'address' }],\n name: 'transferOwnership',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n { internalType: 'address', name: 'creatorContractAddress', type: 'address' },\n { internalType: 'uint256', name: 'instanceId', type: 'uint256' },\n {\n components: [\n {\n internalType: 'enum ISerendipity.StorageProtocol',\n name: 'storageProtocol',\n type: 'uint8',\n },\n { internalType: 'address payable', name: 'paymentReceiver', type: 'address' },\n { internalType: 'uint32', name: 'totalMax', type: 'uint32' },\n { internalType: 'uint48', name: 'startDate', type: 'uint48' },\n { internalType: 'uint48', name: 'endDate', type: 'uint48' },\n { internalType: 'uint96', name: 'cost', type: 'uint96' },\n { internalType: 'string', name: 'location', type: 'string' },\n ],\n internalType: 'struct IERC1155Serendipity.UpdateClaimParameters',\n name: 'updateClaimParameters',\n type: 'tuple',\n },\n ],\n name: 'updateClaim',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n { internalType: 'address', name: 'creatorContractAddress', type: 'address' },\n { internalType: 'uint256', name: 'instanceId', type: 'uint256' },\n { internalType: 'enum ISerendipity.StorageProtocol', name: 'storageProtocol', type: 'uint8' },\n { internalType: 'string', name: 'location', type: 'string' },\n ],\n name: 'updateTokenURIParams',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n { internalType: 'address payable', name: 'receiver', type: 'address' },\n { internalType: 'uint256', name: 'amount', type: 'uint256' },\n ],\n name: 'withdraw',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n];\n","/**\n * ERC721 Creator Contract ABI (simplified)\n */\nexport const CreatorContractABI = [\n // Standard ERC721 functions\n 'function balanceOf(address owner) external view returns (uint256)',\n 'function ownerOf(uint256 tokenId) external view returns (address)',\n 'function tokenURI(uint256 tokenId) external view returns (string)',\n 'function approve(address to, uint256 tokenId) external',\n 'function getApproved(uint256 tokenId) external view returns (address)',\n 'function setApprovalForAll(address operator, bool approved) external',\n 'function isApprovedForAll(address owner, address operator) external view returns (bool)',\n 'function transferFrom(address from, address to, uint256 tokenId) external',\n\n // Creator-specific functions\n 'function totalSupply() external view returns (uint256)',\n 'function contractURI() external view returns (string)',\n\n // Events\n 'event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)',\n 'event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)',\n 'event ApprovalForAll(address indexed owner, address indexed operator, bool approved)',\n] as const;\n","/**\n * ERC20 Token ABI (for payment tokens)\n */\nexport const ERC20ABI = [\n 'function balanceOf(address owner) external view returns (uint256)',\n 'function allowance(address owner, address spender) external view returns (uint256)',\n 'function approve(address spender, uint256 amount) external returns (bool)',\n 'function transfer(address to, uint256 amount) external returns (bool)',\n 'function transferFrom(address from, address to, uint256 amount) external returns (bool)',\n 'function decimals() external view returns (uint8)',\n 'function symbol() external view returns (string)',\n 'function name() external view returns (string)',\n] as const;\n","import * as ethers from 'ethers';\nimport type { NetworkId, Address } from '../types/common';\nimport { GachaExtensionERC1155ABIv2, CreatorContractABI, ERC20ABI } from '../abis';\n\n// =============================================================================\n// CONTRACT TYPES\n// =============================================================================\n\nexport type BlindMintClaimContract = ethers.Contract & {\n // Main contract methods from spec\n MINT_FEE(): Promise<ethers.BigNumber>;\n getClaim(\n creatorContractAddress: string,\n instanceId: number,\n ): Promise<{\n storageProtocol: number;\n total: number;\n totalMax: number;\n startDate: number;\n endDate: number;\n startingTokenId: ethers.BigNumber;\n tokenVariations: number;\n location: string;\n paymentReceiver: string;\n cost: ethers.BigNumber;\n erc20: string;\n }>;\n getUserMints(\n minter: string,\n creatorContractAddress: string,\n instanceId: number,\n ): Promise<{\n reservedCount: number;\n deliveredCount: number;\n }>;\n\n // MintReserve - the main minting method (ABIv2)\n mintReserve(\n creatorContractAddress: string,\n instanceId: number,\n mintCount: number,\n options?: ethers.Overrides,\n ): Promise<ethers.ContractTransaction>;\n\n // Additional methods\n getClaimForToken(\n creatorContractAddress: string,\n tokenId: number,\n ): Promise<{\n instanceId: ethers.BigNumber;\n claim: {\n storageProtocol: number;\n total: number;\n totalMax: number;\n startDate: number;\n endDate: number;\n startingTokenId: ethers.BigNumber;\n tokenVariations: number;\n location: string;\n paymentReceiver: string;\n cost: ethers.BigNumber;\n erc20: string;\n };\n }>;\n\n tokenURI(creatorContractAddress: string, tokenId: number): Promise<string>;\n};\n\nexport type CreatorContract = ethers.Contract & {\n balanceOf(owner: string): Promise<ethers.BigNumber>;\n ownerOf(tokenId: ethers.BigNumberish): Promise<string>;\n tokenURI(tokenId: ethers.BigNumberish): Promise<string>;\n totalSupply(): Promise<ethers.BigNumber>;\n contractURI(): Promise<string>;\n\n approve(\n to: string,\n tokenId: ethers.BigNumberish,\n options?: ethers.Overrides,\n ): Promise<ethers.ContractTransaction>;\n setApprovalForAll(\n operator: string,\n approved: boolean,\n options?: ethers.Overrides,\n ): Promise<ethers.ContractTransaction>;\n transferFrom(\n from: string,\n to: string,\n tokenId: ethers.BigNumberish,\n options?: ethers.Overrides,\n ): Promise<ethers.ContractTransaction>;\n};\n\nexport type ERC20Contract = ethers.Contract & {\n balanceOf(owner: string): Promise<ethers.BigNumber>;\n allowance(owner: string, spender: string): Promise<ethers.BigNumber>;\n decimals(): Promise<number>;\n symbol(): Promise<string>;\n name(): Promise<string>;\n\n approve(\n spender: string,\n amount: ethers.BigNumberish,\n options?: ethers.Overrides,\n ): Promise<ethers.ContractTransaction>;\n transfer(\n to: string,\n amount: ethers.BigNumberish,\n options?: ethers.Overrides,\n ): Promise<ethers.ContractTransaction>;\n transferFrom(\n from: string,\n to: string,\n amount: ethers.BigNumberish,\n options?: ethers.Overrides,\n ): Promise<ethers.ContractTransaction>;\n};\n\n// =============================================================================\n// CONTRACT FACTORY\n// =============================================================================\n\nexport interface ContractFactoryOptions {\n provider: ethers.providers.JsonRpcProvider;\n networkId: NetworkId;\n signer?: ethers.Signer;\n}\n\n/**\n * Factory for creating contract instances with dual provider support\n */\nexport class ContractFactory {\n private provider: ethers.providers.JsonRpcProvider;\n\n constructor(options: ContractFactoryOptions) {\n this.provider = options.provider;\n }\n\n /**\n * Create BlindMint claim extension contract instance\n */\n createBlindMintContract(address: Address): BlindMintClaimContract {\n // Use primary provider for write operations if signer is available\n const provider = this.provider;\n\n const contract = new ethers.Contract(\n address,\n GachaExtensionERC1155ABIv2,\n provider,\n ) as BlindMintClaimContract;\n\n return contract;\n }\n\n /**\n * Create Creator (ERC721) contract instance\n */\n createCreatorContract(address: Address): CreatorContract {\n const provider = this.provider;\n\n return new ethers.Contract(address, CreatorContractABI, provider) as CreatorContract;\n }\n\n /**\n * Create ERC20 token contract instance\n */\n createERC20Contract(address: Address): ERC20Contract {\n const provider = this.provider;\n\n return new ethers.Contract(address, ERC20ABI, provider) as ERC20Contract;\n }\n}\n\n// =============================================================================\n// CONTRACT UTILITIES\n// =============================================================================\n\n/**\n * Estimate gas for a contract call with fallback\n */\ntype EstimateGasFunction = (...fnArgs: unknown[]) => Promise<ethers.BigNumber>;\n\nexport async function estimateGasWithFallback(\n contract: ethers.Contract,\n methodName: string,\n args: ReadonlyArray<unknown>,\n fallbackGas: ethers.BigNumberish = 200000,\n): Promise<ethers.BigNumber> {\n try {\n const estimateMethod = contract.estimateGas[methodName as keyof typeof contract.estimateGas];\n if (typeof estimateMethod === 'function') {\n return await (estimateMethod as EstimateGasFunction)(...args);\n }\n return ethers.BigNumber.from(fallbackGas);\n } catch (error) {\n return ethers.BigNumber.from(fallbackGas);\n }\n}\n\n/**\n * Call contract method with retry logic\n */\nexport async function callWithRetry<T>(\n contractCall: () => Promise<T>,\n maxRetries: number = 3,\n delay: number = 1000,\n): Promise<T> {\n let lastError: Error;\n\n for (let i = 0; i < maxRetries; i++) {\n try {\n return await contractCall();\n } catch (error) {\n lastError = error as Error;\n\n if (i < maxRetries - 1) {\n await new Promise((resolve) => setTimeout(resolve, delay * (i + 1)));\n }\n }\n }\n\n throw lastError!;\n}\n\n/**\n * Batch multiple contract calls efficiently\n */\nexport async function batchContractCalls<T>(\n calls: Array<() => Promise<T>>,\n maxConcurrent: number = 5,\n): Promise<T[]> {\n const results: T[] = [];\n\n for (let i = 0; i < calls.length; i += maxConcurrent) {\n const batch = calls.slice(i, i + maxConcurrent);\n const batchResults = await Promise.all(batch.map((call) => call()));\n\n results.push(...batchResults);\n }\n\n return results;\n}\n\n/**\n * Validate contract address and ABI compatibility\n */\nexport async function validateContract(\n provider: ethers.providers.Provider,\n address: Address,\n expectedMethods: string[],\n): Promise<{\n isValid: boolean;\n hasCode: boolean;\n supportedMethods: string[];\n missingMethods: string[];\n}> {\n try {\n // Check if contract has code\n const code = await provider.getCode(address);\n const hasCode = code !== '0x';\n\n if (!hasCode) {\n return {\n isValid: false,\n hasCode: false,\n supportedMethods: [],\n missingMethods: expectedMethods,\n };\n }\n\n // Create temporary contract to test method calls\n const tempContract = new ethers.Contract(\n address,\n ['function supportsInterface(bytes4 interfaceId) external view returns (bool)'],\n provider,\n );\n\n const supportedMethods: string[] = [];\n const missingMethods: string[] = [];\n\n // Test each expected method\n for (const method of expectedMethods) {\n try {\n // Try to call the method with empty parameters\n const staticMethod = tempContract.callStatic[method];\n if (staticMethod) {\n await staticMethod();\n supportedMethods.push(method);\n } else {\n missingMethods.push(method);\n }\n } catch (error) {\n // Method might not exist or might require parameters\n missingMethods.push(method);\n }\n }\n\n return {\n isValid: missingMethods.length === 0,\n hasCode: true,\n supportedMethods,\n missingMethods,\n };\n } catch (error) {\n return {\n isValid: false,\n hasCode: false,\n supportedMethods: [],\n missingMethods: expectedMethods,\n };\n }\n}\n\n/**\n * Parse contract events from transaction receipt\n */\nexport function parseContractEvents(\n contract: ethers.Contract,\n receipt: ethers.providers.TransactionReceipt,\n): ethers.utils.LogDescription[] {\n const events: ethers.utils.LogDescription[] = [];\n\n receipt.logs.forEach((log) => {\n try {\n const parsedLog = contract.interface.parseLog(log);\n events.push(parsedLog);\n } catch (error) {\n // Log doesn't match this contract's interface\n }\n });\n\n return events;\n}\n\n// =============================================================================\n// DEVELOPMENT AND TESTING UTILITIES\n// =============================================================================\n","import type { Address, NetworkId } from '../types/common';\n\n/**\n * Validates an Ethereum address format.\n *\n * @param address - The address string to validate\n * @returns True if the address is a valid Ethereum address (0x + 40 hex chars)\n *\n * @example\n * ```typescript\n * validateAddress('0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb7') // true\n * validateAddress('invalid') // false\n * validateAddress('0x123') // false (too short)\n * ```\n *\n * @public\n */\nexport function validateAddress(address: string): address is Address {\n return /^0x[a-fA-F0-9]{40}$/.test(address);\n}\n\n/**\n * Validates a network ID against supported networks.\n *\n * @param networkId - The network ID to validate\n * @returns True if the network is supported\n *\n * Supported networks:\n * - 1: Ethereum Mainnet\n * - 5: Goerli (deprecated)\n * - 10: Optimism\n * - 56: BSC\n * - 137: Polygon\n * - 8453: Base\n * - 42161: Arbitrum\n * - 11155111: Sepolia\n *\n * @public\n */\nexport function validateNetworkId(networkId: number): networkId is NetworkId {\n // Validate common Ethereum network IDs\n const validNetworks = [1, 5, 10, 56, 137, 8453, 42161, 11155111];\n return validNetworks.includes(networkId);\n}\n\n/**\n * Validates a Manifold instance ID format.\n *\n * @param instanceId - The instance ID to validate\n * @returns True if the instance ID is valid (numeric string)\n *\n * @example\n * ```typescript\n * validateInstanceId('4150231280') // true\n * validateInstanceId('abc123') // false\n * validateInstanceId('') // false\n * ```\n *\n * @public\n */\nexport function validateInstanceId(instanceId: string): boolean {\n return /^\\d+$/.test(instanceId);\n}\n\n/**\n * Parses a Manifold product URL to extract the instance ID.\n *\n * @param url - The Manifold URL to parse\n * @returns Object with instanceId or null if invalid\n *\n * @example\n * ```typescript\n * parseManifoldUrl('https://manifold.xyz/@creator/id/4150231280')\n * // Returns: { instanceId: '4150231280' }\n *\n * parseManifoldUrl('https://example.com/product')\n * // Returns: null\n * ```\n *\n * @public\n */\nexport function parseManifoldUrl(url: string): { instanceId: string } | null {\n // Parse URLs like: https://manifold.xyz/@meta8eth/id/4150231280\n const match = url.match(/manifold\\.xyz\\/@[\\w-]+\\/id\\/(\\d+)/);\n if (match && match[1]) {\n return { instanceId: match[1] };\n }\n return null;\n}\n\n/**\n * Formats an Ethereum address for display (shortened version).\n *\n * @param address - The address to format\n * @returns Shortened address (e.g., \"0x742d...bEb7\")\n *\n * @example\n * ```typescript\n * formatAddress('0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb7')\n * // Returns: \"0x742d...bEb7\"\n * ```\n *\n * @public\n */\nexport function formatAddress(address: Address): string {\n return `${address.slice(0, 6)}...${address.slice(-4)}`;\n}\n\n/**\n * Formats a BigInt value with decimals for human-readable display.\n *\n * @param value - The BigInt value to format (in smallest unit, e.g., wei)\n * @param decimals - Number of decimal places (default: 18 for ETH)\n * @returns Formatted string with decimal notation\n *\n * @example\n * ```typescript\n * formatMoney(BigInt('1000000000000000000'), 18) // \"1\"\n * formatMoney(BigInt('1500000000000000000'), 18) // \"1.5\"\n * formatMoney(BigInt('123456789000000000'), 18) // \"0.123456789\"\n * ```\n *\n * @public\n */\nexport function formatMoney(value: bigint, decimals = 18): string {\n const divisor = BigInt(10) ** BigInt(decimals);\n const wholePart = value / divisor;\n const fractionalPart = value % divisor;\n\n const fractionalStr = fractionalPart.toString().padStart(decimals, '0');\n const trimmedFractional = fractionalStr.replace(/0+$/, '');\n\n if (trimmedFractional.length === 0) {\n return wholePart.toString();\n }\n\n return `${wholePart}.${trimmedFractional}`;\n}\n","import { ethers } from 'ethers';\nimport type { PublicClient } from 'viem';\nimport { ClientSDKError, ErrorCode } from '../types/errors';\n\nexport interface GasEstimationParams {\n contract: ethers.Contract;\n method: string;\n args: unknown[];\n from: string;\n value?: ethers.BigNumber;\n fallbackGas?: ethers.BigNumber;\n}\n\n/**\n * Generic gas estimation function with fallback\n * Can be reused across all product types\n */\nexport async function estimateGas(params: GasEstimationParams): Promise<ethers.BigNumber> {\n const {\n contract,\n method,\n args,\n from,\n value,\n fallbackGas = ethers.BigNumber.from(200000),\n } = params;\n\n try {\n // Check if the method exists on the contract\n if (!contract.estimateGas[method]) {\n throw new ClientSDKError(\n ErrorCode.ESTIMATION_FAILED,\n `Method ${method} not found on contract`,\n );\n }\n\n // Prepare overrides\n const overrides: ethers.Overrides & { from?: string; value?: ethers.BigNumber } = { from };\n if (value) {\n overrides.value = value;\n }\n\n // Estimate gas\n const estimateMethod = contract.estimateGas[method] as (\n ...args: unknown[]\n ) => Promise<ethers.BigNumber>;\n const gasEstimate = await estimateMethod(...args, overrides);\n\n return gasEstimate;\n } catch (error) {\n console.warn(`Gas estimation failed for ${method}, using fallback:`, error);\n return fallbackGas;\n }\n}\n\n/**\n * Apply gas buffer to an estimate\n * @param gasEstimate The base gas estimate\n * @param bufferPercentage Buffer percentage (e.g., 30 for 30%)\n */\nexport function applyGasBuffer(\n gasEstimate: ethers.BigNumber,\n bufferPercentage: number = 30,\n): ethers.BigNumber {\n const buffer = 100 + bufferPercentage;\n return gasEstimate.mul(buffer).div(100);\n}\n\n/**\n * Check ERC20 token balance\n */\nexport async function checkERC20Balance(\n tokenAddress: string,\n ownerAddress: string,\n provider:\n | ethers.providers.JsonRpcProvider\n | ethers.providers.Web3Provider\n | ethers.providers.JsonRpcSigner,\n): Promise<ethers.BigNumber> {\n const erc20Abi = ['function balanceOf(address owner) view returns (uint256)'];\n\n const contract = new ethers.Contract(tokenAddress, erc20Abi, provider);\n const balanceOf = contract.balanceOf as (owner: string) => Promise<ethers.BigNumber>;\n const balance = await balanceOf(ownerAddress);\n return balance;\n}\n\n/**\n * Check ERC20 token balance using viem client\n */\nexport async function checkERC20BalanceViem(\n tokenAddress: string,\n ownerAddress: string,\n publicClient: Pick<PublicClient, 'readContract'>,\n): Promise<bigint> {\n const erc20Abi = [\n {\n name: 'balanceOf',\n type: 'function',\n stateMutability: 'view',\n inputs: [{ name: 'owner', type: 'address' }],\n outputs: [{ name: '', type: 'uint256' }],\n },\n ] as const;\n\n const balance = await publicClient.readContract({\n address: tokenAddress as `0x${string}`,\n abi: erc20Abi,\n functionName: 'balanceOf',\n args: [ownerAddress as `0x${string}`],\n });\n\n return balance;\n}\n\n/**\n * Check ERC20 token allowance\n */\nexport async function checkERC20Allowance(\n tokenAddress: string,\n ownerAddress: string,\n spenderAddress: string,\n provider: ethers.providers.Provider,\n): Promise<ethers.BigNumber> {\n const erc20Abi = ['function allowance(address owner, address spender) view returns (uint256)'];\n\n const contract = new ethers.Contract(tokenAddress, erc20Abi, provider);\n const allowanceMethod = contract.allowance as (\n owner: string,\n spender: string,\n ) => Promise<ethers.BigNumber>;\n const allowance = await allowanceMethod(ownerAddress, spenderAddress);\n return allowance;\n}\n\n/**\n * Create ERC20 approval transaction\n */\nexport function createERC20ApprovalTx(\n tokenAddress: string,\n spenderAddress: string,\n amount: ethers.BigNumber,\n): { to: string; data: string } {\n const erc20Interface = new ethers.utils.Interface([\n 'function approve(address spender, uint256 amount)',\n ]);\n\n const data = erc20Interface.encodeFunctionData('approve', [spenderAddress, amount]);\n\n return {\n to: tokenAddress,\n data,\n };\n}\n","/**\n * Coinbase API integration for fetching cryptocurrency to USD exchange rates\n */\n\n/**\n * Fetch ETH or other native currency to USD exchange rate from Coinbase\n * @param currency - The currency symbol (e.g., 'ETH', 'MATIC')\n * @returns The current USD price or undefined if fetch fails\n */\nexport async function getEthToUsdRate(currency = 'ETH'): Promise<number | undefined> {\n try {\n const controller = new AbortController();\n const timeoutId = setTimeout(() => controller.abort(), 5000); // 5 second timeout\n\n const response = await fetch(`https://api.coinbase.com/v2/prices/${currency}-USD/spot`, {\n method: 'GET',\n signal: controller.signal,\n });\n\n clearTimeout(timeoutId);\n\n if (!response.ok) {\n throw new Error(`Coinbase API error: ${response.status}`);\n }\n\n const data: {\n data: {\n amount: string;\n };\n } = (await response.json()) as {\n data: {\n amount: string;\n };\n };\n return parseFloat(data.data.amount);\n } catch (error) {\n console.warn(`Failed to fetch ${currency}/USD rate:`, error);\n return undefined;\n }\n}\n\n/**\n * Fetch ERC20 token to USD exchange rate from CoinGecko\n * @param tokenSymbol - The token symbol (e.g., 'USDC', 'DAI')\n * @param tokenAddress - Optional token contract address for more accurate lookup\n * @returns The current USD price or undefined if fetch fails\n */\nexport async function getERC20ToUSDRate(\n tokenSymbol: string,\n tokenAddress?: string,\n): Promise<number | undefined> {\n try {\n // First try Coinbase for common tokens\n if (isCommonToken(tokenSymbol)) {\n const coinbaseRate = await getEthToUsdRate(tokenSymbol);\n if (coinbaseRate) return coinbaseRate;\n }\n\n // Fallback to CoinGecko for other tokens\n const controller = new AbortController();\n const timeoutId = setTimeout(() => controller.abort(), 5000);\n\n // Try to get by contract address if provided (more accurate)\n let url: string;\n if (tokenAddress) {\n url = `https://api.coingecko.com/api/v3/simple/token_price/ethereum?contract_addresses=${tokenAddress}&vs_currencies=usd`;\n } else {\n // Fallback to symbol-based lookup\n const coinId = getCoinGeckoId(tokenSymbol);\n url = `https://api.coingecko.com/api/v3/simple/price?ids=${coinId}&vs_currencies=usd`;\n }\n\n const response = await fetch(url, {\n method: 'GET',\n signal: controller.signal,\n });\n\n clearTimeout(timeoutId);\n\n if (!response.ok) {\n throw new Error(`CoinGecko API error: ${response.status}`);\n }\n\n const data: {\n [key: string]: { usd: string };\n } = (await response.json()) as {\n [key: string]: { usd: string };\n };\n\n if (tokenAddress) {\n // Response format for contract address lookup\n const price = data[tokenAddress.toLowerCase()]?.usd;\n return price ? parseFloat(price) : undefined;\n } else {\n // Response format for coin ID lookup\n const coinId = getCoinGeckoId(tokenSymbol);\n const price = data[coinId]?.usd;\n return price ? parseFloat(price) : undefined;\n }\n } catch (error) {\n console.warn(`Failed to fetch ${tokenSymbol}/USD rate:`, error);\n return undefined;\n }\n}\n\n/**\n * Get network-specific native currency symbol\n * @param networkId - The network ID\n * @returns The native currency symbol for the network\n */\nexport function getNativeCurrencySymbol(networkId: number): string {\n switch (networkId) {\n case 137: // Polygon\n return 'MATIC';\n case 10: // Optimism\n return 'ETH'; // Optimism uses ETH\n case 8453: // Base\n return 'ETH'; // Base uses ETH\n case 42161: // Arbitrum\n return 'ETH'; // Arbitrum uses ETH\n default:\n return 'ETH';\n }\n}\n\n/**\n * Calculate USD value for a given amount and rate\n * @param amount - The amount in wei or token units\n * @param decimals - The token decimals\n * @param rate - The USD exchange rate\n * @returns Formatted USD string\n */\nexport function calculateUSDValue(amount: bigint, decimals: number, rate: number): string {\n if (!rate || rate === 0) return '0';\n\n // Convert from smallest unit to decimal\n const divisor = BigInt(10 ** decimals);\n const wholePart = amount / divisor;\n const fractionalPart = amount % divisor;\n\n // Calculate decimal value\n const decimalValue = Number(wholePart) + Number(fractionalPart) / Number(divisor);\n const usdValue = decimalValue * rate;\n\n // Format to 2 decimal places\n return usdValue.toFixed(2);\n}\n\n// Helper function to check if token is commonly traded on Coinbase\nfunction isCommonToken(symbol: string): boolean {\n const commonTokens = ['USDC', 'USDT', 'DAI', 'WBTC', 'LINK', 'UNI', 'AAVE', 'COMP', 'MKR', 'SNX'];\n return commonTokens.includes(symbol.toUpperCase());\n}\n\n// Helper function to map token symbols to CoinGecko IDs\nfunction getCoinGeckoId(symbol: string): string {\n const symbolToId: Record<string, string> = {\n USDC: 'usd-coin',\n USDT: 'tether',\n DAI: 'dai',\n WETH: 'weth',\n WBTC: 'wrapped-bitcoin',\n LINK: 'chainlink',\n UNI: 'uniswap',\n AAVE: 'aave',\n COMP: 'compound-governance-token',\n MKR: 'maker',\n SNX: 'synthetix-network-token',\n // Add more mappings as needed\n };\n\n return symbolToId[symbol.toUpperCase()] || symbol.toLowerCase();\n}\n","import { ethers } from 'ethers';\nimport { ClientSDKError, ErrorCode } from '../types/errors';\nimport { Currency } from '@manifoldxyz/js-ts-utils';\nimport {\n getEthToUsdRate,\n getERC20ToUSDRate,\n getNativeCurrencySymbol,\n calculateUSDValue,\n} from '../api/coinbase';\nimport type { MoneyData } from '../types/money';\n\n/**\n * Robust Money class for handling both native and ERC20 token amounts\n */\nexport class Money implements MoneyData {\n readonly value: ethers.BigNumber;\n readonly decimals: number;\n readonly erc20: string;\n readonly symbol: string;\n readonly formatted: string;\n readonly formattedUSD?: string;\n readonly networkId: number;\n\n private constructor(params: {\n value: ethers.BigNumber;\n decimals: number;\n erc20: string;\n symbol: string;\n formattedUSD?: string;\n networkId: number;\n }) {\n this.value = params.value;\n this.decimals = params.decimals;\n this.erc20 = params.erc20;\n this.symbol = params.symbol;\n this.formatted = ethers.utils.formatUnits(params.value, params.decimals);\n this.formattedUSD = params.formattedUSD;\n this.networkId = params.networkId;\n }\n\n /**\n * Create a Money instance - automatically fetches metadata\n */\n static async create(params: {\n value: ethers.BigNumber | string | number;\n networkId: number;\n erc20?: string;\n provider?:\n | ethers.providers.JsonRpcProvider\n | ethers.providers.Web3Provider\n | ethers.providers.JsonRpcSigner;\n fetchUSD?: boolean;\n }): Promise<Money> {\n const {\n value,\n networkId,\n erc20 = ethers.constants.AddressZero,\n provider,\n fetchUSD = true,\n } = params;\n\n const bigNumberValue = ethers.BigNumber.from(value.toString());\n const isNative = erc20 === ethers.constants.AddressZero;\n\n let symbol: string;\n let decimals: number;\n let formattedUSD: string | undefined;\n\n if (isNative) {\n // Native token\n symbol = getNativeCurrencySymbol(networkId);\n decimals = 18; // Native tokens always have 18 decimals\n\n if (fetchUSD) {\n try {\n const usdRate = await getEthToUsdRate(symbol);\n if (usdRate) {\n formattedUSD = calculateUSDValue(BigInt(bigNumberValue.toString()), decimals, usdRate);\n }\n } catch (error) {\n console.debug('Failed to fetch USD rate for native token:', error);\n }\n }\n } else {\n // ERC20 token\n const metadata = await Currency.getERC20Metadata(networkId, erc20, provider);\n symbol = metadata.symbol;\n decimals = metadata.decimals;\n\n if (fetchUSD) {\n try {\n const usdRate = await getERC20ToUSDRate(symbol, erc20);\n if (usdRate) {\n formattedUSD = calculateUSDValue(BigInt(bigNumberValue.toString()), decimals, usdRate);\n }\n } catch (error) {\n console.debug('Failed to fetch USD rate for ERC20:', error);\n }\n }\n }\n\n return new Money({\n value: bigNumberValue,\n decimals,\n erc20,\n symbol,\n formattedUSD,\n networkId,\n });\n }\n\n /**\n * Create a zero-value Money instance\n */\n static async zero(params: {\n networkId: number;\n erc20?: string;\n provider: ethers.providers.JsonRpcProvider | ethers.providers.Web3Provider;\n }): Promise<Money> {\n return Money.create({\n value: 0,\n networkId: params.networkId,\n erc20: params.erc20,\n provider: params.provider,\n fetchUSD: false, // No need to fetch USD for zero value\n });\n }\n\n /**\n * Create from existing Money data (when you already have all the metadata)\n */\n static fromData(data: MoneyData | Omit<MoneyData, 'formatted'>): Money {\n return new Money({\n value: data.value,\n decimals: data.decimals,\n erc20: data.erc20,\n symbol: data.symbol,\n networkId: data.networkId,\n formattedUSD: 'formattedUSD' in data ? data.formattedUSD : undefined,\n });\n }\n\n /**\n * Check if this is an ERC20 token (vs native token)\n */\n isERC20(): boolean {\n return this.erc20 !== ethers.constants.AddressZero;\n }\n\n /**\n * Check if this is a native token\n */\n isNative(): boolean {\n return this.erc20 === ethers.constants.AddressZero;\n }\n\n /**\n * Check if this Money has the same currency as another\n */\n isSameCurrency(other: Money): boolean {\n return this.erc20 === other.erc20 && this.symbol === other.symbol;\n }\n\n /**\n * Add another Money amount (must be same currency)\n */\n add(other: Money): Money {\n if (!this.isSameCurrency(other)) {\n throw new ClientSDKError(\n ErrorCode.INVALID_INPUT,\n `Cannot add different currencies: ${this.symbol} and ${other.symbol}`,\n );\n }\n\n const newValue = this.value.add(other.value);\n const newUSD =\n this.formattedUSD && other.formattedUSD\n ? (parseFloat(this.formattedUSD) + parseFloat(other.formattedUSD)).toFixed(2)\n : this.formattedUSD || other.formattedUSD;\n\n return new Money({\n value: newValue,\n decimals: this.decimals,\n erc20: this.erc20,\n symbol: this.symbol,\n formattedUSD: newUSD,\n networkId: this.networkId,\n });\n }\n\n /**\n * Subtract another Money amount (must be same currency)\n */\n subtract(other: Money): Money {\n if (!this.isSameCurrency(other)) {\n throw new ClientSDKError(\n ErrorCode.INVALID_INPUT,\n `Cannot subtract different currencies: ${this.symbol} and ${other.symbol}`,\n );\n }\n\n if (other.value.gt(this.value)) {\n throw new ClientSDKError(\n ErrorCode.INVALID_INPUT,\n `Cannot subtract ${other.formatted} from ${this.formatted} - would result in negative`,\n );\n }\n\n const newValue = this.value.sub(other.value);\n const newUSD =\n this.formattedUSD && other.formattedUSD\n ? (parseFloat(this.formattedUSD) - parseFloat(other.formattedUSD)).toFixed(2)\n : undefined;\n\n return new Money({\n value: newValue,\n decimals: this.decimals,\n erc20: this.erc20,\n symbol: this.symbol,\n formattedUSD: newUSD,\n networkId: this.networkId,\n });\n }\n\n /**\n * Multiply by a scalar value\n */\n multiply(scalar: number | string): Money {\n const multiplier = ethers.BigNumber.from(Math.floor(Number(scalar) * 1000));\n const newValue = this.value.mul(multiplier).div(1000);\n\n const newUSD = this.formattedUSD\n ? (parseFloat(this.formattedUSD) * Number(scalar)).toFixed(2)\n : undefined;\n\n return new Money({\n value: newValue,\n decimals: this.decimals,\n erc20: this.erc20,\n symbol: this.symbol,\n formattedUSD: newUSD,\n networkId: this.networkId,\n });\n }\n\n /**\n * Multiply by an integer (more precise than multiply for whole numbers)\n */\n multiplyInt(scalar: number): Money {\n const newValue = this.value.mul(scalar);\n\n const newUSD = this.formattedUSD\n ? (parseFloat(this.formattedUSD) * scalar).toFixed(2)\n : undefined;\n\n return new Money({\n value: newValue,\n decimals: this.decimals,\n erc20: this.erc20,\n symbol: this.symbol,\n formattedUSD: newUSD,\n networkId: this.networkId,\n });\n }\n\n /**\n * Compare to another Money amount (must be same currency)\n * Returns: -1 if this < other, 0 if equal, 1 if this > other\n */\n compareTo(other: Money): number {\n if (!this.isSameCurrency(other)) {\n throw new ClientSDKError(\n ErrorCode.INVALID_INPUT,\n `Cannot compare different currencies: ${this.symbol} and ${other.symbol}`,\n );\n }\n\n if (this.value.lt(other.value)) return -1;\n if (this.value.gt(other.value)) return 1;\n return 0;\n }\n\n /**\n * Check if equal to another Money amount\n */\n isEqualTo(other: Money): boolean {\n return this.isSameCurrency(other) && this.value.eq(other.value);\n }\n\n /**\n * Check if greater than another Money amount\n */\n isGreaterThan(other: Money): boolean {\n if (!this.isSameCurrency(other)) {\n throw new ClientSDKError(\n ErrorCode.INVALID_INPUT,\n `Cannot compare different currencies: ${this.symbol} and ${other.symbol}`,\n );\n }\n return this.value.gt(other.value);\n }\n\n /**\n * Check if greater than or equal to another Money amount\n */\n isGreaterThanOrEqual(other: Money): boolean {\n if (!this.isSameCurrency(other)) {\n throw new ClientSDKError(\n ErrorCode.INVALID_INPUT,\n `Cannot compare different currencies: ${this.symbol} and ${other.symbol}`,\n );\n }\n return this.value.gte(other.value);\n }\n\n /**\n * Check if less than another Money amount\n */\n isLessThan(other: Money): boolean {\n if (!this.isSameCurrency(other)) {\n throw new ClientSDKError(\n ErrorCode.INVALID_INPUT,\n `Cannot compare different currencies: ${this.symbol} and ${other.symbol}`,\n );\n }\n return this.value.lt(other.value);\n }\n\n /**\n * Check if less than or equal to another Money amount\n */\n isLessThanOrEqual(other: Money): boolean {\n if (!this.isSameCurrency(other)) {\n throw new ClientSDKError(\n ErrorCode.INVALID_INPUT,\n `Cannot compare different currencies: ${this.symbol} and ${other.symbol}`,\n );\n }\n return this.value.lte(other.value);\n }\n\n /**\n * Check if the value is zero\n */\n isZero(): boolean {\n return this.value.isZero();\n }\n\n /**\n * Check if the value is positive (greater than zero)\n */\n isPositive(): boolean {\n return this.value.gt(0);\n }\n\n /**\n * Clone with updated USD value\n */\n withUSD(formattedUSD: string): Money {\n return new Money({\n value: this.value,\n decimals: this.decimals,\n erc20: this.erc20,\n symbol: this.symbol,\n formattedUSD,\n networkId: this.networkId,\n });\n }\n\n /**\n * Convert to plain object (for backward compatibility)\n */\n toObject(): MoneyData {\n return {\n value: this.value,\n decimals: this.decimals,\n erc20: this.erc20,\n symbol: this.symbol,\n formatted: this.formatted,\n formattedUSD: this.formattedUSD,\n networkId: this.networkId,\n };\n }\n\n /**\n * Format for display with currency symbol\n */\n toDisplayString(includeUSD: boolean = false): string {\n const base = `${this.formatted} ${this.symbol}`;\n if (includeUSD && this.formattedUSD) {\n return `${base} ($${this.formattedUSD})`;\n }\n return base;\n }\n\n /**\n * Get the raw BigNumber value\n */\n get raw(): ethers.BigNumber {\n return this.value;\n }\n}\n\n/**\n * Type guard to check if an object is a Money instance\n */\nexport function isMoney(obj: unknown): obj is Money {\n return obj instanceof Money;\n}\n","import type {\n BlindMintPublicData,\n BlindMintOnchainData,\n BlindMintStatus,\n BlindMintInventory,\n TokenVariation,\n GachaTier,\n ClaimableToken,\n BlindMintTierProbability,\n BlindMintProduct as IBlindMintProduct,\n} from '../types/blindmint';\nimport type { IAccountAdapter, UniversalTransactionRequest } from '../types/account-adapter';\nimport type {\n Product,\n AllocationParams,\n AllocationResponse,\n PreparePurchaseParams,\n PurchaseParams,\n Order,\n ProductMetadata,\n ProductRule,\n ProductProvenance,\n Media,\n InstanceData,\n AudienceRestriction,\n} from '../types/product';\nimport type {\n BlindMintPayload,\n PreparedPurchase,\n TransactionStep,\n TransactionStepExecuteOptions,\n GasBuffer,\n} from '../types/purchase';\nimport type { Address } from '../types/common';\nimport { AppType, AppId } from '../types/common';\nimport type { BlindMintClaimContract } from '../utils/contract-factory';\nimport * as ethers from 'ethers';\n\nimport { createProvider } from '../utils/provider-factory';\nimport { ContractFactory as ContractFactoryClass } from '../utils/contract-factory';\nimport { validateAddress } from '../utils/validation';\nimport { ClientSDKError, ErrorCode } from '../types/errors';\nimport type { InstancePreview } from '@manifoldxyz/studio-apps-client';\nimport { estimateGas } from '../utils/gas-estimation';\nimport { Money } from '../libs/money';\nimport type { Cost } from '../types/money';\nimport type { TransactionReceipt } from '../types/purchase';\n\n/**\n * BlindMint product implementation for mystery/gacha-style NFT mints.\n *\n * BlindMint products allow creators to offer randomized NFTs with different\n * rarity tiers and probabilities. Buyers receive a random NFT from the pool\n * when they mint, with the actual reveal happening either immediately or\n * at a specified time.\n *\n * @remarks\n * - Follows technical spec CON-2729\n * - Uses gachapon-widgets pattern for getClaim parsing\n * - Supports tier-based probability systems\n * - Handles both immediate and delayed reveals\n *\n * @public\n */\nexport class BlindMintProduct implements IBlindMintProduct {\n /**\n * Unique instance ID for this product.\n */\n readonly id: number;\n\n /**\n * Product type identifier (always BLIND_MINT).\n */\n readonly type = AppType.BLIND_MINT;\n\n /**\n * Off-chain product data including metadata and configuration.\n */\n readonly data: InstanceData<BlindMintPublicData>;\n\n /**\n * Preview data for display purposes.\n */\n readonly previewData: InstancePreview;\n\n /**\n * On-chain data (pricing, supply, etc.). Populated after calling fetchOnchainData().\n */\n onchainData?: BlindMintOnchainData;\n\n // Internal state\n private _creatorContract: Address;\n private _extensionAddress: Address;\n private _platformFee?: Money;\n private _httpRPCs?: Record<number, string>;\n\n /**\n * Creates a new BlindMintProduct instance.\n *\n * @param instanceData - Product instance data from the API\n * @param previewData - Preview data for the product\n * @param options - Configuration options\n * @param options.httpRPCs - Custom RPC endpoints by network ID\n *\n * @throws {ClientSDKError} If the app ID doesn't match BLIND_MINT_1155\n *\n * @internal\n */\n constructor(\n instanceData: InstanceData<BlindMintPublicData>,\n previewData: InstancePreview,\n options: {\n httpRPCs?: Record<number, string>;\n } = {},\n ) {\n const { httpRPCs } = options;\n this._httpRPCs = httpRPCs;\n\n // Validate app ID\n if (instanceData.appId !== AppId.BLIND_MINT_1155) {\n throw new ClientSDKError(\n ErrorCode.INVALID_INPUT,\n `Invalid app ID for BlindMint. Expected ${AppId.BLIND_MINT_1155}, received ${instanceData.appId}`,\n { instanceId: String(instanceData.id) },\n );\n }\n\n const publicData = instanceData.publicData;\n\n // Store instance data with properly typed publicData\n this.data = instanceData;\n this.previewData = previewData;\n\n this.id = instanceData.id;\n\n this._creatorContract = publicData.contract.contractAddress;\n this._extensionAddress = publicData.extensionAddress1155.value;\n }\n\n // =============================================================================\n // ONCHAIN DATA FETCHING\n // =============================================================================\n\n /**\n * Fetches and caches on-chain data for the BlindMint product.\n *\n * Retrieves information including:\n * - Total supply and minted count\n * - Pricing information\n * - Wallet limits\n * - Start and end dates\n * - Token variations and probabilities\n *\n * @param force - Force refresh even if data is already cached (default: false)\n * @returns Promise resolving to on-chain data\n *\n * @throws {ClientSDKError} If fetching on-chain data fails\n *\n * @example\n * ```typescript\n * const onchainData = await product.fetchOnchainData();\n * console.log(`Total supply: ${onchainData.totalSupply}`);\n * console.log(`Price: ${onchainData.cost.formatted}`);\n * ```\n *\n * @public\n */\n async fetchOnchainData(force = false): Promise<BlindMintOnchainData> {\n if (this.onchainData && !force) {\n return this.onchainData;\n }\n\n const contract = this._getClaimContract();\n\n try {\n // Use getClaim method like gachapon-widgets\n // Using id as claimIndex\n const claimData = await contract.getClaim(this._creatorContract, this.id);\n\n // Process into BlindMintOnchainData format\n const onchainData = await this._processClaimData(claimData);\n\n // Fetch platform fee from contract and create Money object\n const mintFee = await contract.MINT_FEE();\n const networkId = this.data.publicData.network;\n const provider = createProvider({\n networkId,\n customRpcUrls: this._httpRPCs,\n });\n\n this._platformFee = await Money.create({\n value: mintFee,\n networkId,\n provider,\n fetchUSD: true,\n });\n\n // Cache the result\n this.onchainData = onchainData;\n return onchainData;\n } catch (error) {\n throw new ClientSDKError(ErrorCode.API_ERROR, 'Failed to fetch onchain data', {\n error: (error as Error).message,\n });\n }\n }\n\n /**\n * Prepares a purchase transaction for the BlindMint product.\n *\n * This method:\n * - Validates eligibility (wallet limits, supply, dates)\n * - Calculates total cost including gas\n * - Generates transaction data\n * - Returns prepared transaction steps\n *\n * @param params - Purchase preparation parameters\n * @param params.address - Wallet address making the purchase\n * @param params.recipientAddress - Optional different recipient address\n * @param params.payload - Purchase payload\n * @param params.payload.quantity - Number of tokens to mint (default: 1)\n * @param params.networkId - Optional network ID for cross-chain purchases\n * @param params.gasBuffer - Optional gas buffer configuration\n * @params params.account - Optional, if provided will check if account has sufficient balance to purchase\n *\n * @returns PreparedPurchase object with cost breakdown and transaction steps\n *\n * @throws {ClientSDKError} With error codes:\n * - `INVALID_INPUT` - Invalid address or quantity\n * - `NOT_ELIGIBLE` - Wallet not eligible to purchase\n * - `SOLD_OUT` - Product sold out\n * - `LIMIT_REACHED` - Wallet limit reached\n * - `NOT_STARTED` - Sale hasn't started\n * - `ENDED` - Sale has ended\n * - `INSUFFICIENT_FUNDS` - Insufficient balance\n *\n * @example\n * ```typescript\n * const prepared = await product.preparePurchase({\n * address: '0x123...',\n * payload: { quantity: 2 },\n * gasBuffer: { multiplier: 0.25 } // 25% gas buffer\n * });\n *\n * console.log(`Total cost: ${prepared.cost.total.formatted}`);\n * console.log(`Gas estimate: ${prepared.gasEstimate.formatted}`);\n * ```\n *\n * @public\n */\n async preparePurchase(\n params: PreparePurchaseParams<BlindMintPayload>,\n ): Promise<PreparedPurchase> {\n const { address, payload, account } = params;\n const quantity = payload?.quantity || 1;\n const networkId = this.data.publicData.network;\n const walletAddress = address;\n\n if (!validateAddress(walletAddress)) {\n throw new ClientSDKError(ErrorCode.INVALID_INPUT, 'Invalid wallet address', {\n walletAddress,\n });\n }\n\n // Check status first\n const status = await this.getStatus();\n if (status === 'upcoming') {\n throw new ClientSDKError(ErrorCode.NOT_STARTED, 'Sale has not started', {\n instanceId: String(this.id),\n mintStatus: status,\n });\n }\n if (status === 'ended') {\n throw new ClientSDKError(ErrorCode.ENDED, 'Sale has ended', {\n instanceId: String(this.id),\n mintStatus: status,\n });\n }\n if (status === 'sold-out') {\n throw new ClientSDKError(ErrorCode.SOLD_OUT, 'Product is sold out', {\n instanceId: String(this.id),\n mintStatus: status,\n });\n }\n\n // Check allocations\n const allocations = await this.getAllocations({ recipientAddress: walletAddress });\n if (!allocations.isEligible) {\n throw new ClientSDKError(ErrorCode.NOT_ELIGIBLE, allocations.reason || 'Not eligible');\n }\n if (quantity > allocations.quantity) {\n throw new ClientSDKError(ErrorCode.INVALID_INPUT, 'Quantity exceeds available allocation');\n }\n\n const onchainData = await this.fetchOnchainData();\n const provider = createProvider({\n networkId,\n customRpcUrls: this._httpRPCs,\n });\n\n // Calculate costs\n const productCost = onchainData.cost.multiplyInt(quantity);\n const platformFee = this._platformFee\n ? this._platformFee.multiplyInt(quantity)\n : await Money.zero({ networkId, provider });\n\n // Aggregate costs by currency type\n const costsByToken = new Map<string, Money>();\n\n // Helper to add cost to map\n const addCostToMap = (cost: Money) => {\n if (cost.isPositive()) {\n const key = cost.erc20;\n const existing = costsByToken.get(key);\n costsByToken.set(key, existing ? existing.add(cost) : cost);\n }\n };\n\n addCostToMap(productCost);\n addCostToMap(platformFee);\n\n // Build steps array\n const steps: TransactionStep[] = [];\n\n const contractFactory = new ContractFactoryClass({\n provider,\n networkId,\n });\n\n // Check balances and create approvals for each token type\n for (const [tokenAddress, totalCost] of Array.from(costsByToken.entries())) {\n if (totalCost.isERC20()) {\n const erc20Contract = contractFactory.createERC20Contract(tokenAddress);\n const [balance, currentAllowance] = await Promise.all([\n erc20Contract.balanceOf(walletAddress),\n erc20Contract.allowance(walletAddress, this._extensionAddress),\n ]);\n\n if (balance.lt(totalCost.raw)) {\n throw new ClientSDKError(\n ErrorCode.INSUFFICIENT_FUNDS,\n `Insufficient ${totalCost.symbol} balance. Need ${totalCost.formatted} but have ${ethers.utils.formatUnits(balance, totalCost.decimals)}`,\n );\n }\n\n if (currentAllowance.lt(totalCost.raw)) {\n const approvalStep: TransactionStep = {\n id: `approve-${totalCost.symbol.toLowerCase()}`,\n name: `Approve ${totalCost.symbol} Spending`,\n type: 'approve',\n description: `Approve ${totalCost.formatted} ${totalCost.symbol}`,\n execute: async (\n accountAdapter: IAccountAdapter,\n options?: TransactionStepExecuteOptions,\n ) => {\n await accountAdapter.switchNetwork(networkId);\n\n const gasEstimate = await estimateGas({\n contract: erc20Contract,\n method: 'approve',\n args: [this._extensionAddress, totalCost.raw],\n from: accountAdapter.address,\n fallbackGas: ethers.BigNumber.from(200000),\n });\n\n const gasLimit = this._applyGasBuffer(gasEstimate, params.gasBuffer).toString();\n\n const txRequest: UniversalTransactionRequest = {\n to: tokenAddress,\n data: this._buildApprovalData(this._extensionAddress, totalCost.raw.toString()),\n gasLimit,\n chainId: networkId,\n };\n\n const confirmation = await accountAdapter.sendTransactionWithConfirmation(txRequest, {\n confirmations: options?.confirmations || 1,\n });\n\n const receiptInfo = confirmation.receipt;\n const blockNumber = receiptInfo?.blockNumber ?? confirmation.blockNumber;\n const gasUsedValue = receiptInfo?.gasUsed ?? confirmation.gasUsed;\n const status = receiptInfo?.status ?? confirmation.status ?? 'confirmed';\n\n return {\n networkId,\n step: approvalStep.id,\n txHash: confirmation.hash,\n blockNumber,\n gasUsed: gasUsedValue ? BigInt(gasUsedValue) : undefined,\n status,\n };\n },\n };\n\n steps.push(approvalStep);\n }\n } else {\n // Check native balance using provider\n if (account) {\n const nativeBalance = await account.getBalance(networkId);\n\n if (nativeBalance && nativeBalance.isLessThan(totalCost)) {\n throw new ClientSDKError(\n ErrorCode.INSUFFICIENT_FUNDS,\n `Insufficient ${totalCost.symbol} balance. Need ${totalCost.formatted} but have ${nativeBalance.formatted}`,\n );\n }\n }\n }\n }\n\n // Calculate native payment value for mint transaction\n const nativePaymentValue =\n costsByToken.get(ethers.constants.AddressZero)?.raw || ethers.BigNumber.from(0);\n\n // Build cost breakdown for mint step and enhanced cost\n const nativeCost = costsByToken.get(ethers.constants.AddressZero);\n const erc20Costs = Array.from(costsByToken.entries())\n .filter(([address]) => address !== ethers.constants.AddressZero)\n .map(([, cost]) => cost);\n\n // Build mint step\n const mintCost: { native?: Money; erc20s?: Money[] } = {};\n if (nativeCost) mintCost.native = nativeCost;\n if (erc20Costs.length > 0) mintCost.erc20s = erc20Costs;\n\n const mintStep: TransactionStep = {\n id: 'mint',\n name: 'Mint BlindMint NFTs',\n type: 'mint',\n description: `Mint ${quantity} random NFT(s)`,\n cost: mintCost,\n execute: async (accountAdapter: IAccountAdapter, options?: TransactionStepExecuteOptions) => {\n // This will handle network switch and adding custom network to user wallet if needed\n await accountAdapter.switchNetwork(networkId);\n\n const blindMintContract = contractFactory.createBlindMintContract(this._extensionAddress);\n const gasEstimate = await estimateGas({\n contract: blindMintContract,\n method: 'mintReserve',\n args: [this._creatorContract, this.id, quantity],\n from: accountAdapter.address,\n value: nativePaymentValue,\n fallbackGas: ethers.BigNumber.from(300000),\n });\n const gasLimit = this._applyGasBuffer(gasEstimate, params.gasBuffer).toString();\n const txRequest: UniversalTransactionRequest = {\n to: this._extensionAddress,\n data: this._buildMintData(this._creatorContract, this.id, quantity),\n value: nativePaymentValue.toString(),\n gasLimit,\n chainId: networkId,\n };\n const confirmation = await accountAdapter.sendTransactionWithConfirmation(txRequest, {\n confirmations: options?.confirmations || 1,\n });\n\n const receiptInfo = confirmation.receipt;\n const blockNumber = receiptInfo?.blockNumber ?? confirmation.blockNumber;\n const gasUsedValue = receiptInfo?.gasUsed ?? confirmation.gasUsed;\n const status = receiptInfo?.status ?? confirmation.status ?? 'confirmed';\n\n return {\n networkId,\n step: mintStep.id,\n txHash: confirmation.hash,\n blockNumber,\n gasUsed: gasUsedValue ? BigInt(gasUsedValue) : undefined,\n status,\n };\n },\n };\n\n steps.push(mintStep);\n\n // Build Cost structure (reuse the already computed values)\n const cost: Cost = {\n total: {\n native: nativeCost || (await Money.zero({ networkId, provider })),\n erc20s: erc20Costs,\n },\n breakdown: {\n product: productCost,\n platformFee,\n },\n };\n\n return {\n cost,\n steps,\n isEligible: true,\n };\n }\n\n async purchase(params: PurchaseParams): Promise<Order> {\n const { accountAdapter, preparedPurchase } = params;\n const walletAddress = accountAdapter.address;\n\n // Execute all steps sequentially\n const receipts: TransactionReceipt[] = [];\n\n for (const step of preparedPurchase.steps) {\n try {\n const receipt = await step.execute(accountAdapter);\n receipts.push(receipt);\n } catch (error) {\n // If any step fails, throw error with context\n throw new ClientSDKError(\n ErrorCode.TRANSACTION_FAILED,\n `Transaction failed at step ${step.id}: ${(error as Error).message}`,\n {\n step: step.id,\n receipts, // Include successful receipts\n error: error as Error,\n },\n );\n }\n }\n\n return {\n receipts,\n status: 'completed',\n buyer: { walletAddress },\n total: preparedPurchase.cost,\n items: [],\n };\n }\n\n // =============================================================================\n // HELPER METHODS\n // =============================================================================\n\n private _getClaimContract(): BlindMintClaimContract {\n const networkId = this.data.publicData.network || 1;\n\n // Use configured providers (READ operations)\n const provider = createProvider({\n networkId,\n customRpcUrls: this._httpRPCs,\n });\n\n const factory = new ContractFactoryClass({\n provider,\n networkId,\n });\n return factory.createBlindMintContract(this._extensionAddress);\n }\n\n private async _processClaimData(claimData: {\n storageProtocol: number;\n total: number;\n totalMax: number;\n startDate: number;\n endDate: number;\n startingTokenId: ethers.BigNumber;\n tokenVariations: number;\n location: string;\n paymentReceiver: string;\n cost: ethers.BigNumber;\n erc20: string;\n }): Promise<BlindMintOnchainData> {\n // Handle the actual structure from ABIv2 getClaim\n const cost = ethers.BigNumber.from(claimData.cost);\n const erc20 = claimData.erc20;\n\n // Convert dates from unix seconds\n const convertDate = (unixSeconds: number): Date | undefined => {\n return !unixSeconds ? undefined : new Date(unixSeconds * 1000);\n };\n\n const networkId = this.data.publicData.network;\n const provider = createProvider({\n networkId,\n customRpcUrls: this._httpRPCs,\n });\n\n // Create Money object which will fetch all metadata automatically\n const costMoney = await Money.create({\n value: cost,\n networkId,\n erc20,\n provider,\n fetchUSD: true,\n });\n\n return {\n totalSupply: claimData.totalMax || 0,\n totalMinted: claimData.total || 0,\n startDate: convertDate(claimData.startDate),\n endDate: convertDate(claimData.endDate),\n audienceType: 'None', // Will be updated based on merkle root if needed\n cost: costMoney,\n paymentReceiver: claimData.paymentReceiver,\n tokenVariations: claimData.tokenVariations,\n startingTokenId: claimData.startingTokenId ? claimData.startingTokenId.toString() : '0',\n };\n }\n\n // =============================================================================\n // PRODUCT INTERFACE IMPLEMENTATION\n // =============================================================================\n\n async getStatus(): Promise<BlindMintStatus> {\n const onchainData = await this.fetchOnchainData();\n const now = Date.now();\n if (onchainData.startDate && now < onchainData.startDate.getTime()) {\n return 'upcoming';\n }\n if (onchainData.endDate && now > onchainData.endDate.getTime()) {\n return 'ended';\n }\n if (onchainData.totalSupply && onchainData.totalMinted >= onchainData.totalSupply) {\n return 'sold-out';\n }\n return 'active';\n }\n\n async getAllocations(params: AllocationParams): Promise<AllocationResponse> {\n const { recipientAddress } = params;\n if (!validateAddress(recipientAddress)) {\n throw new ClientSDKError(ErrorCode.INVALID_INPUT, 'Invalid recipient address', {\n walletAddress: recipientAddress,\n });\n }\n\n const onchainData = await this.fetchOnchainData();\n\n // Calculate available quantity\n let quantity = Number.MAX_SAFE_INTEGER;\n if (onchainData.totalSupply) {\n const remaining = onchainData.totalSupply - onchainData.totalMinted;\n quantity = Math.min(quantity, remaining);\n }\n\n return { isEligible: true, quantity };\n }\n\n // =============================================================================\n // HELPER METHODS\n // =============================================================================\n\n private async _estimateGas(\n from: string,\n _to: string,\n quantity: number,\n value: ethers.BigNumber,\n ): Promise<ethers.BigNumber> {\n const contract = this._getClaimContract();\n\n // Use proper mintReserve signature with indices and proofs\n const mintIndices: number[] = [];\n const merkleProofs: string[][] = [];\n\n return await estimateGas({\n contract,\n method: 'mintReserve',\n args: [this._creatorContract, this.id, quantity, mintIndices, merkleProofs],\n from,\n value,\n fallbackGas: ethers.BigNumber.from(200000),\n });\n }\n\n // =============================================================================\n // OTHER PRODUCT METHODS (simplified for now)\n // =============================================================================\n\n async getInventory(): Promise<BlindMintInventory> {\n const onchainData = await this.fetchOnchainData();\n return {\n totalSupply:\n onchainData.totalSupply === Number.MAX_SAFE_INTEGER ? -1 : onchainData.totalSupply,\n totalPurchased: onchainData.totalMinted,\n };\n }\n\n async getRules(): Promise<ProductRule> {\n const onchainData = await this.fetchOnchainData();\n return {\n startDate: onchainData.startDate,\n endDate: onchainData.endDate,\n audienceRestriction: onchainData.audienceType as AudienceRestriction,\n };\n }\n\n async getProvenance(): Promise<ProductProvenance> {\n const publicData = this.data.publicData;\n return {\n creator: {\n id: this.data.creator.id.toString(),\n slug: this.data.creator.slug || '',\n address: this.data.creator.address || '',\n name: this.data.creator.name,\n },\n contract: {\n id: publicData.contract.id,\n networkId: publicData.contract.networkId,\n contractAddress: publicData.contract.contractAddress,\n name: publicData.contract.name,\n symbol: publicData.contract.symbol,\n spec: publicData.contract.spec,\n },\n networkId: publicData.network,\n };\n }\n\n async getMetadata(): Promise<ProductMetadata> {\n return {\n name: this.data.publicData.name || this.previewData.title || '',\n description: this.data.publicData.description || this.previewData.description || '',\n };\n }\n\n async getPreviewMedia(): Promise<Media | undefined> {\n // Use previewData for media\n if (this.previewData.thumbnail) {\n return {\n image: this.previewData.thumbnail,\n imagePreview: this.previewData.thumbnail,\n };\n }\n return undefined;\n }\n\n // =============================================================================\n // BLINDMINT-SPECIFIC METHODS\n // =============================================================================\n\n async getTokenVariations(): Promise<TokenVariation[]> {\n const onchainData = await this.fetchOnchainData();\n const publicData = this.data.publicData;\n\n return publicData.pool.map((item) => ({\n tokenId: parseInt(onchainData.startingTokenId) + (item.seriesIndex - 1), // seriesIndex is 1-based\n metadata: item.metadata,\n tier: this._getTierForIndex(item.seriesIndex - 1, publicData.tierProbabilities),\n rarityScore: this._calculateRarityScore(item.seriesIndex - 1),\n }));\n }\n\n async getTierProbabilities(): Promise<GachaTier[]> {\n const publicData = this.data.publicData;\n if (!publicData.tierProbabilities || publicData.tierProbabilities.length === 0) {\n return [];\n }\n\n // Convert array format to GachaTier[]\n return publicData.tierProbabilities.map((tier) => ({\n id: tier.group,\n name: tier.group,\n probability: tier.rate,\n tokenIds: tier.indices,\n metadata: {},\n }));\n }\n\n async getClaimableTokens(walletAddress: Address): Promise<ClaimableToken[]> {\n // Check if wallet has any claimable tokens\n const allocations = await this.getAllocations({ recipientAddress: walletAddress });\n if (!allocations.isEligible) {\n return [];\n }\n\n // For BlindMint, all tokens in pool are potentially claimable\n const variations = await this.getTokenVariations();\n return variations.map((v) => ({\n tokenId: v.tokenId,\n metadata: v.metadata,\n tier: v.tier,\n isClaimable: true,\n proofs: [], // No merkle proofs for standard BlindMint\n }));\n }\n\n async estimateMintGas(quantity: number, walletAddress: Address): Promise<bigint> {\n const onchainData = await this.fetchOnchainData();\n const totalValue = this._calculateTotalCost(quantity, onchainData);\n\n const gasEstimate = await this._estimateGas(\n walletAddress,\n walletAddress,\n quantity,\n ethers.BigNumber.from(totalValue.toString()),\n );\n\n return BigInt(gasEstimate.toString());\n }\n\n // =============================================================================\n // HELPER METHODS\n // =============================================================================\n\n private _getTierForIndex(index: number, tierProbs: BlindMintTierProbability[]): string {\n if (tierProbs && tierProbs.length > 0) {\n for (const tierProb of tierProbs) {\n if (tierProb.indices.includes(index)) {\n return tierProb.group;\n }\n }\n }\n return 'Common';\n }\n\n private _calculateRarityScore(_index: number): number {\n // Simple rarity calculation\n return Math.floor(Math.random() * 100);\n }\n\n private _calculateTotalCost(quantity: number, onchainData: BlindMintOnchainData): bigint {\n const mintCost = BigInt(onchainData.cost.value.toString()) * BigInt(quantity);\n const platformFee = BigInt(this._platformFee?.value.toString() || '0') * BigInt(quantity);\n return mintCost + platformFee;\n }\n\n private _applyGasBuffer(gasEstimate: ethers.BigNumber, gasBuffer?: GasBuffer): ethers.BigNumber {\n if (!gasBuffer) {\n return gasEstimate;\n }\n return gasBuffer.fixed\n ? gasEstimate.add(gasBuffer.fixed)\n : gasEstimate.mul(gasBuffer.multiplier || 120).div(100);\n }\n\n /**\n * Build ERC-20 approval transaction data\n */\n private _buildApprovalData(spender: string, amount: string): string {\n const approvalInterface = new ethers.utils.Interface([\n 'function approve(address spender, uint256 amount)',\n ]);\n return approvalInterface.encodeFunctionData('approve', [spender, amount]);\n }\n\n /**\n * Build mint transaction data\n */\n private _buildMintData(creatorContract: string, instanceId: number, quantity: number): string {\n // Using the actual mint function signature from the contract\n const mintInterface = new ethers.utils.Interface([\n 'function mintReserve(address creatorContractAddress,uint256 instanceId,uint32 mintCount)',\n ]);\n return mintInterface.encodeFunctionData('mintReserve', [creatorContract, instanceId, quantity]);\n }\n\n /**\n * Calculate gas limit with buffer for adapter transactions\n */\n}\n\n// Export the implementation class as BlindMintProductImpl for tests\nexport { BlindMintProduct as BlindMintProductImpl };\n\n// Factory function\nexport function createBlindMintProduct(\n instanceData: InstanceData<BlindMintPublicData>,\n previewData: InstancePreview = {} as InstancePreview,\n options: { httpRPCs?: Record<number, string> } = {},\n): BlindMintProduct {\n return new BlindMintProduct(instanceData, previewData, options);\n}\n\n// Type guard\nexport function isBlindMintProduct(product: Product): product is IBlindMintProduct {\n return product?.type === AppType.BLIND_MINT;\n}\n","import type { InstancePreview, PublicInstance } from '@manifoldxyz/studio-apps-client';\nimport { StudioAppsClientForPublic } from '@manifoldxyz/studio-apps-client';\nimport { ClientSDKError, ErrorCode } from '../types/errors';\n\n/**\n * Manifold API client using @manifoldxyz/studio-apps-client package\n * as per CON-2729 feedback\n */\nexport class ManifoldApiClient {\n private studioClient: StudioAppsClientForPublic;\n\n constructor() {\n // Initialize Studio Apps Client for public access\n const baseUrl = 'https://apps.api.manifoldxyz.dev';\n this.studioClient = new StudioAppsClientForPublic({\n baseUrl,\n });\n }\n\n /**\n * Fetch both instance and preview data in parallel\n */\n async getCompleteInstanceData<T>(\n instanceId: string,\n options?: {\n maxMediaWidth: number;\n },\n ): Promise<{\n instanceData: PublicInstance<T>;\n previewData: InstancePreview;\n }> {\n // Fetch both in parallel for performance\n const [instanceData, previewDatas] = (await Promise.all([\n this.studioClient.public.getInstance({\n instanceId: Number(instanceId),\n maxMediaWidth: options?.maxMediaWidth,\n }),\n this.studioClient.public.getPreviews({\n instanceIds: [parseInt(instanceId)],\n }),\n ])) as [PublicInstance<T>, { instancePreviews: InstancePreview[] }];\n const previewData = previewDatas.instancePreviews[0];\n\n if (!instanceData) {\n throw new ClientSDKError(ErrorCode.NOT_FOUND, `Instance with ID ${instanceId} not found`);\n }\n if (!previewData) {\n throw new ClientSDKError(\n ErrorCode.NOT_FOUND,\n `Preview data for instance ID ${instanceId} not found`,\n );\n }\n\n return { instanceData, previewData } as {\n instanceData: PublicInstance<T>;\n previewData: InstancePreview;\n };\n }\n}\n\n// Global client instance for testing\nlet globalClient: ManifoldApiClient | null = null;\n\n/**\n * Factory function to create Manifold API client\n */\nexport function createManifoldApiClient(): ManifoldApiClient {\n return new ManifoldApiClient();\n}\n\n/**\n * Get or create global API client instance\n */\nexport function getManifoldApiClient(): ManifoldApiClient {\n if (!globalClient) {\n globalClient = createManifoldApiClient();\n }\n return globalClient;\n}\n\n/**\n * Reset global API client instance (for testing)\n */\nexport function resetManifoldApiClient(): void {\n globalClient = null;\n}\n","import type { ClientConfig, ManifoldClient, WorkspaceProductsOptions } from '../types/client';\nimport type { Product, InstanceData, BlindMintPublicData } from '../types/product';\nimport type { NetworkId } from '../types/common';\nimport { ClientSDKError, ErrorCode } from '../types/errors';\nimport { AppId } from '../types/common';\nimport { BlindMintProduct } from '../products/blindmint';\nimport { validateInstanceId, parseManifoldUrl } from '../utils/validation';\nimport { createManifoldApiClient } from '../api/manifold-api';\nimport * as ethers from 'ethers';\nimport { getNetworkConfig } from '../config/networks';\n\n/**\n * Type guard to check if instanceData is for BlindMint product type.\n *\n * @internal\n * @param instanceData - The instance data to check\n * @returns True if the instance data is for a BlindMint product\n *\n * @example\n * ```typescript\n * if (isBlindMintInstanceData(instanceData)) {\n * // TypeScript now knows this is InstanceData<BlindMintPublicData>\n * const blindMintData = instanceData.publicData;\n * }\n * ```\n */\nfunction isBlindMintInstanceData(\n instanceData: InstanceData<unknown>,\n): instanceData is InstanceData<BlindMintPublicData> {\n return (instanceData.appId as AppId) === AppId.BLIND_MINT_1155;\n}\n\n/**\n * Creates a new Manifold SDK client instance for interacting with Manifold products.\n *\n * The client provides methods to fetch product data, check eligibility, prepare purchases,\n * and execute transactions for NFT products on the Manifold platform.\n *\n * @param config - Optional configuration object for the client\n * @param config.httpRPCs - Custom RPC URLs by network ID. Required for transaction execution.\n * Example: `{ 1: \"https://eth-mainnet.g.alchemy.com/v2/YOUR_KEY\" }`\n * @param config.debug - Enable debug logging for troubleshooting (default: false)\n *\n * @returns A configured ManifoldClient instance\n *\n * @example\n * ```typescript\n * // Basic client without custom RPCs (read-only operations)\n * const client = createClient();\n *\n * // Client with custom RPC endpoints for transaction support\n * const client = createClient({\n * httpRPCs: {\n * 1: \"https://eth-mainnet.g.alchemy.com/v2/YOUR_KEY\",\n * 8453: \"https://base-mainnet.infura.io/v3/YOUR_KEY\",\n * 10: \"https://optimism-mainnet.infura.io/v3/YOUR_KEY\"\n * },\n * debug: true // Enable debug logging\n * });\n * ```\n *\n * @remarks\n * - No API keys are required for basic product data fetching\n * - Custom RPC endpoints are required for purchase transactions\n * - The client automatically handles network switching for cross-chain purchases\n *\n * @public\n */\nexport function createClient(config?: ClientConfig): ManifoldClient {\n const httpRPCs = config?.httpRPCs ?? {};\n\n // Create JsonRpcProvider instances if httpRPCs is defined\n const providers: Record<NetworkId, ethers.providers.JsonRpcProvider> = {};\n if (httpRPCs && Object.keys(httpRPCs).length > 0) {\n for (const [networkIdStr, rpcUrl] of Object.entries(httpRPCs)) {\n const networkId = Number(networkIdStr);\n const networkConfig = getNetworkConfig(networkId);\n providers[networkId] = new ethers.providers.JsonRpcProvider(rpcUrl as string, {\n name: networkConfig?.name ?? `network-${networkId}`,\n chainId: networkConfig?.chainId ?? networkId,\n });\n }\n }\n\n // Initialize Manifold API client with Studio Apps Client\n const manifoldApi = createManifoldApiClient();\n\n return {\n providers,\n /**\n * Fetches detailed product information from Manifold.\n *\n * This method retrieves complete product data including metadata, pricing,\n * inventory, and configuration for Edition, Burn/Redeem, or BlindMint products.\n *\n * @param instanceIdOrUrl - Either a Manifold instance ID or a full Manifold product URL\n * @returns A Promise that resolves to a Product object (EditionProduct, BurnRedeemProduct, or BlindMintProduct)\n *\n * @throws {ClientSDKError} With error codes:\n * - `INVALID_INPUT` - Invalid URL format or instance ID\n * - `NOT_FOUND` - Product not found\n * - `UNSUPPORTED_PRODUCT_TYPE` - Product type not yet supported by SDK\n * - `API_ERROR` - Failed to fetch product data from API\n *\n * @example\n * ```typescript\n * // Using instance ID\n * const product = await client.getProduct('4150231280');\n *\n * // Using full Manifold URL\n * const product = await client.getProduct('https://manifold.xyz/@creator/id/4150231280');\n *\n * // Check product type\n * if (product.type === AppType.Edition) {\n * console.log('Edition product:', product.data.publicData.title);\n * }\n * ```\n *\n * @public\n */\n async getProduct(instanceIdOrUrl: string): Promise<Product> {\n let instanceId: string;\n\n // Parse URL if provided\n if (instanceIdOrUrl.includes('manifold.xyz')) {\n const parsed = parseManifoldUrl(instanceIdOrUrl);\n if (!parsed) {\n throw new ClientSDKError(ErrorCode.INVALID_INPUT, 'Invalid Manifold URL format');\n }\n instanceId = parsed.instanceId;\n } else {\n instanceId = instanceIdOrUrl;\n }\n\n // Validate instance ID\n if (!validateInstanceId(instanceId)) {\n throw new ClientSDKError(ErrorCode.INVALID_INPUT, 'Invalid instance ID format');\n }\n\n try {\n // Fetch both instance and preview data using Studio Apps Client\n const { instanceData, previewData } = await manifoldApi.getCompleteInstanceData(\n instanceId,\n { maxMediaWidth: 1024 },\n );\n\n // Create BlindMint product if it matches the app ID or name\n if (isBlindMintInstanceData(instanceData)) {\n // TypeScript now knows instanceData is InstanceData<BlindMintPublicData>\n // Create BlindMintProduct with both instance and preview data\n // Following technical spec pattern\n return new BlindMintProduct(instanceData, previewData, {\n httpRPCs,\n });\n }\n\n // For other product types, throw an error until implemented\n throw new ClientSDKError(\n ErrorCode.UNSUPPORTED_PRODUCT_TYPE,\n `Product type ${instanceData.appId} is not yet supported`,\n );\n } catch (error) {\n console.log('error', error);\n // Re-throw SDK errors\n if (error instanceof ClientSDKError) {\n throw error;\n }\n\n throw new ClientSDKError(\n ErrorCode.API_ERROR,\n `Failed to fetch product data for ${instanceId}: ${(error as Error).message}`,\n { instanceId, originalError: (error as Error).message },\n );\n }\n },\n\n /**\n * Fetches products from a specific Manifold workspace.\n *\n * Retrieves a list of products created by a workspace, with optional filtering\n * and pagination capabilities.\n *\n * @param workspaceId - The workspace identifier (found in Manifold Studio)\n * @param options - Optional query parameters for filtering and pagination\n * @param options.limit - Number of results to return (1-100, default: 50)\n * @param options.offset - Number of results to skip for pagination\n * @param options.sort - Sort order: 'latest' or 'oldest' (default: 'latest')\n * @param options.networkId - Filter by specific network ID (e.g., 1 for Ethereum, 8453 for Base)\n * @param options.type - Filter by product type: 'edition', 'burn-redeem', or 'blind-mint'\n *\n * @returns A Promise that resolves to an array of Product objects\n *\n * @throws {ClientSDKError} With error codes:\n * - `INVALID_INPUT` - Invalid options (e.g., limit out of range)\n * - `NOT_FOUND` - Workspace not found\n * - `API_ERROR` - Failed to fetch workspace products\n *\n * @example\n * ```typescript\n * // Get latest 10 products from a workspace\n * const products = await client.getProductsByWorkspace('workspace123', {\n * limit: 10,\n * sort: 'latest'\n * });\n *\n * // Get Edition products on Base network\n * const baseEditions = await client.getProductsByWorkspace('workspace123', {\n * type: 'edition',\n * networkId: 8453\n * });\n *\n * // Paginate through products\n * const page2 = await client.getProductsByWorkspace('workspace123', {\n * limit: 20,\n * offset: 20\n * });\n * ```\n *\n * @public\n */\n async getProductsByWorkspace(\n _workspaceId: string,\n options?: WorkspaceProductsOptions,\n ): Promise<Product[]> {\n // Validate options\n if (options?.limit !== undefined && (options.limit < 1 || options.limit > 100)) {\n throw new ClientSDKError(ErrorCode.INVALID_INPUT, 'Limit must be between 1 and 100');\n }\n\n // TODO: Implement with Studio Apps Client\n throw new ClientSDKError(\n ErrorCode.UNSUPPORTED_PRODUCT_TYPE,\n 'getProductsByWorkspace is not yet implemented',\n );\n },\n };\n}\n","import type { NetworkId } from '../types/common';\nimport { NETWORK_CONFIGS } from '../config/networks';\nimport { ClientSDKError, ErrorCode } from '../types/errors';\nimport { Network } from '@manifoldxyz/js-ts-utils';\n\nexport interface PollOptions<T> {\n fetch: () => Promise<T>;\n validate: (value: T) => boolean;\n intervalMs?: number;\n maxAttempts?: number;\n errorMessage?: string;\n}\n\nexport async function poll<T>(options: PollOptions<T>): Promise<T> {\n const {\n fetch,\n validate,\n intervalMs = 500,\n maxAttempts = 20,\n errorMessage = 'Polling condition not satisfied within timeout',\n } = options;\n\n let attempts = 0;\n while (attempts < maxAttempts) {\n const value = await fetch();\n if (validate(value)) {\n return value;\n }\n\n attempts += 1;\n if (attempts >= maxAttempts) {\n break;\n }\n await new Promise((resolve) => setTimeout(resolve, intervalMs));\n }\n\n throw new ClientSDKError(ErrorCode.TIMEOUT, errorMessage);\n}\n\nfunction getNetworkDisplayName(networkId: NetworkId): string {\n const config = NETWORK_CONFIGS[networkId];\n return config?.name ?? `Chain ${networkId}`;\n}\n\nexport interface NetworkConfigs {\n chainId: string;\n chainName: string;\n nativeCurrency: {\n name: string;\n symbol: string;\n decimals: number;\n };\n rpcUrls: string[];\n blockExplorerUrls: string[];\n}\n\nexport interface EnsureConnectedNetworkOptions {\n getConnectedNetwork: () => Promise<number>;\n switchNetwork: (networkId: number) => Promise<void>;\n addNetwork: (networkConfig: NetworkConfigs) => Promise<void>;\n targetNetworkId: NetworkId;\n pollIntervalMs?: number;\n maxAttempts?: number;\n}\n\nexport async function ensureConnectedNetwork(\n options: EnsureConnectedNetworkOptions,\n): Promise<void> {\n const {\n getConnectedNetwork,\n switchNetwork,\n addNetwork,\n targetNetworkId,\n pollIntervalMs = 500,\n maxAttempts = 20,\n } = options;\n\n const networkName = getNetworkDisplayName(targetNetworkId);\n\n const throwEnsureError = async (message: string, originalError?: unknown): Promise<never> => {\n const actualNetworkId = await getConnectedNetwork();\n\n throw new ClientSDKError(ErrorCode.WRONG_NETWORK, message, {\n expectedNetworkId: targetNetworkId,\n actualNetworkId,\n originalError: originalError instanceof Error ? originalError : undefined,\n });\n };\n\n try {\n await switchNetwork(targetNetworkId);\n } catch (switchError) {\n console.error(switchError);\n const code = (switchError as { code?: unknown })?.code;\n\n if (code === 4902) {\n try {\n const networkConfigs = Network.NETWORK_CONFIGS[targetNetworkId as Network.NetworkId];\n if (networkConfigs) {\n const params = {\n chainId: `0x${targetNetworkId.toString(16)}`,\n chainName: networkConfigs.chainName,\n nativeCurrency: networkConfigs.nativeCurrency,\n rpcUrls: networkConfigs.rpcUrls,\n blockExplorerUrls: networkConfigs.blockExplorerUrls,\n };\n await addNetwork(params);\n // await accountAdapter.sendCalls?.('wallet_addEthereumChain', [params]);\n }\n // try switching network again\n await switchNetwork(targetNetworkId);\n } catch (addNetworkError) {\n const message =\n addNetworkError instanceof Error && addNetworkError.message\n ? addNetworkError.message\n : `Failed to switch to the ${networkName} network`;\n await throwEnsureError(message, addNetworkError);\n }\n } else {\n const message =\n switchError instanceof Error && switchError.message\n ? switchError.message\n : `Failed to switch to the ${networkName} network`;\n await throwEnsureError(message, switchError);\n }\n }\n\n try {\n await poll<number>({\n fetch: () => getConnectedNetwork(),\n validate: (value) => value === targetNetworkId,\n intervalMs: pollIntervalMs,\n maxAttempts,\n errorMessage: `Failed to confirm network switch to ${networkName}`,\n });\n } catch (confirmationError) {\n const message =\n confirmationError instanceof Error && confirmationError.message\n ? confirmationError.message\n : `Failed to confirm network switch to ${networkName}`;\n await throwEnsureError(message, confirmationError);\n }\n}\n","import { ethers } from 'ethers';\nimport type {\n IAccountAdapter,\n UniversalTransactionRequest,\n UniversalTransactionResponse,\n AdapterType,\n} from '../types/account-adapter';\nimport { Money } from '../libs/money';\nimport { ClientSDKError, ErrorCode } from '../types/errors';\nimport { checkERC20Balance } from '../utils/gas-estimation';\nimport type { ManifoldClient } from '../types';\nimport { ensureConnectedNetwork } from '../utils';\nimport type { NetworkConfigs } from '../utils/transactions';\n\n// =============================================================================\n// ERC-20 CONSTANTS\n// =============================================================================\n\n/**\n * Standard ERC-20 ABI fragments for balance and metadata queries\n * Note: Currently using utility functions from gas-estimation.ts\n */\n// const ERC20_ABI = [\n// 'function balanceOf(address owner) view returns (uint256)',\n// 'function decimals() view returns (uint8)',\n// 'function symbol() view returns (string)',\n// ] as const;\n\n// =============================================================================\n// ETHERS V5 ADAPTER IMPLEMENTATION\n// =============================================================================\n\n/**\n * Account adapter implementation for ethers.js v5.x\n *\n * Provides a unified interface for wallet operations across different Web3 libraries.\n * This adapter specifically handles ethers v5 Provider and Signer instances.\n *\n * @example\n * ```typescript\n * import { ethers } from 'ethers'; // v5\n * import { Ethers5Adapter } from '@manifoldxyz/client-sdk/adapters';\n *\n * // Browser wallet (MetaMask, etc.)\n * const provider = new ethers.providers.Web3Provider(window.ethereum);\n * const signer = provider.getSigner();\n * const adapter = new Ethers5Adapter(client, { signer });\n *\n * // Private key wallet (server-side)\n * const wallet = new ethers.Wallet(privateKey, provider);\n * const adapter = new Ethers5Adapter(client, { wallet });\n *\n * // Use unified interface for purchases\n * const balance = await adapter.getBalance();\n * const tx = await adapter.sendTransaction(txRequest);\n * ```\n *\n * @public\n */\nexport class Ethers5Adapter implements IAccountAdapter {\n readonly adapterType: AdapterType = 'ethers5';\n\n private _signer: ethers.providers.JsonRpcSigner | undefined;\n private _wallet: ethers.Wallet | undefined;\n private _client: ManifoldClient;\n readonly address: string;\n\n /**\n * Initialize adapter with ethers v5 provider or signer.\n *\n * @param client - The ManifoldClient instance\n * @param provider - Provider configuration\n * @param provider.signer - ethers v5 JsonRpcSigner (for browser wallets)\n * @param provider.wallet - ethers v5 Wallet (for private key wallets)\n *\n * @throws {ClientSDKError} When:\n * - Neither signer nor wallet is provided\n * - Both signer and wallet are provided\n *\n * @example\n * ```typescript\n * // Browser wallet\n * const signer = provider.getSigner();\n * const adapter = new Ethers5Adapter(client, { signer });\n *\n * // Private key wallet\n * const wallet = new ethers.Wallet(privateKey);\n * const adapter = new Ethers5Adapter(client, { wallet });\n * ```\n */\n constructor(\n client: ManifoldClient,\n provider: {\n signer?: ethers.providers.JsonRpcSigner;\n wallet?: ethers.Wallet;\n },\n ) {\n const { signer, wallet } = provider;\n\n this._client = client;\n if (!signer && !wallet) {\n throw new ClientSDKError(ErrorCode.INVALID_INPUT, 'Signer or wallet is required');\n }\n if (signer && wallet) {\n throw new ClientSDKError(\n ErrorCode.INVALID_INPUT,\n 'Provide either signer or wallet, not both',\n );\n }\n if (wallet) {\n this._wallet = wallet;\n }\n if (signer) {\n this._signer = signer;\n }\n this.address = this._signer?._address || this._wallet?.address || '';\n }\n\n // Optionally specify a networkId to ensure the provider is on the correct network\n async getProvider(networkId?: number) {\n if (!networkId) {\n // We don't care about the networkId of the provider\n const provider = this._signer || this._wallet;\n if (!provider)\n throw new ClientSDKError(\n ErrorCode.UNKNOWN_ERROR,\n `Unknown error, could not locate provider`,\n );\n return provider;\n }\n // We do care about the networkId of the provider, need to ensure we are on the correct network\n const signer = this._signer;\n if (signer) {\n await this.switchNetwork(networkId);\n return signer;\n }\n const wallet = this._wallet;\n if (!wallet) {\n throw new ClientSDKError(ErrorCode.UNKNOWN_ERROR, `Unknown error, could not locate wallet`);\n }\n // Make sure the wallet is connected to the proper rpc\n const provider = this._client.providers?.[networkId];\n if (!provider) {\n throw new ClientSDKError(\n ErrorCode.MISSING_RPC_URL,\n `Missing RPC Url for networkId ${networkId}`,\n );\n }\n return wallet.connect(provider);\n }\n\n /**\n * Get wallet address (cached after first call)\n */\n async getAddress(): Promise<string> {\n return this._wallet?.address || this._signer!.getAddress();\n }\n\n /**\n * Send a transaction through the connected wallet\n *\n * @param request - Universal transaction request\n * @returns Promise resolving to universal transaction response\n * @throws {ClientSDKError} When transaction fails or is rejected\n */\n async sendTransaction(request: UniversalTransactionRequest): Promise<string> {\n const { chainId } = request;\n try {\n const provider = await this.getProvider(chainId);\n // Convert universal request to ethers v5 transaction request\n const ethersRequest = this._convertToEthersRequest(request);\n\n // Send transaction\n const tx = await provider.sendTransaction(ethersRequest);\n\n return tx.hash;\n } catch (error) {\n throw this._wrapError(error, 'sendTransaction', { request });\n }\n }\n\n async sendTransactionWithConfirmation(\n request: UniversalTransactionRequest,\n options: { confirmations?: number } = {},\n ): Promise<UniversalTransactionResponse> {\n const confirmations = options.confirmations ?? 1;\n const { chainId } = request;\n\n try {\n const provider = await this.getProvider(chainId);\n const ethersRequest = this._convertToEthersRequest(request);\n const tx = await provider.sendTransaction(ethersRequest);\n const receipt = await tx.wait(confirmations);\n return this._convertToUniversalResponse(tx, receipt);\n } catch (error) {\n const replacementReceipt = await this._handleReplacementTransaction(error, confirmations);\n if (replacementReceipt) {\n return this._createResponseFromReceipt(replacementReceipt, request, chainId);\n }\n\n throw this._wrapError(error, 'sendTransactionWithConfirmation', { request, confirmations });\n }\n }\n\n /**\n * Get token balance for connected wallet\n *\n * @param tokenAddress - ERC-20 token address (optional, defaults to native token)\n * @returns Promise resolving to Money instance with balance\n * @throws {ClientSDKError} When balance query fails\n */\n async getBalance(networkId: number, tokenAddress?: string): Promise<Money> {\n try {\n let networkProvider:\n | ethers.providers.JsonRpcSigner\n | ethers.providers.JsonRpcProvider\n | undefined = this._client?.providers?.[networkId];\n if (!networkProvider) {\n // Try using signer provider\n await this.switchNetwork(networkId);\n networkProvider = this._signer;\n }\n if (!networkProvider) {\n throw new ClientSDKError(\n ErrorCode.UNKNOWN_ERROR,\n `Missing network provider for networkId ${networkId}`,\n );\n }\n if (!tokenAddress || tokenAddress === ethers.constants.AddressZero) {\n const address = await this.getAddress()\n // Get native token balance\n const balance = await (\n networkProvider as ethers.providers.JsonRpcSigner\n ).provider.getBalance(address);\n\n return Money.create({\n value: balance,\n networkId,\n fetchUSD: true,\n });\n } else {\n // Get ERC-20 token balance\n const balance = await checkERC20Balance(tokenAddress, this.address, networkProvider);\n\n return Money.create({\n value: balance,\n networkId,\n erc20: tokenAddress,\n provider: this._signer,\n fetchUSD: true,\n });\n }\n } catch (error) {\n console.error(error);\n throw this._wrapError(error, 'getBalance', { tokenAddress });\n }\n }\n\n /**\n * Switch to a different network\n *\n * @param chainId - Target network ID to switch to\n * @returns Promise resolving when network switch is complete\n * @throws {ClientSDKError} When network switch fails or is rejected\n */\n async switchNetwork(chainId: number): Promise<void> {\n if (this._wallet) {\n return;\n }\n const signer = this._signer;\n if (signer) {\n try {\n await ensureConnectedNetwork({\n getConnectedNetwork: () => signer.getChainId(),\n switchNetwork: () =>\n signer.provider.send('wallet_switchEthereumChain', [\n { chainId: `0x${chainId.toString(16)}` },\n ]),\n addNetwork: (networkConfig: NetworkConfigs) =>\n signer.provider.send('wallet_addEthereumChain', [networkConfig]),\n targetNetworkId: chainId,\n });\n } catch (error) {\n throw this._wrapError(error, 'switchNetwork', { chainId });\n }\n }\n }\n\n /**\n * Sign a message with the connected wallet\n *\n * @param message - Message to sign\n * @returns Promise resolving to signature string\n * @throws {ClientSDKError} When signing fails or is rejected\n */\n async signMessage(message: string): Promise<string> {\n const provider = await this.getProvider();\n try {\n return provider.signMessage(message);\n } catch (error) {\n throw this._wrapError(error, 'signMessage', { message });\n }\n }\n\n /**\n * Send raw RPC calls to the wallet provider\n * Useful for wallet-specific methods like adding custom networks, tokens, etc.\n *\n * @param method - RPC method name (e.g., 'wallet_addEthereumChain')\n * @param params - Method parameters\n * @returns Promise resolving to the RPC response\n * @throws {ClientSDKError} When RPC call fails or is not supported\n */\n async sendCalls(method: string, params?: unknown[]): Promise<unknown> {\n if (this._wallet) {\n return;\n }\n if (this._signer) {\n try {\n const signerProvider = this._signer.provider;\n return signerProvider.send(method, params as unknown[]);\n } catch (error) {\n throw this._wrapError(error, 'sendCalls', { method, params });\n }\n }\n return;\n }\n\n // =============================================================================\n // PRIVATE HELPER METHODS\n // =============================================================================\n\n /**\n * Convert universal transaction request to ethers v5 format\n */\n private _convertToEthersRequest(\n request: UniversalTransactionRequest,\n ): ethers.providers.TransactionRequest {\n const ethersRequest: ethers.providers.TransactionRequest = {\n to: request.to,\n };\n\n if (request.value) {\n ethersRequest.value = ethers.BigNumber.from(request.value);\n }\n\n if (request.data) {\n ethersRequest.data = request.data;\n }\n\n if (request.gasLimit) {\n ethersRequest.gasLimit = ethers.BigNumber.from(request.gasLimit);\n }\n\n if (request.nonce !== undefined) {\n ethersRequest.nonce = request.nonce;\n }\n\n if (request.chainId !== undefined) {\n ethersRequest.chainId = request.chainId;\n }\n\n if (request.type !== undefined) {\n ethersRequest.type = request.type;\n }\n\n // Handle gas pricing (legacy vs EIP-1559)\n if (request.gasPrice) {\n ethersRequest.gasPrice = ethers.BigNumber.from(request.gasPrice);\n } else if (request.maxFeePerGas && request.maxPriorityFeePerGas) {\n ethersRequest.maxFeePerGas = ethers.BigNumber.from(request.maxFeePerGas);\n ethersRequest.maxPriorityFeePerGas = ethers.BigNumber.from(request.maxPriorityFeePerGas);\n }\n\n return ethersRequest;\n }\n\n /**\n * Convert ethers v5 transaction response to universal format\n */\n private _convertToUniversalResponse(\n txResponse: ethers.providers.TransactionResponse,\n receipt: ethers.providers.TransactionReceipt,\n ): UniversalTransactionResponse {\n const response: UniversalTransactionResponse = {\n hash: txResponse.hash,\n from: txResponse.from,\n to: txResponse.to || '',\n confirmations: txResponse.confirmations,\n nonce: txResponse.nonce,\n chainId: txResponse.chainId,\n };\n\n if (txResponse.blockNumber) {\n response.blockNumber = txResponse.blockNumber;\n }\n\n if (txResponse.blockHash) {\n response.blockHash = txResponse.blockHash;\n }\n\n // Note: gasUsed and effectiveGasPrice are not available on TransactionResponse\n // They would be available on TransactionReceipt after waiting for confirmation\n if (receipt.gasUsed) {\n response.gasUsed = receipt.gasUsed.toString();\n }\n\n if (receipt.effectiveGasPrice) {\n response.effectiveGasPrice = receipt.effectiveGasPrice.toString();\n }\n\n // Determine transaction status\n if (receipt.confirmations === 0) {\n response.status = 'pending';\n } else if (receipt.confirmations > 0) {\n response.status = 'confirmed';\n }\n\n return response;\n }\n\n private async _handleReplacementTransaction(\n error: unknown,\n confirmations: number,\n ): Promise<ethers.providers.TransactionReceipt | null> {\n if (!error || typeof error !== 'object') {\n return null;\n }\n\n const err = error as Record<string, unknown> & {\n code?: unknown;\n cancelled?: boolean;\n replacement?: ethers.providers.TransactionResponse;\n };\n\n if (err.code === 'TRANSACTION_REPLACED' && !err.cancelled && err.replacement) {\n try {\n return await err.replacement.wait(confirmations);\n } catch (replacementError) {\n throw this._wrapError(replacementError, 'transactionReplacement', { confirmations });\n }\n }\n\n return null;\n }\n\n private _createResponseFromReceipt(\n receipt: ethers.providers.TransactionReceipt,\n request: UniversalTransactionRequest,\n networkId: number,\n ): UniversalTransactionResponse {\n return {\n hash: receipt.transactionHash,\n from: receipt.from ?? this.address ?? '',\n to: receipt.to ?? request.to ?? '',\n blockNumber: receipt.blockNumber ?? undefined,\n blockHash: receipt.blockHash ?? undefined,\n gasUsed: receipt.gasUsed ? receipt.gasUsed.toString() : undefined,\n effectiveGasPrice: receipt.effectiveGasPrice\n ? receipt.effectiveGasPrice.toString()\n : undefined,\n status: 'pending',\n confirmations: receipt.confirmations ?? 0,\n nonce: request.nonce,\n chainId: networkId,\n };\n }\n\n /**\n * Normalize errors into ClientSDKError instances\n */\n private _wrapError(error: unknown, method?: string, params?: unknown): ClientSDKError {\n // Determine error code based on error type\n let code: ErrorCode = ErrorCode.UNKNOWN_ERROR;\n let message = 'An unexpected error occurred';\n if (error instanceof ClientSDKError) {\n // Re-throw ClientSDK errors directly\n throw error;\n }\n\n const errorObj = error as Record<string, unknown> & {\n code?: string | number;\n message?: string;\n data?: { message?: string };\n cancelled?: boolean;\n replacement?: unknown;\n };\n\n const errorMessage = errorObj?.message?.toLowerCase() ?? '';\n const dataMessage = (errorObj?.data?.message as string)?.toLowerCase() ?? '';\n\n // Handle user rejection cases\n if (\n errorObj?.code === 'ACTION_REJECTED' ||\n errorObj?.code === 4001 || // MetaMask user rejected\n errorMessage.includes('user denied transaction signature') ||\n errorMessage.includes('userrefusedondevice') ||\n (errorMessage.includes('cancelled') && !errorObj?.cancelled) ||\n errorMessage.includes('rejected transaction') ||\n dataMessage.includes('rejected transaction')\n ) {\n code = ErrorCode.TRANSACTION_REJECTED;\n message = 'Transaction Rejected';\n }\n // Handle network switch rejection\n else if (errorObj?.code === 4902) {\n code = ErrorCode.NETWORK_ERROR;\n message = 'Network not available in wallet';\n }\n // Handle transaction replacement cases\n else if (errorObj?.code === 'TRANSACTION_REPLACED') {\n code = ErrorCode.TRANSACTION_REPLACED;\n if (errorObj.cancelled) {\n message = 'Transaction was cancelled';\n } else if (errorObj.replacement) {\n message = 'Transaction was replaced with a new transaction (usually due to speed up)';\n }\n }\n // Handle Ledger specific errors\n else if (errorMessage.includes('ledger') || dataMessage.includes('ledger')) {\n code = ErrorCode.HARDWARE_WALLET_ERROR;\n message = 'Error with Ledger device. Please ensure device is connected and unlocked';\n }\n // Handle pending transaction errors\n else if (\n errorObj?.code === -32002 &&\n errorMessage.includes('pending') &&\n dataMessage.includes('pending')\n ) {\n code = ErrorCode.TRANSACTION_PENDING;\n message = 'Transaction already pending in wallet. Please check your wallet';\n }\n // Handle invalid amount errors\n else if (dataMessage.includes('invalid amount') || errorMessage.includes('invalid amount')) {\n code = ErrorCode.INVALID_INPUT;\n message = 'Price calculation is incorrect, contact support!';\n }\n // Handle insufficient funds\n else if (\n errorObj?.code === 'INSUFFICIENT_FUNDS' ||\n dataMessage.includes('insufficient funds') ||\n errorMessage.includes('insufficient funds')\n ) {\n code = ErrorCode.INSUFFICIENT_FUNDS;\n message =\n 'Your wallet does not have enough funds to complete this transaction. Please try again with a different wallet or add more funds to your wallet.';\n }\n // Handle insufficient balance for transaction\n else if (\n dataMessage.includes('balance too low to proceed') ||\n errorMessage.includes('balance too low to proceed')\n ) {\n code = ErrorCode.INSUFFICIENT_FUNDS;\n message =\n 'Your wallet does not have enough funds to complete this transaction. Please try again with a different wallet or add more funds to your wallet.';\n }\n // Handle nonce too low errors\n else if (dataMessage.includes('nonce too low') || errorMessage.includes('nonce too low')) {\n code = ErrorCode.NONCE_ERROR;\n message = 'Transaction nonce is too low. Please try again';\n }\n // Handle gas price too low\n else if (\n errorMessage.includes('max fee per gas less than block base fee') ||\n dataMessage.includes('max fee per gas less than block base fee')\n ) {\n code = ErrorCode.GAS_PRICE_TOO_LOW;\n message = 'Gas price too low for current network conditions. Please try again';\n }\n // Handle timeout errors\n else if (\n errorObj?.code === 'TIMEOUT' ||\n dataMessage.includes('timeout') ||\n errorMessage.includes('timeout')\n ) {\n code = ErrorCode.TIMEOUT;\n message =\n 'Transaction timed out. Your wallet connection is having issues. Disconnect and reconnect your wallet, then please try again';\n }\n // Handle network disconnection\n else if (\n dataMessage.includes('network disconnected') ||\n errorMessage.includes('network disconnected')\n ) {\n code = ErrorCode.NETWORK_ERROR;\n message = 'Network connection lost. Please check your internet connection and try again';\n }\n // Handle wrong network errors\n else if (dataMessage.includes('wrong network') || errorMessage.includes('wrong network')) {\n code = ErrorCode.NETWORK_ERROR;\n message = 'Wrong network selected. Please switch to the correct network';\n }\n // Handle user balance too low to pay for gas fees\n else if (\n dataMessage.includes('insufficient funds for gas') ||\n errorMessage.includes('insufficient funds for gas')\n ) {\n code = ErrorCode.INSUFFICIENT_FUNDS;\n message =\n 'Your wallet does not have enough funds to pay for gas fees. Please try again with a different wallet or add more funds to your wallet.';\n }\n // Handle ERC20 transfer amount exceeds balance\n else if (errorMessage.includes('erc20: transfer amount exceeds balance')) {\n code = ErrorCode.INSUFFICIENT_FUNDS;\n message = 'You do not have the required amount of ERC20 tokens to complete this transaction.';\n }\n // Handle base case gas estimation failures\n else if (\n errorObj?.code === 'UNPREDICTABLE_GAS_LIMIT' ||\n errorMessage.includes('cannot estimate gas') ||\n dataMessage.includes('cannot estimate gas')\n ) {\n code = ErrorCode.GAS_ESTIMATION_FAILED;\n console.error('Gas estimation error:', error);\n message =\n 'Unable to estimate gas for transaction. The transaction may fail. Please try again.';\n }\n // Handle call exceptions\n else if (errorObj?.code === 'CALL_EXCEPTION') {\n code = ErrorCode.CONTRACT_ERROR;\n message = 'Transaction failed due to contract execution error';\n }\n // Handle revert errors\n else if (errorMessage.includes('revert') || errorMessage.includes('reverted')) {\n code = ErrorCode.TRANSACTION_REVERTED;\n message = 'Transaction reverted';\n }\n // Handle network errors\n else if (errorObj?.code === 'NETWORK_ERROR' || errorMessage.includes('network')) {\n code = ErrorCode.NETWORK_ERROR;\n message = 'Network error occurred';\n }\n // Default case - use original message if available\n else if (errorObj?.message) {\n // For debugging purposes, log the full error\n console.error('Transaction error:', error);\n message = 'Transaction failed. Please try again. If it fails again, please contact support.';\n }\n\n return new ClientSDKError(code, message, {\n adapterCode: code,\n adapterType: this.adapterType,\n method,\n params,\n originalError: error instanceof Error ? error : undefined,\n });\n }\n}\n","import type {\n IAccountAdapter,\n UniversalTransactionRequest,\n UniversalTransactionResponse,\n AdapterType,\n} from '../types/account-adapter';\nimport { Money } from '../libs/money';\nimport { ClientSDKError, ErrorCode } from '../types/errors';\nimport { checkERC20BalanceViem } from '../utils/gas-estimation';\nimport { ethers } from 'ethers';\nimport type { ManifoldClient } from '../types';\n\n// =============================================================================\n// VIEM TYPE IMPORTS\n// =============================================================================\n\nimport type * as Viem from 'viem';\nimport type { WalletClient as ViemWalletClient, PublicClient as ViemPublicClient } from 'viem';\n\n/**\n * Import viem types conditionally to support optional peer dependency\n * Using type-only imports to avoid runtime errors when viem is not installed\n */\ntype ViemModule = typeof Viem;\ntype ViemAddress = `0x${string}`;\ntype ViemHash = `0x${string}`;\ntype ViemClient = ViemWalletClient | ViemPublicClient;\n\n// =============================================================================\n// VIEM ADAPTER IMPLEMENTATION\n// =============================================================================\n\n/**\n * Account adapter implementation for viem\n *\n * Provides a unified interface for wallet operations using viem's WalletClient and PublicClient.\n * This adapter handles both WalletClient (for transactions) and PublicClient (for read operations).\n *\n * @example\n * ```typescript\n * import { createWalletClient, custom } from 'viem';\n * import { mainnet } from 'viem/chains';\n * import { ViemAdapter } from './adapters/viem-adapter';\n *\n * const client = createWalletClient({\n * chain: mainnet,\n * transport: custom(window.ethereum)\n * });\n *\n * const adapter = new ViemAdapter(client);\n *\n * // Use unified interface\n * const balance = await adapter.getBalance();\n * const networkId = await adapter.getConnectedNetworkId();\n * ```\n */\nexport class ViemAdapter implements IAccountAdapter {\n readonly adapterType: AdapterType = 'viem';\n address: string = '';\n\n private _walletClient: ViemWalletClient | null = null;\n private _publicClient: ViemPublicClient | null = null;\n private _viem: ViemModule | null = null; // Dynamically imported viem module\n private _client: ManifoldClient;\n\n /**\n * Initialize adapter with viem WalletClient or PublicClient\n *\n * @param manifoldClient - Manifold client instance\n * @param provider - Object containing viem wallet or public client\n * @throws {ClientSDKError} When client is invalid or viem is not installed\n */\n constructor(\n manifoldClient: ManifoldClient,\n provider: {\n walletClient?: ViemWalletClient;\n publicClient?: ViemPublicClient;\n },\n ) {\n const { walletClient, publicClient } = provider;\n this._client = manifoldClient;\n this._initializeViem();\n\n if (!walletClient && !publicClient) {\n throw new ClientSDKError(\n ErrorCode.INVALID_INPUT,\n 'Either walletClient or publicClient is required',\n );\n }\n\n if (walletClient && publicClient) {\n throw new ClientSDKError(\n ErrorCode.INVALID_INPUT,\n 'Provide either walletClient or publicClient, not both',\n );\n }\n\n if (walletClient) {\n this._walletClient = walletClient;\n // Get address synchronously if available\n if (walletClient.account && 'address' in walletClient.account) {\n this.address = walletClient.account.address as string;\n } else {\n // Will need to call getAddress() to initialize\n this.address = '';\n }\n } else if (publicClient) {\n this._publicClient = publicClient;\n this._walletClient = null;\n this.address = ''; // Read-only client has no address\n }\n }\n\n /**\n * Get wallet address\n */\n async getAddress(): Promise<string> {\n if (this.address) {\n return this.address;\n }\n await this._ensureAddress();\n return this.address;\n }\n\n /**\n * Send a transaction through the connected wallet\n *\n * @param request - Universal transaction request\n * @returns Promise resolving to universal transaction response\n * @throws {ClientSDKError} When transaction fails or is rejected\n */\n async sendTransaction(request: UniversalTransactionRequest): Promise<string> {\n try {\n const walletClient = this._getWalletClient();\n await this._ensureAddress();\n\n // Convert universal request to viem transaction request\n const viemRequest = this._convertToViemRequest(request);\n\n // Send transaction using viem\n const walletClientTyped = walletClient;\n const hash = await walletClientTyped.sendTransaction(viemRequest);\n\n return hash;\n } catch (error) {\n throw this._wrapError(error, 'sendTransaction', { request });\n }\n }\n\n async sendTransactionWithConfirmation(\n request: UniversalTransactionRequest,\n options: { confirmations?: number } = {},\n ): Promise<UniversalTransactionResponse> {\n const confirmations = options.confirmations ?? 1;\n const networkId = await this.getConnectedNetworkId();\n try {\n const hash = (await this.sendTransaction(request)) as `0x{string}`;\n\n // waitForViemReceipt handles TransactionReplaced internally\n const receipt = await this._waitForViemReceipt(hash, confirmations);\n const baseResponse = this._convertToUniversalResponse(networkId, hash, receipt);\n\n return baseResponse;\n } catch (error) {\n throw this._wrapError(error, 'sendTransactionWithConfirmation', { request, confirmations });\n }\n }\n\n /**\n * Get token balance for connected wallet\n *\n * @param networkId - Network ID to get balance on\n * @param tokenAddress - ERC-20 token address (optional, defaults to native token)\n * @returns Promise resolving to Money instance with balance\n * @throws {ClientSDKError} When balance query fails\n */\n async getBalance(networkId: number, tokenAddress?: string): Promise<Money> {\n try {\n await this._ensureAddress();\n\n // Try to use pre-configured provider from client if available\n let publicClient: ViemPublicClient | undefined;\n const configuredProvider = this._client.providers?.[networkId];\n\n if (configuredProvider) {\n // Create a viem public client from the ethers provider if needed\n // For now, use the existing public client\n publicClient = this._getPublicClient();\n } else {\n // Switch to the requested network if needed\n const currentNetworkId = await this.getConnectedNetworkId();\n if (currentNetworkId !== networkId) {\n await this.switchNetwork(networkId);\n }\n publicClient = this._getPublicClient();\n }\n\n if (!tokenAddress || tokenAddress === '0x0000000000000000000000000000000000000000') {\n // Get native token balance using viem\n const publicClientTyped = publicClient;\n const balance = await publicClientTyped.getBalance({\n address: this.address as ViemAddress,\n });\n\n // Convert viem bigint to ethers BigNumber for Money class\n const ethersBN = ethers.BigNumber.from(balance.toString());\n\n // Create a mock provider for Money class (it only needs basic functionality)\n const mockProvider = this._createMockEthersProvider(publicClient);\n\n return Money.create({\n value: ethersBN,\n networkId,\n provider: mockProvider as unknown as\n | ethers.providers.JsonRpcProvider\n | ethers.providers.Web3Provider,\n fetchUSD: true,\n });\n } else {\n // Get ERC-20 token balance using viem\n const balance = await checkERC20BalanceViem(tokenAddress, this.address, publicClient);\n\n // Convert viem bigint to ethers BigNumber\n const ethersBN = ethers.BigNumber.from(balance.toString());\n const mockProvider = this._createMockEthersProvider(publicClient);\n\n return Money.create({\n value: ethersBN,\n networkId,\n erc20: tokenAddress,\n provider: mockProvider as unknown as\n | ethers.providers.JsonRpcProvider\n | ethers.providers.Web3Provider,\n fetchUSD: true,\n });\n }\n } catch (error) {\n throw this._wrapError(error, 'getBalance', { tokenAddress });\n }\n }\n\n /**\n * Get the currently connected network ID\n *\n * @returns Promise resolving to network ID (chain ID)\n * @throws {ClientSDKError} When network query fails\n */\n async getConnectedNetworkId(): Promise<number> {\n try {\n const publicClient = this._getPublicClient();\n const chainId = await publicClient.getChainId();\n return Number(chainId);\n } catch (error) {\n throw this._wrapError(error, 'getConnectedNetworkId');\n }\n }\n\n /**\n * Get provider for a specific network\n */\n async getProvider(networkId?: number): Promise<ViemWalletClient | ViemPublicClient> {\n if (!networkId) {\n // Return any available client\n return this._walletClient || this._publicClient!;\n }\n\n // Check if we need to switch networks\n const currentNetworkId = await this.getConnectedNetworkId();\n if (currentNetworkId !== networkId) {\n await this.switchNetwork(networkId);\n }\n\n return this._walletClient || this._publicClient!;\n }\n\n /**\n * Switch to a different network\n *\n * @param chainId - Target network ID to switch to\n * @returns Promise resolving when network switch is complete\n * @throws {ClientSDKError} When network switch fails or is rejected\n */\n async switchNetwork(chainId: number): Promise<void> {\n try {\n const walletClient = this._getWalletClient();\n\n // Use viem's switchChain action\n const walletClientTyped = walletClient;\n await walletClientTyped.switchChain({ id: chainId });\n } catch (error) {\n throw this._wrapError(error, 'switchNetwork', { chainId });\n }\n }\n\n /**\n * Sign a message with the connected wallet\n *\n * @param message - Message to sign\n * @returns Promise resolving to signature string\n * @throws {ClientSDKError} When signing fails or is rejected\n */\n async signMessage(message: string): Promise<string> {\n try {\n const walletClient = this._getWalletClient();\n await this._ensureAddress();\n\n const walletClientTyped = walletClient;\n const signature = await walletClientTyped.signMessage({\n account: this.address as ViemAddress,\n message,\n });\n\n return signature;\n } catch (error) {\n throw this._wrapError(error, 'signMessage', { message });\n }\n }\n\n /**\n * Send raw RPC calls to the wallet provider\n * Useful for wallet-specific methods like adding custom networks, tokens, etc.\n *\n * @param method - RPC method name (e.g., 'wallet_addEthereumChain')\n * @param params - Method parameters\n * @returns Promise resolving to the RPC response\n * @throws {ClientSDKError} When RPC call fails or is not supported\n */\n async sendCalls(method: string, params?: unknown[]): Promise<unknown> {\n try {\n const client = this._walletClient || this._publicClient;\n\n if (!client) {\n throw new ClientSDKError(ErrorCode.INVALID_INPUT, 'No client available to send RPC calls');\n }\n\n // Access the transport's request method\n const transport = (client as { transport?: unknown }).transport;\n\n if (transport && typeof transport === 'object' && 'request' in transport) {\n const transportWithRequest = transport as {\n request: (params: unknown) => Promise<unknown>;\n };\n return await transportWithRequest.request({\n method,\n params,\n });\n }\n\n // If the client itself has a request method (some viem configurations)\n const clientWithRequest = client as unknown as Record<string, unknown>;\n if (typeof clientWithRequest.request === 'function') {\n return await (clientWithRequest.request as (params: unknown) => Promise<unknown>)({\n method,\n params,\n });\n }\n\n throw new ClientSDKError(\n ErrorCode.UNSUPPORTED_TYPE,\n `Client does not support RPC method calls. The sendCalls method requires a client with accessible transport.`,\n );\n } catch (error) {\n throw this._wrapError(error, 'sendCalls', { method, params });\n }\n }\n\n // =============================================================================\n // PRIVATE HELPER METHODS\n // =============================================================================\n\n /**\n * Dynamically import viem to avoid hard dependency\n */\n protected _initializeViem(): void {\n try {\n // Try to require viem - this will throw if not installed\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n this._viem = require('viem') as ViemModule;\n } catch (error) {\n throw new ClientSDKError(\n ErrorCode.INVALID_INPUT,\n 'Viem is not installed. Please install viem as a peer dependency: npm install viem',\n );\n }\n }\n\n /**\n * Create a PublicClient from WalletClient's transport and chain\n */\n private _createPublicClient(walletClient: ViemWalletClient): ViemPublicClient {\n if (!this._viem) {\n throw new ClientSDKError(ErrorCode.INVALID_INPUT, 'Viem module not properly initialized');\n }\n\n const { createPublicClient } = this._viem;\n\n if (typeof createPublicClient !== 'function') {\n throw new ClientSDKError(\n ErrorCode.INVALID_INPUT,\n 'createPublicClient function not found in viem module',\n );\n }\n\n const clientWithProps = walletClient as ViemWalletClient & {\n chain?: unknown;\n transport?: unknown;\n };\n\n const { chain, transport } = clientWithProps;\n\n if (!chain || !transport) {\n throw new ClientSDKError(\n ErrorCode.INVALID_INPUT,\n 'Wallet client missing chain or transport required to create public client',\n );\n }\n\n type PublicClientConfig = Parameters<typeof createPublicClient>[0];\n\n const config: PublicClientConfig = {\n chain: chain as PublicClientConfig['chain'],\n transport: transport as unknown as PublicClientConfig['transport'],\n };\n\n return createPublicClient(config) as ViemPublicClient;\n }\n\n /**\n * Get wallet client, throwing error if not available\n */\n private _getWalletClient(): ViemWalletClient {\n if (!this._walletClient) {\n throw new ClientSDKError(\n ErrorCode.INVALID_INPUT,\n 'No wallet client available. Cannot perform transactions with read-only client.',\n );\n }\n return this._walletClient;\n }\n\n /**\n * Get public client for read operations\n */\n private _getPublicClient(): ViemPublicClient {\n if (this._publicClient) {\n return this._publicClient;\n }\n\n // If we have a wallet client, try to create a public client from it\n if (this._walletClient) {\n this._publicClient = this._createPublicClient(this._walletClient);\n return this._publicClient;\n }\n\n throw new ClientSDKError(\n ErrorCode.INVALID_INPUT,\n 'No public client available for read operations',\n );\n }\n\n /**\n * Ensure address is initialized by fetching it from client\n */\n private async _ensureAddress(): Promise<void> {\n if (!this.address) {\n if (this._walletClient) {\n const walletClient = this._walletClient;\n\n // Get address from wallet client\n if (walletClient.account) {\n // Account is hoisted on the client\n const account = walletClient.account;\n if ('address' in account && typeof account.address === 'string') {\n (this as { address: string }).address = account.address;\n } else {\n throw new ClientSDKError(\n ErrorCode.INVALID_INPUT,\n 'Invalid account address format in wallet client',\n );\n }\n } else if (typeof walletClient.getAddresses === 'function') {\n // Get addresses from provider (JSON-RPC account)\n const addresses = await walletClient.getAddresses();\n if (!Array.isArray(addresses) || addresses.length === 0) {\n throw new ClientSDKError(\n ErrorCode.INVALID_INPUT,\n 'No accounts available from wallet client',\n );\n }\n (this as { address: string }).address = addresses[0]!;\n } else {\n throw new ClientSDKError(\n ErrorCode.INVALID_INPUT,\n 'Wallet client has no account or getAddresses method',\n );\n }\n } else {\n throw new ClientSDKError(\n ErrorCode.INVALID_INPUT,\n 'Cannot get address from read-only client',\n );\n }\n }\n }\n\n /**\n * Convert universal transaction request to viem format\n */\n private _convertToViemRequest(\n request: UniversalTransactionRequest,\n ): Parameters<ViemWalletClient['sendTransaction']>[0] {\n const viemRequest: Record<string, unknown> = {\n to: request.to as ViemAddress,\n };\n\n // Add account if not hoisted\n const walletClient = this._walletClient;\n if (!walletClient?.account && this.address) {\n viemRequest.account = this.address as ViemAddress;\n }\n\n if (request.value) {\n viemRequest.value = BigInt(request.value);\n }\n\n if (request.data) {\n viemRequest.data = request.data as `0x${string}`;\n }\n\n if (request.gasLimit) {\n viemRequest.gas = BigInt(request.gasLimit);\n }\n\n if (request.nonce !== undefined) {\n viemRequest.nonce = request.nonce;\n }\n\n if (request.chainId !== undefined) {\n viemRequest.chainId = request.chainId;\n }\n\n if (request.type !== undefined) {\n viemRequest.type = request.type === 0 ? 'legacy' : 'eip1559';\n }\n\n // Handle gas pricing (legacy vs EIP-1559)\n if (request.gasPrice) {\n viemRequest.gasPrice = BigInt(request.gasPrice);\n } else if (request.maxFeePerGas && request.maxPriorityFeePerGas) {\n viemRequest.maxFeePerGas = BigInt(request.maxFeePerGas);\n viemRequest.maxPriorityFeePerGas = BigInt(request.maxPriorityFeePerGas);\n }\n\n return viemRequest as Parameters<ViemWalletClient['sendTransaction']>[0];\n }\n\n /**\n * Convert viem transaction hash to universal response format\n */\n private _convertToUniversalResponse(\n chainId: number,\n hash: ViemHash,\n receipt: Viem.TransactionReceipt,\n ): UniversalTransactionResponse {\n const hashStr = hash as string;\n\n const response: UniversalTransactionResponse = {\n hash: hashStr,\n from: (receipt.from as string) || this.address || '',\n to: (receipt.to as string) || '',\n status: 'pending', // viem sendTransaction only returns hash, transaction is initially pending\n chainId,\n };\n\n return response;\n }\n\n private async _waitForViemReceipt(hash: ViemHash, confirmations: number) {\n const publicClient = this._getPublicClient();\n const publicClientTyped = publicClient;\n\n return await publicClientTyped.waitForTransactionReceipt({\n hash,\n confirmations,\n });\n }\n\n /**\n * Create a mock ethers provider that implements the minimal interface needed by Money class\n */\n private _createMockEthersProvider(publicClient: ViemPublicClient): Record<string, unknown> {\n const client = publicClient;\n\n return {\n // Mock the methods that Money class might use\n getNetwork: async () => ({\n chainId: await client.getChainId(),\n }),\n // Add other methods as needed by the Money class\n };\n }\n\n /**\n * Normalize errors into ClientSDKError instances\n */\n private _wrapError(error: unknown, method?: string, params?: unknown): ClientSDKError {\n // Determine error code based on error type\n let code = ErrorCode.UNKNOWN_ERROR;\n let message = 'An unexpected error occurred';\n\n if (error instanceof ClientSDKError) {\n // Re-throw ClientSDK errors directly\n throw error;\n }\n\n // Handle viem-specific errors with type guards\n const errorObj = error as Record<string, unknown> & {\n code?: string | number;\n message?: string;\n data?: { message?: string };\n cancelled?: boolean;\n replacement?: unknown;\n name?: string;\n cause?: { reason?: string };\n };\n\n const errorMessage = errorObj?.message?.toLowerCase() ?? '';\n const dataMessage = (errorObj?.data?.message as string)?.toLowerCase() ?? '';\n const causeReason = (errorObj?.cause?.reason as string)?.toLowerCase() ?? '';\n\n // Handle user rejection cases (viem specific and standard)\n if (\n errorObj?.name === 'UserRejectedRequestError' ||\n errorObj?.code === 'ACTION_REJECTED' ||\n errorObj?.code === 4001 || // MetaMask user rejected\n errorMessage.includes('user denied transaction signature') ||\n errorMessage.includes('userrefusedondevice') ||\n (errorMessage.includes('cancelled') && !errorObj?.cancelled) ||\n errorMessage.includes('rejected transaction') ||\n dataMessage.includes('rejected transaction') ||\n errorMessage.includes('user rejected')\n ) {\n code = ErrorCode.TRANSACTION_REJECTED;\n message = 'Transaction Rejected';\n }\n // Handle network switch rejection\n else if (errorObj?.code === 4902) {\n code = ErrorCode.NETWORK_ERROR;\n message = 'Network not available in wallet';\n }\n // Handle transaction replacement cases (viem specific)\n else if (\n errorObj?.name === 'TransactionReplacedError' ||\n errorObj?.code === 'TRANSACTION_REPLACED'\n ) {\n code = ErrorCode.TRANSACTION_REPLACED;\n if (errorObj.cancelled) {\n message = 'Transaction was cancelled';\n } else if (errorObj.replacement) {\n message = 'Transaction was replaced with a new transaction (usually due to speed up)';\n }\n }\n // Handle Ledger specific errors\n else if (errorMessage.includes('ledger') || dataMessage.includes('ledger')) {\n code = ErrorCode.HARDWARE_WALLET_ERROR;\n message = 'Error with Ledger device. Please ensure device is connected and unlocked';\n }\n // Handle pending transaction errors\n else if (\n errorObj?.code === -32002 &&\n errorMessage.includes('pending') &&\n dataMessage.includes('pending')\n ) {\n code = ErrorCode.TRANSACTION_PENDING;\n message = 'Transaction already pending in wallet. Please check your wallet';\n }\n // Handle invalid amount errors\n else if (dataMessage.includes('invalid amount') || errorMessage.includes('invalid amount')) {\n code = ErrorCode.INVALID_INPUT;\n message = 'Price calculation is incorrect, contact support!';\n }\n // Handle insufficient funds (viem specific and standard)\n else if (\n errorObj?.name === 'InsufficientFundsError' ||\n errorObj?.code === 'INSUFFICIENT_FUNDS' ||\n dataMessage.includes('insufficient funds') ||\n errorMessage.includes('insufficient funds') ||\n causeReason.includes('insufficient funds')\n ) {\n code = ErrorCode.INSUFFICIENT_FUNDS;\n message =\n 'Your wallet does not have enough funds to complete this transaction. Please try again with a different wallet or add more funds to your wallet.';\n }\n // Handle insufficient balance for transaction\n else if (\n dataMessage.includes('balance too low to proceed') ||\n errorMessage.includes('balance too low to proceed')\n ) {\n code = ErrorCode.INSUFFICIENT_FUNDS;\n message =\n 'Your wallet does not have enough funds to complete this transaction. Please try again with a different wallet or add more funds to your wallet.';\n }\n // Handle nonce too low errors\n else if (\n errorObj?.name === 'NonceExhaustedError' ||\n dataMessage.includes('nonce too low') ||\n errorMessage.includes('nonce too low')\n ) {\n code = ErrorCode.NONCE_ERROR;\n message = 'Transaction nonce is too low. Please try again';\n }\n // Handle gas price too low (viem specific)\n else if (\n errorObj?.name === 'FeeCapTooLowError' ||\n errorMessage.includes('max fee per gas less than block base fee') ||\n dataMessage.includes('max fee per gas less than block base fee')\n ) {\n code = ErrorCode.GAS_PRICE_TOO_LOW;\n message = 'Gas price too low for current network conditions. Please try again';\n }\n // Handle timeout errors (viem specific)\n else if (\n errorObj?.name === 'TimeoutError' ||\n errorObj?.code === 'TIMEOUT' ||\n dataMessage.includes('timeout') ||\n errorMessage.includes('timeout')\n ) {\n code = ErrorCode.TIMEOUT;\n message =\n 'Transaction timed out. Your wallet connection is having issues. Disconnect and reconnect your wallet, then please try again';\n }\n // Handle network disconnection\n else if (\n dataMessage.includes('network disconnected') ||\n errorMessage.includes('network disconnected')\n ) {\n code = ErrorCode.NETWORK_ERROR;\n message = 'Network connection lost. Please check your internet connection and try again';\n }\n // Handle wrong network errors (viem specific)\n else if (\n errorObj?.name === 'ChainMismatchError' ||\n dataMessage.includes('wrong network') ||\n errorMessage.includes('wrong network')\n ) {\n code = ErrorCode.WRONG_NETWORK;\n message = 'Wrong network selected. Please switch to the correct network';\n }\n // Handle user balance too low to pay for gas fees\n else if (\n dataMessage.includes('insufficient funds for gas') ||\n errorMessage.includes('insufficient funds for gas')\n ) {\n code = ErrorCode.INSUFFICIENT_FUNDS;\n message =\n 'Your wallet does not have enough funds to pay for gas fees. Please try again with a different wallet or add more funds to your wallet.';\n }\n // Handle ERC20 transfer amount exceeds balance\n else if (errorMessage.includes('erc20: transfer amount exceeds balance')) {\n code = ErrorCode.INSUFFICIENT_FUNDS;\n message = 'You do not have the required amount of ERC20 tokens to complete this transaction.';\n }\n // Handle base case gas estimation failures (viem specific)\n else if (\n errorObj?.name === 'EstimateGasExecutionError' ||\n errorObj?.code === 'UNPREDICTABLE_GAS_LIMIT' ||\n errorMessage.includes('cannot estimate gas') ||\n dataMessage.includes('cannot estimate gas')\n ) {\n code = ErrorCode.GAS_ESTIMATION_FAILED;\n console.error('Gas estimation error:', error);\n message =\n 'Unable to estimate gas for transaction. The transaction may fail. Please try again.';\n }\n // Handle call exceptions (viem specific)\n else if (\n errorObj?.name === 'ContractFunctionExecutionError' ||\n errorObj?.code === 'CALL_EXCEPTION'\n ) {\n code = ErrorCode.CONTRACT_ERROR;\n message = 'Transaction failed due to contract execution error';\n }\n // Handle revert errors (viem specific)\n else if (\n errorObj?.name === 'ContractFunctionRevertedError' ||\n errorMessage.includes('revert') ||\n errorMessage.includes('reverted')\n ) {\n code = ErrorCode.TRANSACTION_REVERTED;\n message = 'Transaction reverted';\n }\n // Handle transaction execution errors (viem specific)\n else if (errorObj?.name === 'TransactionExecutionError') {\n code = ErrorCode.TRANSACTION_FAILED;\n message = 'Transaction execution failed';\n }\n // Handle network errors\n else if (\n errorObj?.code === 'NETWORK_ERROR' ||\n errorMessage.includes('network') ||\n errorObj?.name === 'HttpRequestError'\n ) {\n code = ErrorCode.NETWORK_ERROR;\n message = 'Network error occurred';\n }\n // Default case - use original message if available\n else if (errorObj?.message) {\n // For debugging purposes, log the full error\n console.error('Transaction error:', error);\n message = 'Transaction failed. Please try again. If it fails again, please contact support.';\n }\n\n return new ClientSDKError(code, message, {\n adapterCode: code,\n adapterType: this.adapterType,\n method,\n params,\n originalError: error instanceof Error ? error : undefined,\n });\n }\n}\n\n// =============================================================================\n// ADAPTER FACTORY HELPER\n// =============================================================================\n\n/**\n * Create ViemAdapter from viem WalletClient or PublicClient\n *\n * @param manifoldClient - Manifold client instance\n * @param client - viem WalletClient or PublicClient instance\n * @returns ViemAdapter instance\n * @throws {ClientSDKError} When client is invalid\n *\n * @example\n * ```typescript\n * import { createWalletClient, custom } from 'viem';\n * import { mainnet } from 'viem/chains';\n * import { createViemAdapter } from './adapters/viem-adapter';\n *\n * const client = createWalletClient({\n * chain: mainnet,\n * transport: custom(window.ethereum)\n * });\n *\n * const adapter = createViemAdapter(manifoldClient, client);\n * ```\n */\nexport function createViemAdapter(\n manifoldClient: ManifoldClient,\n client: unknown,\n): IAccountAdapter {\n if (!client || typeof client !== 'object') {\n throw new ClientSDKError(\n ErrorCode.INVALID_INPUT,\n 'Client must be a valid viem WalletClient or PublicClient instance',\n );\n }\n\n const viemClient = client as ViemClient;\n\n // Determine if it's a wallet or public client\n const isWallet =\n 'sendTransaction' in viemClient && typeof viemClient.sendTransaction === 'function';\n const isPublic = 'getBalance' in viemClient && !('sendTransaction' in viemClient);\n\n if (isWallet) {\n return new ViemAdapter(manifoldClient, { walletClient: viemClient });\n } else if (isPublic) {\n return new ViemAdapter(manifoldClient, { publicClient: viemClient });\n } else {\n throw new ClientSDKError(\n ErrorCode.INVALID_INPUT,\n 'Invalid viem client. Must be WalletClient or PublicClient instance',\n );\n }\n}\n\n// =============================================================================\n// TYPE GUARDS AND DETECTION\n// =============================================================================\n\n/**\n * Detect if a client instance is compatible with viem\n *\n * @param client - Unknown client instance\n * @returns True if client appears to be viem compatible\n */\nexport function isViemCompatible(client: unknown): boolean {\n if (!client || typeof client !== 'object') {\n return false;\n }\n\n const obj = client as Record<string, unknown>;\n\n // Check for viem specific patterns\n const hasViemMethods =\n (typeof obj.sendTransaction === 'function' && typeof obj.signMessage === 'function') || // WalletClient\n (typeof obj.getBalance === 'function' && typeof obj.readContract === 'function'); // PublicClient\n\n if (!hasViemMethods) {\n return false;\n }\n\n // Check for viem-specific properties\n const hasViemProperties = obj.transport && (obj.chain || obj.getChainId) && obj.mode !== 'anvil'; // Exclude test clients\n\n // Check against ethers patterns to avoid false positives\n const providerObj = obj.provider as Record<string, unknown> | undefined;\n const getNetworkObj = obj.getNetwork as Record<string, unknown> | undefined;\n\n const hasEthersPatterns =\n obj._isProvider === true ||\n providerObj?._isProvider === true ||\n (typeof getNetworkObj?.constructor === 'function' &&\n typeof getNetworkObj.constructor.name === 'string' &&\n getNetworkObj.constructor.name.includes('ethers'));\n\n return Boolean(hasViemProperties) && !hasEthersPatterns;\n}\n"],"names":["ErrorCode","AppType","AppId","t","u","f","o","n","Ve","E","l","c","s","p","b","i","Pi","h","y","m","Hr","Zr","I","sn","Oi","_","Network","ManifoldBridgeProvider","ethers","Currency","cost","ContractFactoryClass","status","address","StudioAppsClientForPublic","fetch","provider"],"mappings":"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AIA,GAAE,EAAE,MAAM,IAAI,KAAKA,GAAE,EAAE,KAAK,IAAIA,GAAE,EAAE,MAAM,IAAI,KAAKA,GAAE,EAAE,KAAK,IAAIA,GAAE,EAAE,MAAM,IAAI,KAAKA,GAAE,EAAE,KAAK,IAAIA,GAAE,EAAE,MAAM,IAAI,KAAKA,GAAE,EAAE,KAAK,IAAIA,GAAE,EAAE,MAAM,IAAI,KAAKA,GAAE,EAAE,KAAK,KAAKA,GAAE,EAAE,MAAM,IAAI,KAAKA,GAAE,EAAE,KAAK,KAAKA,GAAE,EAAE,MAAM,IAAI,KAAKA,GAAE,CAAC,KAAK,IAAIA,GAAE,CAAC,MAAM,IAAI,KAAKA,GAAE,CAAC,KAAK,IAAIA,GAAE,CAAC,MAAM,IAAI,KAAKA,GAAE,EAAE,KAAK,KAAKA,GAAE,EAAE,MAAM,IAAI,KAAKA,GAAE,EAAE,KAAK,KAAKA,GAAE,EAAE,MAAM,IAAI,KAAKA,GAAE,EAAE,KAAK,KAAKA,GAAE,EAAE,MAAM,IAAI,KAAKA,GAAE,EAAE,KAAK,KAAKA,GAAE,EAAE,MAAM,IAAI,KAAKA,GAAE,EAAE,KAAK,KAAKA,GAAE,EAAE,MAAM,IAAI,KAAKA,GAAE,EAAE,KAAK,KAAKA,GAAE,EAAE,MAAM,IAAI,KAAKA,GAAE,EAAE,KAAK,IAAIA,GAAE,EAAE,MAAM,IAAI,KAAKA,GAAE,EAAE,KAAK,IAAIA,GAAE,EAAE,MAAM,IAAI,KAAKA,GAAE,CAAC,KAAK,KAAKA,GAAE,CAAC,MAAM,GAAG,KAAKA,GAAE,CAAC,KAAK,KAAKA,GAAE,CAAC,MAAM,GAAG,KAAKA,GAAE,EAAE,KAAK,IAAIA,GAAE,EAAE,MAAM,IAAI,KAAKA,GAAE,EAAE,KAAK,IAAIA,GAAE,EAAE,MAAM,IAAI,KAAKA,GAAE,EAAE,KAAK,KAAKA,GAAE,EAAE,MAAM,IAAI,KAAKA,GAAE,EAAE,KAAK,KAAKA,GAAE,EAAE,MAAM,IAAI,KAAKA,GAAE,EAAE,KAAK,KAAKA,GAAE,EAAE,MAAM,IAAI,KAAKA,GAAE,EAAE,KAAK,KAAKA,GAAE,EAAE,MAAM,IAAI,KAAKA,GAAE,EAAE,KAAK,KAAKA,GAAE,EAAE,MAAM,GAAG,KAAKA,GAAE,EAAE,KAAK,KAAKA,GAAE,EAAE,MAAM,GAAG,KAAKA,GAAE,CAAC,KAAK,KAAKA,GAAE,CAAC,MAAM,GAAG,KAAKA,GAAE,CAAC,KAAK,KAAKA,GAAE,CAAC,MAAM,GAAG,KAAKA,GAAE,EAAE,KAAK,KAAKA,GAAE,EAAE,MAAM,GAAG,KAAKA,GAAE,EAAE,KAAK,KAAKA,GAAE,EAAE,MAAM,GAAG,KAAKA,GAAE,EAAE,KAAK,KAAKA,GAAE,EAAE,MAAM,GAAG,KAAKA,GAAE,EAAE,KAAK,KAAKA,GAAE,EAAE,MAAM,GAAG,KAAKA,GAAE,EAAE,KAAK,KAAKA,GAAE,EAAE,MAAM,IAAI,KAAKA,GAAE,EAAE,KAAK,KAAKA,GAAE,EAAE,MAAM,IAAI,KAAKA,GAAE,EAAE,KAAK,KAAKA,GAAE,EAAE,MAAM,GAAG,KAAKA,GAAE,EAAE,KAAK,KAAKA,GAAE,EAAE,MAAM,GAAG,KAAKA,GAAE,CAAC,KAAK,KAAKA,GAAE,CAAC,MAAM,GAAG,KAAKA,GAAE,CAAC,KAAK,KAAKA,GAAE,CAAC,MAAM,GAAG,KAAKA,GAAE,EAAE,KAAK,KAAKA,GAAE,EAAE,MAAM,IAAI,KAAKA,GAAE,EAAE,KAAK,KAAKA,GAAE,EAAE,MAAM,IAAI,KAAKA,GAAE,EAAE,KAAK,IAAIA,GAAE,EAAE,MAAM,IAAI,KAAKA,GAAE,EAAE,KAAK,IAAIA,GAAE,EAAE,MAAM,IAAI,KAAKA,GAAE,EAAE,KAAK,IAAIA,GAAE,EAAE,MAAM,IAAI,KAAKA,GAAE,EAAE,KAAK,IAAIA,GAAE,EAAE,MAAM,IAAI,KAAKA,GAAE,EAAE,KAAK,KAAKA,GAAE,EAAE,MAAM,IAAI,KAAKA,GAAE,EAAE,KAAK,KAAKA,GAAE,EAAE,MAAM,IAAIA,GAAE,CAAC,IAAI,KAAK,CAAC,KAAK,IAAIA,GAAE,CAAC,IAAI,KAAK,CAAC,KAAK,IAAIA,GAAE,EAAE,IAAI,KAAK,CAAC,KAAK,IAAIA,GAAE,EAAE,IAAI,KAAK,CAAC,KAAK,IAAIA,GAAE,EAAE,IAAI,KAAK,CAAC,KAAK,IAAIA,GAAE,EAAE,IAAI,KAAK,CAAC,KAAK,IAAIA,GAAE,EAAE,IAAI,KAAK,CAAC,KAAK,IAAIA,GAAE,EAAE,IAAI,KAAK,CAAC,KAAK,IAAIA,GAAE,EAAE,IAAI,KAAK,CAAC,KAAK,IAAIA,GAAE,EAAE,IAAI,KAAK,CAAC,KAAK,IAAIA,GAAE,CAAC,IAAI,KAAK,CAAC,KAAK,IAAIA,GAAE,CAAC,IAAI,KAAK,CAAC,KAAK,IAAIA,GAAE,EAAE,IAAI,KAAK,CAAC,KAAK,IAAIA,GAAE,EAAE,IAAI,KAAK,CAAC,KAAK,IAAIA,GAAE,EAAE,IAAI,KAAK,CAAC,KAAK,IAAIA,GAAE,EAAE,IAAI,KAAK,CAAC,KAAK,IAAIA,GAAE,EAAE,IAAI,KAAK,CAAC,KAAK,IAAIA,GAAE,EAAE,IAAI,KAAK,CAAC,KAAK,IAAIA,GAAE,EAAE,IAAI,KAAK,CAAC,KAAK,IAAIA,GAAE,EAAE,IAAI,KAAK,CAAC,KAAK,IAAIA,GAAE,CAAC,IAAI,KAAK,CAAC,KAAK,IAAIA,GAAE,CAAC,IAAI,KAAK,CAAC,KAAK,IAAIA,GAAE,EAAE,IAAI,KAAK,CAAC,KAAK,IAAIA,GAAE,EAAE,IAAI,KAAK,CAAC,KAAK,IAAIA,GAAE,EAAE,IAAI,KAAK,CAAC,KAAK,IAAIA,GAAE,EAAE,IAAI,KAAK,CAAC,KAAK,IAAIA,GAAE,EAAE,IAAI,KAAK,CAAC,KAAK,IAAIA,GAAE,EAAE,IAAI,KAAK,CAAC,KAAK,IAAIA,GAAE,EAAE,IAAI,KAAK,CAAC,KAAK,IAAIA,GAAE,EAAE,IAAI,KAAK,CAAC,KAAK,IAAIA,GAAE,CAAC,IAAI,KAAK,CAAC,KAAK,IAAIA,GAAE,CAAC,IAAI,KAAK,CAAC,KAAK,IAAIA,GAAE,EAAE,IAAI,KAAK,CAAC,KAAK,IAAIA,GAAE,EAAE,IAAI,KAAK,CAAC,KAAK,IAAIA,GAAE,EAAE,IAAI,KAAK,CAAC,KAAK,IAAIA,GAAE,EAAE,IAAI,KAAK,CAAC,KAAK,IAAIA,GAAE,EAAE,IAAI,KAAK,CAAC,KAAK,IAAIA,GAAE,EAAE,IAAI,KAAK,CAAC,KAAK,IAAIA,GAAE,EAAE,IAAI,KAAK,CAAC,KAAK,IAAIA,GAAE,EAAE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","x_google_ignoreList":[2,3,4,5,6,7,8,9]}