@cowprotocol/cow-sdk 6.1.1 → 6.2.0-RC.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.
@@ -1,29 +0,0 @@
1
- import"cross-fetch/polyfill";import{RateLimiter as e}from"limiter";import{backOff as t}from"exponential-backoff";import{utils as n,Contract as r,ethers as i,constants as s,BigNumber as a}from"ethers";import{Signer as o,VoidSigner as u}from"@ethersproject/abstract-signer";import{MetadataApi as l,stringifyDeterministic as c}from"@cowprotocol/app-data";import{keccak256 as d,toUtf8Bytes as h,solidityKeccak256 as p,Interface as f,defaultAbiCoder as m,getCreate2Address as y,arrayify as g,joinSignature as b,splitSignature as v,formatBytes32String as w}from"ethers/lib/utils";import A from"deepmerge";import{ORDER_TYPE_FIELDS as T,OrderKind as E,SigningScheme as S,hashTypedData as I,isTypedDataSigner as k,OrderBalance as C}from"@cowprotocol/contracts";import{Planner as N,Contract as x}from"@weiroll/weiroll.js";import{gql as _,request as R}from"graphql-request";import{StandardMerkleTree as M}from"@openzeppelin/merkle-tree";var P,O,B,D;!function(e){e.IN_PROGRESS="in_progress",e.EXECUTED="executed",e.EXPIRED="expired",e.REFUND="refund",e.UNKNOWN="unknown"}(P||(P={})),function(e){e.NO_INTERMEDIATE_TOKENS="NO_INTERMEDIATE_TOKENS",e.API_ERROR="API_ERROR",e.INVALID_API_JSON_RESPONSE="INVALID_API_JSON_RESPONSE",e.ONLY_SELL_ORDER_SUPPORTED="ONLY_SELL_ORDER_SUPPORTED",e.TX_BUILD_ERROR="TX_BUILD_ERROR",e.QUOTE_ERROR="QUOTE_ERROR",e.NO_ROUTES="NO_ROUTES",e.INVALID_BRIDGE="INVALID_BRIDGE"}(O||(O={}));class F extends Error{constructor(e,t){super(e),this.context=t,this.name="BridgeProviderQuoteError"}}class L extends Error{constructor(e,t){super(e),this.context=t,this.name="BridgeProviderError"}}class U extends Error{constructor(e,t){super(e),this.context=t,this.name="BridgeOrderParsingError"}}function G(e){return"bridge"in e}function H(e){return!G(e)}function q(e){if(!G(e))throw new Error("Quote result is not of type BridgeQuoteAndPost. Are you sure the sell and buy chains different?")}function V(e){if(!H(e))throw new Error("Quote result is not of type QuoteAndPost. Are you sure the sell and buy chains are the same?")}function z(e){if(!e)return[];const t=JSON.parse(e);return j(t)&&t.metadata.hooks&&t.metadata.hooks.post||[]}function j(e){return"object"==typeof e&&null!==e&&"version"in e&&"metadata"in e}function K(){return K=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},K.apply(this,arguments)}function W(e,t){if(null==e)return{};var n,r,i={},s=Object.keys(e);for(r=0;r<s.length;r++)t.indexOf(n=s[r])>=0||(i[n]=e[n]);return i}!function(e){e[e.MAINNET=1]="MAINNET",e[e.GNOSIS_CHAIN=100]="GNOSIS_CHAIN",e[e.ARBITRUM_ONE=42161]="ARBITRUM_ONE",e[e.BASE=8453]="BASE",e[e.POLYGON=137]="POLYGON",e[e.AVALANCHE=43114]="AVALANCHE",e[e.SEPOLIA=11155111]="SEPOLIA"}(B||(B={})),function(e){e[e.OPTIMISM=10]="OPTIMISM"}(D||(D={}));class J extends Error{constructor(e,t){super(e),this.error_code=t}}class Q extends Error{constructor(e,t){super("string"==typeof t?t:e.statusText),this.response=e,this.body=t}}const Y=[408,425,429,500,502,503,504],X={numOfAttempts:10,maxDelay:Infinity,jitter:"none",retry:e=>!(e instanceof Q)||Y.includes(e.response.status)},Z={tokensPerInterval:5,interval:"second"},$=async e=>{if(204!==e.status)try{const t=e.headers.get("Content-Type");if(t)return t.toLowerCase().startsWith("application/json")?await e.json():await e.text()}catch(e){console.error(e)}};async function ee(e,{path:n,query:r,method:i,body:s},a,o){const u=`${e}${n}${r?"?"+r:""}`,l={method:i,body:(()=>{if(s)return"string"==typeof s?s:JSON.stringify(s)})(),headers:{Accept:"application/json","Content-Type":"application/json"}};return t(async()=>{await a.removeTokens(1);const e=await fetch(u,l),t=await $(e);return e.status>=200&&e.status<300?t:Promise.reject(new Q(e,t))},o)}const te="0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE",ne="https://raw.githubusercontent.com/cowprotocol/token-lists/main/src/public/images",re={decimals:18,name:"Wrapped Ether",symbol:"WETH",logoUrl:`${ne}/1/0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2/logo.png`},ie={[B.MAINNET]:K({},re,{chainId:B.MAINNET,address:"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2"}),[B.GNOSIS_CHAIN]:{chainId:B.GNOSIS_CHAIN,address:"0xe91D153E0b41518A2Ce8Dd3D7944Fa863463a97d",decimals:18,name:"Wrapped XDAI",symbol:"WXDAI",logoUrl:`${ne}/100/0xe91d153e0b41518a2ce8dd3d7944fa863463a97d/logo.png`},[B.ARBITRUM_ONE]:K({},re,{chainId:B.ARBITRUM_ONE,address:"0x82aF49447D8a07e3bd95BD0d56f35241523fBab1"}),[B.BASE]:K({},re,{chainId:B.BASE,address:"0x4200000000000000000000000000000000000006"}),[B.SEPOLIA]:K({},re,{chainId:B.SEPOLIA,address:"0xfFf9976782d46CC05630D1f6eBAb18b2324d6B14"}),[B.POLYGON]:{chainId:B.POLYGON,address:"0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270",decimals:18,name:"Wrapped POL",symbol:"WPOL",logoUrl:`${ne}/137/0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270/logo.png`},[B.AVALANCHE]:{chainId:B.AVALANCHE,address:"0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7",decimals:18,name:"Wrapped AVAX",symbol:"WAVAX",logoUrl:`${ne}/43114/0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7/logo.png`}},se={address:te,decimals:18,name:"Ether",symbol:"ETH",logoUrl:`${ne}/1/${te}/logo.png`},ae="https://raw.githubusercontent.com/cowprotocol/cow-sdk/refs/heads/main",oe=`${ae}/src/chains`,ue=`${oe}/images/mainnet-logo.svg`,le={id:B.MAINNET,label:"Ethereum",eip155Label:"Ethereum Mainnet",nativeCurrency:K({},se,{chainId:B.MAINNET}),addressPrefix:"eth",isTestnet:!1,contracts:{ensRegistry:{address:"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e"},ensUniversalResolver:{address:"0xce01f8eee7E479C928F8919abD53E553a36CeF67",blockCreated:19258213},multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:14353601}},rpcUrls:{default:{http:["https://eth.merkle.io"]}},color:"#62688F",logo:{light:ue,dark:ue},website:{name:"Ethereum",url:"https://ethereum.org"},docs:{name:"Ethereum Docs",url:"https://ethereum.org/en/developers/docs"},blockExplorer:{name:"Etherscan",url:"https://etherscan.io"}},ce=`${oe}/images/gnosis-logo.svg`,de={id:B.GNOSIS_CHAIN,label:"Gnosis",eip155Label:"Gnosis",nativeCurrency:K({},se,{chainId:B.GNOSIS_CHAIN,name:"xDAI",symbol:"xDAI",logoUrl:`${ne}/100/${te}/logo.png`}),addressPrefix:"gno",isTestnet:!1,contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:21022491}},rpcUrls:{default:{http:["https://rpc.gnosischain.com"],webSocket:["wss://rpc.gnosischain.com/wss"]}},color:"#07795B",logo:{light:ce,dark:ce},website:{name:"Gnosis Chain",url:"https://www.gnosischain.com"},docs:{name:"Gnosis Chain Docs",url:"https://docs.gnosischain.com"},blockExplorer:{name:"Gnosisscan",url:"https://gnosisscan.io"},bridges:[{name:"Gnosis Chain Bridge",url:"https://bridge.gnosischain.com"}]},he=`${oe}/images/arbitrum-logo-light.svg`,pe=`${oe}/images/arbitrum-logo-dark.svg`,fe={id:B.ARBITRUM_ONE,label:"Arbitrum",eip155Label:"Arbitrum One",nativeCurrency:K({},se,{chainId:B.ARBITRUM_ONE}),addressPrefix:"arb1",isTestnet:!1,contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:7654707}},rpcUrls:{default:{http:["https://arb1.arbitrum.io/rpc"]}},color:"#1B4ADD",logo:{light:he,dark:pe},website:{name:"Arbitrum",url:"https://arbitrum.io"},docs:{name:"Arbitrum Docs",url:"https://docs.arbitrum.io"},blockExplorer:{name:"Arbiscan",url:"https://arbiscan.io"},bridges:[{name:"Arbitrum Bridge",url:"https://bridge.arbitrum.io"}]},me=`${oe}/images/base-logo.svg`,ye={id:B.BASE,label:"Base",eip155Label:"Base",nativeCurrency:K({},se,{chainId:B.BASE}),addressPrefix:"base",isTestnet:!1,contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:5022}},rpcUrls:{default:{http:["https://mainnet.base.org"]}},color:"#0052FF",logo:{light:me,dark:me},website:{name:"Base",url:"https://base.org"},docs:{name:"Base Docs",url:"https://docs.base.org"},blockExplorer:{name:"Basescan",url:"https://basescan.org"},bridges:[{name:"Superchain Bridges",url:"https://bridge.base.org/deposit"}]},ge=`${oe}/images/sepolia-logo.svg`,be={id:B.SEPOLIA,label:"Sepolia",eip155Label:"Ethereum Sepolia",nativeCurrency:K({},se,{chainId:B.SEPOLIA}),addressPrefix:"sep",isTestnet:!0,contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:751532},ensRegistry:{address:"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e"},ensUniversalResolver:{address:"0xc8Af999e38273D658BE1b921b88A9Ddf005769cC",blockCreated:5317080}},rpcUrls:{default:{http:["https://sepolia.drpc.org"]}},color:"#C12FF2",logo:{light:ge,dark:ge},website:{name:"Ethereum",url:"https://sepolia.dev"},docs:{name:"Sepolia Docs",url:"https://ethereum.org/en/developers/docs/networks/#sepolia"},blockExplorer:{name:"Etherscan",url:"https://sepolia.etherscan.io"}},ve=`${oe}/images/avax-logo.svg`,we={id:B.AVALANCHE,label:"Avalanche",eip155Label:"Avalanche C-Chain",logo:{light:ve,dark:ve},nativeCurrency:K({},se,{chainId:B.AVALANCHE,name:"Avalanche",symbol:"AVAX",logoUrl:ve}),addressPrefix:"avax",isTestnet:!1,contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:11907934}},rpcUrls:{default:{http:["https://api.avax.network/ext/bc/C/rpc"]}},color:"#ff3944",website:{name:"Avalanche",url:"https://www.avax.network/"},docs:{name:"Avalanche Docs",url:"https://build.avax.network/docs"},blockExplorer:{name:"Snowscan",url:"https://snowscan.xyz"}},Ae=`${oe}/images/optimism-logo.svg`,Te={id:10,label:"Optimism",eip155Label:"OP Mainnet",logo:{light:Ae,dark:Ae},nativeCurrency:K({},se,{chainId:10}),addressPrefix:"op",isTestnet:!1,contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:4286263}},rpcUrls:{default:{http:["https://mainnet.optimism.io"]}},color:"#ff0420",website:{name:"Optimism",url:"https://optimism.io"},docs:{name:"Optimism Docs",url:"https://docs.optimism.io"},blockExplorer:{name:"Etherscan",url:"https://optimistic.etherscan.io"}},Ee=`${oe}/images/polygon-logo.svg`,Se={id:B.POLYGON,label:"Polygon",eip155Label:"Polygon Mainnet",logo:{light:Ee,dark:Ee},nativeCurrency:K({},se,{chainId:B.POLYGON,name:"POL",symbol:"POL",logoUrl:Ee}),addressPrefix:"matic",isTestnet:!1,contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:25770160}},rpcUrls:{default:{http:["https://polygon-rpc.com"]}},color:"#8247e5",website:{name:"Polygon",url:"https://polygon.technology"},docs:{name:"Polygon Docs",url:"https://docs.polygon.technology"},blockExplorer:{name:"Polygonscan",url:"https://polygonscan.com"}},Ie={[B.MAINNET]:le,[B.GNOSIS_CHAIN]:de,[B.ARBITRUM_ONE]:fe,[B.BASE]:ye,[B.AVALANCHE]:we,[B.POLYGON]:Se,[B.SEPOLIA]:be},ke=Object.values(Ie),Ce=ke.map(e=>e.id),Ne={[D.OPTIMISM]:Te},xe=ke.concat(Object.values(Ne)),_e=xe.map(e=>e.id);function Re(e){return Ce.reduce((t,n)=>K({},t,{[n]:"function"==typeof e?e(n):e}),{})}function Me(e){return Re(e)}const Pe="0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE",Oe="0x2f55e8b20D0B9FEFA187AA7d00B6Cbe563605bF5",Be="0xfdaFc9d1902f4e0b84f65F49f244b32b31013b74",De="1.0.0",Fe="1.0.1",Le=Fe,Ue={[De]:"0x00E989b87700514118Fa55326CD1cCE82faebEF6",[Fe]:"0x312f92fe5f1710408B20D52A374fa29e099cFA86"},Ge={[De]:"0x2CFFA8cf11B90C9F437567b86352169dF4009F73",[Fe]:"0xa2704cf562ad418bf0453f4b662ebf6a2489ed88"},He={[De]:"0x60a034608e57601f61037138819003918201601f19168301916001600160401b038311848410176093578084926040948552833981010312608e57604b602060458360a9565b920160a9565b6080527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc556040516102b490816100bd8239608051818181608f01526101720152f35b600080fd5b634e487b7160e01b600052604160045260246000fd5b51906001600160a01b0382168203608e5756fe60806040526004361015610018575b3661019457610194565b6000803560e01c908163025b22bc1461003b575063f851a4400361000e5761010d565b3461010a5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010a5773ffffffffffffffffffffffffffffffffffffffff60043581811691828203610106577f0000000000000000000000000000000000000000000000000000000000000000163314600014610101577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b8280a280f35b61023d565b8380fd5b80fd5b346101645760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610164576020610146610169565b73ffffffffffffffffffffffffffffffffffffffff60405191168152f35b600080fd5b333003610101577f000000000000000000000000000000000000000000000000000000000000000090565b60ff7f68df44b1011761f481358c0f49a711192727fb02c377d697bcb0ea8ff8393ac0541615806101ef575b1561023d5760046040517ff92ee8a9000000000000000000000000000000000000000000000000000000008152fd5b507f400ada75000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000006000351614156101c0565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546000808092368280378136915af43d82803e1561027a573d90f35b3d90fdfea2646970667358221220c7c26ff3040b96a28e96d6d27b743972943aeaef81cc821544c5fe1e24f9b17264736f6c63430008190033",[Fe]:"0x60a03461009557601f61033d38819003918201601f19168301916001600160401b0383118484101761009957808492604094855283398101031261009557610052602061004b836100ad565b92016100ad565b6080527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5560405161027b90816100c28239608051818181608b01526101750152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b03821682036100955756fe60806040526004361015610018575b3661019757610197565b5f3560e01c8063025b22bc146100375763f851a4400361000e57610116565b346101125760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101125760043573ffffffffffffffffffffffffffffffffffffffff81169081810361011257337f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff160361010d577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2005b61023d565b5f80fd5b34610112575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261011257602061014e61016c565b73ffffffffffffffffffffffffffffffffffffffff60405191168152f35b33300361010d577f000000000000000000000000000000000000000000000000000000000000000090565b60ff7f68df44b1011761f481358c0f49a711192727fb02c377d697bcb0ea8ff8393ac0541615806101f0575b1561023d577ff92ee8a9000000000000000000000000000000000000000000000000000000005f5260045ffd5b507f400ada75000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000005f351614156101c3565b5f807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc54368280378136915af43d5f803e15610277573d5ff35b3d5ffd"},qe=Me("0x9008D19f58AAbD9eD0D60971565AA8510560ab41"),Ve=Me("0xC92E8bdf79f0507f65a392b0ab4667716BFE0110"),ze=Me(Oe),je=Me(Be),Ke="0xba3cb449bd2b4adddbc894d8697f5170800eadec",We="0x04501b9b1d52e67f6862d157e00d13419d2d6e95",Je=Me(Ke),Qe=Me(We),Ye=4294967295;function Xe(e){return function(e){const{ethflowData:t}=e;if(!t)return e;const{userValidTo:n}=t;return K({},e,{validTo:n,owner:e.onchainUser||e.owner,sellToken:Pe})}(function(e){const{executedFeeAmount:t,executedFee:n}=e,r=BigInt(t||"0"),i=BigInt(n||"0");return K({},e,{totalFee:String(r+i)})}(e))}let Ze=!1;function $e(e){Ze&&console.log(`[COW TRADING SDK] ${e}`)}function et(e){Ze=e}const tt=["prod","staging"],nt={env:"prod",chainId:B.MAINNET},rt="https://gnosis.mypinata.cloud/ipfs",it="https://api.pinata.cloud",st=(e,t)=>"bigint"==typeof t||"object"==typeof t&&null!==t&&"_isBigNumber"in t?t.toString():t,at={[B.MAINNET]:"https://api.cow.fi/mainnet",[B.GNOSIS_CHAIN]:"https://api.cow.fi/xdai",[B.ARBITRUM_ONE]:"https://api.cow.fi/arbitrum_one",[B.BASE]:"https://api.cow.fi/base",[B.SEPOLIA]:"https://api.cow.fi/sepolia",[B.POLYGON]:"https://api.cow.fi/polygon",[B.AVALANCHE]:"https://api.cow.fi/avalanche"},ot={[B.MAINNET]:"https://barn.api.cow.fi/mainnet",[B.GNOSIS_CHAIN]:"https://barn.api.cow.fi/xdai",[B.ARBITRUM_ONE]:"https://barn.api.cow.fi/arbitrum_one",[B.BASE]:"https://barn.api.cow.fi/base",[B.SEPOLIA]:"https://barn.api.cow.fi/sepolia",[B.POLYGON]:"https://barn.api.cow.fi/polygon",[B.AVALANCHE]:"https://barn.api.cow.fi/avalanche"};function ut(e){return Object.keys(e).reduce((t,n)=>{const r=e[n];return void 0!==r&&(t[n]=r),t},{})}class lt{constructor(t={}){this.context=K({},nt,t),this.rateLimiter=new e(t.limiterOpts||Z)}getVersion(e={}){return this.fetch({path:"/api/v1/version",method:"GET"},e)}getTrades(e,t={}){if(e.owner&&e.orderUid)return Promise.reject(new J("Cannot specify both owner and orderId"));if(!e.owner&&!e.orderUid)return Promise.reject(new J("Must specify either owner or orderId"));const n=new URLSearchParams(ut(e));return this.fetch({path:"/api/v1/trades",method:"GET",query:n},t)}getOrders({owner:e,offset:t=0,limit:n=1e3},r={}){const i=new URLSearchParams(ut({offset:t.toString(),limit:n.toString()}));return this.fetch({path:`/api/v1/account/${e}/orders`,method:"GET",query:i},r).then(e=>e.map(Xe))}getTxOrders(e,t={}){return this.fetch({path:`/api/v1/transactions/${e}/orders`,method:"GET"},t).then(e=>e.map(Xe))}getOrder(e,t={}){return this.fetch({path:`/api/v1/orders/${e}`,method:"GET"},t).then(e=>Xe(e))}getOrderCompetitionStatus(e,t={}){return this.fetch({path:`/api/v1/orders/${e}/status`,method:"GET"},t)}getOrderMultiEnv(e,t={}){const{env:n}=this.getContextWithOverride(t),r=tt.filter(e=>e!==n);let i=0;const s=n=>{const a=r[i];return n instanceof Q&&404===n.response.status&&a?(i++,this.getOrder(e,K({},t,{env:a})).catch(s)):Promise.reject(n)};return this.getOrder(e,K({},t,{env:n})).catch(s)}getQuote(e,t={}){return this.fetch({path:"/api/v1/quote",method:"POST",body:e},t)}sendSignedOrderCancellations(e,t={}){return this.fetch({path:"/api/v1/orders",method:"DELETE",body:e},t)}sendOrder(e,t={}){return this.fetch({path:"/api/v1/orders",method:"POST",body:e},t)}getNativePrice(e,t={}){return this.fetch({path:`/api/v1/token/${e}/native_price`,method:"GET"},t)}getTotalSurplus(e,t={}){return this.fetch({path:`/api/v1/users/${e}/total_surplus`,method:"GET"},t)}getAppData(e,t={}){return this.fetch({path:`/api/v1/app_data/${e}`,method:"GET"},t)}uploadAppData(e,t,n={}){return this.fetch({path:`/api/v1/app_data/${e}`,method:"PUT",body:{fullAppData:t}},n)}getSolverCompetition(e,t={}){return this.fetch({path:`/api/v1/solver_competition${"string"==typeof e?"/by_tx_hash":""}/${e}`,method:"GET"},t)}getOrderLink(e,t){const{chainId:n,env:r}=this.getContextWithOverride(t);return this.getApiBaseUrls(r)[n]+`/api/v1/orders/${e}`}getContextWithOverride(e={}){return K({},this.context,e)}getApiBaseUrls(e){return this.context.baseUrls?this.context.baseUrls:"prod"===e?at:ot}fetch(t,n={}){const{chainId:r,env:i,backoffOpts:s}=this.getContextWithOverride(n),a=this.getApiBaseUrls(i)[r],o=s||X,u=n.limiterOpts?new e(n.limiterOpts):this.rateLimiter;return $e(`Fetching OrderBook API: ${a}${t.path}. Params: ${JSON.stringify(t,st)}`),ee(a,t,u,o)}}var ct,dt,ht,pt,ft,mt,yt,gt,bt,vt,wt,At,Tt,Et,St;!function(e){e.ERC20="erc20",e.INTERNAL="internal"}(ct||(ct={})),function(e){var t;(t=e.type||(e.type={})).OPEN="open",t.SCHEDULED="scheduled",t.ACTIVE="active",t.SOLVED="solved",t.EXECUTING="executing",t.TRADED="traded",t.CANCELLED="cancelled"}(dt||(dt={})),function(e){e.EIP712="eip712",e.ETHSIGN="ethsign"}(ht||(ht={})),function(e){var t;(t=e.placementError||(e.placementError={})).QUOTE_NOT_FOUND="QuoteNotFound",t.VALID_TO_TOO_FAR_IN_FUTURE="ValidToTooFarInFuture",t.PRE_VALIDATION_ERROR="PreValidationError"}(pt||(pt={})),function(e){var t;(t=e.errorType||(e.errorType={})).INVALID_SIGNATURE="InvalidSignature",t.WRONG_OWNER="WrongOwner",t.ORDER_NOT_FOUND="OrderNotFound",t.ALREADY_CANCELLED="AlreadyCancelled",t.ORDER_FULLY_EXECUTED="OrderFullyExecuted",t.ORDER_EXPIRED="OrderExpired",t.ON_CHAIN_ORDER="OnChainOrder"}(ft||(ft={})),function(e){e.MARKET="market",e.LIMIT="limit",e.LIQUIDITY="liquidity"}(mt||(mt={})),function(e){e.BUY="buy",e.SELL="sell"}(yt||(yt={})),function(e){var t;(t=e.errorType||(e.errorType={})).DUPLICATED_ORDER="DuplicatedOrder",t.QUOTE_NOT_FOUND="QuoteNotFound",t.QUOTE_NOT_VERIFIED="QuoteNotVerified",t.INVALID_QUOTE="InvalidQuote",t.MISSING_FROM="MissingFrom",t.WRONG_OWNER="WrongOwner",t.INVALID_EIP1271SIGNATURE="InvalidEip1271Signature",t.INSUFFICIENT_BALANCE="InsufficientBalance",t.INSUFFICIENT_ALLOWANCE="InsufficientAllowance",t.INVALID_SIGNATURE="InvalidSignature",t.SELL_AMOUNT_OVERFLOW="SellAmountOverflow",t.TRANSFER_SIMULATION_FAILED="TransferSimulationFailed",t.ZERO_AMOUNT="ZeroAmount",t.INCOMPATIBLE_SIGNING_SCHEME="IncompatibleSigningScheme",t.TOO_MANY_LIMIT_ORDERS="TooManyLimitOrders",t.TOO_MUCH_GAS="TooMuchGas",t.UNSUPPORTED_BUY_TOKEN_DESTINATION="UnsupportedBuyTokenDestination",t.UNSUPPORTED_SELL_TOKEN_SOURCE="UnsupportedSellTokenSource",t.UNSUPPORTED_ORDER_TYPE="UnsupportedOrderType",t.INSUFFICIENT_VALID_TO="InsufficientValidTo",t.EXCESSIVE_VALID_TO="ExcessiveValidTo",t.INVALID_NATIVE_SELL_TOKEN="InvalidNativeSellToken",t.SAME_BUY_AND_SELL_TOKEN="SameBuyAndSellToken",t.UNSUPPORTED_TOKEN="UnsupportedToken",t.INVALID_APP_DATA="InvalidAppData",t.APP_DATA_HASH_MISMATCH="AppDataHashMismatch",t.APPDATA_FROM_MISMATCH="AppdataFromMismatch"}(gt||(gt={})),function(e){e.BUY="buy"}(bt||(bt={})),function(e){e.SELL="sell"}(vt||(vt={})),function(e){e.PRESIGNATURE_PENDING="presignaturePending",e.OPEN="open",e.FULFILLED="fulfilled",e.CANCELLED="cancelled",e.EXPIRED="expired"}(wt||(wt={})),function(e){var t;(t=e.errorType||(e.errorType={})).QUOTE_NOT_VERIFIED="QuoteNotVerified",t.UNSUPPORTED_TOKEN="UnsupportedToken",t.ZERO_AMOUNT="ZeroAmount",t.UNSUPPORTED_ORDER_TYPE="UnsupportedOrderType"}(At||(At={})),function(e){e.FAST="fast",e.OPTIMAL="optimal",e.VERIFIED="verified"}(Tt||(Tt={})),function(e){e.ERC20="erc20",e.INTERNAL="internal",e.EXTERNAL="external"}(Et||(Et={})),function(e){e.EIP712="eip712",e.ETHSIGN="ethsign",e.PRESIGN="presign",e.EIP1271="eip1271"}(St||(St={}));const It=BigInt(1e4);function kt(e){const{sellDecimals:t,buyDecimals:n,orderParams:r}=e,{sellAmountAfterNetworkCosts:i,buyAmountAfterNetworkCosts:s,buyAmountBeforeNetworkCosts:a,isSell:o,networkCostAmount:u,quotePrice:l,sellAmountBeforeNetworkCosts:c}=Ct({sellDecimals:t,buyDecimals:n,orderParams:r});return{isSell:o,quotePrice:l,sellAmountAfterNetworkCosts:i.big,buyAmountAfterNetworkCosts:s.big,buyAmountBeforeNetworkCosts:a.big,networkCostAmount:u.big,sellAmountBeforeNetworkCosts:c.big}}function Ct(e){const{sellDecimals:t,buyDecimals:n,orderParams:r}=e,i=r.kind===yt.SELL,s=xt(r.feeAmount,t),a=xt(r.sellAmount,t),o=xt(r.buyAmount,n),u=o.num/a.num,l=xt(a.big+s.big,t);return{isSell:i,quotePrice:u,networkCostAmount:s,sellAmountBeforeNetworkCosts:a,buyAmountAfterNetworkCosts:o,sellAmountAfterNetworkCosts:l,buyAmountBeforeNetworkCosts:xt(u*l.num,n)}}function Nt(e){var t;const{orderParams:n,sellDecimals:r,buyDecimals:i,slippagePercentBps:s}=e,a=null!==(t=e.partnerFeeBps)&&void 0!==t?t:0,{isSell:o,networkCostAmount:u,sellAmountBeforeNetworkCosts:l,buyAmountAfterNetworkCosts:c,sellAmountAfterNetworkCosts:d,buyAmountBeforeNetworkCosts:h,quotePrice:p}=Ct({sellDecimals:r,buyDecimals:i,orderParams:n}),{afterPartnerFees:f,partnerFeeAmount:m}=function(e){const{sellAmountAfterNetworkCosts:t,buyAmountAfterNetworkCosts:n,buyAmountBeforeNetworkCosts:r,sellAmountBeforeNetworkCosts:i,isSell:s,partnerFeeBps:a}=e,o=a>0?(s?r.big:i.big)*BigInt(a)/It:BigInt(0);return{partnerFeeAmount:o,afterPartnerFees:s?{sellAmount:t.big,buyAmount:n.big-o}:{sellAmount:t.big+o,buyAmount:n.big}}}({sellAmountAfterNetworkCosts:d,buyAmountAfterNetworkCosts:c,buyAmountBeforeNetworkCosts:h,sellAmountBeforeNetworkCosts:l,isSell:o,partnerFeeBps:a}),{afterSlippage:y}=function(e){const{afterPartnerFees:t,isSell:n,slippagePercentBps:r}=e,i=e=>e*BigInt(r)/It;return{afterSlippage:n?{sellAmount:t.sellAmount,buyAmount:t.buyAmount-i(t.buyAmount)}:{sellAmount:t.sellAmount+i(t.sellAmount),buyAmount:t.buyAmount}}}({afterPartnerFees:f,isSell:o,slippagePercentBps:s});return{isSell:o,costs:{networkFee:{amountInSellCurrency:u.big,amountInBuyCurrency:xt(p*u.num,i).big},partnerFee:{amount:m,bps:a}},beforeNetworkCosts:{sellAmount:l.big,buyAmount:h.big},afterNetworkCosts:{sellAmount:d.big,buyAmount:c.big},afterPartnerFees:f,afterSlippage:y}}function xt(e,t){if("number"==typeof e){const n=e*10**t,r=n.toFixed();return{big:BigInt(r.includes("e")?n:r),num:e}}const n=BigInt(e);return{big:n,num:Number(n)/10**t}}const _t={[ht.EIP712]:St.EIP712,[ht.ETHSIGN]:St.ETHSIGN},Rt=BigInt(15e4),Mt=()=>import("./utils-6e8340a0.js");class Pt{static async signOrder(e,t,n){const{signOrder:r}=await Mt();return r(e,t,n)}static async signOrderCancellation(e,t,n){const{signOrderCancellation:r}=await Mt();return r(e,t,n)}static async signOrderCancellations(e,t,n){const{signOrderCancellations:r}=await Mt();return r(e,t,n)}static async getDomain(e){const{getDomain:t}=await Mt();return t(e)}static async generateOrderId(e,t,n){const{generateOrderId:r}=await Mt();return r(e,t,n)}static async getDomainSeparator(e){const{getDomain:t}=await Mt(),{_TypedDataEncoder:n}=await import("ethers/lib/utils");return n.hashDomain(t(e))}static getEIP712Types(){return{Order:[{name:"sellToken",type:"address"},{name:"buyToken",type:"address"},{name:"receiver",type:"address"},{name:"sellAmount",type:"uint256"},{name:"buyAmount",type:"uint256"},{name:"validTo",type:"uint32"},{name:"appData",type:"bytes32"},{name:"feeAmount",type:"uint256"},{name:"kind",type:"string"},{name:"partiallyFillable",type:"bool"},{name:"sellTokenBalance",type:"string"},{name:"buyTokenBalance",type:"string"}]}}}function Ot(e){if(e){if("volumeBps"in e)return e.volumeBps;if(Array.isArray(e))for(const t of e)if("volumeBps"in t)return t.volumeBps}}function Bt(e){return Dt(e)?Ie[e]:Ft(e)?Ne[e]:void 0}function Dt(e){return e in Ie}function Ft(e){return e in Ne}function Lt(e){return Dt(e)||Ft(e)}const Ut=10n**6n,Gt=50,Ht={[B.MAINNET]:200,[B.ARBITRUM_ONE]:50,[B.BASE]:50,[B.GNOSIS_CHAIN]:50,[B.SEPOLIA]:50,[B.POLYGON]:50,[B.AVALANCHE]:50};function qt(e,t){return t?Ht[e]:Gt}const Vt=1800;function zt({chainId:e,from:t,networkCostsAmount:n="0",isEthFlow:r},i,s){const{sellAmount:a,buyAmount:o,sellToken:u,sellTokenDecimals:l,buyToken:c,buyTokenDecimals:d,kind:h,partiallyFillable:p=!1,slippageBps:f=qt(e,r),partnerFee:m,validFor:y=Vt}=i,g=i.receiver||t,b=i.validTo||Number(function(e){return BigInt(Math.floor(Date.now()/1e3)+e)}(y)),v={sellToken:u,buyToken:c,sellAmount:a,buyAmount:o,receiver:g,validTo:b,kind:h,feeAmount:n,appData:s,partiallyFillable:p},{afterSlippage:w}=Nt({orderParams:v,slippagePercentBps:f,partnerFeeBps:Ot(m),sellDecimals:l,buyDecimals:d});return{sellToken:u,buyToken:c,sellAmount:w.sellAmount.toString(),buyAmount:w.buyAmount.toString(),validTo:b,kind:h,partiallyFillable:p,appData:s,receiver:g,feeAmount:"0",sellTokenBalance:Et.ERC20,buyTokenBalance:ct.ERC20}}async function jt(e,t,n,r){const{orderDigest:i,orderId:s}=await Pt.generateOrderId(e,K({},function(e){return K({},e,{sellTokenBalance:e.sellTokenBalance,buyTokenBalance:e.buyTokenBalance})}(t),{validTo:Ye,sellToken:ie[e].address}),{owner:"staging"===r?We:Ke});return n&&await n(s,i)?(console.error("ETH FLOW","[calculateUniqueOrderId] ❌ Collision detected: "+s,{sellAmount:t.sellAmount,fee:t.feeAmount}),jt(e,function(e){return K({},e,{buyAmount:(BigInt(e.buyAmount)-BigInt(1)).toString()})}(t),n)):s}const Kt=[{inputs:[{internalType:"address",name:"impl",type:"address"},{internalType:"bytes32",name:"bName",type:"bytes32"},{internalType:"bytes32",name:"bNode",type:"bytes32"}],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"InvalidSignature",type:"error"},{inputs:[],name:"NonceAlreadyUsed",type:"error"},{inputs:[],name:"SettingEnsRecordsFailed",type:"error"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"user",type:"address"},{indexed:!1,internalType:"address",name:"shed",type:"address"}],name:"COWShedBuilt",type:"event"},{inputs:[{internalType:"bytes32",name:"node",type:"bytes32"}],name:"addr",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"baseName",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"baseNode",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{components:[{internalType:"address",name:"target",type:"address"},{internalType:"uint256",name:"value",type:"uint256"},{internalType:"bytes",name:"callData",type:"bytes"},{internalType:"bool",name:"allowFailure",type:"bool"},{internalType:"bool",name:"isDelegateCall",type:"bool"}],internalType:"struct Call[]",name:"calls",type:"tuple[]"},{internalType:"bytes32",name:"nonce",type:"bytes32"},{internalType:"uint256",name:"deadline",type:"uint256"},{internalType:"address",name:"user",type:"address"},{internalType:"bytes",name:"signature",type:"bytes"}],name:"executeHooks",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"",type:"bytes32"}],name:"forwardResolutionNodeToAddress",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"implementation",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"initializeEns",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"bool",name:"withEns",type:"bool"}],name:"initializeProxy",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"node",type:"bytes32"}],name:"name",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"ownerOf",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"who",type:"address"}],name:"proxyOf",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"",type:"bytes32"}],name:"reverseResolutionNodeToAddress",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"pure",type:"function"}];class Wt{static createInterface(){return new n.Interface(Kt)}static connect(e,t){return new r(e,Kt,t)}}Wt.abi=Kt;const Jt=[{inputs:[{internalType:"address",name:"_settlement",type:"address"}],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"InterfaceNotSupported",type:"error"},{inputs:[],name:"InvalidHandler",type:"error"},{inputs:[],name:"ProofNotAuthed",type:"error"},{inputs:[],name:"SingleOrderNotAuthed",type:"error"},{inputs:[],name:"SwapGuardRestricted",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"owner",type:"address"},{components:[{internalType:"contract IConditionalOrder",name:"handler",type:"address"},{internalType:"bytes32",name:"salt",type:"bytes32"},{internalType:"bytes",name:"staticInput",type:"bytes"}],indexed:!1,internalType:"struct IConditionalOrder.ConditionalOrderParams",name:"params",type:"tuple"}],name:"ConditionalOrderCreated",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"owner",type:"address"},{indexed:!1,internalType:"bytes32",name:"root",type:"bytes32"},{components:[{internalType:"uint256",name:"location",type:"uint256"},{internalType:"bytes",name:"data",type:"bytes"}],indexed:!1,internalType:"struct ComposableCoW.Proof",name:"proof",type:"tuple"}],name:"MerkleRootSet",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"owner",type:"address"},{indexed:!1,internalType:"contract ISwapGuard",name:"swapGuard",type:"address"}],name:"SwapGuardSet",type:"event"},{inputs:[{internalType:"address",name:"",type:"address"},{internalType:"bytes32",name:"",type:"bytes32"}],name:"cabinet",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{components:[{internalType:"contract IConditionalOrder",name:"handler",type:"address"},{internalType:"bytes32",name:"salt",type:"bytes32"},{internalType:"bytes",name:"staticInput",type:"bytes"}],internalType:"struct IConditionalOrder.ConditionalOrderParams",name:"params",type:"tuple"},{internalType:"bool",name:"dispatch",type:"bool"}],name:"create",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{components:[{internalType:"contract IConditionalOrder",name:"handler",type:"address"},{internalType:"bytes32",name:"salt",type:"bytes32"},{internalType:"bytes",name:"staticInput",type:"bytes"}],internalType:"struct IConditionalOrder.ConditionalOrderParams",name:"params",type:"tuple"},{internalType:"contract IValueFactory",name:"factory",type:"address"},{internalType:"bytes",name:"data",type:"bytes"},{internalType:"bool",name:"dispatch",type:"bool"}],name:"createWithContext",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"domainSeparator",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"owner",type:"address"},{components:[{internalType:"contract IConditionalOrder",name:"handler",type:"address"},{internalType:"bytes32",name:"salt",type:"bytes32"},{internalType:"bytes",name:"staticInput",type:"bytes"}],internalType:"struct IConditionalOrder.ConditionalOrderParams",name:"params",type:"tuple"},{internalType:"bytes",name:"offchainInput",type:"bytes"},{internalType:"bytes32[]",name:"proof",type:"bytes32[]"}],name:"getTradeableOrderWithSignature",outputs:[{components:[{internalType:"contract IERC20",name:"sellToken",type:"address"},{internalType:"contract IERC20",name:"buyToken",type:"address"},{internalType:"address",name:"receiver",type:"address"},{internalType:"uint256",name:"sellAmount",type:"uint256"},{internalType:"uint256",name:"buyAmount",type:"uint256"},{internalType:"uint32",name:"validTo",type:"uint32"},{internalType:"bytes32",name:"appData",type:"bytes32"},{internalType:"uint256",name:"feeAmount",type:"uint256"},{internalType:"bytes32",name:"kind",type:"bytes32"},{internalType:"bool",name:"partiallyFillable",type:"bool"},{internalType:"bytes32",name:"sellTokenBalance",type:"bytes32"},{internalType:"bytes32",name:"buyTokenBalance",type:"bytes32"}],internalType:"struct GPv2Order.Data",name:"order",type:"tuple"},{internalType:"bytes",name:"signature",type:"bytes"}],stateMutability:"view",type:"function"},{inputs:[{components:[{internalType:"contract IConditionalOrder",name:"handler",type:"address"},{internalType:"bytes32",name:"salt",type:"bytes32"},{internalType:"bytes",name:"staticInput",type:"bytes"}],internalType:"struct IConditionalOrder.ConditionalOrderParams",name:"params",type:"tuple"}],name:"hash",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"contract Safe",name:"safe",type:"address"},{internalType:"address",name:"sender",type:"address"},{internalType:"bytes32",name:"_hash",type:"bytes32"},{internalType:"bytes32",name:"_domainSeparator",type:"bytes32"},{internalType:"bytes32",name:"",type:"bytes32"},{internalType:"bytes",name:"encodeData",type:"bytes"},{internalType:"bytes",name:"payload",type:"bytes"}],name:"isValidSafeSignature",outputs:[{internalType:"bytes4",name:"magic",type:"bytes4"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"singleOrderHash",type:"bytes32"}],name:"remove",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"roots",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"root",type:"bytes32"},{components:[{internalType:"uint256",name:"location",type:"uint256"},{internalType:"bytes",name:"data",type:"bytes"}],internalType:"struct ComposableCoW.Proof",name:"proof",type:"tuple"}],name:"setRoot",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"root",type:"bytes32"},{components:[{internalType:"uint256",name:"location",type:"uint256"},{internalType:"bytes",name:"data",type:"bytes"}],internalType:"struct ComposableCoW.Proof",name:"proof",type:"tuple"},{internalType:"contract IValueFactory",name:"factory",type:"address"},{internalType:"bytes",name:"data",type:"bytes"}],name:"setRootWithContext",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract ISwapGuard",name:"swapGuard",type:"address"}],name:"setSwapGuard",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"},{internalType:"bytes32",name:"",type:"bytes32"}],name:"singleOrders",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"swapGuards",outputs:[{internalType:"contract ISwapGuard",name:"",type:"address"}],stateMutability:"view",type:"function"}];class Qt{static createInterface(){return new n.Interface(Jt)}static connect(e,t){return new r(e,Jt,t)}}Qt.abi=Jt;const Yt=[{inputs:[{components:[{internalType:"contract IERC20",name:"buyToken",type:"address"},{internalType:"address",name:"receiver",type:"address"},{internalType:"uint256",name:"sellAmount",type:"uint256"},{internalType:"uint256",name:"buyAmount",type:"uint256"},{internalType:"bytes32",name:"appData",type:"bytes32"},{internalType:"uint256",name:"feeAmount",type:"uint256"},{internalType:"uint32",name:"validTo",type:"uint32"},{internalType:"bool",name:"partiallyFillable",type:"bool"},{internalType:"int64",name:"quoteId",type:"int64"}],internalType:"struct EthFlowOrder.Data",name:"order",type:"tuple"}],name:"createOrder",outputs:[{internalType:"bytes32",name:"orderHash",type:"bytes32"}],stateMutability:"payable",type:"function"},{inputs:[{components:[{internalType:"contract IERC20",name:"buyToken",type:"address"},{internalType:"address",name:"receiver",type:"address"},{internalType:"uint256",name:"sellAmount",type:"uint256"},{internalType:"uint256",name:"buyAmount",type:"uint256"},{internalType:"bytes32",name:"appData",type:"bytes32"},{internalType:"uint256",name:"feeAmount",type:"uint256"},{internalType:"uint32",name:"validTo",type:"uint32"},{internalType:"bool",name:"partiallyFillable",type:"bool"},{internalType:"int64",name:"quoteId",type:"int64"}],internalType:"struct EthFlowOrder.Data",name:"order",type:"tuple"}],name:"invalidateOrder",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"",type:"bytes32"}],name:"orders",outputs:[{internalType:"address",name:"owner",type:"address"},{internalType:"uint32",name:"validTo",type:"uint32"}],stateMutability:"view",type:"function"}];class Xt{static createInterface(){return new n.Interface(Yt)}static connect(e,t){return new r(e,Yt,t)}}Xt.abi=Yt;const Zt=[{anonymous:!1,inputs:[{indexed:!0,internalType:"contract Safe",name:"safe",type:"address"},{indexed:!1,internalType:"bytes32",name:"domainSeparator",type:"bytes32"},{indexed:!1,internalType:"contract ISafeSignatureVerifier",name:"verifier",type:"address"}],name:"AddedDomainVerifier",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"contract Safe",name:"safe",type:"address"},{indexed:!1,internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"AddedInterface",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"contract Safe",name:"safe",type:"address"},{indexed:!1,internalType:"bytes4",name:"selector",type:"bytes4"},{indexed:!1,internalType:"bytes32",name:"method",type:"bytes32"}],name:"AddedSafeMethod",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"contract Safe",name:"safe",type:"address"},{indexed:!1,internalType:"bytes32",name:"domainSeparator",type:"bytes32"},{indexed:!1,internalType:"contract ISafeSignatureVerifier",name:"oldVerifier",type:"address"},{indexed:!1,internalType:"contract ISafeSignatureVerifier",name:"newVerifier",type:"address"}],name:"ChangedDomainVerifier",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"contract Safe",name:"safe",type:"address"},{indexed:!1,internalType:"bytes4",name:"selector",type:"bytes4"},{indexed:!1,internalType:"bytes32",name:"oldMethod",type:"bytes32"},{indexed:!1,internalType:"bytes32",name:"newMethod",type:"bytes32"}],name:"ChangedSafeMethod",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"contract Safe",name:"safe",type:"address"},{indexed:!1,internalType:"bytes32",name:"domainSeparator",type:"bytes32"}],name:"RemovedDomainVerifier",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"contract Safe",name:"safe",type:"address"},{indexed:!1,internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"RemovedInterface",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"contract Safe",name:"safe",type:"address"},{indexed:!1,internalType:"bytes4",name:"selector",type:"bytes4"}],name:"RemovedSafeMethod",type:"event"},{stateMutability:"nonpayable",type:"fallback"},{inputs:[{internalType:"contract Safe",name:"",type:"address"},{internalType:"bytes32",name:"",type:"bytes32"}],name:"domainVerifiers",outputs:[{internalType:"contract ISafeSignatureVerifier",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"_hash",type:"bytes32"},{internalType:"bytes",name:"signature",type:"bytes"}],name:"isValidSignature",outputs:[{internalType:"bytes4",name:"magic",type:"bytes4"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"},{internalType:"address",name:"",type:"address"},{internalType:"uint256[]",name:"",type:"uint256[]"},{internalType:"uint256[]",name:"",type:"uint256[]"},{internalType:"bytes",name:"",type:"bytes"}],name:"onERC1155BatchReceived",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"},{internalType:"address",name:"",type:"address"},{internalType:"uint256",name:"",type:"uint256"},{internalType:"uint256",name:"",type:"uint256"},{internalType:"bytes",name:"",type:"bytes"}],name:"onERC1155Received",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"},{internalType:"address",name:"",type:"address"},{internalType:"uint256",name:"",type:"uint256"},{internalType:"bytes",name:"",type:"bytes"}],name:"onERC721Received",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"contract Safe",name:"",type:"address"},{internalType:"bytes4",name:"",type:"bytes4"}],name:"safeInterfaces",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"contract Safe",name:"",type:"address"},{internalType:"bytes4",name:"",type:"bytes4"}],name:"safeMethods",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"domainSeparator",type:"bytes32"},{internalType:"contract ISafeSignatureVerifier",name:"newVerifier",type:"address"}],name:"setDomainVerifier",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes4",name:"selector",type:"bytes4"},{internalType:"bytes32",name:"newMethod",type:"bytes32"}],name:"setSafeMethod",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"},{internalType:"bool",name:"supported",type:"bool"}],name:"setSupportedInterface",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes4",name:"_interfaceId",type:"bytes4"},{internalType:"bytes32[]",name:"handlerWithSelectors",type:"bytes32[]"}],name:"setSupportedInterfaceBatch",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"}];class $t{static createInterface(){return new n.Interface(Zt)}static connect(e,t){return new r(e,Zt,t)}}$t.abi=Zt;const en=[{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"owner",type:"address"},{indexed:!1,internalType:"contract IERC20",name:"sellToken",type:"address"},{indexed:!1,internalType:"contract IERC20",name:"buyToken",type:"address"},{indexed:!1,internalType:"uint256",name:"sellAmount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"buyAmount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"feeAmount",type:"uint256"},{indexed:!1,internalType:"bytes",name:"orderUid",type:"bytes"}],name:"Trade",type:"event"},{inputs:[{internalType:"bytes",name:"orderUid",type:"bytes"},{internalType:"bool",name:"signed",type:"bool"}],name:"setPreSignature",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes",name:"orderUid",type:"bytes"}],name:"invalidateOrder",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"domainSeparator",outputs:[{name:"",type:"bytes32"}],stateMutability:"nonpayable",type:"function"}];class tn{static createInterface(){return new n.Interface(en)}static connect(e,t){return new r(e,en,t)}}function nn(e,t){return K({},e,{quoteId:t.id,sellAmount:t.quote.sellAmount,buyAmount:t.quote.buyAmount})}function rn(e){return e.sellToken.toLowerCase()===Pe.toLowerCase()}function sn(e){return e+e*BigInt(20)/BigInt(100)}function an(e,t){const{costs:{networkFee:n,partnerFee:r}}=e;function i(e){return{sellAmount:t(e.sellAmount),buyAmount:t(e.buyAmount)}}return K({},e,{costs:K({},e.costs,{networkFee:K({},n,{amountInSellCurrency:t(n.amountInSellCurrency),amountInBuyCurrency:t(n.amountInBuyCurrency)}),partnerFee:K({},r,{amount:t(r.amount)})}),beforeNetworkCosts:i(e.beforeNetworkCosts),afterNetworkCosts:i(e.afterNetworkCosts),afterPartnerFees:i(e.afterPartnerFees),afterSlippage:i(e.afterSlippage)})}function on({quoteParameters:e,sellToken:t}){return K({},e,{sellToken:t})}function un(e,t){return K({},t,{sellToken:ie[e].address})}async function ln(e,t,n,r,i={}){var s;const{networkCostsAmount:a="0",checkEthFlowOrderExists:o}=i,u=await e.getAddress(),l=null!==(s=n.slippageBps)&&void 0!==s?s:qt(r,!0),c=K({},un(r,n),{slippageBps:l}),{quoteId:d}=c,h=function(e,t){return Xt.connect("staging"===t?We:Ke,e)}(e,c.env),p=zt({chainId:r,isEthFlow:!0,from:u,networkCostsAmount:a},c,t),f=await jt(r,p,o,c.env),m={buyToken:p.buyToken,receiver:p.receiver,sellAmount:p.sellAmount,buyAmount:p.buyAmount,feeAmount:p.feeAmount,partiallyFillable:p.partiallyFillable,quoteId:d,appData:t,validTo:p.validTo.toString()},y=await h.estimateGas.createOrder(m,{value:p.sellAmount}).then(e=>BigInt(e.toHexString())).catch(e=>(console.error(e),Rt));return{orderId:f,orderToSign:p,transaction:{data:h.interface.encodeFunctionData("createOrder",[m]),gasLimit:"0x"+sn(y).toString(16),to:h.address,value:"0x"+BigInt(p.sellAmount).toString(16)}}}async function cn(e,t,n,r,i={}){const{appDataKeccak256:s,fullAppData:a}=n,{orderId:o,transaction:u,orderToSign:l}=await ln(t,s,r,e.context.chainId,i);$e("Uploading app-data"),await e.uploadAppData(s,a),$e("Sending on-chain order transaction");const c=await t.sendTransaction(u);return $e(`On-chain order transaction sent, txHash: ${c.hash}, order: ${o}`),{txHash:c.hash,orderId:o,orderToSign:l,signature:"",signingScheme:St.EIP1271}}async function dn(e,t,n,r,i={}){const{networkCostsAmount:s="0",signingScheme:a=St.EIP712}=i,o=rn(r);if(o){const s=r.quoteId;if("number"==typeof s)return cn(e,t,n,K({},r,{quoteId:s}),i);throw new Error("quoteId is required for EthFlow orders")}const{quoteId:u=null,owner:l}=r,{appDataKeccak256:c,fullAppData:d}=n,h=e.context.chainId,p=l||await t.getAddress(),f=zt({chainId:h,from:p,networkCostsAmount:s,isEthFlow:o},r,n.appDataKeccak256);$e("Signing order...");const{signature:m,signingScheme:y}=await(async()=>{if(a===St.PRESIGN)return{signature:p,signingScheme:St.PRESIGN};{const e=await Pt.signOrder(f,h,t);return{signature:e.signature,signingScheme:_t[e.signingScheme]}}})(),g=K({},f,{from:p,signature:m,signingScheme:y,quoteId:u,appData:d,appDataHash:c});$e("Posting order...");const b=await e.sendOrder(g);return $e(`Order created, id: ${b}`),{orderId:b,signature:m,signingScheme:y,orderToSign:f}}tn.abi=en;var hn="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function pn(e){var t={exports:{}};return e(t,t.exports),t.exports}var fn={__proto__:null,default:{}},mn=pn(function(e){!function(e,t){function n(e,t){if(!e)throw new Error(t||"Assertion failed")}function r(e,t){e.super_=t;var n=function(){};n.prototype=t.prototype,e.prototype=new n,e.prototype.constructor=e}function i(e,t,n){if(i.isBN(e))return e;this.negative=0,this.words=null,this.length=0,this.red=null,null!==e&&("le"!==t&&"be"!==t||(n=t,t=10),this._init(e||0,t||10,n||"be"))}var s;"object"==typeof e?e.exports=i:t.BN=i,i.BN=i,i.wordSize=26;try{s="undefined"!=typeof window&&void 0!==window.Buffer?window.Buffer:fn.Buffer}catch(e){}function a(e,t){var r=e.charCodeAt(t);return r>=48&&r<=57?r-48:r>=65&&r<=70?r-55:r>=97&&r<=102?r-87:void n(!1,"Invalid character in "+e)}function o(e,t,n){var r=a(e,n);return n-1>=t&&(r|=a(e,n-1)<<4),r}function u(e,t,r,i){for(var s=0,a=0,o=Math.min(e.length,r),u=t;u<o;u++){var l=e.charCodeAt(u)-48;s*=i,a=l>=49?l-49+10:l>=17?l-17+10:l,n(l>=0&&a<i,"Invalid character"),s+=a}return s}function l(e,t){e.words=t.words,e.length=t.length,e.negative=t.negative,e.red=t.red}if(i.isBN=function(e){return e instanceof i||null!==e&&"object"==typeof e&&e.constructor.wordSize===i.wordSize&&Array.isArray(e.words)},i.max=function(e,t){return e.cmp(t)>0?e:t},i.min=function(e,t){return e.cmp(t)<0?e:t},i.prototype._init=function(e,t,r){if("number"==typeof e)return this._initNumber(e,t,r);if("object"==typeof e)return this._initArray(e,t,r);"hex"===t&&(t=16),n(t===(0|t)&&t>=2&&t<=36);var i=0;"-"===(e=e.toString().replace(/\s+/g,""))[0]&&(i++,this.negative=1),i<e.length&&(16===t?this._parseHex(e,i,r):(this._parseBase(e,t,i),"le"===r&&this._initArray(this.toArray(),t,r)))},i.prototype._initNumber=function(e,t,r){e<0&&(this.negative=1,e=-e),e<67108864?(this.words=[67108863&e],this.length=1):e<4503599627370496?(this.words=[67108863&e,e/67108864&67108863],this.length=2):(n(e<9007199254740992),this.words=[67108863&e,e/67108864&67108863,1],this.length=3),"le"===r&&this._initArray(this.toArray(),t,r)},i.prototype._initArray=function(e,t,r){if(n("number"==typeof e.length),e.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(e.length/3),this.words=new Array(this.length);for(var i=0;i<this.length;i++)this.words[i]=0;var s,a,o=0;if("be"===r)for(i=e.length-1,s=0;i>=0;i-=3)this.words[s]|=(a=e[i]|e[i-1]<<8|e[i-2]<<16)<<o&67108863,this.words[s+1]=a>>>26-o&67108863,(o+=24)>=26&&(o-=26,s++);else if("le"===r)for(i=0,s=0;i<e.length;i+=3)this.words[s]|=(a=e[i]|e[i+1]<<8|e[i+2]<<16)<<o&67108863,this.words[s+1]=a>>>26-o&67108863,(o+=24)>=26&&(o-=26,s++);return this._strip()},i.prototype._parseHex=function(e,t,n){this.length=Math.ceil((e.length-t)/6),this.words=new Array(this.length);for(var r=0;r<this.length;r++)this.words[r]=0;var i,s=0,a=0;if("be"===n)for(r=e.length-1;r>=t;r-=2)i=o(e,t,r)<<s,this.words[a]|=67108863&i,s>=18?(s-=18,this.words[a+=1]|=i>>>26):s+=8;else for(r=(e.length-t)%2==0?t+1:t;r<e.length;r+=2)i=o(e,t,r)<<s,this.words[a]|=67108863&i,s>=18?(s-=18,this.words[a+=1]|=i>>>26):s+=8;this._strip()},i.prototype._parseBase=function(e,t,n){this.words=[0],this.length=1;for(var r=0,i=1;i<=67108863;i*=t)r++;r--,i=i/t|0;for(var s=e.length-n,a=s%r,o=Math.min(s,s-a)+n,l=0,c=n;c<o;c+=r)l=u(e,c,c+r,t),this.imuln(i),this.words[0]+l<67108864?this.words[0]+=l:this._iaddn(l);if(0!==a){var d=1;for(l=u(e,c,e.length,t),c=0;c<a;c++)d*=t;this.imuln(d),this.words[0]+l<67108864?this.words[0]+=l:this._iaddn(l)}this._strip()},i.prototype.copy=function(e){e.words=new Array(this.length);for(var t=0;t<this.length;t++)e.words[t]=this.words[t];e.length=this.length,e.negative=this.negative,e.red=this.red},i.prototype._move=function(e){l(e,this)},i.prototype.clone=function(){var e=new i(null);return this.copy(e),e},i.prototype._expand=function(e){for(;this.length<e;)this.words[this.length++]=0;return this},i.prototype._strip=function(){for(;this.length>1&&0===this.words[this.length-1];)this.length--;return this._normSign()},i.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},"undefined"!=typeof Symbol&&"function"==typeof Symbol.for)try{i.prototype[Symbol.for("nodejs.util.inspect.custom")]=c}catch(e){i.prototype.inspect=c}else i.prototype.inspect=c;function c(){return(this.red?"<BN-R: ":"<BN: ")+this.toString(16)+">"}var d=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],h=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],p=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];function f(e,t,n){n.negative=t.negative^e.negative;var r=e.length+t.length|0;n.length=r,r=r-1|0;var i=0|e.words[0],s=0|t.words[0],a=i*s,o=a/67108864|0;n.words[0]=67108863&a;for(var u=1;u<r;u++){for(var l=o>>>26,c=67108863&o,d=Math.min(u,t.length-1),h=Math.max(0,u-e.length+1);h<=d;h++)l+=(a=(i=0|e.words[u-h|0])*(s=0|t.words[h])+c)/67108864|0,c=67108863&a;n.words[u]=0|c,o=0|l}return 0!==o?n.words[u]=0|o:n.length--,n._strip()}i.prototype.toString=function(e,t){var r;if(t=0|t||1,16===(e=e||10)||"hex"===e){r="";for(var i=0,s=0,a=0;a<this.length;a++){var o=this.words[a],u=(16777215&(o<<i|s)).toString(16);s=o>>>24-i&16777215,(i+=2)>=26&&(i-=26,a--),r=0!==s||a!==this.length-1?d[6-u.length]+u+r:u+r}for(0!==s&&(r=s.toString(16)+r);r.length%t!=0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}if(e===(0|e)&&e>=2&&e<=36){var l=h[e],c=p[e];r="";var f=this.clone();for(f.negative=0;!f.isZero();){var m=f.modrn(c).toString(e);r=(f=f.idivn(c)).isZero()?m+r:d[l-m.length]+m+r}for(this.isZero()&&(r="0"+r);r.length%t!=0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}n(!1,"Base should be between 2 and 36")},i.prototype.toNumber=function(){var e=this.words[0];return 2===this.length?e+=67108864*this.words[1]:3===this.length&&1===this.words[2]?e+=4503599627370496+67108864*this.words[1]:this.length>2&&n(!1,"Number can only safely store up to 53 bits"),0!==this.negative?-e:e},i.prototype.toJSON=function(){return this.toString(16,2)},s&&(i.prototype.toBuffer=function(e,t){return this.toArrayLike(s,e,t)}),i.prototype.toArray=function(e,t){return this.toArrayLike(Array,e,t)},i.prototype.toArrayLike=function(e,t,r){this._strip();var i=this.byteLength(),s=r||Math.max(1,i);n(i<=s,"byte array longer than desired length"),n(s>0,"Requested array length <= 0");var a=function(e,t){return e.allocUnsafe?e.allocUnsafe(t):new e(t)}(e,s);return this["_toArrayLike"+("le"===t?"LE":"BE")](a,i),a},i.prototype._toArrayLikeLE=function(e,t){for(var n=0,r=0,i=0,s=0;i<this.length;i++){var a=this.words[i]<<s|r;e[n++]=255&a,n<e.length&&(e[n++]=a>>8&255),n<e.length&&(e[n++]=a>>16&255),6===s?(n<e.length&&(e[n++]=a>>24&255),r=0,s=0):(r=a>>>24,s+=2)}if(n<e.length)for(e[n++]=r;n<e.length;)e[n++]=0},i.prototype._toArrayLikeBE=function(e,t){for(var n=e.length-1,r=0,i=0,s=0;i<this.length;i++){var a=this.words[i]<<s|r;e[n--]=255&a,n>=0&&(e[n--]=a>>8&255),n>=0&&(e[n--]=a>>16&255),6===s?(n>=0&&(e[n--]=a>>24&255),r=0,s=0):(r=a>>>24,s+=2)}if(n>=0)for(e[n--]=r;n>=0;)e[n--]=0},i.prototype._countBits=Math.clz32?function(e){return 32-Math.clz32(e)}:function(e){var t=e,n=0;return t>=4096&&(n+=13,t>>>=13),t>=64&&(n+=7,t>>>=7),t>=8&&(n+=4,t>>>=4),t>=2&&(n+=2,t>>>=2),n+t},i.prototype._zeroBits=function(e){if(0===e)return 26;var t=e,n=0;return 0==(8191&t)&&(n+=13,t>>>=13),0==(127&t)&&(n+=7,t>>>=7),0==(15&t)&&(n+=4,t>>>=4),0==(3&t)&&(n+=2,t>>>=2),0==(1&t)&&n++,n},i.prototype.bitLength=function(){var e=this._countBits(this.words[this.length-1]);return 26*(this.length-1)+e},i.prototype.zeroBits=function(){if(this.isZero())return 0;for(var e=0,t=0;t<this.length;t++){var n=this._zeroBits(this.words[t]);if(e+=n,26!==n)break}return e},i.prototype.byteLength=function(){return Math.ceil(this.bitLength()/8)},i.prototype.toTwos=function(e){return 0!==this.negative?this.abs().inotn(e).iaddn(1):this.clone()},i.prototype.fromTwos=function(e){return this.testn(e-1)?this.notn(e).iaddn(1).ineg():this.clone()},i.prototype.isNeg=function(){return 0!==this.negative},i.prototype.neg=function(){return this.clone().ineg()},i.prototype.ineg=function(){return this.isZero()||(this.negative^=1),this},i.prototype.iuor=function(e){for(;this.length<e.length;)this.words[this.length++]=0;for(var t=0;t<e.length;t++)this.words[t]=this.words[t]|e.words[t];return this._strip()},i.prototype.ior=function(e){return n(0==(this.negative|e.negative)),this.iuor(e)},i.prototype.or=function(e){return this.length>e.length?this.clone().ior(e):e.clone().ior(this)},i.prototype.uor=function(e){return this.length>e.length?this.clone().iuor(e):e.clone().iuor(this)},i.prototype.iuand=function(e){var t;t=this.length>e.length?e:this;for(var n=0;n<t.length;n++)this.words[n]=this.words[n]&e.words[n];return this.length=t.length,this._strip()},i.prototype.iand=function(e){return n(0==(this.negative|e.negative)),this.iuand(e)},i.prototype.and=function(e){return this.length>e.length?this.clone().iand(e):e.clone().iand(this)},i.prototype.uand=function(e){return this.length>e.length?this.clone().iuand(e):e.clone().iuand(this)},i.prototype.iuxor=function(e){var t,n;this.length>e.length?(t=this,n=e):(t=e,n=this);for(var r=0;r<n.length;r++)this.words[r]=t.words[r]^n.words[r];if(this!==t)for(;r<t.length;r++)this.words[r]=t.words[r];return this.length=t.length,this._strip()},i.prototype.ixor=function(e){return n(0==(this.negative|e.negative)),this.iuxor(e)},i.prototype.xor=function(e){return this.length>e.length?this.clone().ixor(e):e.clone().ixor(this)},i.prototype.uxor=function(e){return this.length>e.length?this.clone().iuxor(e):e.clone().iuxor(this)},i.prototype.inotn=function(e){n("number"==typeof e&&e>=0);var t=0|Math.ceil(e/26),r=e%26;this._expand(t),r>0&&t--;for(var i=0;i<t;i++)this.words[i]=67108863&~this.words[i];return r>0&&(this.words[i]=~this.words[i]&67108863>>26-r),this._strip()},i.prototype.notn=function(e){return this.clone().inotn(e)},i.prototype.setn=function(e,t){n("number"==typeof e&&e>=0);var r=e/26|0,i=e%26;return this._expand(r+1),this.words[r]=t?this.words[r]|1<<i:this.words[r]&~(1<<i),this._strip()},i.prototype.iadd=function(e){var t,n,r;if(0!==this.negative&&0===e.negative)return this.negative=0,t=this.isub(e),this.negative^=1,this._normSign();if(0===this.negative&&0!==e.negative)return e.negative=0,t=this.isub(e),e.negative=1,t._normSign();this.length>e.length?(n=this,r=e):(n=e,r=this);for(var i=0,s=0;s<r.length;s++)this.words[s]=67108863&(t=(0|n.words[s])+(0|r.words[s])+i),i=t>>>26;for(;0!==i&&s<n.length;s++)this.words[s]=67108863&(t=(0|n.words[s])+i),i=t>>>26;if(this.length=n.length,0!==i)this.words[this.length]=i,this.length++;else if(n!==this)for(;s<n.length;s++)this.words[s]=n.words[s];return this},i.prototype.add=function(e){var t;return 0!==e.negative&&0===this.negative?(e.negative=0,t=this.sub(e),e.negative^=1,t):0===e.negative&&0!==this.negative?(this.negative=0,t=e.sub(this),this.negative=1,t):this.length>e.length?this.clone().iadd(e):e.clone().iadd(this)},i.prototype.isub=function(e){if(0!==e.negative){e.negative=0;var t=this.iadd(e);return e.negative=1,t._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(e),this.negative=1,this._normSign();var n,r,i=this.cmp(e);if(0===i)return this.negative=0,this.length=1,this.words[0]=0,this;i>0?(n=this,r=e):(n=e,r=this);for(var s=0,a=0;a<r.length;a++)s=(t=(0|n.words[a])-(0|r.words[a])+s)>>26,this.words[a]=67108863&t;for(;0!==s&&a<n.length;a++)s=(t=(0|n.words[a])+s)>>26,this.words[a]=67108863&t;if(0===s&&a<n.length&&n!==this)for(;a<n.length;a++)this.words[a]=n.words[a];return this.length=Math.max(this.length,a),n!==this&&(this.negative=1),this._strip()},i.prototype.sub=function(e){return this.clone().isub(e)};var m=function(e,t,n){var r,i,s,a=e.words,o=t.words,u=n.words,l=0,c=0|a[0],d=8191&c,h=c>>>13,p=0|a[1],f=8191&p,m=p>>>13,y=0|a[2],g=8191&y,b=y>>>13,v=0|a[3],w=8191&v,A=v>>>13,T=0|a[4],E=8191&T,S=T>>>13,I=0|a[5],k=8191&I,C=I>>>13,N=0|a[6],x=8191&N,_=N>>>13,R=0|a[7],M=8191&R,P=R>>>13,O=0|a[8],B=8191&O,D=O>>>13,F=0|a[9],L=8191&F,U=F>>>13,G=0|o[0],H=8191&G,q=G>>>13,V=0|o[1],z=8191&V,j=V>>>13,K=0|o[2],W=8191&K,J=K>>>13,Q=0|o[3],Y=8191&Q,X=Q>>>13,Z=0|o[4],$=8191&Z,ee=Z>>>13,te=0|o[5],ne=8191&te,re=te>>>13,ie=0|o[6],se=8191&ie,ae=ie>>>13,oe=0|o[7],ue=8191&oe,le=oe>>>13,ce=0|o[8],de=8191&ce,he=ce>>>13,pe=0|o[9],fe=8191&pe,me=pe>>>13;n.negative=e.negative^t.negative,n.length=19;var ye=(l+(r=Math.imul(d,H))|0)+((8191&(i=(i=Math.imul(d,q))+Math.imul(h,H)|0))<<13)|0;l=((s=Math.imul(h,q))+(i>>>13)|0)+(ye>>>26)|0,ye&=67108863,r=Math.imul(f,H),i=(i=Math.imul(f,q))+Math.imul(m,H)|0,s=Math.imul(m,q);var ge=(l+(r=r+Math.imul(d,z)|0)|0)+((8191&(i=(i=i+Math.imul(d,j)|0)+Math.imul(h,z)|0))<<13)|0;l=((s=s+Math.imul(h,j)|0)+(i>>>13)|0)+(ge>>>26)|0,ge&=67108863,r=Math.imul(g,H),i=(i=Math.imul(g,q))+Math.imul(b,H)|0,s=Math.imul(b,q),r=r+Math.imul(f,z)|0,i=(i=i+Math.imul(f,j)|0)+Math.imul(m,z)|0,s=s+Math.imul(m,j)|0;var be=(l+(r=r+Math.imul(d,W)|0)|0)+((8191&(i=(i=i+Math.imul(d,J)|0)+Math.imul(h,W)|0))<<13)|0;l=((s=s+Math.imul(h,J)|0)+(i>>>13)|0)+(be>>>26)|0,be&=67108863,r=Math.imul(w,H),i=(i=Math.imul(w,q))+Math.imul(A,H)|0,s=Math.imul(A,q),r=r+Math.imul(g,z)|0,i=(i=i+Math.imul(g,j)|0)+Math.imul(b,z)|0,s=s+Math.imul(b,j)|0,r=r+Math.imul(f,W)|0,i=(i=i+Math.imul(f,J)|0)+Math.imul(m,W)|0,s=s+Math.imul(m,J)|0;var ve=(l+(r=r+Math.imul(d,Y)|0)|0)+((8191&(i=(i=i+Math.imul(d,X)|0)+Math.imul(h,Y)|0))<<13)|0;l=((s=s+Math.imul(h,X)|0)+(i>>>13)|0)+(ve>>>26)|0,ve&=67108863,r=Math.imul(E,H),i=(i=Math.imul(E,q))+Math.imul(S,H)|0,s=Math.imul(S,q),r=r+Math.imul(w,z)|0,i=(i=i+Math.imul(w,j)|0)+Math.imul(A,z)|0,s=s+Math.imul(A,j)|0,r=r+Math.imul(g,W)|0,i=(i=i+Math.imul(g,J)|0)+Math.imul(b,W)|0,s=s+Math.imul(b,J)|0,r=r+Math.imul(f,Y)|0,i=(i=i+Math.imul(f,X)|0)+Math.imul(m,Y)|0,s=s+Math.imul(m,X)|0;var we=(l+(r=r+Math.imul(d,$)|0)|0)+((8191&(i=(i=i+Math.imul(d,ee)|0)+Math.imul(h,$)|0))<<13)|0;l=((s=s+Math.imul(h,ee)|0)+(i>>>13)|0)+(we>>>26)|0,we&=67108863,r=Math.imul(k,H),i=(i=Math.imul(k,q))+Math.imul(C,H)|0,s=Math.imul(C,q),r=r+Math.imul(E,z)|0,i=(i=i+Math.imul(E,j)|0)+Math.imul(S,z)|0,s=s+Math.imul(S,j)|0,r=r+Math.imul(w,W)|0,i=(i=i+Math.imul(w,J)|0)+Math.imul(A,W)|0,s=s+Math.imul(A,J)|0,r=r+Math.imul(g,Y)|0,i=(i=i+Math.imul(g,X)|0)+Math.imul(b,Y)|0,s=s+Math.imul(b,X)|0,r=r+Math.imul(f,$)|0,i=(i=i+Math.imul(f,ee)|0)+Math.imul(m,$)|0,s=s+Math.imul(m,ee)|0;var Ae=(l+(r=r+Math.imul(d,ne)|0)|0)+((8191&(i=(i=i+Math.imul(d,re)|0)+Math.imul(h,ne)|0))<<13)|0;l=((s=s+Math.imul(h,re)|0)+(i>>>13)|0)+(Ae>>>26)|0,Ae&=67108863,r=Math.imul(x,H),i=(i=Math.imul(x,q))+Math.imul(_,H)|0,s=Math.imul(_,q),r=r+Math.imul(k,z)|0,i=(i=i+Math.imul(k,j)|0)+Math.imul(C,z)|0,s=s+Math.imul(C,j)|0,r=r+Math.imul(E,W)|0,i=(i=i+Math.imul(E,J)|0)+Math.imul(S,W)|0,s=s+Math.imul(S,J)|0,r=r+Math.imul(w,Y)|0,i=(i=i+Math.imul(w,X)|0)+Math.imul(A,Y)|0,s=s+Math.imul(A,X)|0,r=r+Math.imul(g,$)|0,i=(i=i+Math.imul(g,ee)|0)+Math.imul(b,$)|0,s=s+Math.imul(b,ee)|0,r=r+Math.imul(f,ne)|0,i=(i=i+Math.imul(f,re)|0)+Math.imul(m,ne)|0,s=s+Math.imul(m,re)|0;var Te=(l+(r=r+Math.imul(d,se)|0)|0)+((8191&(i=(i=i+Math.imul(d,ae)|0)+Math.imul(h,se)|0))<<13)|0;l=((s=s+Math.imul(h,ae)|0)+(i>>>13)|0)+(Te>>>26)|0,Te&=67108863,r=Math.imul(M,H),i=(i=Math.imul(M,q))+Math.imul(P,H)|0,s=Math.imul(P,q),r=r+Math.imul(x,z)|0,i=(i=i+Math.imul(x,j)|0)+Math.imul(_,z)|0,s=s+Math.imul(_,j)|0,r=r+Math.imul(k,W)|0,i=(i=i+Math.imul(k,J)|0)+Math.imul(C,W)|0,s=s+Math.imul(C,J)|0,r=r+Math.imul(E,Y)|0,i=(i=i+Math.imul(E,X)|0)+Math.imul(S,Y)|0,s=s+Math.imul(S,X)|0,r=r+Math.imul(w,$)|0,i=(i=i+Math.imul(w,ee)|0)+Math.imul(A,$)|0,s=s+Math.imul(A,ee)|0,r=r+Math.imul(g,ne)|0,i=(i=i+Math.imul(g,re)|0)+Math.imul(b,ne)|0,s=s+Math.imul(b,re)|0,r=r+Math.imul(f,se)|0,i=(i=i+Math.imul(f,ae)|0)+Math.imul(m,se)|0,s=s+Math.imul(m,ae)|0;var Ee=(l+(r=r+Math.imul(d,ue)|0)|0)+((8191&(i=(i=i+Math.imul(d,le)|0)+Math.imul(h,ue)|0))<<13)|0;l=((s=s+Math.imul(h,le)|0)+(i>>>13)|0)+(Ee>>>26)|0,Ee&=67108863,r=Math.imul(B,H),i=(i=Math.imul(B,q))+Math.imul(D,H)|0,s=Math.imul(D,q),r=r+Math.imul(M,z)|0,i=(i=i+Math.imul(M,j)|0)+Math.imul(P,z)|0,s=s+Math.imul(P,j)|0,r=r+Math.imul(x,W)|0,i=(i=i+Math.imul(x,J)|0)+Math.imul(_,W)|0,s=s+Math.imul(_,J)|0,r=r+Math.imul(k,Y)|0,i=(i=i+Math.imul(k,X)|0)+Math.imul(C,Y)|0,s=s+Math.imul(C,X)|0,r=r+Math.imul(E,$)|0,i=(i=i+Math.imul(E,ee)|0)+Math.imul(S,$)|0,s=s+Math.imul(S,ee)|0,r=r+Math.imul(w,ne)|0,i=(i=i+Math.imul(w,re)|0)+Math.imul(A,ne)|0,s=s+Math.imul(A,re)|0,r=r+Math.imul(g,se)|0,i=(i=i+Math.imul(g,ae)|0)+Math.imul(b,se)|0,s=s+Math.imul(b,ae)|0,r=r+Math.imul(f,ue)|0,i=(i=i+Math.imul(f,le)|0)+Math.imul(m,ue)|0,s=s+Math.imul(m,le)|0;var Se=(l+(r=r+Math.imul(d,de)|0)|0)+((8191&(i=(i=i+Math.imul(d,he)|0)+Math.imul(h,de)|0))<<13)|0;l=((s=s+Math.imul(h,he)|0)+(i>>>13)|0)+(Se>>>26)|0,Se&=67108863,r=Math.imul(L,H),i=(i=Math.imul(L,q))+Math.imul(U,H)|0,s=Math.imul(U,q),r=r+Math.imul(B,z)|0,i=(i=i+Math.imul(B,j)|0)+Math.imul(D,z)|0,s=s+Math.imul(D,j)|0,r=r+Math.imul(M,W)|0,i=(i=i+Math.imul(M,J)|0)+Math.imul(P,W)|0,s=s+Math.imul(P,J)|0,r=r+Math.imul(x,Y)|0,i=(i=i+Math.imul(x,X)|0)+Math.imul(_,Y)|0,s=s+Math.imul(_,X)|0,r=r+Math.imul(k,$)|0,i=(i=i+Math.imul(k,ee)|0)+Math.imul(C,$)|0,s=s+Math.imul(C,ee)|0,r=r+Math.imul(E,ne)|0,i=(i=i+Math.imul(E,re)|0)+Math.imul(S,ne)|0,s=s+Math.imul(S,re)|0,r=r+Math.imul(w,se)|0,i=(i=i+Math.imul(w,ae)|0)+Math.imul(A,se)|0,s=s+Math.imul(A,ae)|0,r=r+Math.imul(g,ue)|0,i=(i=i+Math.imul(g,le)|0)+Math.imul(b,ue)|0,s=s+Math.imul(b,le)|0,r=r+Math.imul(f,de)|0,i=(i=i+Math.imul(f,he)|0)+Math.imul(m,de)|0,s=s+Math.imul(m,he)|0;var Ie=(l+(r=r+Math.imul(d,fe)|0)|0)+((8191&(i=(i=i+Math.imul(d,me)|0)+Math.imul(h,fe)|0))<<13)|0;l=((s=s+Math.imul(h,me)|0)+(i>>>13)|0)+(Ie>>>26)|0,Ie&=67108863,r=Math.imul(L,z),i=(i=Math.imul(L,j))+Math.imul(U,z)|0,s=Math.imul(U,j),r=r+Math.imul(B,W)|0,i=(i=i+Math.imul(B,J)|0)+Math.imul(D,W)|0,s=s+Math.imul(D,J)|0,r=r+Math.imul(M,Y)|0,i=(i=i+Math.imul(M,X)|0)+Math.imul(P,Y)|0,s=s+Math.imul(P,X)|0,r=r+Math.imul(x,$)|0,i=(i=i+Math.imul(x,ee)|0)+Math.imul(_,$)|0,s=s+Math.imul(_,ee)|0,r=r+Math.imul(k,ne)|0,i=(i=i+Math.imul(k,re)|0)+Math.imul(C,ne)|0,s=s+Math.imul(C,re)|0,r=r+Math.imul(E,se)|0,i=(i=i+Math.imul(E,ae)|0)+Math.imul(S,se)|0,s=s+Math.imul(S,ae)|0,r=r+Math.imul(w,ue)|0,i=(i=i+Math.imul(w,le)|0)+Math.imul(A,ue)|0,s=s+Math.imul(A,le)|0,r=r+Math.imul(g,de)|0,i=(i=i+Math.imul(g,he)|0)+Math.imul(b,de)|0,s=s+Math.imul(b,he)|0;var ke=(l+(r=r+Math.imul(f,fe)|0)|0)+((8191&(i=(i=i+Math.imul(f,me)|0)+Math.imul(m,fe)|0))<<13)|0;l=((s=s+Math.imul(m,me)|0)+(i>>>13)|0)+(ke>>>26)|0,ke&=67108863,r=Math.imul(L,W),i=(i=Math.imul(L,J))+Math.imul(U,W)|0,s=Math.imul(U,J),r=r+Math.imul(B,Y)|0,i=(i=i+Math.imul(B,X)|0)+Math.imul(D,Y)|0,s=s+Math.imul(D,X)|0,r=r+Math.imul(M,$)|0,i=(i=i+Math.imul(M,ee)|0)+Math.imul(P,$)|0,s=s+Math.imul(P,ee)|0,r=r+Math.imul(x,ne)|0,i=(i=i+Math.imul(x,re)|0)+Math.imul(_,ne)|0,s=s+Math.imul(_,re)|0,r=r+Math.imul(k,se)|0,i=(i=i+Math.imul(k,ae)|0)+Math.imul(C,se)|0,s=s+Math.imul(C,ae)|0,r=r+Math.imul(E,ue)|0,i=(i=i+Math.imul(E,le)|0)+Math.imul(S,ue)|0,s=s+Math.imul(S,le)|0,r=r+Math.imul(w,de)|0,i=(i=i+Math.imul(w,he)|0)+Math.imul(A,de)|0,s=s+Math.imul(A,he)|0;var Ce=(l+(r=r+Math.imul(g,fe)|0)|0)+((8191&(i=(i=i+Math.imul(g,me)|0)+Math.imul(b,fe)|0))<<13)|0;l=((s=s+Math.imul(b,me)|0)+(i>>>13)|0)+(Ce>>>26)|0,Ce&=67108863,r=Math.imul(L,Y),i=(i=Math.imul(L,X))+Math.imul(U,Y)|0,s=Math.imul(U,X),r=r+Math.imul(B,$)|0,i=(i=i+Math.imul(B,ee)|0)+Math.imul(D,$)|0,s=s+Math.imul(D,ee)|0,r=r+Math.imul(M,ne)|0,i=(i=i+Math.imul(M,re)|0)+Math.imul(P,ne)|0,s=s+Math.imul(P,re)|0,r=r+Math.imul(x,se)|0,i=(i=i+Math.imul(x,ae)|0)+Math.imul(_,se)|0,s=s+Math.imul(_,ae)|0,r=r+Math.imul(k,ue)|0,i=(i=i+Math.imul(k,le)|0)+Math.imul(C,ue)|0,s=s+Math.imul(C,le)|0,r=r+Math.imul(E,de)|0,i=(i=i+Math.imul(E,he)|0)+Math.imul(S,de)|0,s=s+Math.imul(S,he)|0;var Ne=(l+(r=r+Math.imul(w,fe)|0)|0)+((8191&(i=(i=i+Math.imul(w,me)|0)+Math.imul(A,fe)|0))<<13)|0;l=((s=s+Math.imul(A,me)|0)+(i>>>13)|0)+(Ne>>>26)|0,Ne&=67108863,r=Math.imul(L,$),i=(i=Math.imul(L,ee))+Math.imul(U,$)|0,s=Math.imul(U,ee),r=r+Math.imul(B,ne)|0,i=(i=i+Math.imul(B,re)|0)+Math.imul(D,ne)|0,s=s+Math.imul(D,re)|0,r=r+Math.imul(M,se)|0,i=(i=i+Math.imul(M,ae)|0)+Math.imul(P,se)|0,s=s+Math.imul(P,ae)|0,r=r+Math.imul(x,ue)|0,i=(i=i+Math.imul(x,le)|0)+Math.imul(_,ue)|0,s=s+Math.imul(_,le)|0,r=r+Math.imul(k,de)|0,i=(i=i+Math.imul(k,he)|0)+Math.imul(C,de)|0,s=s+Math.imul(C,he)|0;var xe=(l+(r=r+Math.imul(E,fe)|0)|0)+((8191&(i=(i=i+Math.imul(E,me)|0)+Math.imul(S,fe)|0))<<13)|0;l=((s=s+Math.imul(S,me)|0)+(i>>>13)|0)+(xe>>>26)|0,xe&=67108863,r=Math.imul(L,ne),i=(i=Math.imul(L,re))+Math.imul(U,ne)|0,s=Math.imul(U,re),r=r+Math.imul(B,se)|0,i=(i=i+Math.imul(B,ae)|0)+Math.imul(D,se)|0,s=s+Math.imul(D,ae)|0,r=r+Math.imul(M,ue)|0,i=(i=i+Math.imul(M,le)|0)+Math.imul(P,ue)|0,s=s+Math.imul(P,le)|0,r=r+Math.imul(x,de)|0,i=(i=i+Math.imul(x,he)|0)+Math.imul(_,de)|0,s=s+Math.imul(_,he)|0;var _e=(l+(r=r+Math.imul(k,fe)|0)|0)+((8191&(i=(i=i+Math.imul(k,me)|0)+Math.imul(C,fe)|0))<<13)|0;l=((s=s+Math.imul(C,me)|0)+(i>>>13)|0)+(_e>>>26)|0,_e&=67108863,r=Math.imul(L,se),i=(i=Math.imul(L,ae))+Math.imul(U,se)|0,s=Math.imul(U,ae),r=r+Math.imul(B,ue)|0,i=(i=i+Math.imul(B,le)|0)+Math.imul(D,ue)|0,s=s+Math.imul(D,le)|0,r=r+Math.imul(M,de)|0,i=(i=i+Math.imul(M,he)|0)+Math.imul(P,de)|0,s=s+Math.imul(P,he)|0;var Re=(l+(r=r+Math.imul(x,fe)|0)|0)+((8191&(i=(i=i+Math.imul(x,me)|0)+Math.imul(_,fe)|0))<<13)|0;l=((s=s+Math.imul(_,me)|0)+(i>>>13)|0)+(Re>>>26)|0,Re&=67108863,r=Math.imul(L,ue),i=(i=Math.imul(L,le))+Math.imul(U,ue)|0,s=Math.imul(U,le),r=r+Math.imul(B,de)|0,i=(i=i+Math.imul(B,he)|0)+Math.imul(D,de)|0,s=s+Math.imul(D,he)|0;var Me=(l+(r=r+Math.imul(M,fe)|0)|0)+((8191&(i=(i=i+Math.imul(M,me)|0)+Math.imul(P,fe)|0))<<13)|0;l=((s=s+Math.imul(P,me)|0)+(i>>>13)|0)+(Me>>>26)|0,Me&=67108863,r=Math.imul(L,de),i=(i=Math.imul(L,he))+Math.imul(U,de)|0,s=Math.imul(U,he);var Pe=(l+(r=r+Math.imul(B,fe)|0)|0)+((8191&(i=(i=i+Math.imul(B,me)|0)+Math.imul(D,fe)|0))<<13)|0;l=((s=s+Math.imul(D,me)|0)+(i>>>13)|0)+(Pe>>>26)|0,Pe&=67108863;var Oe=(l+(r=Math.imul(L,fe))|0)+((8191&(i=(i=Math.imul(L,me))+Math.imul(U,fe)|0))<<13)|0;return l=((s=Math.imul(U,me))+(i>>>13)|0)+(Oe>>>26)|0,Oe&=67108863,u[0]=ye,u[1]=ge,u[2]=be,u[3]=ve,u[4]=we,u[5]=Ae,u[6]=Te,u[7]=Ee,u[8]=Se,u[9]=Ie,u[10]=ke,u[11]=Ce,u[12]=Ne,u[13]=xe,u[14]=_e,u[15]=Re,u[16]=Me,u[17]=Pe,u[18]=Oe,0!==l&&(u[19]=l,n.length++),n};function y(e,t,n){n.negative=t.negative^e.negative,n.length=e.length+t.length;for(var r=0,i=0,s=0;s<n.length-1;s++){var a=i;i=0;for(var o=67108863&r,u=Math.min(s,t.length-1),l=Math.max(0,s-e.length+1);l<=u;l++){var c=(0|e.words[s-l])*(0|t.words[l]),d=67108863&c;o=67108863&(d=d+o|0),i+=(a=(a=a+(c/67108864|0)|0)+(d>>>26)|0)>>>26,a&=67108863}n.words[s]=o,r=a,a=i}return 0!==r?n.words[s]=r:n.length--,n._strip()}function g(e,t,n){return y(e,t,n)}Math.imul||(m=f),i.prototype.mulTo=function(e,t){var n=this.length+e.length;return 10===this.length&&10===e.length?m(this,e,t):n<63?f(this,e,t):n<1024?y(this,e,t):g(this,e,t)},i.prototype.mul=function(e){var t=new i(null);return t.words=new Array(this.length+e.length),this.mulTo(e,t)},i.prototype.mulf=function(e){var t=new i(null);return t.words=new Array(this.length+e.length),g(this,e,t)},i.prototype.imul=function(e){return this.clone().mulTo(e,this)},i.prototype.imuln=function(e){var t=e<0;t&&(e=-e),n("number"==typeof e),n(e<67108864);for(var r=0,i=0;i<this.length;i++){var s=(0|this.words[i])*e,a=(67108863&s)+(67108863&r);r>>=26,r+=s/67108864|0,r+=a>>>26,this.words[i]=67108863&a}return 0!==r&&(this.words[i]=r,this.length++),t?this.ineg():this},i.prototype.muln=function(e){return this.clone().imuln(e)},i.prototype.sqr=function(){return this.mul(this)},i.prototype.isqr=function(){return this.imul(this.clone())},i.prototype.pow=function(e){var t=function(e){for(var t=new Array(e.bitLength()),n=0;n<t.length;n++)t[n]=e.words[n/26|0]>>>n%26&1;return t}(e);if(0===t.length)return new i(1);for(var n=this,r=0;r<t.length&&0===t[r];r++,n=n.sqr());if(++r<t.length)for(var s=n.sqr();r<t.length;r++,s=s.sqr())0!==t[r]&&(n=n.mul(s));return n},i.prototype.iushln=function(e){n("number"==typeof e&&e>=0);var t,r=e%26,i=(e-r)/26,s=67108863>>>26-r<<26-r;if(0!==r){var a=0;for(t=0;t<this.length;t++){var o=this.words[t]&s;this.words[t]=(0|this.words[t])-o<<r|a,a=o>>>26-r}a&&(this.words[t]=a,this.length++)}if(0!==i){for(t=this.length-1;t>=0;t--)this.words[t+i]=this.words[t];for(t=0;t<i;t++)this.words[t]=0;this.length+=i}return this._strip()},i.prototype.ishln=function(e){return n(0===this.negative),this.iushln(e)},i.prototype.iushrn=function(e,t,r){var i;n("number"==typeof e&&e>=0),i=t?(t-t%26)/26:0;var s=e%26,a=Math.min((e-s)/26,this.length),o=67108863^67108863>>>s<<s,u=r;if(i-=a,i=Math.max(0,i),u){for(var l=0;l<a;l++)u.words[l]=this.words[l];u.length=a}if(0===a);else if(this.length>a)for(this.length-=a,l=0;l<this.length;l++)this.words[l]=this.words[l+a];else this.words[0]=0,this.length=1;var c=0;for(l=this.length-1;l>=0&&(0!==c||l>=i);l--){var d=0|this.words[l];this.words[l]=c<<26-s|d>>>s,c=d&o}return u&&0!==c&&(u.words[u.length++]=c),0===this.length&&(this.words[0]=0,this.length=1),this._strip()},i.prototype.ishrn=function(e,t,r){return n(0===this.negative),this.iushrn(e,t,r)},i.prototype.shln=function(e){return this.clone().ishln(e)},i.prototype.ushln=function(e){return this.clone().iushln(e)},i.prototype.shrn=function(e){return this.clone().ishrn(e)},i.prototype.ushrn=function(e){return this.clone().iushrn(e)},i.prototype.testn=function(e){n("number"==typeof e&&e>=0);var t=e%26,r=(e-t)/26;return!(this.length<=r||!(this.words[r]&1<<t))},i.prototype.imaskn=function(e){n("number"==typeof e&&e>=0);var t=e%26,r=(e-t)/26;return n(0===this.negative,"imaskn works only with positive numbers"),this.length<=r?this:(0!==t&&r++,this.length=Math.min(r,this.length),0!==t&&(this.words[this.length-1]&=67108863^67108863>>>t<<t),this._strip())},i.prototype.maskn=function(e){return this.clone().imaskn(e)},i.prototype.iaddn=function(e){return n("number"==typeof e),n(e<67108864),e<0?this.isubn(-e):0!==this.negative?1===this.length&&(0|this.words[0])<=e?(this.words[0]=e-(0|this.words[0]),this.negative=0,this):(this.negative=0,this.isubn(e),this.negative=1,this):this._iaddn(e)},i.prototype._iaddn=function(e){this.words[0]+=e;for(var t=0;t<this.length&&this.words[t]>=67108864;t++)this.words[t]-=67108864,t===this.length-1?this.words[t+1]=1:this.words[t+1]++;return this.length=Math.max(this.length,t+1),this},i.prototype.isubn=function(e){if(n("number"==typeof e),n(e<67108864),e<0)return this.iaddn(-e);if(0!==this.negative)return this.negative=0,this.iaddn(e),this.negative=1,this;if(this.words[0]-=e,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var t=0;t<this.length&&this.words[t]<0;t++)this.words[t]+=67108864,this.words[t+1]-=1;return this._strip()},i.prototype.addn=function(e){return this.clone().iaddn(e)},i.prototype.subn=function(e){return this.clone().isubn(e)},i.prototype.iabs=function(){return this.negative=0,this},i.prototype.abs=function(){return this.clone().iabs()},i.prototype._ishlnsubmul=function(e,t,r){var i,s;this._expand(e.length+r);var a=0;for(i=0;i<e.length;i++){s=(0|this.words[i+r])+a;var o=(0|e.words[i])*t;a=((s-=67108863&o)>>26)-(o/67108864|0),this.words[i+r]=67108863&s}for(;i<this.length-r;i++)a=(s=(0|this.words[i+r])+a)>>26,this.words[i+r]=67108863&s;if(0===a)return this._strip();for(n(-1===a),a=0,i=0;i<this.length;i++)a=(s=-(0|this.words[i])+a)>>26,this.words[i]=67108863&s;return this.negative=1,this._strip()},i.prototype._wordDiv=function(e,t){var n,r=this.clone(),s=e,a=0|s.words[s.length-1];0!=(n=26-this._countBits(a))&&(s=s.ushln(n),r.iushln(n),a=0|s.words[s.length-1]);var o,u=r.length-s.length;if("mod"!==t){(o=new i(null)).length=u+1,o.words=new Array(o.length);for(var l=0;l<o.length;l++)o.words[l]=0}var c=r.clone()._ishlnsubmul(s,1,u);0===c.negative&&(r=c,o&&(o.words[u]=1));for(var d=u-1;d>=0;d--){var h=67108864*(0|r.words[s.length+d])+(0|r.words[s.length+d-1]);for(h=Math.min(h/a|0,67108863),r._ishlnsubmul(s,h,d);0!==r.negative;)h--,r.negative=0,r._ishlnsubmul(s,1,d),r.isZero()||(r.negative^=1);o&&(o.words[d]=h)}return o&&o._strip(),r._strip(),"div"!==t&&0!==n&&r.iushrn(n),{div:o||null,mod:r}},i.prototype.divmod=function(e,t,r){return n(!e.isZero()),this.isZero()?{div:new i(0),mod:new i(0)}:0!==this.negative&&0===e.negative?(o=this.neg().divmod(e,t),"mod"!==t&&(s=o.div.neg()),"div"!==t&&(a=o.mod.neg(),r&&0!==a.negative&&a.iadd(e)),{div:s,mod:a}):0===this.negative&&0!==e.negative?(o=this.divmod(e.neg(),t),"mod"!==t&&(s=o.div.neg()),{div:s,mod:o.mod}):0!=(this.negative&e.negative)?(o=this.neg().divmod(e.neg(),t),"div"!==t&&(a=o.mod.neg(),r&&0!==a.negative&&a.isub(e)),{div:o.div,mod:a}):e.length>this.length||this.cmp(e)<0?{div:new i(0),mod:this}:1===e.length?"div"===t?{div:this.divn(e.words[0]),mod:null}:"mod"===t?{div:null,mod:new i(this.modrn(e.words[0]))}:{div:this.divn(e.words[0]),mod:new i(this.modrn(e.words[0]))}:this._wordDiv(e,t);var s,a,o},i.prototype.div=function(e){return this.divmod(e,"div",!1).div},i.prototype.mod=function(e){return this.divmod(e,"mod",!1).mod},i.prototype.umod=function(e){return this.divmod(e,"mod",!0).mod},i.prototype.divRound=function(e){var t=this.divmod(e);if(t.mod.isZero())return t.div;var n=0!==t.div.negative?t.mod.isub(e):t.mod,r=e.ushrn(1),i=e.andln(1),s=n.cmp(r);return s<0||1===i&&0===s?t.div:0!==t.div.negative?t.div.isubn(1):t.div.iaddn(1)},i.prototype.modrn=function(e){var t=e<0;t&&(e=-e),n(e<=67108863);for(var r=(1<<26)%e,i=0,s=this.length-1;s>=0;s--)i=(r*i+(0|this.words[s]))%e;return t?-i:i},i.prototype.modn=function(e){return this.modrn(e)},i.prototype.idivn=function(e){var t=e<0;t&&(e=-e),n(e<=67108863);for(var r=0,i=this.length-1;i>=0;i--){var s=(0|this.words[i])+67108864*r;this.words[i]=s/e|0,r=s%e}return this._strip(),t?this.ineg():this},i.prototype.divn=function(e){return this.clone().idivn(e)},i.prototype.egcd=function(e){n(0===e.negative),n(!e.isZero());var t=this,r=e.clone();t=0!==t.negative?t.umod(e):t.clone();for(var s=new i(1),a=new i(0),o=new i(0),u=new i(1),l=0;t.isEven()&&r.isEven();)t.iushrn(1),r.iushrn(1),++l;for(var c=r.clone(),d=t.clone();!t.isZero();){for(var h=0,p=1;0==(t.words[0]&p)&&h<26;++h,p<<=1);if(h>0)for(t.iushrn(h);h-- >0;)(s.isOdd()||a.isOdd())&&(s.iadd(c),a.isub(d)),s.iushrn(1),a.iushrn(1);for(var f=0,m=1;0==(r.words[0]&m)&&f<26;++f,m<<=1);if(f>0)for(r.iushrn(f);f-- >0;)(o.isOdd()||u.isOdd())&&(o.iadd(c),u.isub(d)),o.iushrn(1),u.iushrn(1);t.cmp(r)>=0?(t.isub(r),s.isub(o),a.isub(u)):(r.isub(t),o.isub(s),u.isub(a))}return{a:o,b:u,gcd:r.iushln(l)}},i.prototype._invmp=function(e){n(0===e.negative),n(!e.isZero());var t=this,r=e.clone();t=0!==t.negative?t.umod(e):t.clone();for(var s,a=new i(1),o=new i(0),u=r.clone();t.cmpn(1)>0&&r.cmpn(1)>0;){for(var l=0,c=1;0==(t.words[0]&c)&&l<26;++l,c<<=1);if(l>0)for(t.iushrn(l);l-- >0;)a.isOdd()&&a.iadd(u),a.iushrn(1);for(var d=0,h=1;0==(r.words[0]&h)&&d<26;++d,h<<=1);if(d>0)for(r.iushrn(d);d-- >0;)o.isOdd()&&o.iadd(u),o.iushrn(1);t.cmp(r)>=0?(t.isub(r),a.isub(o)):(r.isub(t),o.isub(a))}return(s=0===t.cmpn(1)?a:o).cmpn(0)<0&&s.iadd(e),s},i.prototype.gcd=function(e){if(this.isZero())return e.abs();if(e.isZero())return this.abs();var t=this.clone(),n=e.clone();t.negative=0,n.negative=0;for(var r=0;t.isEven()&&n.isEven();r++)t.iushrn(1),n.iushrn(1);for(;;){for(;t.isEven();)t.iushrn(1);for(;n.isEven();)n.iushrn(1);var i=t.cmp(n);if(i<0){var s=t;t=n,n=s}else if(0===i||0===n.cmpn(1))break;t.isub(n)}return n.iushln(r)},i.prototype.invm=function(e){return this.egcd(e).a.umod(e)},i.prototype.isEven=function(){return 0==(1&this.words[0])},i.prototype.isOdd=function(){return 1==(1&this.words[0])},i.prototype.andln=function(e){return this.words[0]&e},i.prototype.bincn=function(e){n("number"==typeof e);var t=e%26,r=(e-t)/26,i=1<<t;if(this.length<=r)return this._expand(r+1),this.words[r]|=i,this;for(var s=i,a=r;0!==s&&a<this.length;a++){var o=0|this.words[a];s=(o+=s)>>>26,this.words[a]=o&=67108863}return 0!==s&&(this.words[a]=s,this.length++),this},i.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},i.prototype.cmpn=function(e){var t,r=e<0;if(0!==this.negative&&!r)return-1;if(0===this.negative&&r)return 1;if(this._strip(),this.length>1)t=1;else{r&&(e=-e),n(e<=67108863,"Number is too big");var i=0|this.words[0];t=i===e?0:i<e?-1:1}return 0!==this.negative?0|-t:t},i.prototype.cmp=function(e){if(0!==this.negative&&0===e.negative)return-1;if(0===this.negative&&0!==e.negative)return 1;var t=this.ucmp(e);return 0!==this.negative?0|-t:t},i.prototype.ucmp=function(e){if(this.length>e.length)return 1;if(this.length<e.length)return-1;for(var t=0,n=this.length-1;n>=0;n--){var r=0|this.words[n],i=0|e.words[n];if(r!==i){r<i?t=-1:r>i&&(t=1);break}}return t},i.prototype.gtn=function(e){return 1===this.cmpn(e)},i.prototype.gt=function(e){return 1===this.cmp(e)},i.prototype.gten=function(e){return this.cmpn(e)>=0},i.prototype.gte=function(e){return this.cmp(e)>=0},i.prototype.ltn=function(e){return-1===this.cmpn(e)},i.prototype.lt=function(e){return-1===this.cmp(e)},i.prototype.lten=function(e){return this.cmpn(e)<=0},i.prototype.lte=function(e){return this.cmp(e)<=0},i.prototype.eqn=function(e){return 0===this.cmpn(e)},i.prototype.eq=function(e){return 0===this.cmp(e)},i.red=function(e){return new S(e)},i.prototype.toRed=function(e){return n(!this.red,"Already a number in reduction context"),n(0===this.negative,"red works only with positives"),e.convertTo(this)._forceRed(e)},i.prototype.fromRed=function(){return n(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},i.prototype._forceRed=function(e){return this.red=e,this},i.prototype.forceRed=function(e){return n(!this.red,"Already a number in reduction context"),this._forceRed(e)},i.prototype.redAdd=function(e){return n(this.red,"redAdd works only with red numbers"),this.red.add(this,e)},i.prototype.redIAdd=function(e){return n(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,e)},i.prototype.redSub=function(e){return n(this.red,"redSub works only with red numbers"),this.red.sub(this,e)},i.prototype.redISub=function(e){return n(this.red,"redISub works only with red numbers"),this.red.isub(this,e)},i.prototype.redShl=function(e){return n(this.red,"redShl works only with red numbers"),this.red.shl(this,e)},i.prototype.redMul=function(e){return n(this.red,"redMul works only with red numbers"),this.red._verify2(this,e),this.red.mul(this,e)},i.prototype.redIMul=function(e){return n(this.red,"redMul works only with red numbers"),this.red._verify2(this,e),this.red.imul(this,e)},i.prototype.redSqr=function(){return n(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},i.prototype.redISqr=function(){return n(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},i.prototype.redSqrt=function(){return n(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},i.prototype.redInvm=function(){return n(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},i.prototype.redNeg=function(){return n(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},i.prototype.redPow=function(e){return n(this.red&&!e.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,e)};var b={k256:null,p224:null,p192:null,p25519:null};function v(e,t){this.name=e,this.p=new i(t,16),this.n=this.p.bitLength(),this.k=new i(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function w(){v.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}function A(){v.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}function T(){v.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}function E(){v.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}function S(e){if("string"==typeof e){var t=i._prime(e);this.m=t.p,this.prime=t}else n(e.gtn(1),"modulus must be greater than 1"),this.m=e,this.prime=null}function I(e){S.call(this,e),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)}v.prototype._tmp=function(){var e=new i(null);return e.words=new Array(Math.ceil(this.n/13)),e},v.prototype.ireduce=function(e){var t,n=e;do{this.split(n,this.tmp),t=(n=(n=this.imulK(n)).iadd(this.tmp)).bitLength()}while(t>this.n);var r=t<this.n?-1:n.ucmp(this.p);return 0===r?(n.words[0]=0,n.length=1):r>0?n.isub(this.p):void 0!==n.strip?n.strip():n._strip(),n},v.prototype.split=function(e,t){e.iushrn(this.n,0,t)},v.prototype.imulK=function(e){return e.imul(this.k)},r(w,v),w.prototype.split=function(e,t){for(var n=4194303,r=Math.min(e.length,9),i=0;i<r;i++)t.words[i]=e.words[i];if(t.length=r,e.length<=9)return e.words[0]=0,void(e.length=1);var s=e.words[9];for(t.words[t.length++]=s&n,i=10;i<e.length;i++){var a=0|e.words[i];e.words[i-10]=(a&n)<<4|s>>>22,s=a}e.words[i-10]=s>>>=22,e.length-=0===s&&e.length>10?10:9},w.prototype.imulK=function(e){e.words[e.length]=0,e.words[e.length+1]=0,e.length+=2;for(var t=0,n=0;n<e.length;n++){var r=0|e.words[n];e.words[n]=67108863&(t+=977*r),t=64*r+(t/67108864|0)}return 0===e.words[e.length-1]&&(e.length--,0===e.words[e.length-1]&&e.length--),e},r(A,v),r(T,v),r(E,v),E.prototype.imulK=function(e){for(var t=0,n=0;n<e.length;n++){var r=19*(0|e.words[n])+t,i=67108863&r;r>>>=26,e.words[n]=i,t=r}return 0!==t&&(e.words[e.length++]=t),e},i._prime=function(e){if(b[e])return b[e];var t;if("k256"===e)t=new w;else if("p224"===e)t=new A;else if("p192"===e)t=new T;else{if("p25519"!==e)throw new Error("Unknown prime "+e);t=new E}return b[e]=t,t},S.prototype._verify1=function(e){n(0===e.negative,"red works only with positives"),n(e.red,"red works only with red numbers")},S.prototype._verify2=function(e,t){n(0==(e.negative|t.negative),"red works only with positives"),n(e.red&&e.red===t.red,"red works only with red numbers")},S.prototype.imod=function(e){return this.prime?this.prime.ireduce(e)._forceRed(this):(l(e,e.umod(this.m)._forceRed(this)),e)},S.prototype.neg=function(e){return e.isZero()?e.clone():this.m.sub(e)._forceRed(this)},S.prototype.add=function(e,t){this._verify2(e,t);var n=e.add(t);return n.cmp(this.m)>=0&&n.isub(this.m),n._forceRed(this)},S.prototype.iadd=function(e,t){this._verify2(e,t);var n=e.iadd(t);return n.cmp(this.m)>=0&&n.isub(this.m),n},S.prototype.sub=function(e,t){this._verify2(e,t);var n=e.sub(t);return n.cmpn(0)<0&&n.iadd(this.m),n._forceRed(this)},S.prototype.isub=function(e,t){this._verify2(e,t);var n=e.isub(t);return n.cmpn(0)<0&&n.iadd(this.m),n},S.prototype.shl=function(e,t){return this._verify1(e),this.imod(e.ushln(t))},S.prototype.imul=function(e,t){return this._verify2(e,t),this.imod(e.imul(t))},S.prototype.mul=function(e,t){return this._verify2(e,t),this.imod(e.mul(t))},S.prototype.isqr=function(e){return this.imul(e,e.clone())},S.prototype.sqr=function(e){return this.mul(e,e)},S.prototype.sqrt=function(e){if(e.isZero())return e.clone();var t=this.m.andln(3);if(n(t%2==1),3===t){var r=this.m.add(new i(1)).iushrn(2);return this.pow(e,r)}for(var s=this.m.subn(1),a=0;!s.isZero()&&0===s.andln(1);)a++,s.iushrn(1);n(!s.isZero());var o=new i(1).toRed(this),u=o.redNeg(),l=this.m.subn(1).iushrn(1),c=this.m.bitLength();for(c=new i(2*c*c).toRed(this);0!==this.pow(c,l).cmp(u);)c.redIAdd(u);for(var d=this.pow(c,s),h=this.pow(e,s.addn(1).iushrn(1)),p=this.pow(e,s),f=a;0!==p.cmp(o);){for(var m=p,y=0;0!==m.cmp(o);y++)m=m.redSqr();n(y<f);var g=this.pow(d,new i(1).iushln(f-y-1));h=h.redMul(g),d=g.redSqr(),p=p.redMul(d),f=y}return h},S.prototype.invm=function(e){var t=e._invmp(this.m);return 0!==t.negative?(t.negative=0,this.imod(t).redNeg()):this.imod(t)},S.prototype.pow=function(e,t){if(t.isZero())return new i(1).toRed(this);if(0===t.cmpn(1))return e.clone();var n=new Array(16);n[0]=new i(1).toRed(this),n[1]=e;for(var r=2;r<n.length;r++)n[r]=this.mul(n[r-1],e);var s=n[0],a=0,o=0,u=t.bitLength()%26;for(0===u&&(u=26),r=t.length-1;r>=0;r--){for(var l=t.words[r],c=u-1;c>=0;c--){var d=l>>c&1;s!==n[0]&&(s=this.sqr(s)),0!==d||0!==a?(a<<=1,a|=d,(4==++o||0===r&&0===c)&&(s=this.mul(s,n[a]),o=0,a=0)):o=0}u=26}return s},S.prototype.convertTo=function(e){var t=e.umod(this.m);return t===e?t.clone():t},S.prototype.convertFrom=function(e){var t=e.clone();return t.red=null,t},i.mont=function(e){return new I(e)},r(I,S),I.prototype.convertTo=function(e){return this.imod(e.ushln(this.shift))},I.prototype.convertFrom=function(e){var t=this.imod(e.mul(this.rinv));return t.red=null,t},I.prototype.imul=function(e,t){if(e.isZero()||t.isZero())return e.words[0]=0,e.length=1,e;var n=e.imul(t),r=n.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),i=n.isub(r).iushrn(this.shift),s=i;return i.cmp(this.m)>=0?s=i.isub(this.m):i.cmpn(0)<0&&(s=i.iadd(this.m)),s._forceRed(this)},I.prototype.mul=function(e,t){if(e.isZero()||t.isZero())return new i(0)._forceRed(this);var n=e.mul(t),r=n.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),s=n.isub(r).iushrn(this.shift),a=s;return s.cmp(this.m)>=0?a=s.isub(this.m):s.cmpn(0)<0&&(a=s.iadd(this.m)),a._forceRed(this)},I.prototype.invm=function(e){return this.imod(e._invmp(this.m).mul(this.r2))._forceRed(this)}}(e,hn)});let yn=!1,gn=!1;const bn={debug:1,default:2,info:2,warning:3,error:4,off:5};let vn=bn.default,wn=null;const An=function(){try{const e=[];if(["NFD","NFC","NFKD","NFKC"].forEach(t=>{try{if("test"!=="test".normalize(t))throw new Error("bad normalize")}catch(n){e.push(t)}}),e.length)throw new Error("missing "+e.join(", "));if(String.fromCharCode(233).normalize("NFD")!==String.fromCharCode(101,769))throw new Error("broken implementation")}catch(e){return e.message}return null}();var Tn,En;!function(e){e.DEBUG="DEBUG",e.INFO="INFO",e.WARNING="WARNING",e.ERROR="ERROR",e.OFF="OFF"}(Tn||(Tn={})),function(e){e.UNKNOWN_ERROR="UNKNOWN_ERROR",e.NOT_IMPLEMENTED="NOT_IMPLEMENTED",e.UNSUPPORTED_OPERATION="UNSUPPORTED_OPERATION",e.NETWORK_ERROR="NETWORK_ERROR",e.SERVER_ERROR="SERVER_ERROR",e.TIMEOUT="TIMEOUT",e.BUFFER_OVERRUN="BUFFER_OVERRUN",e.NUMERIC_FAULT="NUMERIC_FAULT",e.MISSING_NEW="MISSING_NEW",e.INVALID_ARGUMENT="INVALID_ARGUMENT",e.MISSING_ARGUMENT="MISSING_ARGUMENT",e.UNEXPECTED_ARGUMENT="UNEXPECTED_ARGUMENT",e.CALL_EXCEPTION="CALL_EXCEPTION",e.INSUFFICIENT_FUNDS="INSUFFICIENT_FUNDS",e.NONCE_EXPIRED="NONCE_EXPIRED",e.REPLACEMENT_UNDERPRICED="REPLACEMENT_UNDERPRICED",e.UNPREDICTABLE_GAS_LIMIT="UNPREDICTABLE_GAS_LIMIT",e.TRANSACTION_REPLACED="TRANSACTION_REPLACED",e.ACTION_REJECTED="ACTION_REJECTED"}(En||(En={}));const Sn="0123456789abcdef";class In{constructor(e){Object.defineProperty(this,"version",{enumerable:!0,value:e,writable:!1})}_log(e,t){const n=e.toLowerCase();null==bn[n]&&this.throwArgumentError("invalid log level name","logLevel",e),vn>bn[n]||console.log.apply(console,t)}debug(...e){this._log(In.levels.DEBUG,e)}info(...e){this._log(In.levels.INFO,e)}warn(...e){this._log(In.levels.WARNING,e)}makeError(e,t,n){if(gn)return this.makeError("censored error",t,{});t||(t=In.errors.UNKNOWN_ERROR),n||(n={});const r=[];Object.keys(n).forEach(e=>{const t=n[e];try{if(t instanceof Uint8Array){let n="";for(let e=0;e<t.length;e++)n+=Sn[t[e]>>4],n+=Sn[15&t[e]];r.push(e+"=Uint8Array(0x"+n+")")}else r.push(e+"="+JSON.stringify(t))}catch(t){r.push(e+"="+JSON.stringify(n[e].toString()))}}),r.push(`code=${t}`),r.push(`version=${this.version}`);const i=e;let s="";switch(t){case En.NUMERIC_FAULT:{s="NUMERIC_FAULT";const t=e;switch(t){case"overflow":case"underflow":case"division-by-zero":s+="-"+t;break;case"negative-power":case"negative-width":s+="-unsupported";break;case"unbound-bitwise-result":s+="-unbound-result"}break}case En.CALL_EXCEPTION:case En.INSUFFICIENT_FUNDS:case En.MISSING_NEW:case En.NONCE_EXPIRED:case En.REPLACEMENT_UNDERPRICED:case En.TRANSACTION_REPLACED:case En.UNPREDICTABLE_GAS_LIMIT:s=t}s&&(e+=" [ See: https://links.ethers.org/v5-errors-"+s+" ]"),r.length&&(e+=" ("+r.join(", ")+")");const a=new Error(e);return a.reason=i,a.code=t,Object.keys(n).forEach(function(e){a[e]=n[e]}),a}throwError(e,t,n){throw this.makeError(e,t,n)}throwArgumentError(e,t,n){return this.throwError(e,In.errors.INVALID_ARGUMENT,{argument:t,value:n})}assert(e,t,n,r){e||this.throwError(t,n,r)}assertArgument(e,t,n,r){e||this.throwArgumentError(t,n,r)}checkNormalize(e){An&&this.throwError("platform missing String.prototype.normalize",In.errors.UNSUPPORTED_OPERATION,{operation:"String.prototype.normalize",form:An})}checkSafeUint53(e,t){"number"==typeof e&&(null==t&&(t="value not safe"),(e<0||e>=9007199254740991)&&this.throwError(t,In.errors.NUMERIC_FAULT,{operation:"checkSafeInteger",fault:"out-of-safe-range",value:e}),e%1&&this.throwError(t,In.errors.NUMERIC_FAULT,{operation:"checkSafeInteger",fault:"non-integer",value:e}))}checkArgumentCount(e,t,n){n=n?": "+n:"",e<t&&this.throwError("missing argument"+n,In.errors.MISSING_ARGUMENT,{count:e,expectedCount:t}),e>t&&this.throwError("too many arguments"+n,In.errors.UNEXPECTED_ARGUMENT,{count:e,expectedCount:t})}checkNew(e,t){e!==Object&&null!=e||this.throwError("missing new",In.errors.MISSING_NEW,{name:t.name})}checkAbstract(e,t){e===t?this.throwError("cannot instantiate abstract class "+JSON.stringify(t.name)+" directly; use a sub-class",In.errors.UNSUPPORTED_OPERATION,{name:e.name,operation:"new"}):e!==Object&&null!=e||this.throwError("missing new",In.errors.MISSING_NEW,{name:t.name})}static globalLogger(){return wn||(wn=new In("logger/5.8.0")),wn}static setCensorship(e,t){if(!e&&t&&this.globalLogger().throwError("cannot permanently disable censorship",In.errors.UNSUPPORTED_OPERATION,{operation:"setCensorship"}),yn){if(!e)return;this.globalLogger().throwError("error censorship permanent",In.errors.UNSUPPORTED_OPERATION,{operation:"setCensorship"})}gn=!!e,yn=!!t}static setLogLevel(e){const t=bn[e.toLowerCase()];null!=t?vn=t:In.globalLogger().warn("invalid log level - "+e)}static from(e){return new In(e)}}In.errors=En,In.levels=Tn;const kn=new In("bytes/5.8.0");function Cn(e){return!!e.toHexString}function Nn(e){return e.slice||(e.slice=function(){const t=Array.prototype.slice.call(arguments);return Nn(new Uint8Array(Array.prototype.slice.apply(e,t)))}),e}function xn(e){return Bn(e)&&!(e.length%2)||Rn(e)}function _n(e){return"number"==typeof e&&e==e&&e%1==0}function Rn(e){if(null==e)return!1;if(e.constructor===Uint8Array)return!0;if("string"==typeof e)return!1;if(!_n(e.length)||e.length<0)return!1;for(let t=0;t<e.length;t++){const n=e[t];if(!_n(n)||n<0||n>=256)return!1}return!0}function Mn(e,t){if(t||(t={}),"number"==typeof e){kn.checkSafeUint53(e,"invalid arrayify value");const t=[];for(;e;)t.unshift(255&e),e=parseInt(String(e/256));return 0===t.length&&t.push(0),Nn(new Uint8Array(t))}if(t.allowMissingPrefix&&"string"==typeof e&&"0x"!==e.substring(0,2)&&(e="0x"+e),Cn(e)&&(e=e.toHexString()),Bn(e)){let n=e.substring(2);n.length%2&&("left"===t.hexPad?n="0"+n:"right"===t.hexPad?n+="0":kn.throwArgumentError("hex data is odd-length","value",e));const r=[];for(let e=0;e<n.length;e+=2)r.push(parseInt(n.substring(e,e+2),16));return Nn(new Uint8Array(r))}return Rn(e)?Nn(new Uint8Array(e)):kn.throwArgumentError("invalid arrayify value","value",e)}function Pn(e){const t=e.map(e=>Mn(e)),n=t.reduce((e,t)=>e+t.length,0),r=new Uint8Array(n);return t.reduce((e,t)=>(r.set(t,e),e+t.length),0),Nn(r)}function On(e){let t=Mn(e);if(0===t.length)return t;let n=0;for(;n<t.length&&0===t[n];)n++;return n&&(t=t.slice(n)),t}function Bn(e,t){return!("string"!=typeof e||!e.match(/^0x[0-9A-Fa-f]*$/)||t&&e.length!==2+2*t)}const Dn="0123456789abcdef";function Fn(e,t){if(t||(t={}),"number"==typeof e){kn.checkSafeUint53(e,"invalid hexlify value");let t="";for(;e;)t=Dn[15&e]+t,e=Math.floor(e/16);return t.length?(t.length%2&&(t="0"+t),"0x"+t):"0x00"}if("bigint"==typeof e)return(e=e.toString(16)).length%2?"0x0"+e:"0x"+e;if(t.allowMissingPrefix&&"string"==typeof e&&"0x"!==e.substring(0,2)&&(e="0x"+e),Cn(e))return e.toHexString();if(Bn(e))return e.length%2&&("left"===t.hexPad?e="0x0"+e.substring(2):"right"===t.hexPad?e+="0":kn.throwArgumentError("hex data is odd-length","value",e)),e.toLowerCase();if(Rn(e)){let t="0x";for(let n=0;n<e.length;n++){let r=e[n];t+=Dn[(240&r)>>4]+Dn[15&r]}return t}return kn.throwArgumentError("invalid hexlify value","value",e)}function Ln(e){if("string"!=typeof e)e=Fn(e);else if(!Bn(e)||e.length%2)return null;return(e.length-2)/2}function Un(e,t,n){return"string"!=typeof e?e=Fn(e):(!Bn(e)||e.length%2)&&kn.throwArgumentError("invalid hexData","value",e),t=2+2*t,null!=n?"0x"+e.substring(t,2+2*n):"0x"+e.substring(t)}function Gn(e){let t="0x";return e.forEach(e=>{t+=Fn(e).substring(2)}),t}function Hn(e){const t=function(e){"string"!=typeof e&&(e=Fn(e)),Bn(e)||kn.throwArgumentError("invalid hex string","value",e),e=e.substring(2);let t=0;for(;t<e.length&&"0"===e[t];)t++;return"0x"+e.substring(t)}(Fn(e,{hexPad:"left"}));return"0x"===t?"0x0":t}function qn(e,t){for("string"!=typeof e?e=Fn(e):Bn(e)||kn.throwArgumentError("invalid hex string","value",e),e.length>2*t+2&&kn.throwArgumentError("value out of range","value",arguments[1]);e.length<2*t+2;)e="0x0"+e.substring(2);return e}function Vn(e){const t={r:"0x",s:"0x",_vs:"0x",recoveryParam:0,v:0,yParityAndS:"0x",compact:"0x"};if(xn(e)){let n=Mn(e);64===n.length?(t.v=27+(n[32]>>7),n[32]&=127,t.r=Fn(n.slice(0,32)),t.s=Fn(n.slice(32,64))):65===n.length?(t.r=Fn(n.slice(0,32)),t.s=Fn(n.slice(32,64)),t.v=n[64]):kn.throwArgumentError("invalid signature string","signature",e),t.v<27&&(0===t.v||1===t.v?t.v+=27:kn.throwArgumentError("signature invalid v byte","signature",e)),t.recoveryParam=1-t.v%2,t.recoveryParam&&(n[32]|=128),t._vs=Fn(n.slice(32,64))}else{if(t.r=e.r,t.s=e.s,t.v=e.v,t.recoveryParam=e.recoveryParam,t._vs=e._vs,null!=t._vs){const n=function(e,t){(e=Mn(e)).length>t&&kn.throwArgumentError("value out of range","value",arguments[0]);const n=new Uint8Array(t);return n.set(e,t-e.length),Nn(n)}(Mn(t._vs),32);t._vs=Fn(n);const r=n[0]>=128?1:0;null==t.recoveryParam?t.recoveryParam=r:t.recoveryParam!==r&&kn.throwArgumentError("signature recoveryParam mismatch _vs","signature",e),n[0]&=127;const i=Fn(n);null==t.s?t.s=i:t.s!==i&&kn.throwArgumentError("signature v mismatch _vs","signature",e)}null==t.recoveryParam?null==t.v?kn.throwArgumentError("signature missing v and recoveryParam","signature",e):t.recoveryParam=0===t.v||1===t.v?t.v:1-t.v%2:null==t.v?t.v=27+t.recoveryParam:t.recoveryParam!==(0===t.v||1===t.v?t.v:1-t.v%2)&&kn.throwArgumentError("signature recoveryParam mismatch v","signature",e),null!=t.r&&Bn(t.r)?t.r=qn(t.r,32):kn.throwArgumentError("signature missing or invalid r","signature",e),null!=t.s&&Bn(t.s)?t.s=qn(t.s,32):kn.throwArgumentError("signature missing or invalid s","signature",e);const n=Mn(t.s);n[0]>=128&&kn.throwArgumentError("signature s out of range","signature",e),t.recoveryParam&&(n[0]|=128);const r=Fn(n);t._vs&&(Bn(t._vs)||kn.throwArgumentError("signature invalid _vs","signature",e),t._vs=qn(t._vs,32)),null==t._vs?t._vs=r:t._vs!==r&&kn.throwArgumentError("signature _vs mismatch v and s","signature",e)}return t.yParityAndS=t._vs,t.compact=t.r+t.yParityAndS.substring(2),t}function zn(e){return Fn(Pn([(e=Vn(e)).r,e.s,e.recoveryParam?"0x1c":"0x1b"]))}const jn="bignumber/5.8.0";var Kn=mn.BN;const Wn=new In(jn),Jn={},Qn=9007199254740991;let Yn=!1;class Xn{constructor(e,t){e!==Jn&&Wn.throwError("cannot call constructor directly; use BigNumber.from",In.errors.UNSUPPORTED_OPERATION,{operation:"new (BigNumber)"}),this._hex=t,this._isBigNumber=!0,Object.freeze(this)}fromTwos(e){return $n(er(this).fromTwos(e))}toTwos(e){return $n(er(this).toTwos(e))}abs(){return"-"===this._hex[0]?Xn.from(this._hex.substring(1)):this}add(e){return $n(er(this).add(er(e)))}sub(e){return $n(er(this).sub(er(e)))}div(e){return Xn.from(e).isZero()&&tr("division-by-zero","div"),$n(er(this).div(er(e)))}mul(e){return $n(er(this).mul(er(e)))}mod(e){const t=er(e);return t.isNeg()&&tr("division-by-zero","mod"),$n(er(this).umod(t))}pow(e){const t=er(e);return t.isNeg()&&tr("negative-power","pow"),$n(er(this).pow(t))}and(e){const t=er(e);return(this.isNegative()||t.isNeg())&&tr("unbound-bitwise-result","and"),$n(er(this).and(t))}or(e){const t=er(e);return(this.isNegative()||t.isNeg())&&tr("unbound-bitwise-result","or"),$n(er(this).or(t))}xor(e){const t=er(e);return(this.isNegative()||t.isNeg())&&tr("unbound-bitwise-result","xor"),$n(er(this).xor(t))}mask(e){return(this.isNegative()||e<0)&&tr("negative-width","mask"),$n(er(this).maskn(e))}shl(e){return(this.isNegative()||e<0)&&tr("negative-width","shl"),$n(er(this).shln(e))}shr(e){return(this.isNegative()||e<0)&&tr("negative-width","shr"),$n(er(this).shrn(e))}eq(e){return er(this).eq(er(e))}lt(e){return er(this).lt(er(e))}lte(e){return er(this).lte(er(e))}gt(e){return er(this).gt(er(e))}gte(e){return er(this).gte(er(e))}isNegative(){return"-"===this._hex[0]}isZero(){return er(this).isZero()}toNumber(){try{return er(this).toNumber()}catch(e){tr("overflow","toNumber",this.toString())}return null}toBigInt(){try{return BigInt(this.toString())}catch(e){}return Wn.throwError("this platform does not support BigInt",In.errors.UNSUPPORTED_OPERATION,{value:this.toString()})}toString(){return arguments.length>0&&(10===arguments[0]?Yn||(Yn=!0,Wn.warn("BigNumber.toString does not accept any parameters; base-10 is assumed")):Wn.throwError(16===arguments[0]?"BigNumber.toString does not accept any parameters; use bigNumber.toHexString()":"BigNumber.toString does not accept parameters",In.errors.UNEXPECTED_ARGUMENT,{})),er(this).toString(10)}toHexString(){return this._hex}toJSON(e){return{type:"BigNumber",hex:this.toHexString()}}static from(e){if(e instanceof Xn)return e;if("string"==typeof e)return e.match(/^-?0x[0-9a-f]+$/i)?new Xn(Jn,Zn(e)):e.match(/^-?[0-9]+$/)?new Xn(Jn,Zn(new Kn(e))):Wn.throwArgumentError("invalid BigNumber string","value",e);if("number"==typeof e)return e%1&&tr("underflow","BigNumber.from",e),(e>=Qn||e<=-Qn)&&tr("overflow","BigNumber.from",e),Xn.from(String(e));const t=e;if("bigint"==typeof t)return Xn.from(t.toString());if(Rn(t))return Xn.from(Fn(t));if(t)if(t.toHexString){const e=t.toHexString();if("string"==typeof e)return Xn.from(e)}else{let e=t._hex;if(null==e&&"BigNumber"===t.type&&(e=t.hex),"string"==typeof e&&(Bn(e)||"-"===e[0]&&Bn(e.substring(1))))return Xn.from(e)}return Wn.throwArgumentError("invalid BigNumber value","value",e)}static isBigNumber(e){return!(!e||!e._isBigNumber)}}function Zn(e){if("string"!=typeof e)return Zn(e.toString(16));if("-"===e[0])return"-"===(e=e.substring(1))[0]&&Wn.throwArgumentError("invalid hex","value",e),"0x00"===(e=Zn(e))?e:"-"+e;if("0x"!==e.substring(0,2)&&(e="0x"+e),"0x"===e)return"0x00";for(e.length%2&&(e="0x0"+e.substring(2));e.length>4&&"0x00"===e.substring(0,4);)e="0x"+e.substring(4);return e}function $n(e){return Xn.from(Zn(e))}function er(e){const t=Xn.from(e).toHexString();return new Kn("-"===t[0]?"-"+t.substring(3):t.substring(2),16)}function tr(e,t,n){const r={fault:e,operation:t};return null!=n&&(r.value=n),Wn.throwError(e,In.errors.NUMERIC_FAULT,r)}const nr=new In(jn),rr={},ir=Xn.from(0),sr=Xn.from(-1);function ar(e,t,n,r){const i={fault:t,operation:n};return void 0!==r&&(i.value=r),nr.throwError(e,In.errors.NUMERIC_FAULT,i)}let or="0";for(;or.length<256;)or+=or;function ur(e){if("number"!=typeof e)try{e=Xn.from(e).toNumber()}catch(e){}return"number"==typeof e&&e>=0&&e<=256&&!(e%1)?"1"+or.substring(0,e):nr.throwArgumentError("invalid decimal size","decimals",e)}function lr(e,t){null==t&&(t=0);const n=ur(t),r=(e=Xn.from(e)).lt(ir);r&&(e=e.mul(sr));let i=e.mod(n).toString();for(;i.length<n.length-1;)i="0"+i;i=i.match(/^([0-9]*[1-9]|0)(0*)/)[1];const s=e.div(n).toString();return e=1===n.length?s:s+"."+i,r&&(e="-"+e),e}function cr(e,t){null==t&&(t=0);const n=ur(t);"string"==typeof e&&e.match(/^-?[0-9.]+$/)||nr.throwArgumentError("invalid decimal value","value",e);const r="-"===e.substring(0,1);r&&(e=e.substring(1)),"."===e&&nr.throwArgumentError("missing value","value",e);const i=e.split(".");i.length>2&&nr.throwArgumentError("too many decimal points","value",e);let s=i[0],a=i[1];for(s||(s="0"),a||(a="0");"0"===a[a.length-1];)a=a.substring(0,a.length-1);for(a.length>n.length-1&&ar("fractional component exceeds decimals","underflow","parseFixed"),""===a&&(a="0");a.length<n.length-1;)a+="0";const o=Xn.from(s),u=Xn.from(a);let l=o.mul(n).add(u);return r&&(l=l.mul(sr)),l}class dr{constructor(e,t,n,r){e!==rr&&nr.throwError("cannot use FixedFormat constructor; use FixedFormat.from",In.errors.UNSUPPORTED_OPERATION,{operation:"new FixedFormat"}),this.signed=t,this.width=n,this.decimals=r,this.name=(t?"":"u")+"fixed"+String(n)+"x"+String(r),this._multiplier=ur(r),Object.freeze(this)}static from(e){if(e instanceof dr)return e;"number"==typeof e&&(e=`fixed128x${e}`);let t=!0,n=128,r=18;if("string"==typeof e)if("fixed"===e);else if("ufixed"===e)t=!1;else{const i=e.match(/^(u?)fixed([0-9]+)x([0-9]+)$/);i||nr.throwArgumentError("invalid fixed format","format",e),t="u"!==i[1],n=parseInt(i[2]),r=parseInt(i[3])}else if(e){const i=(t,n,r)=>null==e[t]?r:(typeof e[t]!==n&&nr.throwArgumentError("invalid fixed format ("+t+" not "+n+")","format."+t,e[t]),e[t]);t=i("signed","boolean",t),n=i("width","number",n),r=i("decimals","number",r)}return n%8&&nr.throwArgumentError("invalid fixed format width (not byte aligned)","format.width",n),r>80&&nr.throwArgumentError("invalid fixed format (decimals too large)","format.decimals",r),new dr(rr,t,n,r)}}class hr{constructor(e,t,n,r){e!==rr&&nr.throwError("cannot use FixedNumber constructor; use FixedNumber.from",In.errors.UNSUPPORTED_OPERATION,{operation:"new FixedFormat"}),this.format=r,this._hex=t,this._value=n,this._isFixedNumber=!0,Object.freeze(this)}_checkFormat(e){this.format.name!==e.format.name&&nr.throwArgumentError("incompatible format; use fixedNumber.toFormat","other",e)}addUnsafe(e){this._checkFormat(e);const t=cr(this._value,this.format.decimals),n=cr(e._value,e.format.decimals);return hr.fromValue(t.add(n),this.format.decimals,this.format)}subUnsafe(e){this._checkFormat(e);const t=cr(this._value,this.format.decimals),n=cr(e._value,e.format.decimals);return hr.fromValue(t.sub(n),this.format.decimals,this.format)}mulUnsafe(e){this._checkFormat(e);const t=cr(this._value,this.format.decimals),n=cr(e._value,e.format.decimals);return hr.fromValue(t.mul(n).div(this.format._multiplier),this.format.decimals,this.format)}divUnsafe(e){this._checkFormat(e);const t=cr(this._value,this.format.decimals),n=cr(e._value,e.format.decimals);return hr.fromValue(t.mul(this.format._multiplier).div(n),this.format.decimals,this.format)}floor(){const e=this.toString().split(".");1===e.length&&e.push("0");let t=hr.from(e[0],this.format);const n=!e[1].match(/^(0*)$/);return this.isNegative()&&n&&(t=t.subUnsafe(pr.toFormat(t.format))),t}ceiling(){const e=this.toString().split(".");1===e.length&&e.push("0");let t=hr.from(e[0],this.format);const n=!e[1].match(/^(0*)$/);return!this.isNegative()&&n&&(t=t.addUnsafe(pr.toFormat(t.format))),t}round(e){null==e&&(e=0);const t=this.toString().split(".");if(1===t.length&&t.push("0"),(e<0||e>80||e%1)&&nr.throwArgumentError("invalid decimal count","decimals",e),t[1].length<=e)return this;const n=hr.from("1"+or.substring(0,e),this.format),r=fr.toFormat(this.format);return this.mulUnsafe(n).addUnsafe(r).floor().divUnsafe(n)}isZero(){return"0.0"===this._value||"0"===this._value}isNegative(){return"-"===this._value[0]}toString(){return this._value}toHexString(e){return null==e?this._hex:(e%8&&nr.throwArgumentError("invalid byte width","width",e),qn(Xn.from(this._hex).fromTwos(this.format.width).toTwos(e).toHexString(),e/8))}toUnsafeFloat(){return parseFloat(this.toString())}toFormat(e){return hr.fromString(this._value,e)}static fromValue(e,t,n){return null!=n||null==t||function(e){return null!=e&&(Xn.isBigNumber(e)||"number"==typeof e&&e%1==0||"string"==typeof e&&!!e.match(/^-?[0-9]+$/)||Bn(e)||"bigint"==typeof e||Rn(e))}(t)||(n=t,t=null),null==t&&(t=0),null==n&&(n="fixed"),hr.fromString(lr(e,t),dr.from(n))}static fromString(e,t){null==t&&(t="fixed");const n=dr.from(t),r=cr(e,n.decimals);!n.signed&&r.lt(ir)&&ar("unsigned value cannot be negative","overflow","value",e);let i=null;n.signed?i=r.toTwos(n.width).toHexString():(i=r.toHexString(),i=qn(i,n.width/8));const s=lr(r,n.decimals);return new hr(rr,i,s,n)}static fromBytes(e,t){null==t&&(t="fixed");const n=dr.from(t);if(Mn(e).length>n.width/8)throw new Error("overflow");let r=Xn.from(e);n.signed&&(r=r.fromTwos(n.width));const i=r.toTwos((n.signed?0:1)+n.width).toHexString(),s=lr(r,n.decimals);return new hr(rr,i,s,n)}static from(e,t){if("string"==typeof e)return hr.fromString(e,t);if(Rn(e))return hr.fromBytes(e,t);try{return hr.fromValue(e,0,t)}catch(e){if(e.code!==In.errors.INVALID_ARGUMENT)throw e}return nr.throwArgumentError("invalid FixedNumber value","value",e)}static isFixedNumber(e){return!(!e||!e._isFixedNumber)}}const pr=hr.from(1),fr=hr.from("0.5");var mr=function(e,t,n,r){return new(n||(n=Promise))(function(i,s){function a(e){try{u(r.next(e))}catch(e){s(e)}}function o(e){try{u(r.throw(e))}catch(e){s(e)}}function u(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n(function(e){e(t)})).then(a,o)}u((r=r.apply(e,t||[])).next())})};const yr=new In("properties/5.8.0");function gr(e,t,n){Object.defineProperty(e,t,{enumerable:!0,value:n,writable:!1})}function br(e,t){for(let n=0;n<32;n++){if(e[t])return e[t];if(!e.prototype||"object"!=typeof e.prototype)break;e=Object.getPrototypeOf(e.prototype).constructor}return null}function vr(e){return mr(this,void 0,void 0,function*(){const t=Object.keys(e).map(t=>Promise.resolve(e[t]).then(e=>({key:t,value:e})));return(yield Promise.all(t)).reduce((e,t)=>(e[t.key]=t.value,e),{})})}function wr(e,t){e&&"object"==typeof e||yr.throwArgumentError("invalid object","object",e),Object.keys(e).forEach(n=>{t[n]||yr.throwArgumentError("invalid object key - "+n,"transaction:"+n,e)})}function Ar(e){const t={};for(const n in e)t[n]=e[n];return t}const Tr={bigint:!0,boolean:!0,function:!0,number:!0,string:!0};function Er(e){if(null==e||Tr[typeof e])return!0;if(Array.isArray(e)||"object"==typeof e){if(!Object.isFrozen(e))return!1;const t=Object.keys(e);for(let n=0;n<t.length;n++){let r=null;try{r=e[t[n]]}catch(e){continue}if(!Er(r))return!1}return!0}return yr.throwArgumentError("Cannot deepCopy "+typeof e,"object",e)}function Sr(e){if(Er(e))return e;if(Array.isArray(e))return Object.freeze(e.map(e=>Ir(e)));if("object"==typeof e){const t={};for(const n in e){const r=e[n];void 0!==r&&gr(t,n,Ir(r))}return t}return yr.throwArgumentError("Cannot deepCopy "+typeof e,"object",e)}function Ir(e){return Sr(e)}class kr{constructor(e){for(const t in e)this[t]=Ir(e[t])}}const Cr=new In("abstract-provider/5.8.0");class Nr extends kr{static isForkEvent(e){return!(!e||!e._isForkEvent)}}class xr{constructor(){Cr.checkAbstract(new.target,xr),gr(this,"_isProvider",!0)}getFeeData(){return e=this,n=function*(){const{block:e,gasPrice:t}=yield vr({block:this.getBlock("latest"),gasPrice:this.getGasPrice().catch(e=>null)});let n=null,r=null,i=null;return e&&e.baseFeePerGas&&(n=e.baseFeePerGas,i=Xn.from("1500000000"),r=e.baseFeePerGas.mul(2).add(i)),{lastBaseFeePerGas:n,maxFeePerGas:r,maxPriorityFeePerGas:i,gasPrice:t}},new((t=void 0)||(t=Promise))(function(r,i){function s(e){try{o(n.next(e))}catch(e){i(e)}}function a(e){try{o(n.throw(e))}catch(e){i(e)}}function o(e){var n;e.done?r(e.value):(n=e.value,n instanceof t?n:new t(function(e){e(n)})).then(s,a)}o((n=n.apply(e,[])).next())});var e,t,n}addListener(e,t){return this.on(e,t)}removeListener(e,t){return this.off(e,t)}static isProvider(e){return!(!e||!e._isProvider)}}const _r=new In("networks/5.8.0");function Rr(e){const t=function(t,n){null==n&&(n={});const r=[];if(t.InfuraProvider&&"-"!==n.infura)try{r.push(new t.InfuraProvider(e,n.infura))}catch(e){}if(t.EtherscanProvider&&"-"!==n.etherscan)try{r.push(new t.EtherscanProvider(e,n.etherscan))}catch(e){}if(t.AlchemyProvider&&"-"!==n.alchemy)try{r.push(new t.AlchemyProvider(e,n.alchemy))}catch(e){}if(t.PocketProvider&&"-"!==n.pocket){const i=["goerli","ropsten","rinkeby","sepolia"];try{const s=new t.PocketProvider(e,n.pocket);s.network&&-1===i.indexOf(s.network.name)&&r.push(s)}catch(e){}}if(t.CloudflareProvider&&"-"!==n.cloudflare)try{r.push(new t.CloudflareProvider(e))}catch(e){}if(t.AnkrProvider&&"-"!==n.ankr)try{const i=["ropsten"],s=new t.AnkrProvider(e,n.ankr);s.network&&-1===i.indexOf(s.network.name)&&r.push(s)}catch(e){}if(t.QuickNodeProvider&&"-"!==n.quicknode)try{r.push(new t.QuickNodeProvider(e,n.quicknode))}catch(e){}if(0===r.length)return null;if(t.FallbackProvider){let i=1;return null!=n.quorum?i=n.quorum:"homestead"===e&&(i=2),new t.FallbackProvider(r,i)}return r[0]};return t.renetwork=function(e){return Rr(e)},t}function Mr(e,t){const n=function(n,r){return n.JsonRpcProvider?new n.JsonRpcProvider(e,t):null};return n.renetwork=function(t){return Mr(e,t)},n}const Pr={chainId:1,ensAddress:"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e",name:"homestead",_defaultProvider:Rr("homestead")},Or={chainId:3,ensAddress:"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e",name:"ropsten",_defaultProvider:Rr("ropsten")},Br={chainId:63,name:"classicMordor",_defaultProvider:Mr("https://www.ethercluster.com/mordor","classicMordor")},Dr={unspecified:{chainId:0,name:"unspecified"},homestead:Pr,mainnet:Pr,morden:{chainId:2,name:"morden"},ropsten:Or,testnet:Or,rinkeby:{chainId:4,ensAddress:"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e",name:"rinkeby",_defaultProvider:Rr("rinkeby")},kovan:{chainId:42,name:"kovan",_defaultProvider:Rr("kovan")},goerli:{chainId:5,ensAddress:"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e",name:"goerli",_defaultProvider:Rr("goerli")},kintsugi:{chainId:1337702,name:"kintsugi"},sepolia:{chainId:11155111,ensAddress:"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e",name:"sepolia",_defaultProvider:Rr("sepolia")},holesky:{chainId:17e3,name:"holesky",_defaultProvider:Rr("holesky")},classic:{chainId:61,name:"classic",_defaultProvider:Mr("https://www.ethercluster.com/etc","classic")},classicMorden:{chainId:62,name:"classicMorden"},classicMordor:Br,classicTestnet:Br,classicKotti:{chainId:6,name:"classicKotti",_defaultProvider:Mr("https://www.ethercluster.com/kotti","classicKotti")},xdai:{chainId:100,name:"xdai"},matic:{chainId:137,name:"matic",_defaultProvider:Rr("matic")},maticmum:{chainId:80001,name:"maticmum",_defaultProvider:Rr("maticmum")},optimism:{chainId:10,name:"optimism",_defaultProvider:Rr("optimism")},"optimism-kovan":{chainId:69,name:"optimism-kovan"},"optimism-goerli":{chainId:420,name:"optimism-goerli"},"optimism-sepolia":{chainId:11155420,name:"optimism-sepolia"},arbitrum:{chainId:42161,name:"arbitrum"},"arbitrum-rinkeby":{chainId:421611,name:"arbitrum-rinkeby"},"arbitrum-goerli":{chainId:421613,name:"arbitrum-goerli"},"arbitrum-sepolia":{chainId:421614,name:"arbitrum-sepolia"},bnb:{chainId:56,name:"bnb"},bnbt:{chainId:97,name:"bnbt"}};function Fr(e){e=atob(e);const t=[];for(let n=0;n<e.length;n++)t.push(e.charCodeAt(n));return Mn(t)}function Lr(e){e=Mn(e);let t="";for(let n=0;n<e.length;n++)t+=String.fromCharCode(e[n]);return btoa(t)}class Ur{constructor(e){gr(this,"alphabet",e),gr(this,"base",e.length),gr(this,"_alphabetMap",{}),gr(this,"_leader",e.charAt(0));for(let t=0;t<e.length;t++)this._alphabetMap[e.charAt(t)]=t}encode(e){let t=Mn(e);if(0===t.length)return"";let n=[0];for(let e=0;e<t.length;++e){let r=t[e];for(let e=0;e<n.length;++e)r+=n[e]<<8,n[e]=r%this.base,r=r/this.base|0;for(;r>0;)n.push(r%this.base),r=r/this.base|0}let r="";for(let e=0;0===t[e]&&e<t.length-1;++e)r+=this._leader;for(let e=n.length-1;e>=0;--e)r+=this.alphabet[n[e]];return r}decode(e){if("string"!=typeof e)throw new TypeError("Expected String");let t=[];if(0===e.length)return new Uint8Array(t);t.push(0);for(let n=0;n<e.length;n++){let r=this._alphabetMap[e[n]];if(void 0===r)throw new Error("Non-base"+this.base+" character");let i=r;for(let e=0;e<t.length;++e)i+=t[e]*this.base,t[e]=255&i,i>>=8;for(;i>0;)t.push(255&i),i>>=8}for(let n=0;e[n]===this._leader&&n<e.length-1;++n)t.push(0);return Mn(new Uint8Array(t.reverse()))}}new Ur("abcdefghijklmnopqrstuvwxyz234567");const Gr=new Ur("123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"),Hr=/*#__PURE__*/Xn.from(-1),qr=/*#__PURE__*/Xn.from(0),Vr=/*#__PURE__*/Xn.from(1),zr=/*#__PURE__*/Xn.from("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff");var jr=pn(function(e){!function(){var t="input is invalid type",n="object"==typeof window,r=n?window:{};r.JS_SHA3_NO_WINDOW&&(n=!1);var i=!n&&"object"==typeof self;!r.JS_SHA3_NO_NODE_JS&&"object"==typeof process&&process.versions&&process.versions.node?r=hn:i&&(r=self);var s=!r.JS_SHA3_NO_COMMON_JS&&e.exports,a=!r.JS_SHA3_NO_ARRAY_BUFFER&&"undefined"!=typeof ArrayBuffer,o="0123456789abcdef".split(""),u=[4,1024,262144,67108864],l=[0,8,16,24],c=[1,0,32898,0,32906,2147483648,2147516416,2147483648,32907,0,2147483649,0,2147516545,2147483648,32777,2147483648,138,0,136,0,2147516425,0,2147483658,0,2147516555,0,139,2147483648,32905,2147483648,32771,2147483648,32770,2147483648,128,2147483648,32778,0,2147483658,2147483648,2147516545,2147483648,32896,2147483648,2147483649,0,2147516424,2147483648],d=[224,256,384,512],h=[128,256],p=["hex","buffer","arrayBuffer","array","digest"],f={128:168,256:136};!r.JS_SHA3_NO_NODE_JS&&Array.isArray||(Array.isArray=function(e){return"[object Array]"===Object.prototype.toString.call(e)}),!a||!r.JS_SHA3_NO_ARRAY_BUFFER_IS_VIEW&&ArrayBuffer.isView||(ArrayBuffer.isView=function(e){return"object"==typeof e&&e.buffer&&e.buffer.constructor===ArrayBuffer});for(var m=function(e,t,n){return function(r){return new _(e,t,e).update(r)[n]()}},y=function(e,t,n){return function(r,i){return new _(e,t,i).update(r)[n]()}},g=function(e,t,n){return function(t,r,i,s){return T["cshake"+e].update(t,r,i,s)[n]()}},b=function(e,t,n){return function(t,r,i,s){return T["kmac"+e].update(t,r,i,s)[n]()}},v=function(e,t,n,r){for(var i=0;i<p.length;++i){var s=p[i];e[s]=t(n,r,s)}return e},w=function(e,t){var n=m(e,t,"hex");return n.create=function(){return new _(e,t,e)},n.update=function(e){return n.create().update(e)},v(n,m,e,t)},A=[{name:"keccak",padding:[1,256,65536,16777216],bits:d,createMethod:w},{name:"sha3",padding:[6,1536,393216,100663296],bits:d,createMethod:w},{name:"shake",padding:[31,7936,2031616,520093696],bits:h,createMethod:function(e,t){var n=y(e,t,"hex");return n.create=function(n){return new _(e,t,n)},n.update=function(e,t){return n.create(t).update(e)},v(n,y,e,t)}},{name:"cshake",padding:u,bits:h,createMethod:function(e,t){var n=f[e],r=g(e,0,"hex");return r.create=function(r,i,s){return i||s?new _(e,t,r).bytepad([i,s],n):T["shake"+e].create(r)},r.update=function(e,t,n,i){return r.create(t,n,i).update(e)},v(r,g,e,t)}},{name:"kmac",padding:u,bits:h,createMethod:function(e,t){var n=f[e],r=b(e,0,"hex");return r.create=function(r,i,s){return new R(e,t,i).bytepad(["KMAC",s],n).bytepad([r],n)},r.update=function(e,t,n,i){return r.create(e,n,i).update(t)},v(r,b,e,t)}}],T={},E=[],S=0;S<A.length;++S)for(var I=A[S],k=I.bits,C=0;C<k.length;++C){var N=I.name+"_"+k[C];if(E.push(N),T[N]=I.createMethod(k[C],I.padding),"sha3"!==I.name){var x=I.name+k[C];E.push(x),T[x]=T[N]}}function _(e,t,n){this.blocks=[],this.s=[],this.padding=t,this.outputBits=n,this.reset=!0,this.finalized=!1,this.block=0,this.start=0,this.blockCount=1600-(e<<1)>>5,this.byteCount=this.blockCount<<2,this.outputBlocks=n>>5,this.extraBytes=(31&n)>>3;for(var r=0;r<50;++r)this.s[r]=0}function R(e,t,n){_.call(this,e,t,n)}_.prototype.update=function(e){if(this.finalized)throw new Error("finalize already called");var n,r=typeof e;if("string"!==r){if("object"!==r)throw new Error(t);if(null===e)throw new Error(t);if(a&&e.constructor===ArrayBuffer)e=new Uint8Array(e);else if(!(Array.isArray(e)||a&&ArrayBuffer.isView(e)))throw new Error(t);n=!0}for(var i,s,o=this.blocks,u=this.byteCount,c=e.length,d=this.blockCount,h=0,p=this.s;h<c;){if(this.reset)for(this.reset=!1,o[0]=this.block,i=1;i<d+1;++i)o[i]=0;if(n)for(i=this.start;h<c&&i<u;++h)o[i>>2]|=e[h]<<l[3&i++];else for(i=this.start;h<c&&i<u;++h)(s=e.charCodeAt(h))<128?o[i>>2]|=s<<l[3&i++]:s<2048?(o[i>>2]|=(192|s>>6)<<l[3&i++],o[i>>2]|=(128|63&s)<<l[3&i++]):s<55296||s>=57344?(o[i>>2]|=(224|s>>12)<<l[3&i++],o[i>>2]|=(128|s>>6&63)<<l[3&i++],o[i>>2]|=(128|63&s)<<l[3&i++]):(s=65536+((1023&s)<<10|1023&e.charCodeAt(++h)),o[i>>2]|=(240|s>>18)<<l[3&i++],o[i>>2]|=(128|s>>12&63)<<l[3&i++],o[i>>2]|=(128|s>>6&63)<<l[3&i++],o[i>>2]|=(128|63&s)<<l[3&i++]);if(this.lastByteIndex=i,i>=u){for(this.start=i-u,this.block=o[d],i=0;i<d;++i)p[i]^=o[i];M(p),this.reset=!0}else this.start=i}return this},_.prototype.encode=function(e,t){var n=255&e,r=1,i=[n];for(n=255&(e>>=8);n>0;)i.unshift(n),n=255&(e>>=8),++r;return t?i.push(r):i.unshift(r),this.update(i),i.length},_.prototype.encodeString=function(e){var n,r=typeof e;if("string"!==r){if("object"!==r)throw new Error(t);if(null===e)throw new Error(t);if(a&&e.constructor===ArrayBuffer)e=new Uint8Array(e);else if(!(Array.isArray(e)||a&&ArrayBuffer.isView(e)))throw new Error(t);n=!0}var i=0;if(n)i=e.length;else for(var s=0;s<e.length;++s){var o=e.charCodeAt(s);o<128?i+=1:o<2048?i+=2:o<55296||o>=57344?i+=3:(o=65536+((1023&o)<<10|1023&e.charCodeAt(++s)),i+=4)}return i+=this.encode(8*i),this.update(e),i},_.prototype.bytepad=function(e,t){for(var n=this.encode(t),r=0;r<e.length;++r)n+=this.encodeString(e[r]);var i=[];return i.length=t-n%t,this.update(i),this},_.prototype.finalize=function(){if(!this.finalized){this.finalized=!0;var e=this.blocks,t=this.lastByteIndex,n=this.blockCount,r=this.s;if(e[t>>2]|=this.padding[3&t],this.lastByteIndex===this.byteCount)for(e[0]=e[n],t=1;t<n+1;++t)e[t]=0;for(e[n-1]|=2147483648,t=0;t<n;++t)r[t]^=e[t];M(r)}},_.prototype.toString=_.prototype.hex=function(){this.finalize();for(var e,t=this.blockCount,n=this.s,r=this.outputBlocks,i=this.extraBytes,s=0,a=0,u="";a<r;){for(s=0;s<t&&a<r;++s,++a)u+=o[(e=n[s])>>4&15]+o[15&e]+o[e>>12&15]+o[e>>8&15]+o[e>>20&15]+o[e>>16&15]+o[e>>28&15]+o[e>>24&15];a%t==0&&(M(n),s=0)}return i&&(u+=o[(e=n[s])>>4&15]+o[15&e],i>1&&(u+=o[e>>12&15]+o[e>>8&15]),i>2&&(u+=o[e>>20&15]+o[e>>16&15])),u},_.prototype.arrayBuffer=function(){this.finalize();var e,t=this.blockCount,n=this.s,r=this.outputBlocks,i=this.extraBytes,s=0,a=0,o=this.outputBits>>3;e=i?new ArrayBuffer(r+1<<2):new ArrayBuffer(o);for(var u=new Uint32Array(e);a<r;){for(s=0;s<t&&a<r;++s,++a)u[a]=n[s];a%t==0&&M(n)}return i&&(u[s]=n[s],e=e.slice(0,o)),e},_.prototype.buffer=_.prototype.arrayBuffer,_.prototype.digest=_.prototype.array=function(){this.finalize();for(var e,t,n=this.blockCount,r=this.s,i=this.outputBlocks,s=this.extraBytes,a=0,o=0,u=[];o<i;){for(a=0;a<n&&o<i;++a,++o)u[e=o<<2]=255&(t=r[a]),u[e+1]=t>>8&255,u[e+2]=t>>16&255,u[e+3]=t>>24&255;o%n==0&&M(r)}return s&&(u[e=o<<2]=255&(t=r[a]),s>1&&(u[e+1]=t>>8&255),s>2&&(u[e+2]=t>>16&255)),u},(R.prototype=new _).finalize=function(){return this.encode(this.outputBits,!0),_.prototype.finalize.call(this)};var M=function(e){var t,n,r,i,s,a,o,u,l,d,h,p,f,m,y,g,b,v,w,A,T,E,S,I,k,C,N,x,_,R,M,P,O,B,D,F,L,U,G,H,q,V,z,j,K,W,J,Q,Y,X,Z,$,ee,te,ne,re,ie,se,ae,oe,ue,le,ce;for(r=0;r<48;r+=2)i=e[0]^e[10]^e[20]^e[30]^e[40],s=e[1]^e[11]^e[21]^e[31]^e[41],u=e[4]^e[14]^e[24]^e[34]^e[44],l=e[5]^e[15]^e[25]^e[35]^e[45],d=e[6]^e[16]^e[26]^e[36]^e[46],h=e[7]^e[17]^e[27]^e[37]^e[47],n=(f=e[9]^e[19]^e[29]^e[39]^e[49])^((o=e[3]^e[13]^e[23]^e[33]^e[43])<<1|(a=e[2]^e[12]^e[22]^e[32]^e[42])>>>31),e[0]^=t=(p=e[8]^e[18]^e[28]^e[38]^e[48])^(a<<1|o>>>31),e[1]^=n,e[10]^=t,e[11]^=n,e[20]^=t,e[21]^=n,e[30]^=t,e[31]^=n,e[40]^=t,e[41]^=n,n=s^(l<<1|u>>>31),e[2]^=t=i^(u<<1|l>>>31),e[3]^=n,e[12]^=t,e[13]^=n,e[22]^=t,e[23]^=n,e[32]^=t,e[33]^=n,e[42]^=t,e[43]^=n,n=o^(h<<1|d>>>31),e[4]^=t=a^(d<<1|h>>>31),e[5]^=n,e[14]^=t,e[15]^=n,e[24]^=t,e[25]^=n,e[34]^=t,e[35]^=n,e[44]^=t,e[45]^=n,n=l^(f<<1|p>>>31),e[6]^=t=u^(p<<1|f>>>31),e[7]^=n,e[16]^=t,e[17]^=n,e[26]^=t,e[27]^=n,e[36]^=t,e[37]^=n,e[46]^=t,e[47]^=n,n=h^(s<<1|i>>>31),e[8]^=t=d^(i<<1|s>>>31),e[9]^=n,e[18]^=t,e[19]^=n,e[28]^=t,e[29]^=n,e[38]^=t,e[39]^=n,e[48]^=t,e[49]^=n,y=e[1],W=e[11]<<4|e[10]>>>28,J=e[10]<<4|e[11]>>>28,x=e[20]<<3|e[21]>>>29,_=e[21]<<3|e[20]>>>29,oe=e[31]<<9|e[30]>>>23,ue=e[30]<<9|e[31]>>>23,V=e[40]<<18|e[41]>>>14,z=e[41]<<18|e[40]>>>14,B=e[2]<<1|e[3]>>>31,D=e[3]<<1|e[2]>>>31,b=e[12]<<12|e[13]>>>20,Q=e[22]<<10|e[23]>>>22,Y=e[23]<<10|e[22]>>>22,R=e[33]<<13|e[32]>>>19,M=e[32]<<13|e[33]>>>19,le=e[42]<<2|e[43]>>>30,ce=e[43]<<2|e[42]>>>30,te=e[5]<<30|e[4]>>>2,ne=e[4]<<30|e[5]>>>2,F=e[14]<<6|e[15]>>>26,L=e[15]<<6|e[14]>>>26,w=e[24]<<11|e[25]>>>21,X=e[34]<<15|e[35]>>>17,Z=e[35]<<15|e[34]>>>17,P=e[45]<<29|e[44]>>>3,O=e[44]<<29|e[45]>>>3,I=e[6]<<28|e[7]>>>4,k=e[7]<<28|e[6]>>>4,re=e[17]<<23|e[16]>>>9,ie=e[16]<<23|e[17]>>>9,U=e[26]<<25|e[27]>>>7,G=e[27]<<25|e[26]>>>7,A=e[36]<<21|e[37]>>>11,T=e[37]<<21|e[36]>>>11,$=e[47]<<24|e[46]>>>8,ee=e[46]<<24|e[47]>>>8,j=e[8]<<27|e[9]>>>5,K=e[9]<<27|e[8]>>>5,C=e[18]<<20|e[19]>>>12,N=e[19]<<20|e[18]>>>12,se=e[29]<<7|e[28]>>>25,ae=e[28]<<7|e[29]>>>25,H=e[38]<<8|e[39]>>>24,q=e[39]<<8|e[38]>>>24,E=e[48]<<14|e[49]>>>18,S=e[49]<<14|e[48]>>>18,e[0]=(m=e[0])^~(g=e[13]<<12|e[12]>>>20)&(v=e[25]<<11|e[24]>>>21),e[1]=y^~b&w,e[10]=I^~C&x,e[11]=k^~N&_,e[20]=B^~F&U,e[21]=D^~L&G,e[30]=j^~W&Q,e[31]=K^~J&Y,e[40]=te^~re&se,e[41]=ne^~ie&ae,e[2]=g^~v&A,e[3]=b^~w&T,e[12]=C^~x&R,e[13]=N^~_&M,e[22]=F^~U&H,e[23]=L^~G&q,e[32]=W^~Q&X,e[33]=J^~Y&Z,e[42]=re^~se&oe,e[43]=ie^~ae&ue,e[4]=v^~A&E,e[5]=w^~T&S,e[14]=x^~R&P,e[15]=_^~M&O,e[24]=U^~H&V,e[25]=G^~q&z,e[34]=Q^~X&$,e[35]=Y^~Z&ee,e[44]=se^~oe&le,e[45]=ae^~ue&ce,e[6]=A^~E&m,e[7]=T^~S&y,e[16]=R^~P&I,e[17]=M^~O&k,e[26]=H^~V&B,e[27]=q^~z&D,e[36]=X^~$&j,e[37]=Z^~ee&K,e[46]=oe^~le&te,e[47]=ue^~ce&ne,e[8]=E^~m&g,e[9]=S^~y&b,e[18]=P^~I&C,e[19]=O^~k&N,e[28]=V^~B&F,e[29]=z^~D&L,e[38]=$^~j&W,e[39]=ee^~K&J,e[48]=le^~te&re,e[49]=ce^~ne&ie,e[0]^=c[r],e[1]^=c[r+1]};if(s)e.exports=T;else for(S=0;S<E.length;++S)r[E[S]]=T[E[S]]}()}),Kr=jr;function Wr(e){return"0x"+Kr.keccak_256(Mn(e))}const Jr=new In("strings/5.8.0");var Qr,Yr;function Xr(e,t,n,r,i){if(e===Yr.BAD_PREFIX||e===Yr.UNEXPECTED_CONTINUE){let e=0;for(let r=t+1;r<n.length&&n[r]>>6==2;r++)e++;return e}return e===Yr.OVERRUN?n.length-t-1:0}!function(e){e.current="",e.NFC="NFC",e.NFD="NFD",e.NFKC="NFKC",e.NFKD="NFKD"}(Qr||(Qr={})),function(e){e.UNEXPECTED_CONTINUE="unexpected continuation byte",e.BAD_PREFIX="bad codepoint prefix",e.OVERRUN="string overrun",e.MISSING_CONTINUE="missing continuation byte",e.OUT_OF_RANGE="out of UTF-8 range",e.UTF16_SURROGATE="UTF-16 surrogate",e.OVERLONG="overlong representation"}(Yr||(Yr={}));const Zr=Object.freeze({error:function(e,t,n,r,i){return Jr.throwArgumentError(`invalid codepoint at offset ${t}; ${e}`,"bytes",n)},ignore:Xr,replace:function(e,t,n,r,i){return e===Yr.OVERLONG?(r.push(i),0):(r.push(65533),Xr(e,t,n))}});function $r(e,t){null==t&&(t=Zr.error),e=Mn(e);const n=[];let r=0;for(;r<e.length;){const i=e[r++];if(i>>7==0){n.push(i);continue}let s=null,a=null;if(192==(224&i))s=1,a=127;else if(224==(240&i))s=2,a=2047;else{if(240!=(248&i)){r+=t(128==(192&i)?Yr.UNEXPECTED_CONTINUE:Yr.BAD_PREFIX,r-1,e,n);continue}s=3,a=65535}if(r-1+s>=e.length){r+=t(Yr.OVERRUN,r-1,e,n);continue}let o=i&(1<<8-s-1)-1;for(let i=0;i<s;i++){let i=e[r];if(128!=(192&i)){r+=t(Yr.MISSING_CONTINUE,r,e,n),o=null;break}o=o<<6|63&i,r++}null!==o&&(o>1114111?r+=t(Yr.OUT_OF_RANGE,r-1-s,e,n,o):o>=55296&&o<=57343?r+=t(Yr.UTF16_SURROGATE,r-1-s,e,n,o):o<=a?r+=t(Yr.OVERLONG,r-1-s,e,n,o):n.push(o))}return n}function ei(e,t=Qr.current){t!=Qr.current&&(Jr.checkNormalize(),e=e.normalize(t));let n=[];for(let t=0;t<e.length;t++){const r=e.charCodeAt(t);if(r<128)n.push(r);else if(r<2048)n.push(r>>6|192),n.push(63&r|128);else if(55296==(64512&r)){t++;const i=e.charCodeAt(t);if(t>=e.length||56320!=(64512&i))throw new Error("invalid utf-8 string");const s=65536+((1023&r)<<10)+(1023&i);n.push(s>>18|240),n.push(s>>12&63|128),n.push(s>>6&63|128),n.push(63&s|128)}else n.push(r>>12|224),n.push(r>>6&63|128),n.push(63&r|128)}return Mn(n)}function ti(e,t){return $r(e,t).map(e=>e<=65535?String.fromCharCode(e):(e-=65536,String.fromCharCode(55296+(e>>10&1023),56320+(1023&e)))).join("")}function ni(e){return Wr(ei(e))}const ri="hash/5.8.0";function ii(e,t){null==t&&(t=1);const n=[],r=n.forEach,i=function(e,t){r.call(e,function(e){t>0&&Array.isArray(e)?i(e,t-1):n.push(e)})};return i(e,t),n}function si(e){return 1&e?~e>>1:e>>1}function ai(e,t){let n=Array(e);for(let r=0,i=-1;r<e;r++)n[r]=i+=1+t();return n}function oi(e,t){let n=Array(e);for(let r=0,i=0;r<e;r++)n[r]=i+=si(t());return n}function ui(e,t){let n=ai(e(),e),r=e(),i=ai(r,e),s=function(e,t){let n=Array(e);for(let r=0;r<e;r++)n[r]=1+t();return n}(r,e);for(let e=0;e<r;e++)for(let t=0;t<s[e];t++)n.push(i[e]+t);return t?n.map(e=>t[e]):n}function li(e,t,n){let r=Array(e).fill(void 0).map(()=>[]);for(let i=0;i<t;i++)oi(e,n).forEach((e,t)=>r[t].push(e));return r}function ci(e,t){let n=1+t(),r=t(),i=function(e){let t=[];for(;;){let n=e();if(0==n)break;t.push(n)}return t}(t);return ii(li(i.length,1+e,t).map((e,t)=>{const s=e[0],a=e.slice(1);return Array(i[t]).fill(void 0).map((e,t)=>{let i=t*r;return[s+t*n,a.map(e=>e+i)]})}))}function di(e,t){return li(1+t(),1+e,t).map(e=>[e[0],e.slice(1)])}const hi=function(e){let t=0;return()=>e[t++]}(function(e){let t=0;function n(){return e[t++]<<8|e[t++]}let r=n(),i=1,s=[0,1];for(let e=1;e<r;e++)s.push(i+=n());let a=n(),o=t;t+=a;let u=0,l=0;function c(){return 0==u&&(l=l<<8|e[t++],u=8),l>>--u&1}const d=Math.pow(2,31),h=d>>>1,p=h>>1,f=d-1;let m=0;for(let e=0;e<31;e++)m=m<<1|c();let y=[],g=0,b=d;for(;;){let e=Math.floor(((m-g+1)*i-1)/b),t=0,n=r;for(;n-t>1;){let r=t+n>>>1;e<s[r]?n=r:t=r}if(0==t)break;y.push(t);let a=g+Math.floor(b*s[t]/i),o=g+Math.floor(b*s[t+1]/i)-1;for(;0==((a^o)&h);)m=m<<1&f|c(),a=a<<1&f,o=o<<1&f|1;for(;a&~o&p;)m=m&h|m<<1&f>>>1|c(),a=a<<1^h,o=(o^h)<<1|h|1;g=a,b=1+o-a}let v=r-4;return y.map(t=>{switch(t-v){case 3:return v+65792+(e[o++]<<16|e[o++]<<8|e[o++]);case 2:return v+256+(e[o++]<<8|e[o++]);case 1:return v+e[o++];default:return t-1}})}(Fr("AEQF2AO2DEsA2wIrAGsBRABxAN8AZwCcAEwAqgA0AGwAUgByADcATAAVAFYAIQAyACEAKAAYAFgAGwAjABQAMAAmADIAFAAfABQAKwATACoADgAbAA8AHQAYABoAGQAxADgALAAoADwAEwA9ABMAGgARAA4ADwAWABMAFgAIAA8AHgQXBYMA5BHJAS8JtAYoAe4AExozi0UAH21tAaMnBT8CrnIyhrMDhRgDygIBUAEHcoFHUPe8AXBjAewCjgDQR8IICIcEcQLwATXCDgzvHwBmBoHNAqsBdBcUAykgDhAMShskMgo8AY8jqAQfAUAfHw8BDw87MioGlCIPBwZCa4ELatMAAMspJVgsDl8AIhckSg8XAHdvTwBcIQEiDT4OPhUqbyECAEoAS34Aej8Ybx83JgT/Xw8gHxZ/7w8RICxPHA9vBw+Pfw8PHwAPFv+fAsAvCc8vEr8ivwD/EQ8Bol8OEBa/A78hrwAPCU8vESNvvwWfHwNfAVoDHr+ZAAED34YaAdJPAK7PLwSEgDLHAGo1Pz8Pvx9fUwMrpb8O/58VTzAPIBoXIyQJNF8hpwIVAT8YGAUADDNBaX3RAMomJCg9EhUeA29MABsZBTMNJipjOhc19gcIDR8bBwQHEggCWi6DIgLuAQYA+BAFCha3A5XiAEsqM7UFFgFLhAMjFTMYE1Klnw74nRVBG/ASCm0BYRN/BrsU3VoWy+S0vV8LQx+vN8gF2AC2AK5EAWwApgYDKmAAroQ0NDQ0AT+OCg7wAAIHRAbpNgVcBV0APTA5BfbPFgMLzcYL/QqqA82eBALKCjQCjqYCht0/k2+OAsXQAoP3ASTKDgDw6ACKAUYCMpIKJpRaAE4A5womABzZvs0REEKiACIQAd5QdAECAj4Ywg/wGqY2AVgAYADYvAoCGAEubA0gvAY2ALAAbpbvqpyEAGAEpgQAJgAG7gAgAEACmghUFwCqAMpAINQIwC4DthRAAPcycKgApoIdABwBfCisABoATwBqASIAvhnSBP8aH/ECeAKXAq40NjgDBTwFYQU6AXs3oABgAD4XNgmcCY1eCl5tIFZeUqGgyoNHABgAEQAaABNwWQAmABMATPMa3T34ADldyprmM1M2XociUQgLzvwAXT3xABgAEQAaABNwIGFAnADD8AAgAD4BBJWzaCcIAIEBFMAWwKoAAdq9BWAF5wLQpALEtQAKUSGkahR4GnJM+gsAwCgeFAiUAECQ0BQuL8AAIAAAADKeIheclvFqQAAETr4iAMxIARMgAMIoHhQIAn0E0pDQFC4HhznoAAAAIAI2C0/4lvFqQAAETgBJJwYCAy4ABgYAFAA8MBKYEH4eRhTkAjYeFcgACAYAeABsOqyQ5gRwDayqugEgaIIAtgoACgDmEABmBAWGme5OBJJA2m4cDeoAmITWAXwrMgOgAGwBCh6CBXYF1Tzg1wKAAFdiuABRAFwAXQBsAG8AdgBrAHYAbwCEAHEwfxQBVE5TEQADVFhTBwBDANILAqcCzgLTApQCrQL6vAAMAL8APLhNBKkE6glGKTAU4Dr4N2EYEwBCkABKk8rHAbYBmwIoAiU4Ajf/Aq4CowCAANIChzgaNBsCsTgeODcFXrgClQKdAqQBiQGYAqsCsjTsNHsfNPA0ixsAWTWiOAMFPDQSNCk2BDZHNow2TTZUNhk28Jk9VzI3QkEoAoICoQKwAqcAQAAxBV4FXbS9BW47YkIXP1ciUqs05DS/FwABUwJW11e6nHuYZmSh/RAYA8oMKvZ8KASoUAJYWAJ6ILAsAZSoqjpgA0ocBIhmDgDWAAawRDQoAAcuAj5iAHABZiR2AIgiHgCaAU68ACxuHAG0ygM8MiZIAlgBdF4GagJqAPZOHAMuBgoATkYAsABiAHgAMLoGDPj0HpKEBAAOJgAuALggTAHWAeAMEDbd20Uege0ADwAWADkAQgA9OHd+2MUQZBBhBgNNDkxxPxUQArEPqwvqERoM1irQ090ANK4H8ANYB/ADWANYB/AH8ANYB/ADWANYA1gDWBwP8B/YxRBkD00EcgWTBZAE2wiIJk4RhgctCNdUEnQjHEwDSgEBIypJITuYMxAlR0wRTQgIATZHbKx9PQNMMbBU+pCnA9AyVDlxBgMedhKlAC8PeCE1uk6DekxxpQpQT7NX9wBFBgASqwAS5gBJDSgAUCwGPQBI4zTYABNGAE2bAE3KAExdGABKaAbgAFBXAFCOAFBJABI2SWdObALDOq0//QomCZhvwHdTBkIQHCemEPgMNAG2ATwN7kvZBPIGPATKH34ZGg/OlZ0Ipi3eDO4m5C6igFsj9iqEBe5L9TzeC05RaQ9aC2YJ5DpkgU8DIgEOIowK3g06CG4Q9ArKbA3mEUYHOgPWSZsApgcCCxIdNhW2JhFirQsKOXgG/Br3C5AmsBMqev0F1BoiBk4BKhsAANAu6IWxWjJcHU9gBgQLJiPIFKlQIQ0mQLh4SRocBxYlqgKSQ3FKiFE3HpQh9zw+DWcuFFF9B/Y8BhlQC4I8n0asRQ8R0z6OPUkiSkwtBDaALDAnjAnQD4YMunxzAVoJIgmyDHITMhEYN8YIOgcaLpclJxYIIkaWYJsE+KAD9BPSAwwFQAlCBxQDthwuEy8VKgUOgSXYAvQ21i60ApBWgQEYBcwPJh/gEFFH4Q7qCJwCZgOEJewALhUiABginAhEZABgj9lTBi7MCMhqbSN1A2gU6GIRdAeSDlgHqBw0FcAc4nDJXgyGCSiksAlcAXYJmgFgBOQICjVcjKEgQmdUi1kYnCBiQUBd/QIyDGYVoES+h3kCjA9sEhwBNgF0BzoNAgJ4Ee4RbBCWCOyGBTW2M/k6JgRQIYQgEgooA1BszwsoJvoM+WoBpBJjAw00PnfvZ6xgtyUX/gcaMsZBYSHyC5NPzgydGsIYQ1QvGeUHwAP0GvQn60FYBgADpAQUOk4z7wS+C2oIjAlAAEoOpBgH2BhrCnKM0QEyjAG4mgNYkoQCcJAGOAcMAGgMiAV65gAeAqgIpAAGANADWAA6Aq4HngAaAIZCAT4DKDABIuYCkAOUCDLMAZYwAfQqBBzEDBYA+DhuSwLDsgKAa2ajBd5ZAo8CSjYBTiYEBk9IUgOwcuIA3ABMBhTgSAEWrEvMG+REAeBwLADIAPwABjYHBkIBzgH0bgC4AWALMgmjtLYBTuoqAIQAFmwB2AKKAN4ANgCA8gFUAE4FWvoF1AJQSgESMhksWGIBvAMgATQBDgB6BsyOpsoIIARuB9QCEBwV4gLvLwe2AgMi4BPOQsYCvd9WADIXUu5eZwqoCqdeaAC0YTQHMnM9UQAPH6k+yAdy/BZIiQImSwBQ5gBQQzSaNTFWSTYBpwGqKQK38AFtqwBI/wK37gK3rQK3sAK6280C0gK33AK3zxAAUEIAUD9SklKDArekArw5AEQAzAHCO147WTteO1k7XjtZO147WTteO1kDmChYI03AVU0oJqkKbV9GYewMpw3VRMk6ShPcYFJgMxPJLbgUwhXPJVcZPhq9JwYl5VUKDwUt1GYxCC00dhe9AEApaYNCY4ceMQpMHOhTklT5LRwAskujM7ANrRsWREEFSHXuYisWDwojAmSCAmJDXE6wXDchAqH4AmiZAmYKAp+FOBwMAmY8AmYnBG8EgAN/FAN+kzkHOXgYOYM6JCQCbB4CMjc4CwJtyAJtr/CLADRoRiwBaADfAOIASwYHmQyOAP8MwwAOtgJ3MAJ2o0ACeUxEAni7Hl3cRa9G9AJ8QAJ6yQJ9CgJ88UgBSH5kJQAsFklZSlwWGErNAtECAtDNSygDiFADh+dExpEzAvKiXQQDA69Lz0wuJgTQTU1NsAKLQAKK2cIcCB5EaAa4Ao44Ao5dQZiCAo7aAo5deVG1UzYLUtVUhgKT/AKTDQDqAB1VH1WwVdEHLBwplocy4nhnRTw6ApegAu+zWCKpAFomApaQApZ9nQCqWa1aCoJOADwClrYClk9cRVzSApnMApllXMtdCBoCnJw5wzqeApwXAp+cAp65iwAeEDIrEAKd8gKekwC2PmE1YfACntQCoG8BqgKeoCACnk+mY8lkKCYsAiewAiZ/AqD8AqBN2AKmMAKlzwKoAAB+AqfzaH1osgAESmodatICrOQCrK8CrWgCrQMCVx4CVd0CseLYAx9PbJgCsr4OArLpGGzhbWRtSWADJc4Ctl08QG6RAylGArhfArlIFgK5K3hwN3DiAr0aAy2zAzISAr6JcgMDM3ICvhtzI3NQAsPMAsMFc4N0TDZGdOEDPKgDPJsDPcACxX0CxkgCxhGKAshqUgLIRQLJUALJLwJkngLd03h6YniveSZL0QMYpGcDAmH1GfSVJXsMXpNevBICz2wCz20wTFTT9BSgAMeuAs90ASrrA04TfkwGAtwoAtuLAtJQA1JdA1NgAQIDVY2AikABzBfuYUZ2AILPg44C2sgC2d+EEYRKpz0DhqYAMANkD4ZyWvoAVgLfZgLeuXR4AuIw7RUB8zEoAfScAfLTiALr9ALpcXoAAur6AurlAPpIAboC7ooC652Wq5cEAu5AA4XhmHpw4XGiAvMEAGoDjheZlAL3FAORbwOSiAL3mQL52gL4Z5odmqy8OJsfA52EAv77ARwAOp8dn7QDBY4DpmsDptoA0sYDBmuhiaIGCgMMSgFgASACtgNGAJwEgLpoBgC8BGzAEowcggCEDC6kdjoAJAM0C5IKRoABZCgiAIzw3AYBLACkfng9ogigkgNmWAN6AEQCvrkEVqTGAwCsBRbAA+4iQkMCHR072jI2PTbUNsk2RjY5NvA23TZKNiU3EDcZN5I+RTxDRTBCJkK5VBYKFhZfwQCWygU3AJBRHpu+OytgNxa61A40GMsYjsn7BVwFXQVcBV0FaAVdBVwFXQVcBV0FXAVdBVwFXUsaCNyKAK4AAQUHBwKU7oICoW1e7jAEzgPxA+YDwgCkBFDAwADABKzAAOxFLhitA1UFTDeyPkM+bj51QkRCuwTQWWQ8X+0AWBYzsACNA8xwzAGm7EZ/QisoCTAbLDs6fnLfb8H2GccsbgFw13M1HAVkBW/Jxsm9CNRO8E8FDD0FBQw9FkcClOYCoMFegpDfADgcMiA2AJQACB8AsigKAIzIEAJKeBIApY5yPZQIAKQiHb4fvj5BKSRPQrZCOz0oXyxgOywfKAnGbgMClQaCAkILXgdeCD9IIGUgQj5fPoY+dT52Ao5CM0dAX9BTVG9SDzFwWTQAbxBzJF/lOEIQQglCCkKJIAls5AcClQICoKPMODEFxhi6KSAbiyfIRrMjtCgdWCAkPlFBIitCsEJRzAbMAV/OEyQzDg0OAQQEJ36i328/Mk9AybDJsQlq3tDRApUKAkFzXf1d/j9uALYP6hCoFgCTGD8kPsFKQiobrm0+zj0KSD8kPnVCRBwMDyJRTHFgMTJa5rwXQiQ2YfI/JD7BMEJEHGINTw4TOFlIRzwJO0icMQpyPyQ+wzJCRBv6DVgnKB01NgUKj2bwYzMqCoBkznBgEF+zYDIocwRIX+NgHj4HICNfh2C4CwdwFWpTG/lgUhYGAwRfv2Ts8mAaXzVgml/XYIJfuWC4HI1gUF9pYJZgMR6ilQHMAOwLAlDRefC0in4AXAEJA6PjCwc0IamOANMMCAECRQDFNRTZBgd+CwQlRA+r6+gLBDEFBnwUBXgKATIArwAGRAAHA3cDdAN2A3kDdwN9A3oDdQN7A30DfAN4A3oDfQAYEAAlAtYASwMAUAFsAHcKAHcAmgB3AHUAdQB2AHVu8UgAygDAAHcAdQB1AHYAdQALCgB3AAsAmgB3AAsCOwB3AAtu8UgAygDAAHgKAJoAdwB3AHUAdQB2AHUAeAB1AHUAdgB1bvFIAMoAwAALCgCaAHcACwB3AAsCOwB3AAtu8UgAygDAAH4ACwGgALcBpwC6AahdAu0COwLtbvFIAMoAwAALCgCaAu0ACwLtAAsCOwLtAAtu8UgAygDAA24ACwNvAAu0VsQAAzsAABCkjUIpAAsAUIusOggWcgMeBxVsGwL67U/2HlzmWOEeOgALASvuAAseAfpKUpnpGgYJDCIZM6YyARUE9ThqAD5iXQgnAJYJPnOzw0ZAEZxEKsIAkA4DhAHnTAIDxxUDK0lxCQlPYgIvIQVYJQBVqE1GakUAKGYiDToSBA1EtAYAXQJYAIF8GgMHRyAAIAjOe9YncekRAA0KACUrjwE7Ayc6AAYWAqaiKG4McEcqANoN3+Mg9TwCBhIkuCny+JwUQ29L008JluRxu3K+oAdqiHOqFH0AG5SUIfUJ5SxCGfxdipRzqTmT4V5Zb+r1Uo4Vm+NqSSEl2mNvR2JhIa8SpYO6ntdwFXHCWTCK8f2+Hxo7uiG3drDycAuKIMP5bhi06ACnqArH1rz4Rqg//lm6SgJGEVbF9xJHISaR6HxqxSnkw6shDnelHKNEfGUXSJRJ1GcsmtJw25xrZMDK9gXSm1/YMkdX4/6NKYOdtk/NQ3/NnDASjTc3fPjIjW/5sVfVObX2oTDWkr1dF9f3kxBsD3/3aQO8hPfRz+e0uEiJqt1161griu7gz8hDDwtpy+F+BWtefnKHZPAxcZoWbnznhJpy0e842j36bcNzGnIEusgGX0a8ZxsnjcSsPDZ09yZ36fCQbriHeQ72JRMILNl6ePPf2HWoVwgWAm1fb3V2sAY0+B6rAXqSwPBgseVmoqsBTSrm91+XasMYYySI8eeRxH3ZvHkMz3BQ5aJ3iUVbYPNM3/7emRtjlsMgv/9VyTsyt/mK+8fgWeT6SoFaclXqn42dAIsvAarF5vNNWHzKSkKQ/8Hfk5ZWK7r9yliOsooyBjRhfkHP4Q2DkWXQi6FG/9r/IwbmkV5T7JSopHKn1pJwm9tb5Ot0oyN1Z2mPpKXHTxx2nlK08fKk1hEYA8WgVVWL5lgx0iTv+KdojJeU23ZDjmiubXOxVXJKKi2Wjuh2HLZOFLiSC7Tls5SMh4f+Pj6xUSrNjFqLGehRNB8lC0QSLNmkJJx/wSG3MnjE9T1CkPwJI0wH2lfzwETIiVqUxg0dfu5q39Gt+hwdcxkhhNvQ4TyrBceof3Mhs/IxFci1HmHr4FMZgXEEczPiGCx0HRwzAqDq2j9AVm1kwN0mRVLWLylgtoPNapF5cY4Y1wJh/e0BBwZj44YgZrDNqvD/9Hv7GFYdUQeDJuQ3EWI4HaKqavU1XjC/n41kT4L79kqGq0kLhdTZvgP3TA3fS0ozVz+5piZsoOtIvBUFoMKbNcmBL6YxxaUAusHB38XrS8dQMnQwJfUUkpRoGr5AUeWicvBTzyK9g77+yCkf5PAysL7r/JjcZgrbvRpMW9iyaxZvKO6ceZN2EwIxKwVFPuvFuiEPGCoagbMo+SpydLrXqBzNCDGFCrO/rkcwa2xhokQZ5CdZ0AsU3JfSqJ6n5I14YA+P/uAgfhPU84Tlw7cEFfp7AEE8ey4sP12PTt4Cods1GRgDOB5xvyiR5m+Bx8O5nBCNctU8BevfV5A08x6RHd5jcwPTMDSZJOedIZ1cGQ704lxbAzqZOP05ZxaOghzSdvFBHYqomATARyAADK4elP8Ly3IrUZKfWh23Xy20uBUmLS4Pfagu9+oyVa2iPgqRP3F2CTUsvJ7+RYnN8fFZbU/HVvxvcFFDKkiTqV5UBZ3Gz54JAKByi9hkKMZJvuGgcSYXFmw08UyoQyVdfTD1/dMkCHXcTGAKeROgArsvmRrQTLUOXioOHGK2QkjHuoYFgXciZoTJd6Fs5q1QX1G+p/e26hYsEf7QZD1nnIyl/SFkNtYYmmBhpBrxl9WbY0YpHWRuw2Ll/tj9mD8P4snVzJl4F9J+1arVeTb9E5r2ILH04qStjxQNwn3m4YNqxmaNbLAqW2TN6LidwuJRqS+NXbtqxoeDXpxeGWmxzSkWxjkyCkX4NQRme6q5SAcC+M7+9ETfA/EwrzQajKakCwYyeunP6ZFlxU2oMEn1Pz31zeStW74G406ZJFCl1wAXIoUKkWotYEpOuXB1uVNxJ63dpJEqfxBeptwIHNrPz8BllZoIcBoXwgfJ+8VAUnVPvRvexnw0Ma/WiGYuJO5y8QTvEYBigFmhUxY5RqzE8OcywN/8m4UYrlaniJO75XQ6KSo9+tWHlu+hMi0UVdiKQp7NelnoZUzNaIyBPVeOwK6GNp+FfHuPOoyhaWuNvTYFkvxscMQWDh+zeFCFkgwbXftiV23ywJ4+uwRqmg9k3KzwIQpzppt8DBBOMbrqwQM5Gb05sEwdKzMiAqOloaA/lr0KA+1pr0/+HiWoiIjHA/wir2nIuS3PeU/ji3O6ZwoxcR1SZ9FhtLC5S0FIzFhbBWcGVP/KpxOPSiUoAdWUpqKH++6Scz507iCcxYI6rdMBICPJZea7OcmeFw5mObJSiqpjg2UoWNIs+cFhyDSt6geV5qgi3FunmwwDoGSMgerFOZGX1m0dMCYo5XOruxO063dwENK9DbnVM9wYFREzh4vyU1WYYJ/LRRp6oxgjqP/X5a8/4Af6p6NWkQferzBmXme0zY/4nwMJm/wd1tIqSwGz+E3xPEAOoZlJit3XddD7/BT1pllzOx+8bmQtANQ/S6fZexc6qi3W+Q2xcmXTUhuS5mpHQRvcxZUN0S5+PL9lXWUAaRZhEH8hTdAcuNMMCuVNKTEGtSUKNi3O6KhSaTzck8csZ2vWRZ+d7mW8c4IKwXIYd25S/zIftPkwPzufjEvOHWVD1m+FjpDVUTV0DGDuHj6QnaEwLu/dEgdLQOg9E1Sro9XHJ8ykLAwtPu+pxqKDuFexqON1sKQm7rwbE1E68UCfA/erovrTCG+DBSNg0l4goDQvZN6uNlbyLpcZAwj2UclycvLpIZMgv4yRlpb3YuMftozorbcGVHt/VeDV3+Fdf1TP0iuaCsPi2G4XeGhsyF1ubVDxkoJhmniQ0/jSg/eYML9KLfnCFgISWkp91eauR3IQvED0nAPXK+6hPCYs+n3+hCZbiskmVMG2da+0EsZPonUeIY8EbfusQXjsK/eFDaosbPjEfQS0RKG7yj5GG69M7MeO1HmiUYocgygJHL6M1qzUDDwUSmr99V7Sdr2F3JjQAJY+F0yH33Iv3+C9M38eML7gTgmNu/r2bUMiPvpYbZ6v1/IaESirBHNa7mPKn4dEmYg7v/+HQgPN1G79jBQ1+soydfDC2r+h2Bl/KIc5KjMK7OH6nb1jLsNf0EHVe2KBiE51ox636uyG6Lho0t3J34L5QY/ilE3mikaF4HKXG1mG1rCevT1Vv6GavltxoQe/bMrpZvRggnBxSEPEeEzkEdOxTnPXHVjUYdw8JYvjB/o7Eegc3Ma+NUxLLnsK0kJlinPmUHzHGtrk5+CAbVzFOBqpyy3QVUnzTDfC/0XD94/okH+OB+i7g9lolhWIjSnfIb+Eq43ZXOWmwvjyV/qqD+t0e+7mTEM74qP/Ozt8nmC7mRpyu63OB4KnUzFc074SqoyPUAgM+/TJGFo6T44EHnQU4X4z6qannVqgw/U7zCpwcmXV1AubIrvOmkKHazJAR55ePjp5tLBsN8vAqs3NAHdcEHOR2xQ0lsNAFzSUuxFQCFYvXLZJdOj9p4fNq6p0HBGUik2YzaI4xySy91KzhQ0+q1hjxvImRwPRf76tChlRkhRCi74NXZ9qUNeIwP+s5p+3m5nwPdNOHgSLD79n7O9m1n1uDHiMntq4nkYwV5OZ1ENbXxFd4PgrlvavZsyUO4MqYlqqn1O8W/I1dEZq5dXhrbETLaZIbC2Kj/Aa/QM+fqUOHdf0tXAQ1huZ3cmWECWSXy/43j35+Mvq9xws7JKseriZ1pEWKc8qlzNrGPUGcVgOa9cPJYIJsGnJTAUsEcDOEVULO5x0rXBijc1lgXEzQQKhROf8zIV82w8eswc78YX11KYLWQRcgHNJElBxfXr72lS2RBSl07qTKorO2uUDZr3sFhYsvnhLZn0A94KRzJ/7DEGIAhW5ZWFpL8gEwu1aLA9MuWZzNwl8Oze9Y+bX+v9gywRVnoB5I/8kXTXU3141yRLYrIOOz6SOnyHNy4SieqzkBXharjfjqq1q6tklaEbA8Qfm2DaIPs7OTq/nvJBjKfO2H9bH2cCMh1+5gspfycu8f/cuuRmtDjyqZ7uCIMyjdV3a+p3fqmXsRx4C8lujezIFHnQiVTXLXuI1XrwN3+siYYj2HHTvESUx8DlOTXpak9qFRK+L3mgJ1WsD7F4cu1aJoFoYQnu+wGDMOjJM3kiBQWHCcvhJ/HRdxodOQp45YZaOTA22Nb4XKCVxqkbwMYFhzYQYIAnCW8FW14uf98jhUG2zrKhQQ0q0CEq0t5nXyvUyvR8DvD69LU+g3i+HFWQMQ8PqZuHD+sNKAV0+M6EJC0szq7rEr7B5bQ8BcNHzvDMc9eqB5ZCQdTf80Obn4uzjwpYU7SISdtV0QGa9D3Wrh2BDQtpBKxaNFV+/Cy2P/Sv+8s7Ud0Fd74X4+o/TNztWgETUapy+majNQ68Lq3ee0ZO48VEbTZYiH1Co4OlfWef82RWeyUXo7woM03PyapGfikTnQinoNq5z5veLpeMV3HCAMTaZmA1oGLAn7XS3XYsz+XK7VMQsc4XKrmDXOLU/pSXVNUq8dIqTba///3x6LiLS6xs1xuCAYSfcQ3+rQgmu7uvf3THKt5Ooo97TqcbRqxx7EASizaQCBQllG/rYxVapMLgtLbZS64w1MDBMXX+PQpBKNwqUKOf2DDRDUXQf9EhOS0Qj4nTmlA8dzSLz/G1d+Ud8MTy/6ghhdiLpeerGY/UlDOfiuqFsMUU5/UYlP+BAmgRLuNpvrUaLlVkrqDievNVEAwF+4CoM1MZTmjxjJMsKJq+u8Zd7tNCUFy6LiyYXRJQ4VyvEQFFaCGKsxIwQkk7EzZ6LTJq2hUuPhvAW+gQnSG6J+MszC+7QCRHcnqDdyNRJ6T9xyS87A6MDutbzKGvGktpbXqtzWtXb9HsfK2cBMomjN9a4y+TaJLnXxAeX/HWzmf4cR4vALt/P4w4qgKY04ml4ZdLOinFYS6cup3G/1ie4+t1eOnpBNlqGqs75ilzkT4+DsZQxNvaSKJ//6zIbbk/M7LOhFmRc/1R+kBtz7JFGdZm/COotIdvQoXpTqP/1uqEUmCb/QWoGLMwO5ANcHzxdY48IGP5+J+zKOTBFZ4Pid+GTM+Wq12MV/H86xEJptBa6T+p3kgpwLedManBHC2GgNrFpoN2xnrMz9WFWX/8/ygSBkavq2Uv7FdCsLEYLu9LLIvAU0bNRDtzYl+/vXmjpIvuJFYjmI0im6QEYqnIeMsNjXG4vIutIGHijeAG/9EDBozKV5cldkHbLxHh25vT+ZEzbhXlqvpzKJwcEgfNwLAKFeo0/pvEE10XDB+EXRTXtSzJozQKFFAJhMxYkVaCW+E9AL7tMeU8acxidHqzb6lX4691UsDpy/LLRmT+epgW56+5Cw8tB4kMUv6s9lh3eRKbyGs+H/4mQMaYzPTf2OOdokEn+zzgvoD3FqNKk8QqGAXVsqcGdXrT62fSPkR2vROFi68A6se86UxRUk4cajfPyCC4G5wDhD+zNq4jodQ4u4n/m37Lr36n4LIAAsVr02dFi9AiwA81MYs2rm4eDlDNmdMRvEKRHfBwW5DdMNp0jPFZMeARqF/wL4XBfd+EMLBfMzpH5GH6NaW+1vrvMdg+VxDzatk3MXgO3ro3P/DpcC6+Mo4MySJhKJhSR01SGGGp5hPWmrrUgrv3lDnP+HhcI3nt3YqBoVAVTBAQT5iuhTg8nvPtd8ZeYj6w1x6RqGUBrSku7+N1+BaasZvjTk64RoIDlL8brpEcJx3OmY7jLoZsswdtmhfC/G21llXhITOwmvRDDeTTPbyASOa16cF5/A1fZAidJpqju3wYAy9avPR1ya6eNp9K8XYrrtuxlqi+bDKwlfrYdR0RRiKRVTLOH85+ZY7XSmzRpfZBJjaTa81VDcJHpZnZnSQLASGYW9l51ZV/h7eVzTi3Hv6hUsgc/51AqJRTkpbFVLXXszoBL8nBX0u/0jBLT8nH+fJePbrwURT58OY+UieRjd1vs04w0VG5VN2U6MoGZkQzKN/ptz0Q366dxoTGmj7i1NQGHi9GgnquXFYdrCfZBmeb7s0T6yrdlZH5cZuwHFyIJ/kAtGsTg0xH5taAAq44BAk1CPk9KVVbqQzrCUiFdF/6gtlPQ8bHHc1G1W92MXGZ5HEHftyLYs8mbD/9xYRUWkHmlM0zC2ilJlnNgV4bfALpQghxOUoZL7VTqtCHIaQSXm+YUMnpkXybnV+A6xlm2CVy8fn0Xlm2XRa0+zzOa21JWWmixfiPMSCZ7qA4rS93VN3pkpF1s5TonQjisHf7iU9ZGvUPOAKZcR1pbeVf/Ul7OhepGCaId9wOtqo7pJ7yLcBZ0pFkOF28y4zEI/kcUNmutBHaQpBdNM8vjCS6HZRokkeo88TBAjGyG7SR+6vUgTcyK9Imalj0kuxz0wmK+byQU11AiJFk/ya5dNduRClcnU64yGu/ieWSeOos1t3ep+RPIWQ2pyTYVbZltTbsb7NiwSi3AV+8KLWk7LxCnfZUetEM8ThnsSoGH38/nyAwFguJp8FjvlHtcWZuU4hPva0rHfr0UhOOJ/F6vS62FW7KzkmRll2HEc7oUq4fyi5T70Vl7YVIfsPHUCdHesf9Lk7WNVWO75JDkYbMI8TOW8JKVtLY9d6UJRITO8oKo0xS+o99Yy04iniGHAaGj88kEWgwv0OrHdY/nr76DOGNS59hXCGXzTKUvDl9iKpLSWYN1lxIeyywdNpTkhay74w2jFT6NS8qkjo5CxA1yfSYwp6AJIZNKIeEK5PJAW7ORgWgwp0VgzYpqovMrWxbu+DGZ6Lhie1RAqpzm8VUzKJOH3mCzWuTOLsN3VT/dv2eeYe9UjbR8YTBsLz7q60VN1sU51k+um1f8JxD5pPhbhSC8rRaB454tmh6YUWrJI3+GWY0qeWioj/tbkYITOkJaeuGt4JrJvHA+l0Gu7kY7XOaa05alMnRWVCXqFgLIwSY4uF59Ue5SU4QKuc/HamDxbr0x6csCetXGoP7Qn1Bk/J9DsynO/UD6iZ1Hyrz+jit0hDCwi/E9OjgKTbB3ZQKQ/0ZOvevfNHG0NK4Aj3Cp7NpRk07RT1i/S0EL93Ag8GRgKI9CfpajKyK6+Jj/PI1KO5/85VAwz2AwzP8FTBb075IxCXv6T9RVvWT2tUaqxDS92zrGUbWzUYk9mSs82pECH+fkqsDt93VW++4YsR/dHCYcQSYTO/KaBMDj9LSD/J/+z20Kq8XvZUAIHtm9hRPP3ItbuAu2Hm5lkPs92pd7kCxgRs0xOVBnZ13ccdA0aunrwv9SdqElJRC3g+oCu+nXyCgmXUs9yMjTMAIHfxZV+aPKcZeUBWt057Xo85Ks1Ir5gzEHCWqZEhrLZMuF11ziGtFQUds/EESajhagzcKsxamcSZxGth4UII+adPhQkUnx2WyN+4YWR+r3f8MnkyGFuR4zjzxJS8WsQYR5PTyRaD9ixa6Mh741nBHbzfjXHskGDq179xaRNrCIB1z1xRfWfjqw2pHc1zk9xlPpL8sQWAIuETZZhbnmL54rceXVNRvUiKrrqIkeogsl0XXb17ylNb0f4GA9Wd44vffEG8FSZGHEL2fbaTGRcSiCeA8PmA/f6Hz8HCS76fXUHwgwkzSwlI71ekZ7Fapmlk/KC+Hs8hUcw3N2LN5LhkVYyizYFl/uPeVP5lsoJHhhfWvvSWruCUW1ZcJOeuTbrDgywJ/qG07gZJplnTvLcYdNaH0KMYOYMGX+rB4NGPFmQsNaIwlWrfCezxre8zXBrsMT+edVLbLqN1BqB76JH4BvZTqUIMfGwPGEn+EnmTV86fPBaYbFL3DFEhjB45CewkXEAtJxk4/Ms2pPXnaRqdky0HOYdcUcE2zcXq4vaIvW2/v0nHFJH2XXe22ueDmq/18XGtELSq85j9X8q0tcNSSKJIX8FTuJF/Pf8j5PhqG2u+osvsLxYrvvfeVJL+4tkcXcr9JV7v0ERmj/X6fM3NC4j6dS1+9Umr2oPavqiAydTZPLMNRGY23LO9zAVDly7jD+70G5TPPLdhRIl4WxcYjLnM+SNcJ26FOrkrISUtPObIz5Zb3AG612krnpy15RMW+1cQjlnWFI6538qky9axd2oJmHIHP08KyP0ubGO+TQNOYuv2uh17yCIvR8VcStw7o1g0NM60sk+8Tq7YfIBJrtp53GkvzXH7OA0p8/n/u1satf/VJhtR1l8Wa6Gmaug7haSpaCaYQax6ta0mkutlb+eAOSG1aobM81D9A4iS1RRlzBBoVX6tU1S6WE2N9ORY6DfeLRC4l9Rvr5h95XDWB2mR1d4WFudpsgVYwiTwT31ljskD8ZyDOlm5DkGh9N/UB/0AI5Xvb8ZBmai2hQ4BWMqFwYnzxwB26YHSOv9WgY3JXnvoN+2R4rqGVh/LLDMtpFP+SpMGJNWvbIl5SOodbCczW2RKleksPoUeGEzrjtKHVdtZA+kfqO+rVx/iclCqwoopepvJpSTDjT+b9GWylGRF8EDbGlw6eUzmJM95Ovoz+kwLX3c2fTjFeYEsE7vUZm3mqdGJuKh2w9/QGSaqRHs99aScGOdDqkFcACoqdbBoQqqjamhH6Q9ng39JCg3lrGJwd50Qk9ovnqBTr8MME7Ps2wiVfygUmPoUBJJfJWX5Nda0nuncbFkA=="))),pi=new Set(ui(hi)),fi=new Set(ui(hi)),mi=function(e){let t=[];for(;;){let n=e();if(0==n)break;t.push(ci(n,e))}for(;;){let n=e()-1;if(n<0)break;t.push(di(n,e))}return function(e){const t={};for(let n=0;n<e.length;n++){const r=e[n];t[r[0]]=r[1]}return t}(ii(t))}(hi),yi=function(e){let t=ui(e).sort((e,t)=>e-t);return function n(){let r=[];for(;;){let i=ui(e,t);if(0==i.length)break;r.push({set:new Set(i),node:n()})}r.sort((e,t)=>t.set.size-e.set.size);let i=e(),s=i%3;i=i/3|0;let a=!!(1&i);return i>>=1,{branches:r,valid:s,fe0f:a,save:1==i,check:2==i}}()}(hi),gi=45,bi=95;function vi(e){return function(e,t=Qr.current){return $r(ei(e,t))}(e)}function wi(e){return e.filter(e=>65039!=e)}function Ai(e){for(let t of e.split(".")){let e=vi(t);try{for(let t=e.lastIndexOf(bi)-1;t>=0;t--)if(e[t]!==bi)throw new Error("underscore only allowed at start");if(e.length>=4&&e.every(e=>e<128)&&e[2]===gi&&e[3]===gi)throw new Error("invalid label extension")}catch(e){throw new Error(`Invalid label "${t}": ${e.message}`)}}return e}function Ti(e,t){var n;let r,i,s=yi,a=[],o=e.length;for(t&&(t.length=0);o;){let u=e[--o];if(s=null===(n=s.branches.find(e=>e.set.has(u)))||void 0===n?void 0:n.node,!s)break;if(s.save)i=u;else if(s.check&&u===i)break;a.push(u),s.fe0f&&(a.push(65039),o>0&&65039==e[o-1]&&o--),s.valid&&(r=a.slice(),2==s.valid&&r.splice(1,1),t&&t.push(...e.slice(o).reverse()),e.length=o)}return r}const Ei=new In(ri),Si=new Uint8Array(32);function Ii(e){if(0===e.length)throw new Error("invalid ENS name; empty component");return e}function ki(e){const t=ei(function(e){return Ai(function(e,t){let n=vi(e).reverse(),r=[];for(;n.length;){let e=Ti(n);if(e){r.push(...t(e));continue}let i=n.pop();if(pi.has(i)){r.push(i);continue}if(fi.has(i))continue;let s=mi[i];if(!s)throw new Error(`Disallowed codepoint: 0x${i.toString(16).toUpperCase()}`);r.push(...s)}return Ai(function(e){return e.normalize("NFC")}(String.fromCodePoint(...r)))}(e,wi))}(e)),n=[];if(0===e.length)return n;let r=0;for(let e=0;e<t.length;e++)46===t[e]&&(n.push(Ii(t.slice(r,e))),r=e+1);if(r>=t.length)throw new Error("invalid ENS name; empty component");return n.push(Ii(t.slice(r))),n}function Ci(e){"string"!=typeof e&&Ei.throwArgumentError("invalid ENS name; not a string","name",e);let t=Si;const n=ki(e);for(;n.length;)t=Wr(Pn([t,Wr(n.pop())]));return Fn(t)}Si.fill(0);const Ni=new In("rlp/5.8.0");function xi(e){const t=[];for(;e;)t.unshift(255&e),e>>=8;return t}function _i(e,t,n){let r=0;for(let i=0;i<n;i++)r=256*r+e[t+i];return r}function Ri(e){if(Array.isArray(e)){let t=[];if(e.forEach(function(e){t=t.concat(Ri(e))}),t.length<=55)return t.unshift(192+t.length),t;const n=xi(t.length);return n.unshift(247+n.length),n.concat(t)}xn(e)||Ni.throwArgumentError("RLP object must be BytesLike","object",e);const t=Array.prototype.slice.call(Mn(e));if(1===t.length&&t[0]<=127)return t;if(t.length<=55)return t.unshift(128+t.length),t;const n=xi(t.length);return n.unshift(183+n.length),n.concat(t)}function Mi(e){return Fn(Ri(e))}function Pi(e,t,n,r){const i=[];for(;n<t+1+r;){const s=Oi(e,n);i.push(s.result),(n+=s.consumed)>t+1+r&&Ni.throwError("child data too short",In.errors.BUFFER_OVERRUN,{})}return{consumed:1+r,result:i}}function Oi(e,t){if(0===e.length&&Ni.throwError("data too short",In.errors.BUFFER_OVERRUN,{}),e[t]>=248){const n=e[t]-247;t+1+n>e.length&&Ni.throwError("data short segment too short",In.errors.BUFFER_OVERRUN,{});const r=_i(e,t+1,n);return t+1+n+r>e.length&&Ni.throwError("data long segment too short",In.errors.BUFFER_OVERRUN,{}),Pi(e,t,t+1+n,n+r)}if(e[t]>=192){const n=e[t]-192;return t+1+n>e.length&&Ni.throwError("data array too short",In.errors.BUFFER_OVERRUN,{}),Pi(e,t,t+1,n)}if(e[t]>=184){const n=e[t]-183;t+1+n>e.length&&Ni.throwError("data array too short",In.errors.BUFFER_OVERRUN,{});const r=_i(e,t+1,n);return t+1+n+r>e.length&&Ni.throwError("data array too short",In.errors.BUFFER_OVERRUN,{}),{consumed:1+n+r,result:Fn(e.slice(t+1+n,t+1+n+r))}}if(e[t]>=128){const n=e[t]-128;return t+1+n>e.length&&Ni.throwError("data too short",In.errors.BUFFER_OVERRUN,{}),{consumed:1+n,result:Fn(e.slice(t+1,t+1+n))}}return{consumed:1,result:Fn(e[t])}}function Bi(e){const t=Mn(e),n=Oi(t,0);return n.consumed!==t.length&&Ni.throwArgumentError("invalid rlp data","data",e),n.result}const Di=new In("address/5.8.0");function Fi(e){Bn(e,20)||Di.throwArgumentError("invalid address","address",e);const t=(e=e.toLowerCase()).substring(2).split(""),n=new Uint8Array(40);for(let e=0;e<40;e++)n[e]=t[e].charCodeAt(0);const r=Mn(Wr(n));for(let e=0;e<40;e+=2)r[e>>1]>>4>=8&&(t[e]=t[e].toUpperCase()),(15&r[e>>1])>=8&&(t[e+1]=t[e+1].toUpperCase());return"0x"+t.join("")}const Li={};for(let e=0;e<10;e++)Li[String(e)]=String(e);for(let e=0;e<26;e++)Li[String.fromCharCode(65+e)]=String(10+e);const Ui=Math.floor(function(e){return Math.log10?Math.log10(e):Math.log(e)/Math.LN10}(9007199254740991));function Gi(e){let t=null;if("string"!=typeof e&&Di.throwArgumentError("invalid address","address",e),e.match(/^(0x)?[0-9a-fA-F]{40}$/))"0x"!==e.substring(0,2)&&(e="0x"+e),t=Fi(e),e.match(/([A-F].*[a-f])|([a-f].*[A-F])/)&&t!==e&&Di.throwArgumentError("bad address checksum","address",e);else if(e.match(/^XE[0-9]{2}[0-9A-Za-z]{30,31}$/)){for(e.substring(2,4)!==function(e){let t=(e=(e=e.toUpperCase()).substring(4)+e.substring(0,2)+"00").split("").map(e=>Li[e]).join("");for(;t.length>=Ui;){let e=t.substring(0,Ui);t=parseInt(e,10)%97+t.substring(e.length)}let n=String(98-parseInt(t,10)%97);for(;n.length<2;)n="0"+n;return n}(e)&&Di.throwArgumentError("bad icap checksum","address",e),n=e.substring(4),t=new Kn(n,36).toString(16);t.length<40;)t="0"+t;t=Fi("0x"+t)}else Di.throwArgumentError("invalid address","address",e);var n;return t}function Hi(e){let t=null;try{t=Gi(e.from)}catch(t){Di.throwArgumentError("missing from address","transaction",e)}return Gi(Un(Wr(Mi([t,On(Mn(Xn.from(e.nonce).toHexString()))])),12))}const qi=new In(ri),Vi=new Uint8Array(32);Vi.fill(0);const zi=Xn.from(-1),ji=Xn.from(0),Ki=Xn.from(1),Wi=Xn.from("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"),Ji=qn(Ki.toHexString(),32),Qi=qn(ji.toHexString(),32),Yi={name:"string",version:"string",chainId:"uint256",verifyingContract:"address",salt:"bytes32"},Xi=["name","version","chainId","verifyingContract","salt"];function Zi(e){return function(t){return"string"!=typeof t&&qi.throwArgumentError(`invalid domain value for ${JSON.stringify(e)}`,`domain.${e}`,t),t}}const $i={name:Zi("name"),version:Zi("version"),chainId:function(e){try{return Xn.from(e).toString()}catch(e){}return qi.throwArgumentError('invalid domain value for "chainId"',"domain.chainId",e)},verifyingContract:function(e){try{return Gi(e).toLowerCase()}catch(e){}return qi.throwArgumentError('invalid domain value "verifyingContract"',"domain.verifyingContract",e)},salt:function(e){try{const t=Mn(e);if(32!==t.length)throw new Error("bad length");return Fn(t)}catch(e){}return qi.throwArgumentError('invalid domain value "salt"',"domain.salt",e)}};function es(e){{const t=e.match(/^(u?)int(\d*)$/);if(t){const n=""===t[1],r=parseInt(t[2]||"256");(r%8!=0||r>256||t[2]&&t[2]!==String(r))&&qi.throwArgumentError("invalid numeric width","type",e);const i=Wi.mask(n?r-1:r),s=n?i.add(Ki).mul(zi):ji;return function(t){const n=Xn.from(t);return(n.lt(s)||n.gt(i))&&qi.throwArgumentError(`value out-of-bounds for ${e}`,"value",t),qn(n.toTwos(256).toHexString(),32)}}}{const t=e.match(/^bytes(\d+)$/);if(t){const n=parseInt(t[1]);return(0===n||n>32||t[1]!==String(n))&&qi.throwArgumentError("invalid bytes width","type",e),function(t){return Mn(t).length!==n&&qi.throwArgumentError(`invalid length for ${e}`,"value",t),function(e){const t=Mn(e),n=t.length%32;return n?Gn([t,Vi.slice(n)]):Fn(t)}(t)}}}switch(e){case"address":return function(e){return qn(Gi(e),32)};case"bool":return function(e){return e?Ji:Qi};case"bytes":return function(e){return Wr(e)};case"string":return function(e){return ni(e)}}return null}function ts(e,t){return`${e}(${t.map(({name:e,type:t})=>t+" "+e).join(",")})`}class ns{constructor(e){gr(this,"types",Object.freeze(Ir(e))),gr(this,"_encoderCache",{}),gr(this,"_types",{});const t={},n={},r={};Object.keys(e).forEach(e=>{t[e]={},n[e]=[],r[e]={}});for(const r in e){const i={};e[r].forEach(s=>{i[s.name]&&qi.throwArgumentError(`duplicate variable name ${JSON.stringify(s.name)} in ${JSON.stringify(r)}`,"types",e),i[s.name]=!0;const a=s.type.match(/^([^\x5b]*)(\x5b|$)/)[1];a===r&&qi.throwArgumentError(`circular type reference to ${JSON.stringify(a)}`,"types",e),es(a)||(n[a]||qi.throwArgumentError(`unknown type ${JSON.stringify(a)}`,"types",e),n[a].push(r),t[r][a]=!0)})}const i=Object.keys(n).filter(e=>0===n[e].length);0===i.length?qi.throwArgumentError("missing primary type","types",e):i.length>1&&qi.throwArgumentError(`ambiguous primary types or unused types: ${i.map(e=>JSON.stringify(e)).join(", ")}`,"types",e),gr(this,"primaryType",i[0]),function i(s,a){a[s]&&qi.throwArgumentError(`circular type reference to ${JSON.stringify(s)}`,"types",e),a[s]=!0,Object.keys(t[s]).forEach(e=>{n[e]&&(i(e,a),Object.keys(a).forEach(t=>{r[t][e]=!0}))}),delete a[s]}(this.primaryType,{});for(const t in r){const n=Object.keys(r[t]);n.sort(),this._types[t]=ts(t,e[t])+n.map(t=>ts(t,e[t])).join("")}}getEncoder(e){let t=this._encoderCache[e];return t||(t=this._encoderCache[e]=this._getEncoder(e)),t}_getEncoder(e){{const t=es(e);if(t)return t}const t=e.match(/^(.*)(\x5b(\d*)\x5d)$/);if(t){const e=t[1],n=this.getEncoder(e),r=parseInt(t[3]);return t=>{r>=0&&t.length!==r&&qi.throwArgumentError("array length mismatch; expected length ${ arrayLength }","value",t);let i=t.map(n);return this._types[e]&&(i=i.map(Wr)),Wr(Gn(i))}}const n=this.types[e];if(n){const t=ni(this._types[e]);return e=>{const r=n.map(({name:t,type:n})=>{const r=this.getEncoder(n)(e[t]);return this._types[n]?Wr(r):r});return r.unshift(t),Gn(r)}}return qi.throwArgumentError(`unknown type: ${e}`,"type",e)}encodeType(e){const t=this._types[e];return t||qi.throwArgumentError(`unknown type: ${JSON.stringify(e)}`,"name",e),t}encodeData(e,t){return this.getEncoder(e)(t)}hashStruct(e,t){return Wr(this.encodeData(e,t))}encode(e){return this.encodeData(this.primaryType,e)}hash(e){return this.hashStruct(this.primaryType,e)}_visit(e,t,n){if(es(e))return n(e,t);const r=e.match(/^(.*)(\x5b(\d*)\x5d)$/);if(r){const e=r[1],i=parseInt(r[3]);return i>=0&&t.length!==i&&qi.throwArgumentError("array length mismatch; expected length ${ arrayLength }","value",t),t.map(t=>this._visit(e,t,n))}const i=this.types[e];return i?i.reduce((e,{name:r,type:i})=>(e[r]=this._visit(i,t[r],n),e),{}):qi.throwArgumentError(`unknown type: ${e}`,"type",e)}visit(e,t){return this._visit(this.primaryType,e,t)}static from(e){return new ns(e)}static getPrimaryType(e){return ns.from(e).primaryType}static hashStruct(e,t,n){return ns.from(t).hashStruct(e,n)}static hashDomain(e){const t=[];for(const n in e){const r=Yi[n];r||qi.throwArgumentError(`invalid typed-data domain key: ${JSON.stringify(n)}`,"domain",e),t.push({name:n,type:r})}return t.sort((e,t)=>Xi.indexOf(e.name)-Xi.indexOf(t.name)),ns.hashStruct("EIP712Domain",{EIP712Domain:t},e)}static encode(e,t,n){return Gn(["0x1901",ns.hashDomain(e),ns.from(t).hash(n)])}static hash(e,t,n){return Wr(ns.encode(e,t,n))}static resolveNames(e,t,n,r){return i=this,a=function*(){e=Ar(e);const i={};e.verifyingContract&&!Bn(e.verifyingContract,20)&&(i[e.verifyingContract]="0x");const s=ns.from(t);s.visit(n,(e,t)=>("address"!==e||Bn(t,20)||(i[t]="0x"),t));for(const e in i)i[e]=yield r(e);return e.verifyingContract&&i[e.verifyingContract]&&(e.verifyingContract=i[e.verifyingContract]),n=s.visit(n,(e,t)=>"address"===e&&i[t]?i[t]:t),{domain:e,value:n}},new((s=void 0)||(s=Promise))(function(e,t){function n(e){try{o(a.next(e))}catch(e){t(e)}}function r(e){try{o(a.throw(e))}catch(e){t(e)}}function o(t){var i;t.done?e(t.value):(i=t.value,i instanceof s?i:new s(function(e){e(i)})).then(n,r)}o((a=a.apply(i,[])).next())});var i,s,a}static getPayload(e,t,n){ns.hashDomain(e);const r={},i=[];Xi.forEach(t=>{const n=e[t];null!=n&&(r[t]=$i[t](n),i.push({name:t,type:Yi[t]}))});const s=ns.from(t),a=Ar(t);return a.EIP712Domain?qi.throwArgumentError("types must not contain EIP712Domain type","types.EIP712Domain",t):a.EIP712Domain=i,s.encode(n),{types:a,domain:r,primaryType:s.primaryType,message:s.visit(n,(e,t)=>{if(e.match(/^bytes(\d*)/))return Fn(Mn(t));if(e.match(/^u?int/))return Xn.from(t).toString();switch(e){case"address":return t.toLowerCase();case"bool":return!!t;case"string":return"string"!=typeof t&&qi.throwArgumentError("invalid string","value",t),t}return qi.throwArgumentError("unsupported type","type",e)})}}}var rs=is;function is(e,t){if(!e)throw new Error(t||"Assertion failed")}function ss(e,t){return 55296==(64512&e.charCodeAt(t))&&!(t<0||t+1>=e.length)&&56320==(64512&e.charCodeAt(t+1))}function as(e){return(e>>>24|e>>>8&65280|e<<8&16711680|(255&e)<<24)>>>0}function os(e){return 1===e.length?"0"+e:e}function us(e){return 7===e.length?"0"+e:6===e.length?"00"+e:5===e.length?"000"+e:4===e.length?"0000"+e:3===e.length?"00000"+e:2===e.length?"000000"+e:1===e.length?"0000000"+e:e}is.equal=function(e,t,n){if(e!=t)throw new Error(n||"Assertion failed: "+e+" != "+t)};var ls={inherits:pn(function(e){e.exports="function"==typeof Object.create?function(e,t){t&&(e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}))}:function(e,t){if(t){e.super_=t;var n=function(){};n.prototype=t.prototype,e.prototype=new n,e.prototype.constructor=e}}}),toArray:function(e,t){if(Array.isArray(e))return e.slice();if(!e)return[];var n=[];if("string"==typeof e)if(t){if("hex"===t)for((e=e.replace(/[^a-z0-9]+/gi,"")).length%2!=0&&(e="0"+e),i=0;i<e.length;i+=2)n.push(parseInt(e[i]+e[i+1],16))}else for(var r=0,i=0;i<e.length;i++){var s=e.charCodeAt(i);s<128?n[r++]=s:s<2048?(n[r++]=s>>6|192,n[r++]=63&s|128):ss(e,i)?(s=65536+((1023&s)<<10)+(1023&e.charCodeAt(++i)),n[r++]=s>>18|240,n[r++]=s>>12&63|128,n[r++]=s>>6&63|128,n[r++]=63&s|128):(n[r++]=s>>12|224,n[r++]=s>>6&63|128,n[r++]=63&s|128)}else for(i=0;i<e.length;i++)n[i]=0|e[i];return n},toHex:function(e){for(var t="",n=0;n<e.length;n++)t+=os(e[n].toString(16));return t},htonl:as,toHex32:function(e,t){for(var n="",r=0;r<e.length;r++){var i=e[r];"little"===t&&(i=as(i)),n+=us(i.toString(16))}return n},zero2:os,zero8:us,join32:function(e,t,n,r){var i=n-t;rs(i%4==0);for(var s=new Array(i/4),a=0,o=t;a<s.length;a++,o+=4)s[a]=("big"===r?e[o]<<24|e[o+1]<<16|e[o+2]<<8|e[o+3]:e[o+3]<<24|e[o+2]<<16|e[o+1]<<8|e[o])>>>0;return s},split32:function(e,t){for(var n=new Array(4*e.length),r=0,i=0;r<e.length;r++,i+=4){var s=e[r];"big"===t?(n[i]=s>>>24,n[i+1]=s>>>16&255,n[i+2]=s>>>8&255,n[i+3]=255&s):(n[i+3]=s>>>24,n[i+2]=s>>>16&255,n[i+1]=s>>>8&255,n[i]=255&s)}return n},rotr32:function(e,t){return e>>>t|e<<32-t},rotl32:function(e,t){return e<<t|e>>>32-t},sum32:function(e,t){return e+t>>>0},sum32_3:function(e,t,n){return e+t+n>>>0},sum32_4:function(e,t,n,r){return e+t+n+r>>>0},sum32_5:function(e,t,n,r,i){return e+t+n+r+i>>>0},sum64:function(e,t,n,r){var i=r+e[t+1]>>>0;e[t]=(i<r?1:0)+n+e[t]>>>0,e[t+1]=i},sum64_hi:function(e,t,n,r){return(t+r>>>0<t?1:0)+e+n>>>0},sum64_lo:function(e,t,n,r){return t+r>>>0},sum64_4_hi:function(e,t,n,r,i,s,a,o){var u=0,l=t;return u+=(l=l+r>>>0)<t?1:0,u+=(l=l+s>>>0)<s?1:0,e+n+i+a+(u+=(l=l+o>>>0)<o?1:0)>>>0},sum64_4_lo:function(e,t,n,r,i,s,a,o){return t+r+s+o>>>0},sum64_5_hi:function(e,t,n,r,i,s,a,o,u,l){var c=0,d=t;return c+=(d=d+r>>>0)<t?1:0,c+=(d=d+s>>>0)<s?1:0,c+=(d=d+o>>>0)<o?1:0,e+n+i+a+u+(c+=(d=d+l>>>0)<l?1:0)>>>0},sum64_5_lo:function(e,t,n,r,i,s,a,o,u,l){return t+r+s+o+l>>>0},rotr64_hi:function(e,t,n){return(t<<32-n|e>>>n)>>>0},rotr64_lo:function(e,t,n){return(e<<32-n|t>>>n)>>>0},shr64_hi:function(e,t,n){return e>>>n},shr64_lo:function(e,t,n){return(e<<32-n|t>>>n)>>>0}};function cs(){this.pending=null,this.pendingTotal=0,this.blockSize=this.constructor.blockSize,this.outSize=this.constructor.outSize,this.hmacStrength=this.constructor.hmacStrength,this.padLength=this.constructor.padLength/8,this.endian="big",this._delta8=this.blockSize/8,this._delta32=this.blockSize/32}var ds=cs;cs.prototype.update=function(e,t){if(e=ls.toArray(e,t),this.pending=this.pending?this.pending.concat(e):e,this.pendingTotal+=e.length,this.pending.length>=this._delta8){var n=(e=this.pending).length%this._delta8;this.pending=e.slice(e.length-n,e.length),0===this.pending.length&&(this.pending=null),e=ls.join32(e,0,e.length-n,this.endian);for(var r=0;r<e.length;r+=this._delta32)this._update(e,r,r+this._delta32)}return this},cs.prototype.digest=function(e){return this.update(this._pad()),rs(null===this.pending),this._digest(e)},cs.prototype._pad=function(){var e=this.pendingTotal,t=this._delta8,n=t-(e+this.padLength)%t,r=new Array(n+this.padLength);r[0]=128;for(var i=1;i<n;i++)r[i]=0;if(e<<=3,"big"===this.endian){for(var s=8;s<this.padLength;s++)r[i++]=0;r[i++]=0,r[i++]=0,r[i++]=0,r[i++]=0,r[i++]=e>>>24&255,r[i++]=e>>>16&255,r[i++]=e>>>8&255,r[i++]=255&e}else for(r[i++]=255&e,r[i++]=e>>>8&255,r[i++]=e>>>16&255,r[i++]=e>>>24&255,r[i++]=0,r[i++]=0,r[i++]=0,r[i++]=0,s=8;s<this.padLength;s++)r[i++]=0;return r};var hs={BlockHash:ds},ps=ls.rotr32;function fs(e,t,n){return e&t^~e&n}function ms(e,t,n){return e&t^e&n^t&n}var ys=fs,gs=ms,bs=ls.rotl32,vs=ls.sum32,ws=ls.sum32_5,As=function(e,t,n,r){return 0===e?fs(t,n,r):1===e||3===e?function(e,t,n){return e^t^n}(t,n,r):2===e?ms(t,n,r):void 0},Ts=hs.BlockHash,Es=[1518500249,1859775393,2400959708,3395469782];function Ss(){if(!(this instanceof Ss))return new Ss;Ts.call(this),this.h=[1732584193,4023233417,2562383102,271733878,3285377520],this.W=new Array(80)}ls.inherits(Ss,Ts);var Is=Ss;Ss.blockSize=512,Ss.outSize=160,Ss.hmacStrength=80,Ss.padLength=64,Ss.prototype._update=function(e,t){for(var n=this.W,r=0;r<16;r++)n[r]=e[t+r];for(;r<n.length;r++)n[r]=bs(n[r-3]^n[r-8]^n[r-14]^n[r-16],1);var i=this.h[0],s=this.h[1],a=this.h[2],o=this.h[3],u=this.h[4];for(r=0;r<n.length;r++){var l=~~(r/20),c=ws(bs(i,5),As(l,s,a,o),u,n[r],Es[l]);u=o,o=a,a=bs(s,30),s=i,i=c}this.h[0]=vs(this.h[0],i),this.h[1]=vs(this.h[1],s),this.h[2]=vs(this.h[2],a),this.h[3]=vs(this.h[3],o),this.h[4]=vs(this.h[4],u)},Ss.prototype._digest=function(e){return"hex"===e?ls.toHex32(this.h,"big"):ls.split32(this.h,"big")};var ks=ls.sum32,Cs=ls.sum32_4,Ns=ls.sum32_5,xs=ys,_s=gs,Rs=function(e){return ps(e,2)^ps(e,13)^ps(e,22)},Ms=function(e){return ps(e,6)^ps(e,11)^ps(e,25)},Ps=function(e){return ps(e,7)^ps(e,18)^e>>>3},Os=function(e){return ps(e,17)^ps(e,19)^e>>>10},Bs=hs.BlockHash,Ds=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298];function Fs(){if(!(this instanceof Fs))return new Fs;Bs.call(this),this.h=[1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225],this.k=Ds,this.W=new Array(64)}ls.inherits(Fs,Bs);var Ls=Fs;function Us(){if(!(this instanceof Us))return new Us;Ls.call(this),this.h=[3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428]}Fs.blockSize=512,Fs.outSize=256,Fs.hmacStrength=192,Fs.padLength=64,Fs.prototype._update=function(e,t){for(var n=this.W,r=0;r<16;r++)n[r]=e[t+r];for(;r<n.length;r++)n[r]=Cs(Os(n[r-2]),n[r-7],Ps(n[r-15]),n[r-16]);var i=this.h[0],s=this.h[1],a=this.h[2],o=this.h[3],u=this.h[4],l=this.h[5],c=this.h[6],d=this.h[7];for(rs(this.k.length===n.length),r=0;r<n.length;r++){var h=Ns(d,Ms(u),xs(u,l,c),this.k[r],n[r]),p=ks(Rs(i),_s(i,s,a));d=c,c=l,l=u,u=ks(o,h),o=a,a=s,s=i,i=ks(h,p)}this.h[0]=ks(this.h[0],i),this.h[1]=ks(this.h[1],s),this.h[2]=ks(this.h[2],a),this.h[3]=ks(this.h[3],o),this.h[4]=ks(this.h[4],u),this.h[5]=ks(this.h[5],l),this.h[6]=ks(this.h[6],c),this.h[7]=ks(this.h[7],d)},Fs.prototype._digest=function(e){return"hex"===e?ls.toHex32(this.h,"big"):ls.split32(this.h,"big")},ls.inherits(Us,Ls);var Gs=Us;Us.blockSize=512,Us.outSize=224,Us.hmacStrength=192,Us.padLength=64,Us.prototype._digest=function(e){return"hex"===e?ls.toHex32(this.h.slice(0,7),"big"):ls.split32(this.h.slice(0,7),"big")};var Hs=ls.rotr64_hi,qs=ls.rotr64_lo,Vs=ls.shr64_hi,zs=ls.shr64_lo,js=ls.sum64,Ks=ls.sum64_hi,Ws=ls.sum64_lo,Js=ls.sum64_4_hi,Qs=ls.sum64_4_lo,Ys=ls.sum64_5_hi,Xs=ls.sum64_5_lo,Zs=hs.BlockHash,$s=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591];function ea(){if(!(this instanceof ea))return new ea;Zs.call(this),this.h=[1779033703,4089235720,3144134277,2227873595,1013904242,4271175723,2773480762,1595750129,1359893119,2917565137,2600822924,725511199,528734635,4215389547,1541459225,327033209],this.k=$s,this.W=new Array(160)}ls.inherits(ea,Zs);var ta=ea;function na(e,t,n,r,i){var s=e&n^~e&i;return s<0&&(s+=4294967296),s}function ra(e,t,n,r,i,s){var a=t&r^~t&s;return a<0&&(a+=4294967296),a}function ia(e,t,n,r,i){var s=e&n^e&i^n&i;return s<0&&(s+=4294967296),s}function sa(e,t,n,r,i,s){var a=t&r^t&s^r&s;return a<0&&(a+=4294967296),a}function aa(e,t){var n=Hs(e,t,28)^Hs(t,e,2)^Hs(t,e,7);return n<0&&(n+=4294967296),n}function oa(e,t){var n=qs(e,t,28)^qs(t,e,2)^qs(t,e,7);return n<0&&(n+=4294967296),n}function ua(e,t){var n=Hs(e,t,14)^Hs(e,t,18)^Hs(t,e,9);return n<0&&(n+=4294967296),n}function la(e,t){var n=qs(e,t,14)^qs(e,t,18)^qs(t,e,9);return n<0&&(n+=4294967296),n}function ca(e,t){var n=Hs(e,t,1)^Hs(e,t,8)^Vs(e,t,7);return n<0&&(n+=4294967296),n}function da(e,t){var n=qs(e,t,1)^qs(e,t,8)^zs(e,t,7);return n<0&&(n+=4294967296),n}function ha(e,t){var n=Hs(e,t,19)^Hs(t,e,29)^Vs(e,t,6);return n<0&&(n+=4294967296),n}function pa(e,t){var n=qs(e,t,19)^qs(t,e,29)^zs(e,t,6);return n<0&&(n+=4294967296),n}function fa(){if(!(this instanceof fa))return new fa;ta.call(this),this.h=[3418070365,3238371032,1654270250,914150663,2438529370,812702999,355462360,4144912697,1731405415,4290775857,2394180231,1750603025,3675008525,1694076839,1203062813,3204075428]}ea.blockSize=1024,ea.outSize=512,ea.hmacStrength=192,ea.padLength=128,ea.prototype._prepareBlock=function(e,t){for(var n=this.W,r=0;r<32;r++)n[r]=e[t+r];for(;r<n.length;r+=2){var i=ha(n[r-4],n[r-3]),s=pa(n[r-4],n[r-3]),a=n[r-14],o=n[r-13],u=ca(n[r-30],n[r-29]),l=da(n[r-30],n[r-29]),c=n[r-32],d=n[r-31];n[r]=Js(i,s,a,o,u,l,c,d),n[r+1]=Qs(i,s,a,o,u,l,c,d)}},ea.prototype._update=function(e,t){this._prepareBlock(e,t);var n=this.W,r=this.h[0],i=this.h[1],s=this.h[2],a=this.h[3],o=this.h[4],u=this.h[5],l=this.h[6],c=this.h[7],d=this.h[8],h=this.h[9],p=this.h[10],f=this.h[11],m=this.h[12],y=this.h[13],g=this.h[14],b=this.h[15];rs(this.k.length===n.length);for(var v=0;v<n.length;v+=2){var w=g,A=b,T=ua(d,h),E=la(d,h),S=na(d,0,p,0,m),I=ra(0,h,0,f,0,y),k=this.k[v],C=this.k[v+1],N=n[v],x=n[v+1],_=Ys(w,A,T,E,S,I,k,C,N,x),R=Xs(w,A,T,E,S,I,k,C,N,x);w=aa(r,i),A=oa(r,i),T=ia(r,0,s,0,o),E=sa(0,i,0,a,0,u);var M=Ks(w,A,T,E),P=Ws(w,A,T,E);g=m,b=y,m=p,y=f,p=d,f=h,d=Ks(l,c,_,R),h=Ws(c,c,_,R),l=o,c=u,o=s,u=a,s=r,a=i,r=Ks(_,R,M,P),i=Ws(_,R,M,P)}js(this.h,0,r,i),js(this.h,2,s,a),js(this.h,4,o,u),js(this.h,6,l,c),js(this.h,8,d,h),js(this.h,10,p,f),js(this.h,12,m,y),js(this.h,14,g,b)},ea.prototype._digest=function(e){return"hex"===e?ls.toHex32(this.h,"big"):ls.split32(this.h,"big")},ls.inherits(fa,ta);var ma=fa;fa.blockSize=1024,fa.outSize=384,fa.hmacStrength=192,fa.padLength=128,fa.prototype._digest=function(e){return"hex"===e?ls.toHex32(this.h.slice(0,12),"big"):ls.split32(this.h.slice(0,12),"big")};var ya={sha1:Is,sha224:Gs,sha256:Ls,sha384:ma,sha512:ta},ga=ls.rotl32,ba=ls.sum32,va=ls.sum32_3,wa=ls.sum32_4,Aa=hs.BlockHash;function Ta(){if(!(this instanceof Ta))return new Ta;Aa.call(this),this.h=[1732584193,4023233417,2562383102,271733878,3285377520],this.endian="little"}ls.inherits(Ta,Aa);var Ea=Ta;function Sa(e,t,n,r){return e<=15?t^n^r:e<=31?t&n|~t&r:e<=47?(t|~n)^r:e<=63?t&r|n&~r:t^(n|~r)}function Ia(e){return e<=15?0:e<=31?1518500249:e<=47?1859775393:e<=63?2400959708:2840853838}function ka(e){return e<=15?1352829926:e<=31?1548603684:e<=47?1836072691:e<=63?2053994217:0}Ta.blockSize=512,Ta.outSize=160,Ta.hmacStrength=192,Ta.padLength=64,Ta.prototype._update=function(e,t){for(var n=this.h[0],r=this.h[1],i=this.h[2],s=this.h[3],a=this.h[4],o=n,u=r,l=i,c=s,d=a,h=0;h<80;h++){var p=ba(ga(wa(n,Sa(h,r,i,s),e[Ca[h]+t],Ia(h)),xa[h]),a);n=a,a=s,s=ga(i,10),i=r,r=p,p=ba(ga(wa(o,Sa(79-h,u,l,c),e[Na[h]+t],ka(h)),_a[h]),d),o=d,d=c,c=ga(l,10),l=u,u=p}p=va(this.h[1],i,c),this.h[1]=va(this.h[2],s,d),this.h[2]=va(this.h[3],a,o),this.h[3]=va(this.h[4],n,u),this.h[4]=va(this.h[0],r,l),this.h[0]=p},Ta.prototype._digest=function(e){return"hex"===e?ls.toHex32(this.h,"little"):ls.split32(this.h,"little")};var Ca=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13],Na=[5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11],xa=[11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6],_a=[8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11],Ra={ripemd160:Ea};function Ma(e,t,n){if(!(this instanceof Ma))return new Ma(e,t,n);this.Hash=e,this.blockSize=e.blockSize/8,this.outSize=e.outSize/8,this.inner=null,this.outer=null,this._init(ls.toArray(t,n))}var Pa=Ma;Ma.prototype._init=function(e){e.length>this.blockSize&&(e=(new this.Hash).update(e).digest()),rs(e.length<=this.blockSize);for(var t=e.length;t<this.blockSize;t++)e.push(0);for(t=0;t<e.length;t++)e[t]^=54;for(this.inner=(new this.Hash).update(e),t=0;t<e.length;t++)e[t]^=106;this.outer=(new this.Hash).update(e)},Ma.prototype.update=function(e,t){return this.inner.update(e,t),this},Ma.prototype.digest=function(e){return this.outer.update(this.inner.digest()),this.outer.digest(e)};var Oa,Ba=pn(function(e,t){var n=t;n.utils=ls,n.common=hs,n.sha=ya,n.ripemd=Ra,n.hmac=Pa,n.sha1=n.sha.sha1,n.sha256=n.sha.sha256,n.sha224=n.sha.sha224,n.sha384=n.sha.sha384,n.sha512=n.sha.sha512,n.ripemd160=n.ripemd.ripemd160}),Da=Ba;!function(e){e.sha256="sha256",e.sha512="sha512"}(Oa||(Oa={}));const Fa=new In("sha2/5.8.0");function La(e){return"0x"+Da.sha256().update(Mn(e)).digest("hex")}function Ua(e,t,n){return Oa[e]||Fa.throwError("unsupported algorithm "+e,In.errors.UNSUPPORTED_OPERATION,{operation:"hmac",algorithm:e}),"0x"+Da.hmac(Da[e],Mn(t)).update(Mn(n)).digest("hex")}var Ga=function(e,t,n,r){return new(n||(n=Promise))(function(i,s){function a(e){try{u(r.next(e))}catch(e){s(e)}}function o(e){try{u(r.throw(e))}catch(e){s(e)}}function u(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n(function(e){e(t)})).then(a,o)}u((r=r.apply(e,t||[])).next())})};function Ha(e,t){return Ga(this,void 0,void 0,function*(){null==t&&(t={});const n={method:t.method||"GET",headers:t.headers||{},body:t.body||void 0};if(!0!==t.skipFetchSetup&&(n.mode="cors",n.cache="no-cache",n.credentials="same-origin",n.redirect="follow",n.referrer="client"),null!=t.fetchOptions){const e=t.fetchOptions;e.mode&&(n.mode=e.mode),e.cache&&(n.cache=e.cache),e.credentials&&(n.credentials=e.credentials),e.redirect&&(n.redirect=e.redirect),e.referrer&&(n.referrer=e.referrer)}const r=yield fetch(e,n),i=yield r.arrayBuffer(),s={};return r.headers.forEach?r.headers.forEach((e,t)=>{s[t.toLowerCase()]=e}):r.headers.keys().forEach(e=>{s[e.toLowerCase()]=r.headers.get(e)}),{headers:s,statusCode:r.status,statusMessage:r.statusText,body:Mn(new Uint8Array(i))}})}var qa=function(e,t,n,r){return new(n||(n=Promise))(function(i,s){function a(e){try{u(r.next(e))}catch(e){s(e)}}function o(e){try{u(r.throw(e))}catch(e){s(e)}}function u(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n(function(e){e(t)})).then(a,o)}u((r=r.apply(e,t||[])).next())})};const Va=new In("web/5.8.0");function za(e){return new Promise(t=>{setTimeout(t,e)})}function ja(e,t){if(null==e)return null;if("string"==typeof e)return e;if(xn(e)){if(t&&("text"===t.split("/")[0]||"application/json"===t.split(";")[0].trim()))try{return ti(e)}catch(e){}return Fn(e)}return e}function Ka(e,t,n){let r=null;if(null!=t){r=ei(t);const n="string"==typeof e?{url:e}:Ar(e);n.headers?0!==Object.keys(n.headers).filter(e=>"content-type"===e.toLowerCase()).length||(n.headers=Ar(n.headers),n.headers["content-type"]="application/json"):n.headers={"content-type":"application/json"},e=n}return function(e,t,n){const r="object"==typeof e&&null!=e.throttleLimit?e.throttleLimit:12;Va.assertArgument(r>0&&r%1==0,"invalid connection throttle limit","connection.throttleLimit",r);const i="object"==typeof e?e.throttleCallback:null,s="object"==typeof e&&"number"==typeof e.throttleSlotInterval?e.throttleSlotInterval:100;Va.assertArgument(s>0&&s%1==0,"invalid connection throttle slot interval","connection.throttleSlotInterval",s);const a="object"==typeof e&&!!e.errorPassThrough,o={};let u=null;const l={method:"GET"};let c=!1,d=12e4;if("string"==typeof e)u=e;else if("object"==typeof e){if(null!=e&&null!=e.url||Va.throwArgumentError("missing URL","connection.url",e),u=e.url,"number"==typeof e.timeout&&e.timeout>0&&(d=e.timeout),e.headers)for(const t in e.headers)o[t.toLowerCase()]={key:t,value:String(e.headers[t])},["if-none-match","if-modified-since"].indexOf(t.toLowerCase())>=0&&(c=!0);l.allowGzip=!!e.allowGzip,null!=e.user&&null!=e.password&&("https:"!==u.substring(0,6)&&!0!==e.allowInsecureAuthentication&&Va.throwError("basic authentication requires a secure https url",In.errors.INVALID_ARGUMENT,{argument:"url",url:u,user:e.user,password:"[REDACTED]"}),o.authorization={key:"Authorization",value:"Basic "+Lr(ei(e.user+":"+e.password))}),null!=e.skipFetchSetup&&(l.skipFetchSetup=!!e.skipFetchSetup),null!=e.fetchOptions&&(l.fetchOptions=Ar(e.fetchOptions))}const h=new RegExp("^data:([^;:]*)?(;base64)?,(.*)$","i"),p=u?u.match(h):null;if(p)try{const e={statusCode:200,statusMessage:"OK",headers:{"content-type":p[1]||"text/plain"},body:p[2]?Fr(p[3]):(f=p[3],ei(f.replace(/%([0-9a-f][0-9a-f])/gi,(e,t)=>String.fromCharCode(parseInt(t,16)))))};let t=e.body;return n&&(t=n(e.body,e)),Promise.resolve(t)}catch(e){Va.throwError("processing response error",In.errors.SERVER_ERROR,{body:ja(p[1],p[2]),error:e,requestBody:null,requestMethod:"GET",url:u})}var f;t&&(l.method="POST",l.body=t,null==o["content-type"]&&(o["content-type"]={key:"Content-Type",value:"application/octet-stream"}),null==o["content-length"]&&(o["content-length"]={key:"Content-Length",value:String(t.length)}));const m={};Object.keys(o).forEach(e=>{const t=o[e];m[t.key]=t.value}),l.headers=m;const y=function(){let e=null;return{promise:new Promise(function(t,n){d&&(e=setTimeout(()=>{null!=e&&(e=null,n(Va.makeError("timeout",In.errors.TIMEOUT,{requestBody:ja(l.body,m["content-type"]),requestMethod:l.method,timeout:d,url:u})))},d))}),cancel:function(){null!=e&&(clearTimeout(e),e=null)}}}(),g=function(){return qa(this,void 0,void 0,function*(){for(let e=0;e<r;e++){let t=null;try{if(t=yield Ha(u,l),e<r)if(301===t.statusCode||302===t.statusCode){if("GET"===l.method&&(t.headers.location||"").match(/^https:/)){u=t.headers.location;continue}}else if(429===t.statusCode){let n=!0;if(i&&(n=yield i(e,u)),n){let n=0;const r=t.headers["retry-after"];n="string"==typeof r&&r.match(/^[1-9][0-9]*$/)?1e3*parseInt(r):s*parseInt(String(Math.random()*Math.pow(2,e))),yield za(n);continue}}}catch(e){t=e.response,null==t&&(y.cancel(),Va.throwError("missing response",In.errors.SERVER_ERROR,{requestBody:ja(l.body,m["content-type"]),requestMethod:l.method,serverError:e,url:u}))}let o=t.body;if(c&&304===t.statusCode?o=null:!a&&(t.statusCode<200||t.statusCode>=300)&&(y.cancel(),Va.throwError("bad response",In.errors.SERVER_ERROR,{status:t.statusCode,headers:t.headers,body:ja(o,t.headers?t.headers["content-type"]:null),requestBody:ja(l.body,m["content-type"]),requestMethod:l.method,url:u})),n)try{const e=yield n(o,t);return y.cancel(),e}catch(n){if(n.throttleRetry&&e<r){let t=!0;if(i&&(t=yield i(e,u)),t){const t=s*parseInt(String(Math.random()*Math.pow(2,e)));yield za(t);continue}}y.cancel(),Va.throwError("processing response error",In.errors.SERVER_ERROR,{body:ja(o,t.headers?t.headers["content-type"]:null),error:n,requestBody:ja(l.body,m["content-type"]),requestMethod:l.method,url:u})}return y.cancel(),o}return Va.throwError("failed response",In.errors.SERVER_ERROR,{requestBody:ja(l.body,m["content-type"]),requestMethod:l.method,url:u})})}();return Promise.race([y.promise,g])}(e,r,(e,t)=>{let r=null;if(null!=e)try{r=JSON.parse(ti(e))}catch(t){Va.throwError("invalid JSON",In.errors.SERVER_ERROR,{body:e,error:t})}return n&&(r=n(r,t)),r})}function Wa(e,t){return t||(t={}),null==(t=Ar(t)).floor&&(t.floor=0),null==t.ceiling&&(t.ceiling=1e4),null==t.interval&&(t.interval=250),new Promise(function(n,r){let i=null,s=!1;const a=()=>!s&&(s=!0,i&&clearTimeout(i),!0);t.timeout&&(i=setTimeout(()=>{a()&&r(new Error("timeout"))},t.timeout));const o=t.retryLimit;let u=0;!function i(){return e().then(function(e){if(void 0!==e)a()&&n(e);else if(t.oncePoll)t.oncePoll.once("poll",i);else if(t.onceBlock)t.onceBlock.once("block",i);else if(!s){if(u++,u>o)return void(a()&&r(new Error("retry limit reached")));let e=t.interval*parseInt(String(Math.random()*Math.pow(2,u)));e<t.floor&&(e=t.floor),e>t.ceiling&&(e=t.ceiling),setTimeout(i,e)}return null},function(e){a()&&r(e)})}()})}for(var Ja="qpzry9x8gf2tvdw0s3jn54khce6mua7l",Qa={},Ya=0;Ya<Ja.length;Ya++){var Xa=Ja.charAt(Ya);if(void 0!==Qa[Xa])throw new TypeError(Xa+" is ambiguous");Qa[Xa]=Ya}function Za(e){var t=e>>25;return(33554431&e)<<5^996825010&-(t>>0&1)^642813549&-(t>>1&1)^513874426&-(t>>2&1)^1027748829&-(t>>3&1)^705979059&-(t>>4&1)}const $a="providers/5.8.0";function eo(e,t,n){return e(n={path:t,exports:{},require:function(e,t){return function(){throw new Error("Dynamic requires are not currently supported by @rollup/plugin-commonjs")}()}},n.exports),n.exports}var to=no;function no(e,t){if(!e)throw new Error(t||"Assertion failed")}no.equal=function(e,t,n){if(e!=t)throw new Error(n||"Assertion failed: "+e+" != "+t)};var ro=eo(function(e,t){var n=t;function r(e){return 1===e.length?"0"+e:e}function i(e){for(var t="",n=0;n<e.length;n++)t+=r(e[n].toString(16));return t}n.toArray=function(e,t){if(Array.isArray(e))return e.slice();if(!e)return[];var n=[];if("string"!=typeof e){for(var r=0;r<e.length;r++)n[r]=0|e[r];return n}if("hex"===t)for((e=e.replace(/[^a-z0-9]+/gi,"")).length%2!=0&&(e="0"+e),r=0;r<e.length;r+=2)n.push(parseInt(e[r]+e[r+1],16));else for(r=0;r<e.length;r++){var i=e.charCodeAt(r),s=i>>8,a=255&i;s?n.push(s,a):n.push(a)}return n},n.zero2=r,n.toHex=i,n.encode=function(e,t){return"hex"===t?i(e):e}}),io=eo(function(e,t){var n=t;n.assert=to,n.toArray=ro.toArray,n.zero2=ro.zero2,n.toHex=ro.toHex,n.encode=ro.encode,n.getNAF=function(e,t,n){var r,i=new Array(Math.max(e.bitLength(),n)+1);for(r=0;r<i.length;r+=1)i[r]=0;var s=1<<t+1,a=e.clone();for(r=0;r<i.length;r++){var o,u=a.andln(s-1);a.isOdd()?a.isubn(o=u>(s>>1)-1?(s>>1)-u:u):o=0,i[r]=o,a.iushrn(1)}return i},n.getJSF=function(e,t){var n=[[],[]];e=e.clone(),t=t.clone();for(var r,i=0,s=0;e.cmpn(-i)>0||t.cmpn(-s)>0;){var a,o,u=e.andln(3)+i&3,l=t.andln(3)+s&3;3===u&&(u=-1),3===l&&(l=-1),a=0==(1&u)?0:3!=(r=e.andln(7)+i&7)&&5!==r||2!==l?u:-u,n[0].push(a),o=0==(1&l)?0:3!=(r=t.andln(7)+s&7)&&5!==r||2!==u?l:-l,n[1].push(o),2*i===a+1&&(i=1-i),2*s===o+1&&(s=1-s),e.iushrn(1),t.iushrn(1)}return n},n.cachedProperty=function(e,t,n){var r="_"+t;e.prototype[t]=function(){return void 0!==this[r]?this[r]:this[r]=n.call(this)}},n.parseBytes=function(e){return"string"==typeof e?n.toArray(e,"hex"):e},n.intFromLE=function(e){return new mn(e,"hex","le")}}),so=io.getNAF,ao=io.getJSF,oo=io.assert;function uo(e,t){this.type=e,this.p=new mn(t.p,16),this.red=t.prime?mn.red(t.prime):mn.mont(this.p),this.zero=new mn(0).toRed(this.red),this.one=new mn(1).toRed(this.red),this.two=new mn(2).toRed(this.red),this.n=t.n&&new mn(t.n,16),this.g=t.g&&this.pointFromJSON(t.g,t.gRed),this._wnafT1=new Array(4),this._wnafT2=new Array(4),this._wnafT3=new Array(4),this._wnafT4=new Array(4),this._bitLength=this.n?this.n.bitLength():0;var n=this.n&&this.p.div(this.n);!n||n.cmpn(100)>0?this.redN=null:(this._maxwellTrick=!0,this.redN=this.n.toRed(this.red))}var lo=uo;function co(e,t){this.curve=e,this.type=t,this.precomputed=null}uo.prototype.point=function(){throw new Error("Not implemented")},uo.prototype.validate=function(){throw new Error("Not implemented")},uo.prototype._fixedNafMul=function(e,t){oo(e.precomputed);var n=e._getDoubles(),r=so(t,1,this._bitLength),i=(1<<n.step+1)-(n.step%2==0?2:1);i/=3;var s,a,o=[];for(s=0;s<r.length;s+=n.step){a=0;for(var u=s+n.step-1;u>=s;u--)a=(a<<1)+r[u];o.push(a)}for(var l=this.jpoint(null,null,null),c=this.jpoint(null,null,null),d=i;d>0;d--){for(s=0;s<o.length;s++)(a=o[s])===d?c=c.mixedAdd(n.points[s]):a===-d&&(c=c.mixedAdd(n.points[s].neg()));l=l.add(c)}return l.toP()},uo.prototype._wnafMul=function(e,t){for(var n=4,r=e._getNAFPoints(n),i=r.points,s=so(t,n=r.wnd,this._bitLength),a=this.jpoint(null,null,null),o=s.length-1;o>=0;o--){for(var u=0;o>=0&&0===s[o];o--)u++;if(o>=0&&u++,a=a.dblp(u),o<0)break;var l=s[o];oo(0!==l),a="affine"===e.type?a.mixedAdd(l>0?i[l-1>>1]:i[-l-1>>1].neg()):a.add(l>0?i[l-1>>1]:i[-l-1>>1].neg())}return"affine"===e.type?a.toP():a},uo.prototype._wnafMulAdd=function(e,t,n,r,i){var s,a,o,u=this._wnafT1,l=this._wnafT2,c=this._wnafT3,d=0;for(s=0;s<r;s++){var h=(o=t[s])._getNAFPoints(e);u[s]=h.wnd,l[s]=h.points}for(s=r-1;s>=1;s-=2){var p=s-1,f=s;if(1===u[p]&&1===u[f]){var m=[t[p],null,null,t[f]];0===t[p].y.cmp(t[f].y)?(m[1]=t[p].add(t[f]),m[2]=t[p].toJ().mixedAdd(t[f].neg())):0===t[p].y.cmp(t[f].y.redNeg())?(m[1]=t[p].toJ().mixedAdd(t[f]),m[2]=t[p].add(t[f].neg())):(m[1]=t[p].toJ().mixedAdd(t[f]),m[2]=t[p].toJ().mixedAdd(t[f].neg()));var y=[-3,-1,-5,-7,0,7,5,1,3],g=ao(n[p],n[f]);for(d=Math.max(g[0].length,d),c[p]=new Array(d),c[f]=new Array(d),a=0;a<d;a++)c[p][a]=y[3*(1+(0|g[0][a]))+(1+(0|g[1][a]))],c[f][a]=0,l[p]=m}else c[p]=so(n[p],u[p],this._bitLength),c[f]=so(n[f],u[f],this._bitLength),d=Math.max(c[p].length,d),d=Math.max(c[f].length,d)}var b=this.jpoint(null,null,null),v=this._wnafT4;for(s=d;s>=0;s--){for(var w=0;s>=0;){var A=!0;for(a=0;a<r;a++)v[a]=0|c[a][s],0!==v[a]&&(A=!1);if(!A)break;w++,s--}if(s>=0&&w++,b=b.dblp(w),s<0)break;for(a=0;a<r;a++){var T=v[a];0!==T&&(T>0?o=l[a][T-1>>1]:T<0&&(o=l[a][-T-1>>1].neg()),b="affine"===o.type?b.mixedAdd(o):b.add(o))}}for(s=0;s<r;s++)l[s]=null;return i?b:b.toP()},uo.BasePoint=co,co.prototype.eq=function(){throw new Error("Not implemented")},co.prototype.validate=function(){return this.curve.validate(this)},uo.prototype.decodePoint=function(e,t){e=io.toArray(e,t);var n=this.p.byteLength();if((4===e[0]||6===e[0]||7===e[0])&&e.length-1==2*n)return 6===e[0]?oo(e[e.length-1]%2==0):7===e[0]&&oo(e[e.length-1]%2==1),this.point(e.slice(1,1+n),e.slice(1+n,1+2*n));if((2===e[0]||3===e[0])&&e.length-1===n)return this.pointFromX(e.slice(1,1+n),3===e[0]);throw new Error("Unknown point format")},co.prototype.encodeCompressed=function(e){return this.encode(e,!0)},co.prototype._encode=function(e){var t=this.curve.p.byteLength(),n=this.getX().toArray("be",t);return e?[this.getY().isEven()?2:3].concat(n):[4].concat(n,this.getY().toArray("be",t))},co.prototype.encode=function(e,t){return io.encode(this._encode(t),e)},co.prototype.precompute=function(e){if(this.precomputed)return this;var t={doubles:null,naf:null,beta:null};return t.naf=this._getNAFPoints(8),t.doubles=this._getDoubles(4,e),t.beta=this._getBeta(),this.precomputed=t,this},co.prototype._hasDoubles=function(e){if(!this.precomputed)return!1;var t=this.precomputed.doubles;return!!t&&t.points.length>=Math.ceil((e.bitLength()+1)/t.step)},co.prototype._getDoubles=function(e,t){if(this.precomputed&&this.precomputed.doubles)return this.precomputed.doubles;for(var n=[this],r=this,i=0;i<t;i+=e){for(var s=0;s<e;s++)r=r.dbl();n.push(r)}return{step:e,points:n}},co.prototype._getNAFPoints=function(e){if(this.precomputed&&this.precomputed.naf)return this.precomputed.naf;for(var t=[this],n=(1<<e)-1,r=1===n?null:this.dbl(),i=1;i<n;i++)t[i]=t[i-1].add(r);return{wnd:e,points:t}},co.prototype._getBeta=function(){return null},co.prototype.dblp=function(e){for(var t=this,n=0;n<e;n++)t=t.dbl();return t};var ho=eo(function(e){e.exports="function"==typeof Object.create?function(e,t){t&&(e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}))}:function(e,t){if(t){e.super_=t;var n=function(){};n.prototype=t.prototype,e.prototype=new n,e.prototype.constructor=e}}}),po=io.assert;function fo(e){lo.call(this,"short",e),this.a=new mn(e.a,16).toRed(this.red),this.b=new mn(e.b,16).toRed(this.red),this.tinv=this.two.redInvm(),this.zeroA=0===this.a.fromRed().cmpn(0),this.threeA=0===this.a.fromRed().sub(this.p).cmpn(-3),this.endo=this._getEndomorphism(e),this._endoWnafT1=new Array(4),this._endoWnafT2=new Array(4)}ho(fo,lo);var mo=fo;function yo(e,t,n,r){lo.BasePoint.call(this,e,"affine"),null===t&&null===n?(this.x=null,this.y=null,this.inf=!0):(this.x=new mn(t,16),this.y=new mn(n,16),r&&(this.x.forceRed(this.curve.red),this.y.forceRed(this.curve.red)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.inf=!1)}function go(e,t,n,r){lo.BasePoint.call(this,e,"jacobian"),null===t&&null===n&&null===r?(this.x=this.curve.one,this.y=this.curve.one,this.z=new mn(0)):(this.x=new mn(t,16),this.y=new mn(n,16),this.z=new mn(r,16)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)),this.zOne=this.z===this.curve.one}fo.prototype._getEndomorphism=function(e){if(this.zeroA&&this.g&&this.n&&1===this.p.modn(3)){var t,n;if(e.beta)t=new mn(e.beta,16).toRed(this.red);else{var r=this._getEndoRoots(this.p);t=(t=r[0].cmp(r[1])<0?r[0]:r[1]).toRed(this.red)}if(e.lambda)n=new mn(e.lambda,16);else{var i=this._getEndoRoots(this.n);0===this.g.mul(i[0]).x.cmp(this.g.x.redMul(t))?n=i[0]:po(0===this.g.mul(n=i[1]).x.cmp(this.g.x.redMul(t)))}return{beta:t,lambda:n,basis:e.basis?e.basis.map(function(e){return{a:new mn(e.a,16),b:new mn(e.b,16)}}):this._getEndoBasis(n)}}},fo.prototype._getEndoRoots=function(e){var t=e===this.p?this.red:mn.mont(e),n=new mn(2).toRed(t).redInvm(),r=n.redNeg(),i=new mn(3).toRed(t).redNeg().redSqrt().redMul(n);return[r.redAdd(i).fromRed(),r.redSub(i).fromRed()]},fo.prototype._getEndoBasis=function(e){for(var t,n,r,i,s,a,o,u,l,c=this.n.ushrn(Math.floor(this.n.bitLength()/2)),d=e,h=this.n.clone(),p=new mn(1),f=new mn(0),m=new mn(0),y=new mn(1),g=0;0!==d.cmpn(0);){var b=h.div(d);u=h.sub(b.mul(d)),l=m.sub(b.mul(p));var v=y.sub(b.mul(f));if(!r&&u.cmp(c)<0)t=o.neg(),n=p,r=u.neg(),i=l;else if(r&&2==++g)break;o=u,h=d,d=u,m=p,p=l,y=f,f=v}s=u.neg(),a=l;var w=r.sqr().add(i.sqr());return s.sqr().add(a.sqr()).cmp(w)>=0&&(s=t,a=n),r.negative&&(r=r.neg(),i=i.neg()),s.negative&&(s=s.neg(),a=a.neg()),[{a:r,b:i},{a:s,b:a}]},fo.prototype._endoSplit=function(e){var t=this.endo.basis,n=t[0],r=t[1],i=r.b.mul(e).divRound(this.n),s=n.b.neg().mul(e).divRound(this.n),a=i.mul(n.a),o=s.mul(r.a),u=i.mul(n.b),l=s.mul(r.b);return{k1:e.sub(a).sub(o),k2:u.add(l).neg()}},fo.prototype.pointFromX=function(e,t){(e=new mn(e,16)).red||(e=e.toRed(this.red));var n=e.redSqr().redMul(e).redIAdd(e.redMul(this.a)).redIAdd(this.b),r=n.redSqrt();if(0!==r.redSqr().redSub(n).cmp(this.zero))throw new Error("invalid point");var i=r.fromRed().isOdd();return(t&&!i||!t&&i)&&(r=r.redNeg()),this.point(e,r)},fo.prototype.validate=function(e){if(e.inf)return!0;var t=e.x,n=e.y,r=this.a.redMul(t),i=t.redSqr().redMul(t).redIAdd(r).redIAdd(this.b);return 0===n.redSqr().redISub(i).cmpn(0)},fo.prototype._endoWnafMulAdd=function(e,t,n){for(var r=this._endoWnafT1,i=this._endoWnafT2,s=0;s<e.length;s++){var a=this._endoSplit(t[s]),o=e[s],u=o._getBeta();a.k1.negative&&(a.k1.ineg(),o=o.neg(!0)),a.k2.negative&&(a.k2.ineg(),u=u.neg(!0)),r[2*s]=o,r[2*s+1]=u,i[2*s]=a.k1,i[2*s+1]=a.k2}for(var l=this._wnafMulAdd(1,r,i,2*s,n),c=0;c<2*s;c++)r[c]=null,i[c]=null;return l},ho(yo,lo.BasePoint),fo.prototype.point=function(e,t,n){return new yo(this,e,t,n)},fo.prototype.pointFromJSON=function(e,t){return yo.fromJSON(this,e,t)},yo.prototype._getBeta=function(){if(this.curve.endo){var e=this.precomputed;if(e&&e.beta)return e.beta;var t=this.curve.point(this.x.redMul(this.curve.endo.beta),this.y);if(e){var n=this.curve,r=function(e){return n.point(e.x.redMul(n.endo.beta),e.y)};e.beta=t,t.precomputed={beta:null,naf:e.naf&&{wnd:e.naf.wnd,points:e.naf.points.map(r)},doubles:e.doubles&&{step:e.doubles.step,points:e.doubles.points.map(r)}}}return t}},yo.prototype.toJSON=function(){return this.precomputed?[this.x,this.y,this.precomputed&&{doubles:this.precomputed.doubles&&{step:this.precomputed.doubles.step,points:this.precomputed.doubles.points.slice(1)},naf:this.precomputed.naf&&{wnd:this.precomputed.naf.wnd,points:this.precomputed.naf.points.slice(1)}}]:[this.x,this.y]},yo.fromJSON=function(e,t,n){"string"==typeof t&&(t=JSON.parse(t));var r=e.point(t[0],t[1],n);if(!t[2])return r;function i(t){return e.point(t[0],t[1],n)}var s=t[2];return r.precomputed={beta:null,doubles:s.doubles&&{step:s.doubles.step,points:[r].concat(s.doubles.points.map(i))},naf:s.naf&&{wnd:s.naf.wnd,points:[r].concat(s.naf.points.map(i))}},r},yo.prototype.inspect=function(){return this.isInfinity()?"<EC Point Infinity>":"<EC Point x: "+this.x.fromRed().toString(16,2)+" y: "+this.y.fromRed().toString(16,2)+">"},yo.prototype.isInfinity=function(){return this.inf},yo.prototype.add=function(e){if(this.inf)return e;if(e.inf)return this;if(this.eq(e))return this.dbl();if(this.neg().eq(e))return this.curve.point(null,null);if(0===this.x.cmp(e.x))return this.curve.point(null,null);var t=this.y.redSub(e.y);0!==t.cmpn(0)&&(t=t.redMul(this.x.redSub(e.x).redInvm()));var n=t.redSqr().redISub(this.x).redISub(e.x),r=t.redMul(this.x.redSub(n)).redISub(this.y);return this.curve.point(n,r)},yo.prototype.dbl=function(){if(this.inf)return this;var e=this.y.redAdd(this.y);if(0===e.cmpn(0))return this.curve.point(null,null);var t=this.curve.a,n=this.x.redSqr(),r=e.redInvm(),i=n.redAdd(n).redIAdd(n).redIAdd(t).redMul(r),s=i.redSqr().redISub(this.x.redAdd(this.x)),a=i.redMul(this.x.redSub(s)).redISub(this.y);return this.curve.point(s,a)},yo.prototype.getX=function(){return this.x.fromRed()},yo.prototype.getY=function(){return this.y.fromRed()},yo.prototype.mul=function(e){return e=new mn(e,16),this.isInfinity()?this:this._hasDoubles(e)?this.curve._fixedNafMul(this,e):this.curve.endo?this.curve._endoWnafMulAdd([this],[e]):this.curve._wnafMul(this,e)},yo.prototype.mulAdd=function(e,t,n){var r=[this,t],i=[e,n];return this.curve.endo?this.curve._endoWnafMulAdd(r,i):this.curve._wnafMulAdd(1,r,i,2)},yo.prototype.jmulAdd=function(e,t,n){var r=[this,t],i=[e,n];return this.curve.endo?this.curve._endoWnafMulAdd(r,i,!0):this.curve._wnafMulAdd(1,r,i,2,!0)},yo.prototype.eq=function(e){return this===e||this.inf===e.inf&&(this.inf||0===this.x.cmp(e.x)&&0===this.y.cmp(e.y))},yo.prototype.neg=function(e){if(this.inf)return this;var t=this.curve.point(this.x,this.y.redNeg());if(e&&this.precomputed){var n=this.precomputed,r=function(e){return e.neg()};t.precomputed={naf:n.naf&&{wnd:n.naf.wnd,points:n.naf.points.map(r)},doubles:n.doubles&&{step:n.doubles.step,points:n.doubles.points.map(r)}}}return t},yo.prototype.toJ=function(){return this.inf?this.curve.jpoint(null,null,null):this.curve.jpoint(this.x,this.y,this.curve.one)},ho(go,lo.BasePoint),fo.prototype.jpoint=function(e,t,n){return new go(this,e,t,n)},go.prototype.toP=function(){if(this.isInfinity())return this.curve.point(null,null);var e=this.z.redInvm(),t=e.redSqr(),n=this.x.redMul(t),r=this.y.redMul(t).redMul(e);return this.curve.point(n,r)},go.prototype.neg=function(){return this.curve.jpoint(this.x,this.y.redNeg(),this.z)},go.prototype.add=function(e){if(this.isInfinity())return e;if(e.isInfinity())return this;var t=e.z.redSqr(),n=this.z.redSqr(),r=this.x.redMul(t),i=e.x.redMul(n),s=this.y.redMul(t.redMul(e.z)),a=e.y.redMul(n.redMul(this.z)),o=r.redSub(i),u=s.redSub(a);if(0===o.cmpn(0))return 0!==u.cmpn(0)?this.curve.jpoint(null,null,null):this.dbl();var l=o.redSqr(),c=l.redMul(o),d=r.redMul(l),h=u.redSqr().redIAdd(c).redISub(d).redISub(d),p=u.redMul(d.redISub(h)).redISub(s.redMul(c)),f=this.z.redMul(e.z).redMul(o);return this.curve.jpoint(h,p,f)},go.prototype.mixedAdd=function(e){if(this.isInfinity())return e.toJ();if(e.isInfinity())return this;var t=this.z.redSqr(),n=this.x,r=e.x.redMul(t),i=this.y,s=e.y.redMul(t).redMul(this.z),a=n.redSub(r),o=i.redSub(s);if(0===a.cmpn(0))return 0!==o.cmpn(0)?this.curve.jpoint(null,null,null):this.dbl();var u=a.redSqr(),l=u.redMul(a),c=n.redMul(u),d=o.redSqr().redIAdd(l).redISub(c).redISub(c),h=o.redMul(c.redISub(d)).redISub(i.redMul(l)),p=this.z.redMul(a);return this.curve.jpoint(d,h,p)},go.prototype.dblp=function(e){if(0===e)return this;if(this.isInfinity())return this;if(!e)return this.dbl();var t;if(this.curve.zeroA||this.curve.threeA){var n=this;for(t=0;t<e;t++)n=n.dbl();return n}var r=this.curve.a,i=this.curve.tinv,s=this.x,a=this.y,o=this.z,u=o.redSqr().redSqr(),l=a.redAdd(a);for(t=0;t<e;t++){var c=s.redSqr(),d=l.redSqr(),h=d.redSqr(),p=c.redAdd(c).redIAdd(c).redIAdd(r.redMul(u)),f=s.redMul(d),m=p.redSqr().redISub(f.redAdd(f)),y=f.redISub(m),g=p.redMul(y);g=g.redIAdd(g).redISub(h);var b=l.redMul(o);t+1<e&&(u=u.redMul(h)),s=m,o=b,l=g}return this.curve.jpoint(s,l.redMul(i),o)},go.prototype.dbl=function(){return this.isInfinity()?this:this.curve.zeroA?this._zeroDbl():this.curve.threeA?this._threeDbl():this._dbl()},go.prototype._zeroDbl=function(){var e,t,n;if(this.zOne){var r=this.x.redSqr(),i=this.y.redSqr(),s=i.redSqr(),a=this.x.redAdd(i).redSqr().redISub(r).redISub(s);a=a.redIAdd(a);var o=r.redAdd(r).redIAdd(r),u=o.redSqr().redISub(a).redISub(a),l=s.redIAdd(s);l=(l=l.redIAdd(l)).redIAdd(l),e=u,t=o.redMul(a.redISub(u)).redISub(l),n=this.y.redAdd(this.y)}else{var c=this.x.redSqr(),d=this.y.redSqr(),h=d.redSqr(),p=this.x.redAdd(d).redSqr().redISub(c).redISub(h);p=p.redIAdd(p);var f=c.redAdd(c).redIAdd(c),m=f.redSqr(),y=h.redIAdd(h);y=(y=y.redIAdd(y)).redIAdd(y),e=m.redISub(p).redISub(p),t=f.redMul(p.redISub(e)).redISub(y),n=(n=this.y.redMul(this.z)).redIAdd(n)}return this.curve.jpoint(e,t,n)},go.prototype._threeDbl=function(){var e,t,n;if(this.zOne){var r=this.x.redSqr(),i=this.y.redSqr(),s=i.redSqr(),a=this.x.redAdd(i).redSqr().redISub(r).redISub(s);a=a.redIAdd(a);var o=r.redAdd(r).redIAdd(r).redIAdd(this.curve.a),u=o.redSqr().redISub(a).redISub(a);e=u;var l=s.redIAdd(s);l=(l=l.redIAdd(l)).redIAdd(l),t=o.redMul(a.redISub(u)).redISub(l),n=this.y.redAdd(this.y)}else{var c=this.z.redSqr(),d=this.y.redSqr(),h=this.x.redMul(d),p=this.x.redSub(c).redMul(this.x.redAdd(c));p=p.redAdd(p).redIAdd(p);var f=h.redIAdd(h),m=(f=f.redIAdd(f)).redAdd(f);e=p.redSqr().redISub(m),n=this.y.redAdd(this.z).redSqr().redISub(d).redISub(c);var y=d.redSqr();y=(y=(y=y.redIAdd(y)).redIAdd(y)).redIAdd(y),t=p.redMul(f.redISub(e)).redISub(y)}return this.curve.jpoint(e,t,n)},go.prototype._dbl=function(){var e=this.curve.a,t=this.x,n=this.y,r=this.z,i=r.redSqr().redSqr(),s=t.redSqr(),a=n.redSqr(),o=s.redAdd(s).redIAdd(s).redIAdd(e.redMul(i)),u=t.redAdd(t),l=(u=u.redIAdd(u)).redMul(a),c=o.redSqr().redISub(l.redAdd(l)),d=l.redISub(c),h=a.redSqr();h=(h=(h=h.redIAdd(h)).redIAdd(h)).redIAdd(h);var p=o.redMul(d).redISub(h),f=n.redAdd(n).redMul(r);return this.curve.jpoint(c,p,f)},go.prototype.trpl=function(){if(!this.curve.zeroA)return this.dbl().add(this);var e=this.x.redSqr(),t=this.y.redSqr(),n=this.z.redSqr(),r=t.redSqr(),i=e.redAdd(e).redIAdd(e),s=i.redSqr(),a=this.x.redAdd(t).redSqr().redISub(e).redISub(r),o=(a=(a=(a=a.redIAdd(a)).redAdd(a).redIAdd(a)).redISub(s)).redSqr(),u=r.redIAdd(r);u=(u=(u=u.redIAdd(u)).redIAdd(u)).redIAdd(u);var l=i.redIAdd(a).redSqr().redISub(s).redISub(o).redISub(u),c=t.redMul(l);c=(c=c.redIAdd(c)).redIAdd(c);var d=this.x.redMul(o).redISub(c);d=(d=d.redIAdd(d)).redIAdd(d);var h=this.y.redMul(l.redMul(u.redISub(l)).redISub(a.redMul(o)));h=(h=(h=h.redIAdd(h)).redIAdd(h)).redIAdd(h);var p=this.z.redAdd(a).redSqr().redISub(n).redISub(o);return this.curve.jpoint(d,h,p)},go.prototype.mul=function(e,t){return e=new mn(e,t),this.curve._wnafMul(this,e)},go.prototype.eq=function(e){if("affine"===e.type)return this.eq(e.toJ());if(this===e)return!0;var t=this.z.redSqr(),n=e.z.redSqr();if(0!==this.x.redMul(n).redISub(e.x.redMul(t)).cmpn(0))return!1;var r=t.redMul(this.z),i=n.redMul(e.z);return 0===this.y.redMul(i).redISub(e.y.redMul(r)).cmpn(0)},go.prototype.eqXToP=function(e){var t=this.z.redSqr(),n=e.toRed(this.curve.red).redMul(t);if(0===this.x.cmp(n))return!0;for(var r=e.clone(),i=this.curve.redN.redMul(t);;){if(r.iadd(this.curve.n),r.cmp(this.curve.p)>=0)return!1;if(n.redIAdd(i),0===this.x.cmp(n))return!0}},go.prototype.inspect=function(){return this.isInfinity()?"<EC JPoint Infinity>":"<EC JPoint x: "+this.x.toString(16,2)+" y: "+this.y.toString(16,2)+" z: "+this.z.toString(16,2)+">"},go.prototype.isInfinity=function(){return 0===this.z.cmpn(0)};var bo=eo(function(e,t){var n=t;n.base=lo,n.short=mo,n.mont=null,n.edwards=null}),vo=eo(function(e,t){var n,r=t,i=io.assert;function s(e){this.curve="short"===e.type?new bo.short(e):"edwards"===e.type?new bo.edwards(e):new bo.mont(e),this.g=this.curve.g,this.n=this.curve.n,this.hash=e.hash,i(this.g.validate(),"Invalid curve"),i(this.g.mul(this.n).isInfinity(),"Invalid curve, G*N != O")}function a(e,t){Object.defineProperty(r,e,{configurable:!0,enumerable:!0,get:function(){var n=new s(t);return Object.defineProperty(r,e,{configurable:!0,enumerable:!0,value:n}),n}})}r.PresetCurve=s,a("p192",{type:"short",prime:"p192",p:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff",a:"ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc",b:"64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1",n:"ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831",hash:Da.sha256,gRed:!1,g:["188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012","07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811"]}),a("p224",{type:"short",prime:"p224",p:"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001",a:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe",b:"b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4",n:"ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d",hash:Da.sha256,gRed:!1,g:["b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21","bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34"]}),a("p256",{type:"short",prime:null,p:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff",a:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc",b:"5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b",n:"ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551",hash:Da.sha256,gRed:!1,g:["6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296","4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5"]}),a("p384",{type:"short",prime:null,p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 ffffffff",a:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 fffffffc",b:"b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f 5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef",n:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 f4372ddf 581a0db2 48b0a77a ecec196a ccc52973",hash:Da.sha384,gRed:!1,g:["aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 5502f25d bf55296c 3a545e38 72760ab7","3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 0a60b1ce 1d7e819d 7a431d7c 90ea0e5f"]}),a("p521",{type:"short",prime:null,p:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff",a:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffc",b:"00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b 99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd 3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00",n:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409",hash:Da.sha512,gRed:!1,g:["000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66","00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 3fad0761 353c7086 a272c240 88be9476 9fd16650"]}),a("curve25519",{type:"mont",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"76d06",b:"1",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:Da.sha256,gRed:!1,g:["9"]}),a("ed25519",{type:"edwards",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"-1",c:"1",d:"52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:Da.sha256,gRed:!1,g:["216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a","6666666666666666666666666666666666666666666666666666666666666658"]});try{n=null.crash()}catch(e){n=void 0}a("secp256k1",{type:"short",prime:"k256",p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f",a:"0",b:"7",n:"ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141",h:"1",hash:Da.sha256,beta:"7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee",lambda:"5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72",basis:[{a:"3086d221a7d46bcde86c90e49284eb15",b:"-e4437ed6010e88286f547fa90abfe4c3"},{a:"114ca50f7a8e2f3f657c1108d9d44cfd8",b:"3086d221a7d46bcde86c90e49284eb15"}],gRed:!1,g:["79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798","483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8",n]})});function wo(e){if(!(this instanceof wo))return new wo(e);this.hash=e.hash,this.predResist=!!e.predResist,this.outLen=this.hash.outSize,this.minEntropy=e.minEntropy||this.hash.hmacStrength,this._reseed=null,this.reseedInterval=null,this.K=null,this.V=null;var t=ro.toArray(e.entropy,e.entropyEnc||"hex"),n=ro.toArray(e.nonce,e.nonceEnc||"hex"),r=ro.toArray(e.pers,e.persEnc||"hex");to(t.length>=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._init(t,n,r)}var Ao=wo;wo.prototype._init=function(e,t,n){var r=e.concat(t).concat(n);this.K=new Array(this.outLen/8),this.V=new Array(this.outLen/8);for(var i=0;i<this.V.length;i++)this.K[i]=0,this.V[i]=1;this._update(r),this._reseed=1,this.reseedInterval=281474976710656},wo.prototype._hmac=function(){return new Da.hmac(this.hash,this.K)},wo.prototype._update=function(e){var t=this._hmac().update(this.V).update([0]);e&&(t=t.update(e)),this.K=t.digest(),this.V=this._hmac().update(this.V).digest(),e&&(this.K=this._hmac().update(this.V).update([1]).update(e).digest(),this.V=this._hmac().update(this.V).digest())},wo.prototype.reseed=function(e,t,n,r){"string"!=typeof t&&(r=n,n=t,t=null),e=ro.toArray(e,t),n=ro.toArray(n,r),to(e.length>=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._update(e.concat(n||[])),this._reseed=1},wo.prototype.generate=function(e,t,n,r){if(this._reseed>this.reseedInterval)throw new Error("Reseed is required");"string"!=typeof t&&(r=n,n=t,t=null),n&&(n=ro.toArray(n,r||"hex"),this._update(n));for(var i=[];i.length<e;)this.V=this._hmac().update(this.V).digest(),i=i.concat(this.V);var s=i.slice(0,e);return this._update(n),this._reseed++,ro.encode(s,t)};var To=io.assert;function Eo(e,t){this.ec=e,this.priv=null,this.pub=null,t.priv&&this._importPrivate(t.priv,t.privEnc),t.pub&&this._importPublic(t.pub,t.pubEnc)}var So=Eo;Eo.fromPublic=function(e,t,n){return t instanceof Eo?t:new Eo(e,{pub:t,pubEnc:n})},Eo.fromPrivate=function(e,t,n){return t instanceof Eo?t:new Eo(e,{priv:t,privEnc:n})},Eo.prototype.validate=function(){var e=this.getPublic();return e.isInfinity()?{result:!1,reason:"Invalid public key"}:e.validate()?e.mul(this.ec.curve.n).isInfinity()?{result:!0,reason:null}:{result:!1,reason:"Public key * N != O"}:{result:!1,reason:"Public key is not a point"}},Eo.prototype.getPublic=function(e,t){return"string"==typeof e&&(t=e,e=null),this.pub||(this.pub=this.ec.g.mul(this.priv)),t?this.pub.encode(t,e):this.pub},Eo.prototype.getPrivate=function(e){return"hex"===e?this.priv.toString(16,2):this.priv},Eo.prototype._importPrivate=function(e,t){this.priv=new mn(e,t||16),this.priv=this.priv.umod(this.ec.curve.n)},Eo.prototype._importPublic=function(e,t){if(e.x||e.y)return"mont"===this.ec.curve.type?To(e.x,"Need x coordinate"):"short"!==this.ec.curve.type&&"edwards"!==this.ec.curve.type||To(e.x&&e.y,"Need both x and y coordinate"),void(this.pub=this.ec.curve.point(e.x,e.y));this.pub=this.ec.curve.decodePoint(e,t)},Eo.prototype.derive=function(e){return e.validate()||To(e.validate(),"public point not validated"),e.mul(this.priv).getX()},Eo.prototype.sign=function(e,t,n){return this.ec.sign(e,this,t,n)},Eo.prototype.verify=function(e,t,n){return this.ec.verify(e,t,this,void 0,n)},Eo.prototype.inspect=function(){return"<Key priv: "+(this.priv&&this.priv.toString(16,2))+" pub: "+(this.pub&&this.pub.inspect())+" >"};var Io=io.assert;function ko(e,t){if(e instanceof ko)return e;this._importDER(e,t)||(Io(e.r&&e.s,"Signature without r or s"),this.r=new mn(e.r,16),this.s=new mn(e.s,16),this.recoveryParam=void 0===e.recoveryParam?null:e.recoveryParam)}var Co=ko;function No(){this.place=0}function xo(e,t){var n=e[t.place++];if(!(128&n))return n;var r=15&n;if(0===r||r>4)return!1;if(0===e[t.place])return!1;for(var i=0,s=0,a=t.place;s<r;s++,a++)i<<=8,i|=e[a],i>>>=0;return!(i<=127)&&(t.place=a,i)}function _o(e){for(var t=0,n=e.length-1;!e[t]&&!(128&e[t+1])&&t<n;)t++;return 0===t?e:e.slice(t)}function Ro(e,t){if(t<128)e.push(t);else{var n=1+(Math.log(t)/Math.LN2>>>3);for(e.push(128|n);--n;)e.push(t>>>(n<<3)&255);e.push(t)}}ko.prototype._importDER=function(e,t){e=io.toArray(e,t);var n=new No;if(48!==e[n.place++])return!1;var r=xo(e,n);if(!1===r)return!1;if(r+n.place!==e.length)return!1;if(2!==e[n.place++])return!1;var i=xo(e,n);if(!1===i)return!1;if(0!=(128&e[n.place]))return!1;var s=e.slice(n.place,i+n.place);if(n.place+=i,2!==e[n.place++])return!1;var a=xo(e,n);if(!1===a)return!1;if(e.length!==a+n.place)return!1;if(0!=(128&e[n.place]))return!1;var o=e.slice(n.place,a+n.place);if(0===s[0]){if(!(128&s[1]))return!1;s=s.slice(1)}if(0===o[0]){if(!(128&o[1]))return!1;o=o.slice(1)}return this.r=new mn(s),this.s=new mn(o),this.recoveryParam=null,!0},ko.prototype.toDER=function(e){var t=this.r.toArray(),n=this.s.toArray();for(128&t[0]&&(t=[0].concat(t)),128&n[0]&&(n=[0].concat(n)),t=_o(t),n=_o(n);!(n[0]||128&n[1]);)n=n.slice(1);var r=[2];Ro(r,t.length),(r=r.concat(t)).push(2),Ro(r,n.length);var i=r.concat(n),s=[48];return Ro(s,i.length),s=s.concat(i),io.encode(s,e)};var Mo=function(){throw new Error("unsupported")},Po=io.assert;function Oo(e){if(!(this instanceof Oo))return new Oo(e);"string"==typeof e&&(Po(Object.prototype.hasOwnProperty.call(vo,e),"Unknown curve "+e),e=vo[e]),e instanceof vo.PresetCurve&&(e={curve:e}),this.curve=e.curve.curve,this.n=this.curve.n,this.nh=this.n.ushrn(1),this.g=this.curve.g,this.g=e.curve.g,this.g.precompute(e.curve.n.bitLength()+1),this.hash=e.hash||e.curve.hash}var Bo=Oo;Oo.prototype.keyPair=function(e){return new So(this,e)},Oo.prototype.keyFromPrivate=function(e,t){return So.fromPrivate(this,e,t)},Oo.prototype.keyFromPublic=function(e,t){return So.fromPublic(this,e,t)},Oo.prototype.genKeyPair=function(e){e||(e={});for(var t=new Ao({hash:this.hash,pers:e.pers,persEnc:e.persEnc||"utf8",entropy:e.entropy||Mo(),entropyEnc:e.entropy&&e.entropyEnc||"utf8",nonce:this.n.toArray()}),n=this.n.byteLength(),r=this.n.sub(new mn(2));;){var i=new mn(t.generate(n));if(!(i.cmp(r)>0))return i.iaddn(1),this.keyFromPrivate(i)}},Oo.prototype._truncateToN=function(e,t,n){var r;if(mn.isBN(e)||"number"==typeof e)r=(e=new mn(e,16)).byteLength();else if("object"==typeof e)r=e.length,e=new mn(e,16);else{var i=e.toString();r=i.length+1>>>1,e=new mn(i,16)}"number"!=typeof n&&(n=8*r);var s=n-this.n.bitLength();return s>0&&(e=e.ushrn(s)),!t&&e.cmp(this.n)>=0?e.sub(this.n):e},Oo.prototype.sign=function(e,t,n,r){if("object"==typeof n&&(r=n,n=null),r||(r={}),"string"!=typeof e&&"number"!=typeof e&&!mn.isBN(e)){Po("object"==typeof e&&e&&"number"==typeof e.length,"Expected message to be an array-like, a hex string, or a BN instance"),Po(e.length>>>0===e.length);for(var i=0;i<e.length;i++)Po((255&e[i])===e[i])}t=this.keyFromPrivate(t,n),e=this._truncateToN(e,!1,r.msgBitLength),Po(!e.isNeg(),"Can not sign a negative message");var s=this.n.byteLength(),a=t.getPrivate().toArray("be",s),o=e.toArray("be",s);Po(new mn(o).eq(e),"Can not sign message");for(var u=new Ao({hash:this.hash,entropy:a,nonce:o,pers:r.pers,persEnc:r.persEnc||"utf8"}),l=this.n.sub(new mn(1)),c=0;;c++){var d=r.k?r.k(c):new mn(u.generate(this.n.byteLength()));if(!((d=this._truncateToN(d,!0)).cmpn(1)<=0||d.cmp(l)>=0)){var h=this.g.mul(d);if(!h.isInfinity()){var p=h.getX(),f=p.umod(this.n);if(0!==f.cmpn(0)){var m=d.invm(this.n).mul(f.mul(t.getPrivate()).iadd(e));if(0!==(m=m.umod(this.n)).cmpn(0)){var y=(h.getY().isOdd()?1:0)|(0!==p.cmp(f)?2:0);return r.canonical&&m.cmp(this.nh)>0&&(m=this.n.sub(m),y^=1),new Co({r:f,s:m,recoveryParam:y})}}}}}},Oo.prototype.verify=function(e,t,n,r,i){i||(i={}),e=this._truncateToN(e,!1,i.msgBitLength),n=this.keyFromPublic(n,r);var s=(t=new Co(t,"hex")).r,a=t.s;if(s.cmpn(1)<0||s.cmp(this.n)>=0)return!1;if(a.cmpn(1)<0||a.cmp(this.n)>=0)return!1;var o,u=a.invm(this.n),l=u.mul(e).umod(this.n),c=u.mul(s).umod(this.n);return this.curve._maxwellTrick?!(o=this.g.jmulAdd(l,n.getPublic(),c)).isInfinity()&&o.eqXToP(s):!(o=this.g.mulAdd(l,n.getPublic(),c)).isInfinity()&&0===o.getX().umod(this.n).cmp(s)},Oo.prototype.recoverPubKey=function(e,t,n,r){Po((3&n)===n,"The recovery param is more than two bits"),t=new Co(t,r);var i=this.n,s=new mn(e),a=t.r,o=t.s,u=1&n,l=n>>1;if(a.cmp(this.curve.p.umod(this.curve.n))>=0&&l)throw new Error("Unable to find sencond key candinate");a=this.curve.pointFromX(l?a.add(this.curve.n):a,u);var c=t.r.invm(i),d=i.sub(s).mul(c).umod(i),h=o.mul(c).umod(i);return this.g.mulAdd(d,a,h)},Oo.prototype.getKeyRecoveryParam=function(e,t,n,r){if(null!==(t=new Co(t,r)).recoveryParam)return t.recoveryParam;for(var i=0;i<4;i++){var s;try{s=this.recoverPubKey(e,t,i)}catch(e){continue}if(s.eq(n))return i}throw new Error("Unable to find valid recovery factor")};var Do=eo(function(e,t){var n=t;n.version="6.6.1",n.utils=io,n.rand=function(){throw new Error("unsupported")},n.curve=bo,n.curves=vo,n.ec=Bo,n.eddsa=null}).ec;const Fo=new In("signing-key/5.8.0");let Lo=null;function Uo(){return Lo||(Lo=new Do("secp256k1")),Lo}class Go{constructor(e){gr(this,"curve","secp256k1"),gr(this,"privateKey",Fn(e)),32!==Ln(this.privateKey)&&Fo.throwArgumentError("invalid private key","privateKey","[[ REDACTED ]]");const t=Uo().keyFromPrivate(Mn(this.privateKey));gr(this,"publicKey","0x"+t.getPublic(!1,"hex")),gr(this,"compressedPublicKey","0x"+t.getPublic(!0,"hex")),gr(this,"_isSigningKey",!0)}_addPoint(e){const t=Uo().keyFromPublic(Mn(this.publicKey)),n=Uo().keyFromPublic(Mn(e));return"0x"+t.pub.add(n.pub).encodeCompressed("hex")}signDigest(e){const t=Uo().keyFromPrivate(Mn(this.privateKey)),n=Mn(e);32!==n.length&&Fo.throwArgumentError("bad digest length","digest",e);const r=t.sign(n,{canonical:!0});return Vn({recoveryParam:r.recoveryParam,r:qn("0x"+r.r.toString(16),32),s:qn("0x"+r.s.toString(16),32)})}computeSharedSecret(e){const t=Uo().keyFromPrivate(Mn(this.privateKey)),n=Uo().keyFromPublic(Mn(Ho(e)));return qn("0x"+t.derive(n.getPublic()).toString(16),32)}static isSigningKey(e){return!(!e||!e._isSigningKey)}}function Ho(e,t){const n=Mn(e);if(32===n.length){const e=new Go(n);return t?"0x"+Uo().keyFromPrivate(n).getPublic(!0,"hex"):e.publicKey}return 33===n.length?t?Fn(n):"0x"+Uo().keyFromPublic(n).getPublic(!1,"hex"):65===n.length?t?"0x"+Uo().keyFromPublic(n).getPublic(!0,"hex"):Fn(n):Fo.throwArgumentError("invalid public or private key","key","[REDACTED]")}const qo=new In("transactions/5.8.0");var Vo;function zo(e){return"0x"===e?null:Gi(e)}function jo(e){return"0x"===e?qr:Xn.from(e)}!function(e){e[e.legacy=0]="legacy",e[e.eip2930=1]="eip2930",e[e.eip1559=2]="eip1559"}(Vo||(Vo={}));const Ko=[{name:"nonce",maxLength:32,numeric:!0},{name:"gasPrice",maxLength:32,numeric:!0},{name:"gasLimit",maxLength:32,numeric:!0},{name:"to",length:20},{name:"value",maxLength:32,numeric:!0},{name:"data"}],Wo={chainId:!0,data:!0,gasLimit:!0,gasPrice:!0,nonce:!0,to:!0,type:!0,value:!0};function Jo(e){return Gi(Un(Wr(Un(Ho(e),1)),12))}function Qo(e,t){return Jo(function(e,t){const n=Vn(t),r={r:Mn(n.r),s:Mn(n.s)};return"0x"+Uo().recoverPubKey(Mn(e),r,n.recoveryParam).encode("hex",!1)}(Mn(e),t))}function Yo(e,t){const n=On(Xn.from(e).toHexString());return n.length>32&&qo.throwArgumentError("invalid length for "+t,"transaction:"+t,e),n}function Xo(e,t){return{address:Gi(e),storageKeys:(t||[]).map((t,n)=>(32!==Ln(t)&&qo.throwArgumentError("invalid access list storageKey",`accessList[${e}:${n}]`,t),t.toLowerCase()))}}function Zo(e){if(Array.isArray(e))return e.map((e,t)=>Array.isArray(e)?(e.length>2&&qo.throwArgumentError("access list expected to be [ address, storageKeys[] ]",`value[${t}]`,e),Xo(e[0],e[1])):Xo(e.address,e.storageKeys));const t=Object.keys(e).map(t=>{const n=e[t].reduce((e,t)=>(e[t]=!0,e),{});return Xo(t,Object.keys(n).sort())});return t.sort((e,t)=>e.address.localeCompare(t.address)),t}function $o(e){return Zo(e).map(e=>[e.address,e.storageKeys])}function eu(e,t){if(null!=e.gasPrice){const t=Xn.from(e.gasPrice),n=Xn.from(e.maxFeePerGas||0);t.eq(n)||qo.throwArgumentError("mismatch EIP-1559 gasPrice != maxFeePerGas","tx",{gasPrice:t,maxFeePerGas:n})}const n=[Yo(e.chainId||0,"chainId"),Yo(e.nonce||0,"nonce"),Yo(e.maxPriorityFeePerGas||0,"maxPriorityFeePerGas"),Yo(e.maxFeePerGas||0,"maxFeePerGas"),Yo(e.gasLimit||0,"gasLimit"),null!=e.to?Gi(e.to):"0x",Yo(e.value||0,"value"),e.data||"0x",$o(e.accessList||[])];if(t){const e=Vn(t);n.push(Yo(e.recoveryParam,"recoveryParam")),n.push(On(e.r)),n.push(On(e.s))}return Gn(["0x02",Mi(n)])}function tu(e,t){const n=[Yo(e.chainId||0,"chainId"),Yo(e.nonce||0,"nonce"),Yo(e.gasPrice||0,"gasPrice"),Yo(e.gasLimit||0,"gasLimit"),null!=e.to?Gi(e.to):"0x",Yo(e.value||0,"value"),e.data||"0x",$o(e.accessList||[])];if(t){const e=Vn(t);n.push(Yo(e.recoveryParam,"recoveryParam")),n.push(On(e.r)),n.push(On(e.s))}return Gn(["0x01",Mi(n)])}function nu(e,t){if(null==e.type||0===e.type)return null!=e.accessList&&qo.throwArgumentError("untyped transactions do not support accessList; include type: 1","transaction",e),function(e,t){wr(e,Wo);const n=[];Ko.forEach(function(t){let r=e[t.name]||[];const i={};t.numeric&&(i.hexPad="left"),r=Mn(Fn(r,i)),t.length&&r.length!==t.length&&r.length>0&&qo.throwArgumentError("invalid length for "+t.name,"transaction:"+t.name,r),t.maxLength&&(r=On(r),r.length>t.maxLength&&qo.throwArgumentError("invalid length for "+t.name,"transaction:"+t.name,r)),n.push(Fn(r))});let r=0;if(null!=e.chainId?(r=e.chainId,"number"!=typeof r&&qo.throwArgumentError("invalid transaction.chainId","transaction",e)):t&&!xn(t)&&t.v>28&&(r=Math.floor((t.v-35)/2)),0!==r&&(n.push(Fn(r)),n.push("0x"),n.push("0x")),!t)return Mi(n);const i=Vn(t);let s=27+i.recoveryParam;return 0!==r?(n.pop(),n.pop(),n.pop(),s+=2*r+8,i.v>28&&i.v!==s&&qo.throwArgumentError("transaction.chainId/signature.v mismatch","signature",t)):i.v!==s&&qo.throwArgumentError("transaction.chainId/signature.v mismatch","signature",t),n.push(Fn(s)),n.push(On(Mn(i.r))),n.push(On(Mn(i.s))),Mi(n)}(e,t);switch(e.type){case 1:return tu(e,t);case 2:return eu(e,t)}return qo.throwError(`unsupported transaction type: ${e.type}`,In.errors.UNSUPPORTED_OPERATION,{operation:"serializeTransaction",transactionType:e.type})}function ru(e,t,n){try{const n=jo(t[0]).toNumber();if(0!==n&&1!==n)throw new Error("bad recid");e.v=n}catch(e){qo.throwArgumentError("invalid v for transaction type: 1","v",t[0])}e.r=qn(t[1],32),e.s=qn(t[2],32);try{const t=Wr(n(e));e.from=Qo(t,{r:e.r,s:e.s,recoveryParam:e.v})}catch(e){}}const iu=new In($a);class su{constructor(){this.formats=this.getDefaultFormats()}getDefaultFormats(){const e={},t=this.address.bind(this),n=this.bigNumber.bind(this),r=this.blockTag.bind(this),i=this.data.bind(this),s=this.hash.bind(this),a=this.hex.bind(this),o=this.number.bind(this),u=this.type.bind(this);return e.transaction={hash:s,type:u,accessList:su.allowNull(this.accessList.bind(this),null),blockHash:su.allowNull(s,null),blockNumber:su.allowNull(o,null),transactionIndex:su.allowNull(o,null),confirmations:su.allowNull(o,null),from:t,gasPrice:su.allowNull(n),maxPriorityFeePerGas:su.allowNull(n),maxFeePerGas:su.allowNull(n),gasLimit:n,to:su.allowNull(t,null),value:n,nonce:o,data:i,r:su.allowNull(this.uint256),s:su.allowNull(this.uint256),v:su.allowNull(o),creates:su.allowNull(t,null),raw:su.allowNull(i)},e.transactionRequest={from:su.allowNull(t),nonce:su.allowNull(o),gasLimit:su.allowNull(n),gasPrice:su.allowNull(n),maxPriorityFeePerGas:su.allowNull(n),maxFeePerGas:su.allowNull(n),to:su.allowNull(t),value:su.allowNull(n),data:su.allowNull(e=>this.data(e,!0)),type:su.allowNull(o),accessList:su.allowNull(this.accessList.bind(this),null)},e.receiptLog={transactionIndex:o,blockNumber:o,transactionHash:s,address:t,topics:su.arrayOf(s),data:i,logIndex:o,blockHash:s},e.receipt={to:su.allowNull(this.address,null),from:su.allowNull(this.address,null),contractAddress:su.allowNull(t,null),transactionIndex:o,root:su.allowNull(a),gasUsed:n,logsBloom:su.allowNull(i),blockHash:s,transactionHash:s,logs:su.arrayOf(this.receiptLog.bind(this)),blockNumber:o,confirmations:su.allowNull(o,null),cumulativeGasUsed:n,effectiveGasPrice:su.allowNull(n),status:su.allowNull(o),type:u},e.block={hash:su.allowNull(s),parentHash:s,number:o,timestamp:o,nonce:su.allowNull(a),difficulty:this.difficulty.bind(this),gasLimit:n,gasUsed:n,miner:su.allowNull(t),extraData:i,transactions:su.allowNull(su.arrayOf(s)),baseFeePerGas:su.allowNull(n)},e.blockWithTransactions=Ar(e.block),e.blockWithTransactions.transactions=su.allowNull(su.arrayOf(this.transactionResponse.bind(this))),e.filter={fromBlock:su.allowNull(r,void 0),toBlock:su.allowNull(r,void 0),blockHash:su.allowNull(s,void 0),address:su.allowNull(t,void 0),topics:su.allowNull(this.topics.bind(this),void 0)},e.filterLog={blockNumber:su.allowNull(o),blockHash:su.allowNull(s),transactionIndex:o,removed:su.allowNull(this.boolean.bind(this)),address:t,data:su.allowFalsish(i,"0x"),topics:su.arrayOf(s),transactionHash:s,logIndex:o},e}accessList(e){return Zo(e||[])}number(e){return"0x"===e?0:Xn.from(e).toNumber()}type(e){return"0x"===e||null==e?0:Xn.from(e).toNumber()}bigNumber(e){return Xn.from(e)}boolean(e){if("boolean"==typeof e)return e;if("string"==typeof e){if("true"===(e=e.toLowerCase()))return!0;if("false"===e)return!1}throw new Error("invalid boolean - "+e)}hex(e,t){return"string"==typeof e&&(t||"0x"===e.substring(0,2)||(e="0x"+e),Bn(e))?e.toLowerCase():iu.throwArgumentError("invalid hash","value",e)}data(e,t){const n=this.hex(e,t);if(n.length%2!=0)throw new Error("invalid data; odd-length - "+e);return n}address(e){return Gi(e)}callAddress(e){if(!Bn(e,32))return null;const t=Gi(Un(e,12));return"0x0000000000000000000000000000000000000000"===t?null:t}contractAddress(e){return Hi(e)}blockTag(e){if(null==e)return"latest";if("earliest"===e)return"0x0";switch(e){case"earliest":return"0x0";case"latest":case"pending":case"safe":case"finalized":return e}if("number"==typeof e||Bn(e))return Hn(e);throw new Error("invalid blockTag")}hash(e,t){const n=this.hex(e,t);return 32!==Ln(n)?iu.throwArgumentError("invalid hash","value",e):n}difficulty(e){if(null==e)return null;const t=Xn.from(e);try{return t.toNumber()}catch(e){}return null}uint256(e){if(!Bn(e))throw new Error("invalid uint256");return qn(e,32)}_block(e,t){null!=e.author&&null==e.miner&&(e.miner=e.author);const n=null!=e._difficulty?e._difficulty:e.difficulty,r=su.check(t,e);return r._difficulty=null==n?null:Xn.from(n),r}block(e){return this._block(e,this.formats.block)}blockWithTransactions(e){return this._block(e,this.formats.blockWithTransactions)}transactionRequest(e){return su.check(this.formats.transactionRequest,e)}transactionResponse(e){null!=e.gas&&null==e.gasLimit&&(e.gasLimit=e.gas),e.to&&Xn.from(e.to).isZero()&&(e.to="0x0000000000000000000000000000000000000000"),null!=e.input&&null==e.data&&(e.data=e.input),null==e.to&&null==e.creates&&(e.creates=this.contractAddress(e)),1!==e.type&&2!==e.type||null!=e.accessList||(e.accessList=[]);const t=su.check(this.formats.transaction,e);if(null!=e.chainId){let n=e.chainId;Bn(n)&&(n=Xn.from(n).toNumber()),t.chainId=n}else{let n=e.networkId;null==n&&null==t.v&&(n=e.chainId),Bn(n)&&(n=Xn.from(n).toNumber()),"number"!=typeof n&&null!=t.v&&(n=(t.v-35)/2,n<0&&(n=0),n=parseInt(n)),"number"!=typeof n&&(n=0),t.chainId=n}return t.blockHash&&"x"===t.blockHash.replace(/0/g,"")&&(t.blockHash=null),t}transaction(e){return function(e){const t=Mn(e);if(t[0]>127)return function(e){const t=Bi(e);9!==t.length&&6!==t.length&&qo.throwArgumentError("invalid raw transaction","rawTransaction",e);const n={nonce:jo(t[0]).toNumber(),gasPrice:jo(t[1]),gasLimit:jo(t[2]),to:zo(t[3]),value:jo(t[4]),data:t[5],chainId:0};if(6===t.length)return n;try{n.v=Xn.from(t[6]).toNumber()}catch(e){return n}if(n.r=qn(t[7],32),n.s=qn(t[8],32),Xn.from(n.r).isZero()&&Xn.from(n.s).isZero())n.chainId=n.v,n.v=0;else{n.chainId=Math.floor((n.v-35)/2),n.chainId<0&&(n.chainId=0);let r=n.v-27;const i=t.slice(0,6);0!==n.chainId&&(i.push(Fn(n.chainId)),i.push("0x"),i.push("0x"),r-=2*n.chainId+8);const s=Wr(Mi(i));try{n.from=Qo(s,{r:Fn(n.r),s:Fn(n.s),recoveryParam:r})}catch(e){}n.hash=Wr(e)}return n.type=null,n}(t);switch(t[0]){case 1:return function(e){const t=Bi(e.slice(1));8!==t.length&&11!==t.length&&qo.throwArgumentError("invalid component count for transaction type: 1","payload",Fn(e));const n={type:1,chainId:jo(t[0]).toNumber(),nonce:jo(t[1]).toNumber(),gasPrice:jo(t[2]),gasLimit:jo(t[3]),to:zo(t[4]),value:jo(t[5]),data:t[6],accessList:Zo(t[7])};return 8===t.length||(n.hash=Wr(e),ru(n,t.slice(8),tu)),n}(t);case 2:return function(e){const t=Bi(e.slice(1));9!==t.length&&12!==t.length&&qo.throwArgumentError("invalid component count for transaction type: 2","payload",Fn(e));const n=jo(t[2]),r=jo(t[3]),i={type:2,chainId:jo(t[0]).toNumber(),nonce:jo(t[1]).toNumber(),maxPriorityFeePerGas:n,maxFeePerGas:r,gasPrice:null,gasLimit:jo(t[4]),to:zo(t[5]),value:jo(t[6]),data:t[7],accessList:Zo(t[8])};return 9===t.length||(i.hash=Wr(e),ru(i,t.slice(9),eu)),i}(t)}return qo.throwError(`unsupported transaction type: ${t[0]}`,In.errors.UNSUPPORTED_OPERATION,{operation:"parseTransaction",transactionType:t[0]})}(e)}receiptLog(e){return su.check(this.formats.receiptLog,e)}receipt(e){const t=su.check(this.formats.receipt,e);if(null!=t.root)if(t.root.length<=4){const e=Xn.from(t.root).toNumber();0===e||1===e?(null!=t.status&&t.status!==e&&iu.throwArgumentError("alt-root-status/status mismatch","value",{root:t.root,status:t.status}),t.status=e,delete t.root):iu.throwArgumentError("invalid alt-root-status","value.root",t.root)}else 66!==t.root.length&&iu.throwArgumentError("invalid root hash","value.root",t.root);return null!=t.status&&(t.byzantium=!0),t}topics(e){return Array.isArray(e)?e.map(e=>this.topics(e)):null!=e?this.hash(e,!0):null}filter(e){return su.check(this.formats.filter,e)}filterLog(e){return su.check(this.formats.filterLog,e)}static check(e,t){const n={};for(const r in e)try{const i=e[r](t[r]);void 0!==i&&(n[r]=i)}catch(e){throw e.checkKey=r,e.checkValue=t[r],e}return n}static allowNull(e,t){return function(n){return null==n?t:e(n)}}static allowFalsish(e,t){return function(n){return n?e(n):t}}static arrayOf(e){return function(t){if(!Array.isArray(t))throw new Error("not an array");const n=[];return t.forEach(function(t){n.push(e(t))}),n}}}var au=function(e,t,n,r){return new(n||(n=Promise))(function(i,s){function a(e){try{u(r.next(e))}catch(e){s(e)}}function o(e){try{u(r.throw(e))}catch(e){s(e)}}function u(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n(function(e){e(t)})).then(a,o)}u((r=r.apply(e,t||[])).next())})};const ou=new In($a);function uu(e){return null==e?"null":(32!==Ln(e)&&ou.throwArgumentError("invalid topic","topic",e),e.toLowerCase())}function lu(e){for(e=e.slice();e.length>0&&null==e[e.length-1];)e.pop();return e.map(e=>{if(Array.isArray(e)){const t={};e.forEach(e=>{t[uu(e)]=!0});const n=Object.keys(t);return n.sort(),n.join("|")}return uu(e)}).join("&")}function cu(e){if("string"==typeof e){if(32===Ln(e=e.toLowerCase()))return"tx:"+e;if(-1===e.indexOf(":"))return e}else{if(Array.isArray(e))return"filter:*:"+lu(e);if(Nr.isForkEvent(e))throw ou.warn("not implemented"),new Error("not implemented");if(e&&"object"==typeof e)return"filter:"+(e.address||"*")+":"+lu(e.topics||[])}throw new Error("invalid event - "+e)}function du(){return(new Date).getTime()}function hu(e){return new Promise(t=>{setTimeout(t,e)})}const pu=["block","network","pending","poll"];class fu{constructor(e,t,n){gr(this,"tag",e),gr(this,"listener",t),gr(this,"once",n),this._lastBlockNumber=-2,this._inflight=!1}get event(){switch(this.type){case"tx":return this.hash;case"filter":return this.filter}return this.tag}get type(){return this.tag.split(":")[0]}get hash(){const e=this.tag.split(":");return"tx"!==e[0]?null:e[1]}get filter(){const e=this.tag.split(":");if("filter"!==e[0])return null;const t=e[1],n=""===(r=e[2])?[]:r.split(/&/g).map(e=>{if(""===e)return[];const t=e.split("|").map(e=>"null"===e?null:e);return 1===t.length?t[0]:t});var r;const i={};return n.length>0&&(i.topics=n),t&&"*"!==t&&(i.address=t),i}pollable(){return this.tag.indexOf(":")>=0||pu.indexOf(this.tag)>=0}}const mu={0:{symbol:"btc",p2pkh:0,p2sh:5,prefix:"bc"},2:{symbol:"ltc",p2pkh:48,p2sh:50,prefix:"ltc"},3:{symbol:"doge",p2pkh:30,p2sh:22},60:{symbol:"eth",ilk:"eth"},61:{symbol:"etc",ilk:"eth"},700:{symbol:"xdai",ilk:"eth"}};function yu(e){return qn(Xn.from(e).toHexString(),32)}function gu(e){return Gr.encode(Pn([e,Un(La(La(e)),0,4)]))}const bu=new RegExp("^(ipfs)://(.*)$","i"),vu=[new RegExp("^(https)://(.*)$","i"),new RegExp("^(data):(.*)$","i"),bu,new RegExp("^eip155:[0-9]+/(erc[0-9]+):(.*)$","i")];function wu(e,t){try{return ti(Au(e,t))}catch(e){}return null}function Au(e,t){if("0x"===e)return null;const n=Xn.from(Un(e,t,t+32)).toNumber(),r=Xn.from(Un(e,n,n+32)).toNumber();return Un(e,n+32,n+32+r)}function Tu(e){return e.match(/^ipfs:\/\/ipfs\//i)?e=e.substring(12):e.match(/^ipfs:\/\//i)?e=e.substring(7):ou.throwArgumentError("unsupported IPFS format","link",e),`https://gateway.ipfs.io/ipfs/${e}`}function Eu(e){const t=Mn(e);if(t.length>32)throw new Error("internal; should not happen");const n=new Uint8Array(32);return n.set(t,32-t.length),n}function Su(e){if(e.length%32==0)return e;const t=new Uint8Array(32*Math.ceil(e.length/32));return t.set(e),t}function Iu(e){const t=[];let n=0;for(let r=0;r<e.length;r++)t.push(null),n+=32;for(let r=0;r<e.length;r++){const i=Mn(e[r]);t[r]=Eu(n),t.push(Eu(i.length)),t.push(Su(i)),n+=32+32*Math.ceil(i.length/32)}return Gn(t)}class ku{constructor(e,t,n,r){gr(this,"provider",e),gr(this,"name",n),gr(this,"address",e.formatter.address(t)),gr(this,"_resolvedAddress",r)}supportsWildcard(){return this._supportsEip2544||(this._supportsEip2544=this.provider.call({to:this.address,data:"0x01ffc9a79061b92300000000000000000000000000000000000000000000000000000000"}).then(e=>Xn.from(e).eq(1)).catch(e=>{if(e.code===In.errors.CALL_EXCEPTION)return!1;throw this._supportsEip2544=null,e})),this._supportsEip2544}_fetch(e,t){return au(this,void 0,void 0,function*(){const n={to:this.address,ccipReadEnabled:!0,data:Gn([e,Ci(this.name),t||"0x"])};let r=!1;var i;(yield this.supportsWildcard())&&(r=!0,n.data=Gn(["0x9061b923",Iu([(i=this.name,Fn(Pn(ki(i).map(e=>{if(e.length>63)throw new Error("invalid DNS encoded entry; length exceeds 63 bytes");const t=new Uint8Array(e.length+1);return t.set(e,1),t[0]=t.length-1,t})))+"00"),n.data])]));try{let e=yield this.provider.call(n);return Mn(e).length%32==4&&ou.throwError("resolver threw error",In.errors.CALL_EXCEPTION,{transaction:n,data:e}),r&&(e=Au(e,0)),e}catch(e){if(e.code===In.errors.CALL_EXCEPTION)return null;throw e}})}_fetchBytes(e,t){return au(this,void 0,void 0,function*(){const n=yield this._fetch(e,t);return null!=n?Au(n,0):null})}_getAddress(e,t){const n=mu[String(e)];if(null==n&&ou.throwError(`unsupported coin type: ${e}`,In.errors.UNSUPPORTED_OPERATION,{operation:`getAddress(${e})`}),"eth"===n.ilk)return this.provider.formatter.address(t);const r=Mn(t);if(null!=n.p2pkh){const e=t.match(/^0x76a9([0-9a-f][0-9a-f])([0-9a-f]*)88ac$/);if(e){const t=parseInt(e[1],16);if(e[2].length===2*t&&t>=1&&t<=75)return gu(Pn([[n.p2pkh],"0x"+e[2]]))}}if(null!=n.p2sh){const e=t.match(/^0xa9([0-9a-f][0-9a-f])([0-9a-f]*)87$/);if(e){const t=parseInt(e[1],16);if(e[2].length===2*t&&t>=1&&t<=75)return gu(Pn([[n.p2sh],"0x"+e[2]]))}}if(null!=n.prefix){const e=r[1];let t=r[0];if(0===t?20!==e&&32!==e&&(t=-1):t=-1,t>=0&&r.length===2+e&&e>=1&&e<=75){const e=function(e){var t=function(e,t,n,r){for(var i=0,s=0,a=[],o=0;o<e.length;++o)for(i=i<<8|e[o],s+=8;s>=5;)a.push(i>>(s-=5)&31);return s>0&&a.push(i<<5-s&31),a}(e);if(Array.isArray(t))return t;throw new Error(t)}(r.slice(2));return e.unshift(t),function(e,t,n){if(e.length+7+t.length>(n=n||90))throw new TypeError("Exceeds length limit");var r=function(e){for(var t=1,n=0;n<e.length;++n){var r=e.charCodeAt(n);if(r<33||r>126)return"Invalid prefix ("+e+")";t=Za(t)^r>>5}for(t=Za(t),n=0;n<e.length;++n){var i=e.charCodeAt(n);t=Za(t)^31&i}return t}(e=e.toLowerCase());if("string"==typeof r)throw new Error(r);for(var i=e+"1",s=0;s<t.length;++s){var a=t[s];if(a>>5!=0)throw new Error("Non 5-bit word");r=Za(r)^a,i+=Ja.charAt(a)}for(s=0;s<6;++s)r=Za(r);for(r^=1,s=0;s<6;++s)i+=Ja.charAt(r>>5*(5-s)&31);return i}(n.prefix,e)}}return null}getAddress(e){return au(this,void 0,void 0,function*(){if(null==e&&(e=60),60===e)try{const e=yield this._fetch("0x3b3b57de");return"0x"===e||"0x0000000000000000000000000000000000000000000000000000000000000000"===e?null:this.provider.formatter.callAddress(e)}catch(e){if(e.code===In.errors.CALL_EXCEPTION)return null;throw e}const t=yield this._fetchBytes("0xf1cb7e06",yu(e));if(null==t||"0x"===t)return null;const n=this._getAddress(e,t);return null==n&&ou.throwError("invalid or unsupported coin data",In.errors.UNSUPPORTED_OPERATION,{operation:`getAddress(${e})`,coinType:e,data:t}),n})}getAvatar(){return au(this,void 0,void 0,function*(){const e=[{type:"name",content:this.name}];try{const t=yield this.getText("avatar");if(null==t)return null;for(let n=0;n<vu.length;n++){const r=t.match(vu[n]);if(null==r)continue;const i=r[1].toLowerCase();switch(i){case"https":return e.push({type:"url",content:t}),{linkage:e,url:t};case"data":return e.push({type:"data",content:t}),{linkage:e,url:t};case"ipfs":return e.push({type:"ipfs",content:t}),{linkage:e,url:Tu(t)};case"erc721":case"erc1155":{const n="erc721"===i?"0xc87b56dd":"0x0e89341c";e.push({type:i,content:t});const s=this._resolvedAddress||(yield this.getAddress()),a=(r[2]||"").split("/");if(2!==a.length)return null;const o=yield this.provider.formatter.address(a[0]),u=qn(Xn.from(a[1]).toHexString(),32);if("erc721"===i){const t=this.provider.formatter.callAddress(yield this.provider.call({to:o,data:Gn(["0x6352211e",u])}));if(s!==t)return null;e.push({type:"owner",content:t})}else if("erc1155"===i){const t=Xn.from(yield this.provider.call({to:o,data:Gn(["0x00fdd58e",qn(s,32),u])}));if(t.isZero())return null;e.push({type:"balance",content:t.toString()})}const l={to:this.provider.formatter.address(a[0]),data:Gn([n,u])};let c=wu(yield this.provider.call(l),0);if(null==c)return null;e.push({type:"metadata-url-base",content:c}),"erc1155"===i&&(c=c.replace("{id}",u.substring(2)),e.push({type:"metadata-url-expanded",content:c})),c.match(/^ipfs:/i)&&(c=Tu(c)),e.push({type:"metadata-url",content:c});const d=yield Ka(c);if(!d)return null;e.push({type:"metadata",content:JSON.stringify(d)});let h=d.image;if("string"!=typeof h)return null;if(h.match(/^(https:\/\/|data:)/i));else{if(null==h.match(bu))return null;e.push({type:"url-ipfs",content:h}),h=Tu(h)}return e.push({type:"url",content:h}),{linkage:e,url:h}}}}}catch(e){}return null})}getContentHash(){return au(this,void 0,void 0,function*(){const e=yield this._fetchBytes("0xbc1c58d1");if(null==e||"0x"===e)return null;const t=e.match(/^0xe3010170(([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])([0-9a-f]*))$/);if(t){const e=parseInt(t[3],16);if(t[4].length===2*e)return"ipfs://"+Gr.encode("0x"+t[1])}const n=e.match(/^0xe5010172(([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])([0-9a-f]*))$/);if(n){const e=parseInt(n[3],16);if(n[4].length===2*e)return"ipns://"+Gr.encode("0x"+n[1])}const r=e.match(/^0xe40101fa011b20([0-9a-f]*)$/);if(r&&64===r[1].length)return"bzz://"+r[1];const i=e.match(/^0x90b2c605([0-9a-f]*)$/);if(i&&68===i[1].length){const e={"=":"","+":"-","/":"_"};return"sia://"+Lr("0x"+i[1]).replace(/[=+\/]/g,t=>e[t])}return ou.throwError("invalid or unsupported content hash data",In.errors.UNSUPPORTED_OPERATION,{operation:"getContentHash()",data:e})})}getText(e){return au(this,void 0,void 0,function*(){let t=ei(e);t=Pn([yu(64),yu(t.length),t]),t.length%32!=0&&(t=Pn([t,qn("0x",32-e.length%32)]));const n=yield this._fetchBytes("0x59d1d43c",Fn(t));return null==n||"0x"===n?null:ti(n)})}}let Cu=null,Nu=1;class xu extends xr{constructor(e){if(super(),this._events=[],this._emitted={block:-2},this.disableCcipRead=!1,this.formatter=new.target.getFormatter(),gr(this,"anyNetwork","any"===e),this.anyNetwork&&(e=this.detectNetwork()),e instanceof Promise)this._networkPromise=e,e.catch(e=>{}),this._ready().catch(e=>{});else{const t=br(new.target,"getNetwork")(e);t?(gr(this,"_network",t),this.emit("network",t,null)):ou.throwArgumentError("invalid network","network",e)}this._maxInternalBlockNumber=-1024,this._lastBlockNumber=-2,this._maxFilterBlockRange=10,this._pollingInterval=4e3,this._fastQueryDate=0}_ready(){return au(this,void 0,void 0,function*(){if(null==this._network){let e=null;if(this._networkPromise)try{e=yield this._networkPromise}catch(e){}null==e&&(e=yield this.detectNetwork()),e||ou.throwError("no network detected",In.errors.UNKNOWN_ERROR,{}),null==this._network&&(this.anyNetwork?this._network=e:gr(this,"_network",e),this.emit("network",e,null))}return this._network})}get ready(){return Wa(()=>this._ready().then(e=>e,e=>{if(e.code!==In.errors.NETWORK_ERROR||"noNetwork"!==e.event)throw e}))}static getFormatter(){return null==Cu&&(Cu=new su),Cu}static getNetwork(e){return function(e){if(null==e)return null;if("number"==typeof e){for(const t in Dr){const n=Dr[t];if(n.chainId===e)return{name:n.name,chainId:n.chainId,ensAddress:n.ensAddress||null,_defaultProvider:n._defaultProvider||null}}return{chainId:e,name:"unknown"}}if("string"==typeof e){const t=Dr[e];return null==t?null:{name:t.name,chainId:t.chainId,ensAddress:t.ensAddress,_defaultProvider:t._defaultProvider||null}}const t=Dr[e.name];if(!t)return"number"!=typeof e.chainId&&_r.throwArgumentError("invalid network chainId","network",e),e;0!==e.chainId&&e.chainId!==t.chainId&&_r.throwArgumentError("network chainId mismatch","network",e);let n=e._defaultProvider||null;var r;return null==n&&t._defaultProvider&&(n=(r=t._defaultProvider)&&"function"==typeof r.renetwork?t._defaultProvider.renetwork(e):t._defaultProvider),{name:e.name,chainId:t.chainId,ensAddress:e.ensAddress||t.ensAddress||null,_defaultProvider:n}}(null==e?"homestead":e)}ccipReadFetch(e,t,n){return au(this,void 0,void 0,function*(){if(this.disableCcipRead||0===n.length)return null;const r=e.to.toLowerCase(),i=t.toLowerCase(),s=[];for(let e=0;e<n.length;e++){const t=n[e],a=t.replace("{sender}",r).replace("{data}",i),o=t.indexOf("{data}")>=0?null:JSON.stringify({data:i,sender:r}),u=yield Ka({url:a,errorPassThrough:!0},o,(e,t)=>(e.status=t.statusCode,e));if(u.data)return u.data;const l=u.message||"unknown error";if(u.status>=400&&u.status<500)return ou.throwError(`response not found during CCIP fetch: ${l}`,In.errors.SERVER_ERROR,{url:t,errorMessage:l});s.push(l)}return ou.throwError(`error encountered during CCIP fetch: ${s.map(e=>JSON.stringify(e)).join(", ")}`,In.errors.SERVER_ERROR,{urls:n,errorMessages:s})})}_getInternalBlockNumber(e){return au(this,void 0,void 0,function*(){if(yield this._ready(),e>0)for(;this._internalBlockNumber;){const t=this._internalBlockNumber;try{const n=yield t;if(du()-n.respTime<=e)return n.blockNumber;break}catch(e){if(this._internalBlockNumber===t)break}}const t=du(),n=vr({blockNumber:this.perform("getBlockNumber",{}),networkError:this.getNetwork().then(e=>null,e=>e)}).then(({blockNumber:e,networkError:r})=>{if(r)throw this._internalBlockNumber===n&&(this._internalBlockNumber=null),r;const i=du();return(e=Xn.from(e).toNumber())<this._maxInternalBlockNumber&&(e=this._maxInternalBlockNumber),this._maxInternalBlockNumber=e,this._setFastBlockNumber(e),{blockNumber:e,reqTime:t,respTime:i}});return this._internalBlockNumber=n,n.catch(e=>{this._internalBlockNumber===n&&(this._internalBlockNumber=null)}),(yield n).blockNumber})}poll(){return au(this,void 0,void 0,function*(){const e=Nu++,t=[];let n=null;try{n=yield this._getInternalBlockNumber(100+this.pollingInterval/2)}catch(e){return void this.emit("error",e)}if(this._setFastBlockNumber(n),this.emit("poll",e,n),n!==this._lastBlockNumber){if(-2===this._emitted.block&&(this._emitted.block=n-1),Math.abs(this._emitted.block-n)>1e3)ou.warn(`network block skew detected; skipping block events (emitted=${this._emitted.block} blockNumber${n})`),this.emit("error",ou.makeError("network block skew detected",In.errors.NETWORK_ERROR,{blockNumber:n,event:"blockSkew",previousBlockNumber:this._emitted.block})),this.emit("block",n);else for(let e=this._emitted.block+1;e<=n;e++)this.emit("block",e);this._emitted.block!==n&&(this._emitted.block=n,Object.keys(this._emitted).forEach(e=>{if("block"===e)return;const t=this._emitted[e];"pending"!==t&&n-t>12&&delete this._emitted[e]})),-2===this._lastBlockNumber&&(this._lastBlockNumber=n-1),this._events.forEach(e=>{switch(e.type){case"tx":{const n=e.hash;let r=this.getTransactionReceipt(n).then(e=>e&&null!=e.blockNumber?(this._emitted["t:"+n]=e.blockNumber,this.emit(n,e),null):null).catch(e=>{this.emit("error",e)});t.push(r);break}case"filter":if(!e._inflight){e._inflight=!0,-2===e._lastBlockNumber&&(e._lastBlockNumber=n-1);const r=e.filter;r.fromBlock=e._lastBlockNumber+1,r.toBlock=n;const i=r.toBlock-this._maxFilterBlockRange;i>r.fromBlock&&(r.fromBlock=i),r.fromBlock<0&&(r.fromBlock=0);const s=this.getLogs(r).then(t=>{e._inflight=!1,0!==t.length&&t.forEach(t=>{t.blockNumber>e._lastBlockNumber&&(e._lastBlockNumber=t.blockNumber),this._emitted["b:"+t.blockHash]=t.blockNumber,this._emitted["t:"+t.transactionHash]=t.blockNumber,this.emit(r,t)})}).catch(t=>{this.emit("error",t),e._inflight=!1});t.push(s)}}}),this._lastBlockNumber=n,Promise.all(t).then(()=>{this.emit("didPoll",e)}).catch(e=>{this.emit("error",e)})}else this.emit("didPoll",e)})}resetEventsBlock(e){this._lastBlockNumber=e-1,this.polling&&this.poll()}get network(){return this._network}detectNetwork(){return au(this,void 0,void 0,function*(){return ou.throwError("provider does not support network detection",In.errors.UNSUPPORTED_OPERATION,{operation:"provider.detectNetwork"})})}getNetwork(){return au(this,void 0,void 0,function*(){const e=yield this._ready(),t=yield this.detectNetwork();if(e.chainId!==t.chainId){if(this.anyNetwork)return this._network=t,this._lastBlockNumber=-2,this._fastBlockNumber=null,this._fastBlockNumberPromise=null,this._fastQueryDate=0,this._emitted.block=-2,this._maxInternalBlockNumber=-1024,this._internalBlockNumber=null,this.emit("network",t,e),yield hu(0),this._network;const n=ou.makeError("underlying network changed",In.errors.NETWORK_ERROR,{event:"changed",network:e,detectedNetwork:t});throw this.emit("error",n),n}return e})}get blockNumber(){return this._getInternalBlockNumber(100+this.pollingInterval/2).then(e=>{this._setFastBlockNumber(e)},e=>{}),null!=this._fastBlockNumber?this._fastBlockNumber:-1}get polling(){return null!=this._poller}set polling(e){e&&!this._poller?(this._poller=setInterval(()=>{this.poll()},this.pollingInterval),this._bootstrapPoll||(this._bootstrapPoll=setTimeout(()=>{this.poll(),this._bootstrapPoll=setTimeout(()=>{this._poller||this.poll(),this._bootstrapPoll=null},this.pollingInterval)},0))):!e&&this._poller&&(clearInterval(this._poller),this._poller=null)}get pollingInterval(){return this._pollingInterval}set pollingInterval(e){if("number"!=typeof e||e<=0||parseInt(String(e))!=e)throw new Error("invalid polling interval");this._pollingInterval=e,this._poller&&(clearInterval(this._poller),this._poller=setInterval(()=>{this.poll()},this._pollingInterval))}_getFastBlockNumber(){const e=du();return e-this._fastQueryDate>2*this._pollingInterval&&(this._fastQueryDate=e,this._fastBlockNumberPromise=this.getBlockNumber().then(e=>((null==this._fastBlockNumber||e>this._fastBlockNumber)&&(this._fastBlockNumber=e),this._fastBlockNumber))),this._fastBlockNumberPromise}_setFastBlockNumber(e){null!=this._fastBlockNumber&&e<this._fastBlockNumber||(this._fastQueryDate=du(),(null==this._fastBlockNumber||e>this._fastBlockNumber)&&(this._fastBlockNumber=e,this._fastBlockNumberPromise=Promise.resolve(e)))}waitForTransaction(e,t,n){return au(this,void 0,void 0,function*(){return this._waitForTransaction(e,null==t?1:t,n||0,null)})}_waitForTransaction(e,t,n,r){return au(this,void 0,void 0,function*(){const i=yield this.getTransactionReceipt(e);return(i?i.confirmations:0)>=t?i:new Promise((i,s)=>{const a=[];let o=!1;const u=function(){return!!o||(o=!0,a.forEach(e=>{e()}),!1)},l=e=>{e.confirmations<t||u()||i(e)};if(this.on(e,l),a.push(()=>{this.removeListener(e,l)}),r){let n=r.startBlock,i=null;const l=a=>au(this,void 0,void 0,function*(){o||(yield hu(1e3),this.getTransactionCount(r.from).then(c=>au(this,void 0,void 0,function*(){if(!o){if(c<=r.nonce)n=a;else{{const t=yield this.getTransaction(e);if(t&&null!=t.blockNumber)return}for(null==i&&(i=n-3,i<r.startBlock&&(i=r.startBlock));i<=a;){if(o)return;const n=yield this.getBlockWithTransactions(i);for(let i=0;i<n.transactions.length;i++){const a=n.transactions[i];if(a.hash===e)return;if(a.from===r.from&&a.nonce===r.nonce){if(o)return;const n=yield this.waitForTransaction(a.hash,t);if(u())return;let i="replaced";return a.data===r.data&&a.to===r.to&&a.value.eq(r.value)?i="repriced":"0x"===a.data&&a.from===a.to&&a.value.isZero()&&(i="cancelled"),void s(ou.makeError("transaction was replaced",In.errors.TRANSACTION_REPLACED,{cancelled:"replaced"===i||"cancelled"===i,reason:i,replacement:this._wrapTransaction(a),hash:e,receipt:n}))}}i++}}o||this.once("block",l)}}),e=>{o||this.once("block",l)}))});if(o)return;this.once("block",l),a.push(()=>{this.removeListener("block",l)})}if("number"==typeof n&&n>0){const e=setTimeout(()=>{u()||s(ou.makeError("timeout exceeded",In.errors.TIMEOUT,{timeout:n}))},n);e.unref&&e.unref(),a.push(()=>{clearTimeout(e)})}})})}getBlockNumber(){return au(this,void 0,void 0,function*(){return this._getInternalBlockNumber(0)})}getGasPrice(){return au(this,void 0,void 0,function*(){yield this.getNetwork();const e=yield this.perform("getGasPrice",{});try{return Xn.from(e)}catch(t){return ou.throwError("bad result from backend",In.errors.SERVER_ERROR,{method:"getGasPrice",result:e,error:t})}})}getBalance(e,t){return au(this,void 0,void 0,function*(){yield this.getNetwork();const n=yield vr({address:this._getAddress(e),blockTag:this._getBlockTag(t)}),r=yield this.perform("getBalance",n);try{return Xn.from(r)}catch(e){return ou.throwError("bad result from backend",In.errors.SERVER_ERROR,{method:"getBalance",params:n,result:r,error:e})}})}getTransactionCount(e,t){return au(this,void 0,void 0,function*(){yield this.getNetwork();const n=yield vr({address:this._getAddress(e),blockTag:this._getBlockTag(t)}),r=yield this.perform("getTransactionCount",n);try{return Xn.from(r).toNumber()}catch(e){return ou.throwError("bad result from backend",In.errors.SERVER_ERROR,{method:"getTransactionCount",params:n,result:r,error:e})}})}getCode(e,t){return au(this,void 0,void 0,function*(){yield this.getNetwork();const n=yield vr({address:this._getAddress(e),blockTag:this._getBlockTag(t)}),r=yield this.perform("getCode",n);try{return Fn(r)}catch(e){return ou.throwError("bad result from backend",In.errors.SERVER_ERROR,{method:"getCode",params:n,result:r,error:e})}})}getStorageAt(e,t,n){return au(this,void 0,void 0,function*(){yield this.getNetwork();const r=yield vr({address:this._getAddress(e),blockTag:this._getBlockTag(n),position:Promise.resolve(t).then(e=>Hn(e))}),i=yield this.perform("getStorageAt",r);try{return Fn(i)}catch(e){return ou.throwError("bad result from backend",In.errors.SERVER_ERROR,{method:"getStorageAt",params:r,result:i,error:e})}})}_wrapTransaction(e,t,n){if(null!=t&&32!==Ln(t))throw new Error("invalid response - sendTransaction");const r=e;return null!=t&&e.hash!==t&&ou.throwError("Transaction hash mismatch from Provider.sendTransaction.",In.errors.UNKNOWN_ERROR,{expectedHash:e.hash,returnedHash:t}),r.wait=(t,r)=>au(this,void 0,void 0,function*(){let i;null==t&&(t=1),null==r&&(r=0),0!==t&&null!=n&&(i={data:e.data,from:e.from,nonce:e.nonce,to:e.to,value:e.value,startBlock:n});const s=yield this._waitForTransaction(e.hash,t,r,i);return null==s&&0===t?null:(this._emitted["t:"+e.hash]=s.blockNumber,0===s.status&&ou.throwError("transaction failed",In.errors.CALL_EXCEPTION,{transactionHash:e.hash,transaction:e,receipt:s}),s)}),r}sendTransaction(e){return au(this,void 0,void 0,function*(){yield this.getNetwork();const t=yield Promise.resolve(e).then(e=>Fn(e)),n=this.formatter.transaction(e);null==n.confirmations&&(n.confirmations=0);const r=yield this._getInternalBlockNumber(100+2*this.pollingInterval);try{const e=yield this.perform("sendTransaction",{signedTransaction:t});return this._wrapTransaction(n,e,r)}catch(e){throw e.transaction=n,e.transactionHash=n.hash,e}})}_getTransactionRequest(e){return au(this,void 0,void 0,function*(){const t=yield e,n={};return["from","to"].forEach(e=>{null!=t[e]&&(n[e]=Promise.resolve(t[e]).then(e=>e?this._getAddress(e):null))}),["gasLimit","gasPrice","maxFeePerGas","maxPriorityFeePerGas","value"].forEach(e=>{null!=t[e]&&(n[e]=Promise.resolve(t[e]).then(e=>e?Xn.from(e):null))}),["type"].forEach(e=>{null!=t[e]&&(n[e]=Promise.resolve(t[e]).then(e=>null!=e?e:null))}),t.accessList&&(n.accessList=this.formatter.accessList(t.accessList)),["data"].forEach(e=>{null!=t[e]&&(n[e]=Promise.resolve(t[e]).then(e=>e?Fn(e):null))}),this.formatter.transactionRequest(yield vr(n))})}_getFilter(e){return au(this,void 0,void 0,function*(){e=yield e;const t={};return null!=e.address&&(t.address=this._getAddress(e.address)),["blockHash","topics"].forEach(n=>{null!=e[n]&&(t[n]=e[n])}),["fromBlock","toBlock"].forEach(n=>{null!=e[n]&&(t[n]=this._getBlockTag(e[n]))}),this.formatter.filter(yield vr(t))})}_call(e,t,n){return au(this,void 0,void 0,function*(){n>=10&&ou.throwError("CCIP read exceeded maximum redirections",In.errors.SERVER_ERROR,{redirects:n,transaction:e});const r=e.to,i=yield this.perform("call",{transaction:e,blockTag:t});if(n>=0&&"latest"===t&&null!=r&&"0x556f1830"===i.substring(0,10)&&Ln(i)%32==4)try{const s=Un(i,4),a=Un(s,0,32);Xn.from(a).eq(r)||ou.throwError("CCIP Read sender did not match",In.errors.CALL_EXCEPTION,{name:"OffchainLookup",signature:"OffchainLookup(address,string[],bytes,bytes4,bytes)",transaction:e,data:i});const o=[],u=Xn.from(Un(s,32,64)).toNumber(),l=Xn.from(Un(s,u,u+32)).toNumber(),c=Un(s,u+32);for(let t=0;t<l;t++){const n=wu(c,32*t);null==n&&ou.throwError("CCIP Read contained corrupt URL string",In.errors.CALL_EXCEPTION,{name:"OffchainLookup",signature:"OffchainLookup(address,string[],bytes,bytes4,bytes)",transaction:e,data:i}),o.push(n)}const d=Au(s,64);Xn.from(Un(s,100,128)).isZero()||ou.throwError("CCIP Read callback selector included junk",In.errors.CALL_EXCEPTION,{name:"OffchainLookup",signature:"OffchainLookup(address,string[],bytes,bytes4,bytes)",transaction:e,data:i});const h=Un(s,96,100),p=Au(s,128),f=yield this.ccipReadFetch(e,d,o);null==f&&ou.throwError("CCIP Read disabled or provided no URLs",In.errors.CALL_EXCEPTION,{name:"OffchainLookup",signature:"OffchainLookup(address,string[],bytes,bytes4,bytes)",transaction:e,data:i});const m={to:r,data:Gn([h,Iu([f,p])])};return this._call(m,t,n+1)}catch(e){if(e.code===In.errors.SERVER_ERROR)throw e}try{return Fn(i)}catch(n){return ou.throwError("bad result from backend",In.errors.SERVER_ERROR,{method:"call",params:{transaction:e,blockTag:t},result:i,error:n})}})}call(e,t){return au(this,void 0,void 0,function*(){yield this.getNetwork();const n=yield vr({transaction:this._getTransactionRequest(e),blockTag:this._getBlockTag(t),ccipReadEnabled:Promise.resolve(e.ccipReadEnabled)});return this._call(n.transaction,n.blockTag,n.ccipReadEnabled?0:-1)})}estimateGas(e){return au(this,void 0,void 0,function*(){yield this.getNetwork();const t=yield vr({transaction:this._getTransactionRequest(e)}),n=yield this.perform("estimateGas",t);try{return Xn.from(n)}catch(e){return ou.throwError("bad result from backend",In.errors.SERVER_ERROR,{method:"estimateGas",params:t,result:n,error:e})}})}_getAddress(e){return au(this,void 0,void 0,function*(){"string"!=typeof(e=yield e)&&ou.throwArgumentError("invalid address or ENS name","name",e);const t=yield this.resolveName(e);return null==t&&ou.throwError("ENS name not configured",In.errors.UNSUPPORTED_OPERATION,{operation:`resolveName(${JSON.stringify(e)})`}),t})}_getBlock(e,t){return au(this,void 0,void 0,function*(){yield this.getNetwork(),e=yield e;let n=-128;const r={includeTransactions:!!t};if(Bn(e,32))r.blockHash=e;else try{r.blockTag=yield this._getBlockTag(e),Bn(r.blockTag)&&(n=parseInt(r.blockTag.substring(2),16))}catch(t){ou.throwArgumentError("invalid block hash or block tag","blockHashOrBlockTag",e)}return Wa(()=>au(this,void 0,void 0,function*(){const e=yield this.perform("getBlock",r);if(null==e)return null!=r.blockHash&&null==this._emitted["b:"+r.blockHash]||null!=r.blockTag&&n>this._emitted.block?null:void 0;if(t){let t=null;for(let n=0;n<e.transactions.length;n++){const r=e.transactions[n];if(null==r.blockNumber)r.confirmations=0;else if(null==r.confirmations){null==t&&(t=yield this._getInternalBlockNumber(100+2*this.pollingInterval));let e=t-r.blockNumber+1;e<=0&&(e=1),r.confirmations=e}}const n=this.formatter.blockWithTransactions(e);return n.transactions=n.transactions.map(e=>this._wrapTransaction(e)),n}return this.formatter.block(e)}),{oncePoll:this})})}getBlock(e){return this._getBlock(e,!1)}getBlockWithTransactions(e){return this._getBlock(e,!0)}getTransaction(e){return au(this,void 0,void 0,function*(){yield this.getNetwork(),e=yield e;const t={transactionHash:this.formatter.hash(e,!0)};return Wa(()=>au(this,void 0,void 0,function*(){const n=yield this.perform("getTransaction",t);if(null==n)return null==this._emitted["t:"+e]?null:void 0;const r=this.formatter.transactionResponse(n);if(null==r.blockNumber)r.confirmations=0;else if(null==r.confirmations){let e=(yield this._getInternalBlockNumber(100+2*this.pollingInterval))-r.blockNumber+1;e<=0&&(e=1),r.confirmations=e}return this._wrapTransaction(r)}),{oncePoll:this})})}getTransactionReceipt(e){return au(this,void 0,void 0,function*(){yield this.getNetwork(),e=yield e;const t={transactionHash:this.formatter.hash(e,!0)};return Wa(()=>au(this,void 0,void 0,function*(){const n=yield this.perform("getTransactionReceipt",t);if(null==n)return null==this._emitted["t:"+e]?null:void 0;if(null==n.blockHash)return;const r=this.formatter.receipt(n);if(null==r.blockNumber)r.confirmations=0;else if(null==r.confirmations){let e=(yield this._getInternalBlockNumber(100+2*this.pollingInterval))-r.blockNumber+1;e<=0&&(e=1),r.confirmations=e}return r}),{oncePoll:this})})}getLogs(e){return au(this,void 0,void 0,function*(){yield this.getNetwork();const t=yield vr({filter:this._getFilter(e)}),n=yield this.perform("getLogs",t);return n.forEach(e=>{null==e.removed&&(e.removed=!1)}),su.arrayOf(this.formatter.filterLog.bind(this.formatter))(n)})}getEtherPrice(){return au(this,void 0,void 0,function*(){return yield this.getNetwork(),this.perform("getEtherPrice",{})})}_getBlockTag(e){return au(this,void 0,void 0,function*(){if("number"==typeof(e=yield e)&&e<0){e%1&&ou.throwArgumentError("invalid BlockTag","blockTag",e);let t=yield this._getInternalBlockNumber(100+2*this.pollingInterval);return t+=e,t<0&&(t=0),this.formatter.blockTag(t)}return this.formatter.blockTag(e)})}getResolver(e){return au(this,void 0,void 0,function*(){let t=e;for(;;){if(""===t||"."===t)return null;if("eth"!==e&&"eth"===t)return null;const n=yield this._getResolver(t,"getResolver");if(null!=n){const r=new ku(this,n,e);return t===e||(yield r.supportsWildcard())?r:null}t=t.split(".").slice(1).join(".")}})}_getResolver(e,t){return au(this,void 0,void 0,function*(){null==t&&(t="ENS");const n=yield this.getNetwork();n.ensAddress||ou.throwError("network does not support ENS",In.errors.UNSUPPORTED_OPERATION,{operation:t,network:n.name});try{const t=yield this.call({to:n.ensAddress,data:"0x0178b8bf"+Ci(e).substring(2)});return this.formatter.callAddress(t)}catch(e){}return null})}resolveName(e){return au(this,void 0,void 0,function*(){e=yield e;try{return Promise.resolve(this.formatter.address(e))}catch(t){if(Bn(e))throw t}"string"!=typeof e&&ou.throwArgumentError("invalid ENS name","name",e);const t=yield this.getResolver(e);return t?yield t.getAddress():null})}lookupAddress(e){return au(this,void 0,void 0,function*(){e=yield e;const t=(e=this.formatter.address(e)).substring(2).toLowerCase()+".addr.reverse",n=yield this._getResolver(t,"lookupAddress");if(null==n)return null;const r=wu(yield this.call({to:n,data:"0x691f3431"+Ci(t).substring(2)}),0);return(yield this.resolveName(r))!=e?null:r})}getAvatar(e){return au(this,void 0,void 0,function*(){let t=null;if(Bn(e)){const n=this.formatter.address(e).substring(2).toLowerCase()+".addr.reverse",r=yield this._getResolver(n,"getAvatar");if(!r)return null;t=new ku(this,r,n);try{const e=yield t.getAvatar();if(e)return e.url}catch(e){if(e.code!==In.errors.CALL_EXCEPTION)throw e}try{const e=wu(yield this.call({to:r,data:"0x691f3431"+Ci(n).substring(2)}),0);t=yield this.getResolver(e)}catch(e){if(e.code!==In.errors.CALL_EXCEPTION)throw e;return null}}else if(t=yield this.getResolver(e),!t)return null;const n=yield t.getAvatar();return null==n?null:n.url})}perform(e,t){return ou.throwError(e+" not implemented",In.errors.NOT_IMPLEMENTED,{operation:e})}_startEvent(e){this.polling=this._events.filter(e=>e.pollable()).length>0}_stopEvent(e){this.polling=this._events.filter(e=>e.pollable()).length>0}_addEventListener(e,t,n){const r=new fu(cu(e),t,n);return this._events.push(r),this._startEvent(r),this}on(e,t){return this._addEventListener(e,t,!1)}once(e,t){return this._addEventListener(e,t,!0)}emit(e,...t){let n=!1,r=[],i=cu(e);return this._events=this._events.filter(e=>e.tag!==i||(setTimeout(()=>{e.listener.apply(this,t)},0),n=!0,!e.once||(r.push(e),!1))),r.forEach(e=>{this._stopEvent(e)}),n}listenerCount(e){if(!e)return this._events.length;let t=cu(e);return this._events.filter(e=>e.tag===t).length}listeners(e){if(null==e)return this._events.map(e=>e.listener);let t=cu(e);return this._events.filter(e=>e.tag===t).map(e=>e.listener)}off(e,t){if(null==t)return this.removeAllListeners(e);const n=[];let r=!1,i=cu(e);return this._events=this._events.filter(e=>e.tag!==i||e.listener!=t||!!r||(r=!0,n.push(e),!1)),n.forEach(e=>{this._stopEvent(e)}),this}removeAllListeners(e){let t=[];if(null==e)t=this._events,this._events=[];else{const n=cu(e);this._events=this._events.filter(e=>e.tag!==n||(t.push(e),!1))}return t.forEach(e=>{this._stopEvent(e)}),this}}var _u=function(e,t,n,r){return new(n||(n=Promise))(function(i,s){function a(e){try{u(r.next(e))}catch(e){s(e)}}function o(e){try{u(r.throw(e))}catch(e){s(e)}}function u(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n(function(e){e(t)})).then(a,o)}u((r=r.apply(e,t||[])).next())})};const Ru=new In($a),Mu=["call","estimateGas"];function Pu(e,t){if(null==e)return null;if("string"==typeof e.message&&e.message.match("reverted")){const n=Bn(e.data)?e.data:null;if(!t||n)return{message:e.message,data:n}}if("object"==typeof e){for(const n in e){const r=Pu(e[n],t);if(r)return r}return null}if("string"==typeof e)try{return Pu(JSON.parse(e),t)}catch(e){}return null}function Ou(e,t,n){const r=n.transaction||n.signedTransaction;if("call"===e){const e=Pu(t,!0);if(e)return e.data;Ru.throwError("missing revert data in call exception; Transaction reverted without a reason string",In.errors.CALL_EXCEPTION,{data:"0x",transaction:r,error:t})}if("estimateGas"===e){let n=Pu(t.body,!1);null==n&&(n=Pu(t,!1)),n&&Ru.throwError("cannot estimate gas; transaction may fail or may require manual gas limit",In.errors.UNPREDICTABLE_GAS_LIMIT,{reason:n.message,method:e,transaction:r,error:t})}let i=t.message;throw t.code===In.errors.SERVER_ERROR&&t.error&&"string"==typeof t.error.message?i=t.error.message:"string"==typeof t.body?i=t.body:"string"==typeof t.responseText&&(i=t.responseText),i=(i||"").toLowerCase(),i.match(/insufficient funds|base fee exceeds gas limit|InsufficientFunds/i)&&Ru.throwError("insufficient funds for intrinsic transaction cost",In.errors.INSUFFICIENT_FUNDS,{error:t,method:e,transaction:r}),i.match(/nonce (is )?too low/i)&&Ru.throwError("nonce has already been used",In.errors.NONCE_EXPIRED,{error:t,method:e,transaction:r}),i.match(/replacement transaction underpriced|transaction gas price.*too low/i)&&Ru.throwError("replacement fee too low",In.errors.REPLACEMENT_UNDERPRICED,{error:t,method:e,transaction:r}),i.match(/only replay-protected/i)&&Ru.throwError("legacy pre-eip-155 transactions not supported",In.errors.UNSUPPORTED_OPERATION,{error:t,method:e,transaction:r}),Mu.indexOf(e)>=0&&i.match(/gas required exceeds allowance|always failing transaction|execution reverted|revert/)&&Ru.throwError("cannot estimate gas; transaction may fail or may require manual gas limit",In.errors.UNPREDICTABLE_GAS_LIMIT,{error:t,method:e,transaction:r}),t}function Bu(e){return new Promise(function(t){setTimeout(t,e)})}function Du(e){if(e.error){const t=new Error(e.error.message);throw t.code=e.error.code,t.data=e.error.data,t}return e.result}function Fu(e){return e?e.toLowerCase():e}const Lu={};class Uu extends o{constructor(e,t,n){if(super(),e!==Lu)throw new Error("do not call the JsonRpcSigner constructor directly; use provider.getSigner");gr(this,"provider",t),null==n&&(n=0),"string"==typeof n?(gr(this,"_address",this.provider.formatter.address(n)),gr(this,"_index",null)):"number"==typeof n?(gr(this,"_index",n),gr(this,"_address",null)):Ru.throwArgumentError("invalid address or index","addressOrIndex",n)}connect(e){return Ru.throwError("cannot alter JSON-RPC Signer connection",In.errors.UNSUPPORTED_OPERATION,{operation:"connect"})}connectUnchecked(){return new Gu(Lu,this.provider,this._address||this._index)}getAddress(){return this._address?Promise.resolve(this._address):this.provider.send("eth_accounts",[]).then(e=>(e.length<=this._index&&Ru.throwError("unknown account #"+this._index,In.errors.UNSUPPORTED_OPERATION,{operation:"getAddress"}),this.provider.formatter.address(e[this._index])))}sendUncheckedTransaction(e){e=Ar(e);const t=this.getAddress().then(e=>(e&&(e=e.toLowerCase()),e));if(null==e.gasLimit){const n=Ar(e);n.from=t,e.gasLimit=this.provider.estimateGas(n)}return null!=e.to&&(e.to=Promise.resolve(e.to).then(e=>_u(this,void 0,void 0,function*(){if(null==e)return null;const t=yield this.provider.resolveName(e);return null==t&&Ru.throwArgumentError("provided ENS name resolves to null","tx.to",e),t}))),vr({tx:vr(e),sender:t}).then(({tx:t,sender:n})=>{null!=t.from?t.from.toLowerCase()!==n&&Ru.throwArgumentError("from address mismatch","transaction",e):t.from=n;const r=this.provider.constructor.hexlifyTransaction(t,{from:!0});return this.provider.send("eth_sendTransaction",[r]).then(e=>e,e=>("string"==typeof e.message&&e.message.match(/user denied/i)&&Ru.throwError("user rejected transaction",In.errors.ACTION_REJECTED,{action:"sendTransaction",transaction:t}),Ou("sendTransaction",e,r)))})}signTransaction(e){return Ru.throwError("signing transactions is unsupported",In.errors.UNSUPPORTED_OPERATION,{operation:"signTransaction"})}sendTransaction(e){return _u(this,void 0,void 0,function*(){const t=yield this.provider._getInternalBlockNumber(100+2*this.provider.pollingInterval),n=yield this.sendUncheckedTransaction(e);try{return yield Wa(()=>_u(this,void 0,void 0,function*(){const e=yield this.provider.getTransaction(n);if(null!==e)return this.provider._wrapTransaction(e,n,t)}),{oncePoll:this.provider})}catch(e){throw e.transactionHash=n,e}})}signMessage(e){return _u(this,void 0,void 0,function*(){const t="string"==typeof e?ei(e):e,n=yield this.getAddress();try{return yield this.provider.send("personal_sign",[Fn(t),n.toLowerCase()])}catch(t){throw"string"==typeof t.message&&t.message.match(/user denied/i)&&Ru.throwError("user rejected signing",In.errors.ACTION_REJECTED,{action:"signMessage",from:n,messageData:e}),t}})}_legacySignMessage(e){return _u(this,void 0,void 0,function*(){const t="string"==typeof e?ei(e):e,n=yield this.getAddress();try{return yield this.provider.send("eth_sign",[n.toLowerCase(),Fn(t)])}catch(t){throw"string"==typeof t.message&&t.message.match(/user denied/i)&&Ru.throwError("user rejected signing",In.errors.ACTION_REJECTED,{action:"_legacySignMessage",from:n,messageData:e}),t}})}_signTypedData(e,t,n){return _u(this,void 0,void 0,function*(){const r=yield ns.resolveNames(e,t,n,e=>this.provider.resolveName(e)),i=yield this.getAddress();try{return yield this.provider.send("eth_signTypedData_v4",[i.toLowerCase(),JSON.stringify(ns.getPayload(r.domain,t,r.value))])}catch(e){throw"string"==typeof e.message&&e.message.match(/user denied/i)&&Ru.throwError("user rejected signing",In.errors.ACTION_REJECTED,{action:"_signTypedData",from:i,messageData:{domain:r.domain,types:t,value:r.value}}),e}})}unlock(e){return _u(this,void 0,void 0,function*(){const t=this.provider,n=yield this.getAddress();return t.send("personal_unlockAccount",[n.toLowerCase(),e,null])})}}class Gu extends Uu{sendTransaction(e){return this.sendUncheckedTransaction(e).then(e=>({hash:e,nonce:null,gasLimit:null,gasPrice:null,data:null,value:null,chainId:null,confirmations:0,from:null,wait:t=>this.provider.waitForTransaction(e,t)}))}}const Hu={chainId:!0,data:!0,gasLimit:!0,gasPrice:!0,nonce:!0,to:!0,value:!0,type:!0,accessList:!0,maxFeePerGas:!0,maxPriorityFeePerGas:!0};class qu extends xu{constructor(e,t){let n=t;null==n&&(n=new Promise((e,t)=>{setTimeout(()=>{this.detectNetwork().then(t=>{e(t)},e=>{t(e)})},0)})),super(n),e||(e=br(this.constructor,"defaultUrl")()),gr(this,"connection",Object.freeze("string"==typeof e?{url:e}:Ar(e))),this._nextId=42}get _cache(){return null==this._eventLoopCache&&(this._eventLoopCache={}),this._eventLoopCache}static defaultUrl(){return"http://localhost:8545"}detectNetwork(){return this._cache.detectNetwork||(this._cache.detectNetwork=this._uncachedDetectNetwork(),setTimeout(()=>{this._cache.detectNetwork=null},0)),this._cache.detectNetwork}_uncachedDetectNetwork(){return _u(this,void 0,void 0,function*(){yield Bu(0);let e=null;try{e=yield this.send("eth_chainId",[])}catch(t){try{e=yield this.send("net_version",[])}catch(e){}}if(null!=e){const t=br(this.constructor,"getNetwork");try{return t(Xn.from(e).toNumber())}catch(t){return Ru.throwError("could not detect network",In.errors.NETWORK_ERROR,{chainId:e,event:"invalidNetwork",serverError:t})}}return Ru.throwError("could not detect network",In.errors.NETWORK_ERROR,{event:"noNetwork"})})}getSigner(e){return new Uu(Lu,this,e)}getUncheckedSigner(e){return this.getSigner(e).connectUnchecked()}listAccounts(){return this.send("eth_accounts",[]).then(e=>e.map(e=>this.formatter.address(e)))}send(e,t){const n={method:e,params:t,id:this._nextId++,jsonrpc:"2.0"};this.emit("debug",{action:"request",request:Ir(n),provider:this});const r=["eth_chainId","eth_blockNumber"].indexOf(e)>=0;if(r&&this._cache[e])return this._cache[e];const i=Ka(this.connection,JSON.stringify(n),Du).then(e=>(this.emit("debug",{action:"response",request:n,response:e,provider:this}),e),e=>{throw this.emit("debug",{action:"response",error:e,request:n,provider:this}),e});return r&&(this._cache[e]=i,setTimeout(()=>{this._cache[e]=null},0)),i}prepareRequest(e,t){switch(e){case"getBlockNumber":return["eth_blockNumber",[]];case"getGasPrice":return["eth_gasPrice",[]];case"getBalance":return["eth_getBalance",[Fu(t.address),t.blockTag]];case"getTransactionCount":return["eth_getTransactionCount",[Fu(t.address),t.blockTag]];case"getCode":return["eth_getCode",[Fu(t.address),t.blockTag]];case"getStorageAt":return["eth_getStorageAt",[Fu(t.address),qn(t.position,32),t.blockTag]];case"sendTransaction":return["eth_sendRawTransaction",[t.signedTransaction]];case"getBlock":return t.blockTag?["eth_getBlockByNumber",[t.blockTag,!!t.includeTransactions]]:t.blockHash?["eth_getBlockByHash",[t.blockHash,!!t.includeTransactions]]:null;case"getTransaction":return["eth_getTransactionByHash",[t.transactionHash]];case"getTransactionReceipt":return["eth_getTransactionReceipt",[t.transactionHash]];case"call":return["eth_call",[br(this.constructor,"hexlifyTransaction")(t.transaction,{from:!0}),t.blockTag]];case"estimateGas":return["eth_estimateGas",[br(this.constructor,"hexlifyTransaction")(t.transaction,{from:!0})]];case"getLogs":return t.filter&&null!=t.filter.address&&(t.filter.address=Fu(t.filter.address)),["eth_getLogs",[t.filter]]}return null}perform(e,t){return _u(this,void 0,void 0,function*(){if("call"===e||"estimateGas"===e){const e=t.transaction;if(e&&null!=e.type&&Xn.from(e.type).isZero()&&null==e.maxFeePerGas&&null==e.maxPriorityFeePerGas){const n=yield this.getFeeData();null==n.maxFeePerGas&&null==n.maxPriorityFeePerGas&&((t=Ar(t)).transaction=Ar(e),delete t.transaction.type)}}const n=this.prepareRequest(e,t);null==n&&Ru.throwError(e+" not implemented",In.errors.NOT_IMPLEMENTED,{operation:e});try{return yield this.send(n[0],n[1])}catch(n){return Ou(e,n,t)}})}_startEvent(e){"pending"===e.tag&&this._startPending(),super._startEvent(e)}_startPending(){if(null!=this._pendingFilter)return;const e=this,t=this.send("eth_newPendingTransactionFilter",[]);this._pendingFilter=t,t.then(function(n){return function r(){e.send("eth_getFilterChanges",[n]).then(function(n){if(e._pendingFilter!=t)return null;let r=Promise.resolve();return n.forEach(function(t){e._emitted["t:"+t.toLowerCase()]="pending",r=r.then(function(){return e.getTransaction(t).then(function(t){return e.emit("pending",t),null})})}),r.then(function(){return Bu(1e3)})}).then(function(){if(e._pendingFilter==t)return setTimeout(function(){r()},0),null;e.send("eth_uninstallFilter",[n])}).catch(e=>{})}(),n}).catch(e=>{})}_stopEvent(e){"pending"===e.tag&&0===this.listenerCount("pending")&&(this._pendingFilter=null),super._stopEvent(e)}static hexlifyTransaction(e,t){const n=Ar(Hu);if(t)for(const e in t)t[e]&&(n[e]=!0);wr(e,n);const r={};return["chainId","gasLimit","gasPrice","type","maxFeePerGas","maxPriorityFeePerGas","nonce","value"].forEach(function(t){if(null==e[t])return;const n=Hn(Xn.from(e[t]));"gasLimit"===t&&(t="gas"),r[t]=n}),["from","to","data"].forEach(function(t){null!=e[t]&&(r[t]=Fn(e[t]))}),e.accessList&&(r.accessList=Zo(e.accessList)),r}}const Vu=new In("random/5.8.0"),zu=function(){if("undefined"!=typeof self)return self;if("undefined"!=typeof window)return window;if("undefined"!=typeof global)return global;throw new Error("unable to locate global object")}();let ju=zu.crypto||zu.msCrypto;function Ku(e){(e<=0||e>1024||e%1||e!=e)&&Vu.throwArgumentError("invalid length","length",e);const t=new Uint8Array(e);return ju.getRandomValues(t),Mn(t)}ju&&ju.getRandomValues||(Vu.warn("WARNING: Missing strong random number source"),ju={getRandomValues:function(e){return Vu.throwError("no secure random source avaialble",In.errors.UNSUPPORTED_OPERATION,{operation:"crypto.getRandomValues"})}});const Wu=new In($a);let Ju=1;function Qu(e,t){const n="Web3LegacyFetcher";return function(e,r){const i={method:e,params:r,id:Ju++,jsonrpc:"2.0"};return new Promise((e,r)=>{this.emit("debug",{action:"request",fetcher:n,request:Ir(i),provider:this}),t(i,(t,s)=>{if(t)return this.emit("debug",{action:"response",fetcher:n,error:t,request:i,provider:this}),r(t);if(this.emit("debug",{action:"response",fetcher:n,request:i,response:s,provider:this}),s.error){const e=new Error(s.error.message);return e.code=s.error.code,e.data=s.error.data,r(e)}e(s.result)})})}}class Yu extends qu{constructor(e,t){null==e&&Wu.throwArgumentError("missing provider","provider",e);let n=null,r=null,i=null;"function"==typeof e?(n="unknown:",r=e):(n=e.host||e.path||"",!n&&e.isMetaMask&&(n="metamask"),i=e,e.request?(""===n&&(n="eip-1193:"),r=function(e){return function(t,n){null==n&&(n=[]);const r={method:t,params:n};return this.emit("debug",{action:"request",fetcher:"Eip1193Fetcher",request:Ir(r),provider:this}),e.request(r).then(e=>(this.emit("debug",{action:"response",fetcher:"Eip1193Fetcher",request:r,response:e,provider:this}),e),e=>{throw this.emit("debug",{action:"response",fetcher:"Eip1193Fetcher",request:r,error:e,provider:this}),e})}}(e)):e.sendAsync?r=Qu(0,e.sendAsync.bind(e)):e.send?r=Qu(0,e.send.bind(e)):Wu.throwArgumentError("unsupported provider","provider",e),n||(n="unknown:")),super(n,t),gr(this,"jsonRpcFetchFunc",r),gr(this,"provider",i)}send(e,t){return this.jsonRpcFetchFunc(e,t)}}function Xu(e,t,n,r,i){let s;e=Mn(e),t=Mn(t);let a=1;const o=new Uint8Array(r),u=new Uint8Array(t.length+4);let l,c;u.set(t);for(let d=1;d<=a;d++){u[t.length]=d>>24&255,u[t.length+1]=d>>16&255,u[t.length+2]=d>>8&255,u[t.length+3]=255&d;let h=Mn(Ua(i,e,u));s||(s=h.length,c=new Uint8Array(s),a=Math.ceil(r/s),l=r-(a-1)*s),c.set(h);for(let t=1;t<n;t++){h=Mn(Ua(i,e,h));for(let e=0;e<s;e++)c[e]^=h[e]}const p=(d-1)*s,f=d===a?l:s;o.set(Mn(c).slice(0,f),p)}return Fn(o)}new In($a);const Zu=new In("wordlists/5.8.0");class $u{constructor(e){Zu.checkAbstract(new.target,$u),gr(this,"locale",e)}split(e){return e.toLowerCase().split(/ +/g)}join(e){return e.join(" ")}static check(e){const t=[];for(let n=0;n<2048;n++){const r=e.getWord(n);if(n!==e.getWordIndex(r))return"0x";t.push(r)}return ni(t.join("\n")+"\n")}static register(e,t){}}const el="AbandonAbilityAbleAboutAboveAbsentAbsorbAbstractAbsurdAbuseAccessAccidentAccountAccuseAchieveAcidAcousticAcquireAcrossActActionActorActressActualAdaptAddAddictAddressAdjustAdmitAdultAdvanceAdviceAerobicAffairAffordAfraidAgainAgeAgentAgreeAheadAimAirAirportAisleAlarmAlbumAlcoholAlertAlienAllAlleyAllowAlmostAloneAlphaAlreadyAlsoAlterAlwaysAmateurAmazingAmongAmountAmusedAnalystAnchorAncientAngerAngleAngryAnimalAnkleAnnounceAnnualAnotherAnswerAntennaAntiqueAnxietyAnyApartApologyAppearAppleApproveAprilArchArcticAreaArenaArgueArmArmedArmorArmyAroundArrangeArrestArriveArrowArtArtefactArtistArtworkAskAspectAssaultAssetAssistAssumeAsthmaAthleteAtomAttackAttendAttitudeAttractAuctionAuditAugustAuntAuthorAutoAutumnAverageAvocadoAvoidAwakeAwareAwayAwesomeAwfulAwkwardAxisBabyBachelorBaconBadgeBagBalanceBalconyBallBambooBananaBannerBarBarelyBargainBarrelBaseBasicBasketBattleBeachBeanBeautyBecauseBecomeBeefBeforeBeginBehaveBehindBelieveBelowBeltBenchBenefitBestBetrayBetterBetweenBeyondBicycleBidBikeBindBiologyBirdBirthBitterBlackBladeBlameBlanketBlastBleakBlessBlindBloodBlossomBlouseBlueBlurBlushBoardBoatBodyBoilBombBoneBonusBookBoostBorderBoringBorrowBossBottomBounceBoxBoyBracketBrainBrandBrassBraveBreadBreezeBrickBridgeBriefBrightBringBriskBroccoliBrokenBronzeBroomBrotherBrownBrushBubbleBuddyBudgetBuffaloBuildBulbBulkBulletBundleBunkerBurdenBurgerBurstBusBusinessBusyButterBuyerBuzzCabbageCabinCableCactusCageCakeCallCalmCameraCampCanCanalCancelCandyCannonCanoeCanvasCanyonCapableCapitalCaptainCarCarbonCardCargoCarpetCarryCartCaseCashCasinoCastleCasualCatCatalogCatchCategoryCattleCaughtCauseCautionCaveCeilingCeleryCementCensusCenturyCerealCertainChairChalkChampionChangeChaosChapterChargeChaseChatCheapCheckCheeseChefCherryChestChickenChiefChildChimneyChoiceChooseChronicChuckleChunkChurnCigarCinnamonCircleCitizenCityCivilClaimClapClarifyClawClayCleanClerkCleverClickClientCliffClimbClinicClipClockClogCloseClothCloudClownClubClumpClusterClutchCoachCoastCoconutCodeCoffeeCoilCoinCollectColorColumnCombineComeComfortComicCommonCompanyConcertConductConfirmCongressConnectConsiderControlConvinceCookCoolCopperCopyCoralCoreCornCorrectCostCottonCouchCountryCoupleCourseCousinCoverCoyoteCrackCradleCraftCramCraneCrashCraterCrawlCrazyCreamCreditCreekCrewCricketCrimeCrispCriticCropCrossCrouchCrowdCrucialCruelCruiseCrumbleCrunchCrushCryCrystalCubeCultureCupCupboardCuriousCurrentCurtainCurveCushionCustomCuteCycleDadDamageDampDanceDangerDaringDashDaughterDawnDayDealDebateDebrisDecadeDecemberDecideDeclineDecorateDecreaseDeerDefenseDefineDefyDegreeDelayDeliverDemandDemiseDenialDentistDenyDepartDependDepositDepthDeputyDeriveDescribeDesertDesignDeskDespairDestroyDetailDetectDevelopDeviceDevoteDiagramDialDiamondDiaryDiceDieselDietDifferDigitalDignityDilemmaDinnerDinosaurDirectDirtDisagreeDiscoverDiseaseDishDismissDisorderDisplayDistanceDivertDivideDivorceDizzyDoctorDocumentDogDollDolphinDomainDonateDonkeyDonorDoorDoseDoubleDoveDraftDragonDramaDrasticDrawDreamDressDriftDrillDrinkDripDriveDropDrumDryDuckDumbDuneDuringDustDutchDutyDwarfDynamicEagerEagleEarlyEarnEarthEasilyEastEasyEchoEcologyEconomyEdgeEditEducateEffortEggEightEitherElbowElderElectricElegantElementElephantElevatorEliteElseEmbarkEmbodyEmbraceEmergeEmotionEmployEmpowerEmptyEnableEnactEndEndlessEndorseEnemyEnergyEnforceEngageEngineEnhanceEnjoyEnlistEnoughEnrichEnrollEnsureEnterEntireEntryEnvelopeEpisodeEqualEquipEraEraseErodeErosionErrorEruptEscapeEssayEssenceEstateEternalEthicsEvidenceEvilEvokeEvolveExactExampleExcessExchangeExciteExcludeExcuseExecuteExerciseExhaustExhibitExileExistExitExoticExpandExpectExpireExplainExposeExpressExtendExtraEyeEyebrowFabricFaceFacultyFadeFaintFaithFallFalseFameFamilyFamousFanFancyFantasyFarmFashionFatFatalFatherFatigueFaultFavoriteFeatureFebruaryFederalFeeFeedFeelFemaleFenceFestivalFetchFeverFewFiberFictionFieldFigureFileFilmFilterFinalFindFineFingerFinishFireFirmFirstFiscalFishFitFitnessFixFlagFlameFlashFlatFlavorFleeFlightFlipFloatFlockFloorFlowerFluidFlushFlyFoamFocusFogFoilFoldFollowFoodFootForceForestForgetForkFortuneForumForwardFossilFosterFoundFoxFragileFrameFrequentFreshFriendFringeFrogFrontFrostFrownFrozenFruitFuelFunFunnyFurnaceFuryFutureGadgetGainGalaxyGalleryGameGapGarageGarbageGardenGarlicGarmentGasGaspGateGatherGaugeGazeGeneralGeniusGenreGentleGenuineGestureGhostGiantGiftGiggleGingerGiraffeGirlGiveGladGlanceGlareGlassGlideGlimpseGlobeGloomGloryGloveGlowGlueGoatGoddessGoldGoodGooseGorillaGospelGossipGovernGownGrabGraceGrainGrantGrapeGrassGravityGreatGreenGridGriefGritGroceryGroupGrowGruntGuardGuessGuideGuiltGuitarGunGymHabitHairHalfHammerHamsterHandHappyHarborHardHarshHarvestHatHaveHawkHazardHeadHealthHeartHeavyHedgehogHeightHelloHelmetHelpHenHeroHiddenHighHillHintHipHireHistoryHobbyHockeyHoldHoleHolidayHollowHomeHoneyHoodHopeHornHorrorHorseHospitalHostHotelHourHoverHubHugeHumanHumbleHumorHundredHungryHuntHurdleHurryHurtHusbandHybridIceIconIdeaIdentifyIdleIgnoreIllIllegalIllnessImageImitateImmenseImmuneImpactImposeImproveImpulseInchIncludeIncomeIncreaseIndexIndicateIndoorIndustryInfantInflictInformInhaleInheritInitialInjectInjuryInmateInnerInnocentInputInquiryInsaneInsectInsideInspireInstallIntactInterestIntoInvestInviteInvolveIronIslandIsolateIssueItemIvoryJacketJaguarJarJazzJealousJeansJellyJewelJobJoinJokeJourneyJoyJudgeJuiceJumpJungleJuniorJunkJustKangarooKeenKeepKetchupKeyKickKidKidneyKindKingdomKissKitKitchenKiteKittenKiwiKneeKnifeKnockKnowLabLabelLaborLadderLadyLakeLampLanguageLaptopLargeLaterLatinLaughLaundryLavaLawLawnLawsuitLayerLazyLeaderLeafLearnLeaveLectureLeftLegLegalLegendLeisureLemonLendLengthLensLeopardLessonLetterLevelLiarLibertyLibraryLicenseLifeLiftLightLikeLimbLimitLinkLionLiquidListLittleLiveLizardLoadLoanLobsterLocalLockLogicLonelyLongLoopLotteryLoudLoungeLoveLoyalLuckyLuggageLumberLunarLunchLuxuryLyricsMachineMadMagicMagnetMaidMailMainMajorMakeMammalManManageMandateMangoMansionManualMapleMarbleMarchMarginMarineMarketMarriageMaskMassMasterMatchMaterialMathMatrixMatterMaximumMazeMeadowMeanMeasureMeatMechanicMedalMediaMelodyMeltMemberMemoryMentionMenuMercyMergeMeritMerryMeshMessageMetalMethodMiddleMidnightMilkMillionMimicMindMinimumMinorMinuteMiracleMirrorMiseryMissMistakeMixMixedMixtureMobileModelModifyMomMomentMonitorMonkeyMonsterMonthMoonMoralMoreMorningMosquitoMotherMotionMotorMountainMouseMoveMovieMuchMuffinMuleMultiplyMuscleMuseumMushroomMusicMustMutualMyselfMysteryMythNaiveNameNapkinNarrowNastyNationNatureNearNeckNeedNegativeNeglectNeitherNephewNerveNestNetNetworkNeutralNeverNewsNextNiceNightNobleNoiseNomineeNoodleNormalNorthNoseNotableNoteNothingNoticeNovelNowNuclearNumberNurseNutOakObeyObjectObligeObscureObserveObtainObviousOccurOceanOctoberOdorOffOfferOfficeOftenOilOkayOldOliveOlympicOmitOnceOneOnionOnlineOnlyOpenOperaOpinionOpposeOptionOrangeOrbitOrchardOrderOrdinaryOrganOrientOriginalOrphanOstrichOtherOutdoorOuterOutputOutsideOvalOvenOverOwnOwnerOxygenOysterOzonePactPaddlePagePairPalacePalmPandaPanelPanicPantherPaperParadeParentParkParrotPartyPassPatchPathPatientPatrolPatternPausePavePaymentPeacePeanutPearPeasantPelicanPenPenaltyPencilPeoplePepperPerfectPermitPersonPetPhonePhotoPhrasePhysicalPianoPicnicPicturePiecePigPigeonPillPilotPinkPioneerPipePistolPitchPizzaPlacePlanetPlasticPlatePlayPleasePledgePluckPlugPlungePoemPoetPointPolarPolePolicePondPonyPoolPopularPortionPositionPossiblePostPotatoPotteryPovertyPowderPowerPracticePraisePredictPreferPreparePresentPrettyPreventPricePridePrimaryPrintPriorityPrisonPrivatePrizeProblemProcessProduceProfitProgramProjectPromoteProofPropertyProsperProtectProudProvidePublicPuddingPullPulpPulsePumpkinPunchPupilPuppyPurchasePurityPurposePursePushPutPuzzlePyramidQualityQuantumQuarterQuestionQuickQuitQuizQuoteRabbitRaccoonRaceRackRadarRadioRailRainRaiseRallyRampRanchRandomRangeRapidRareRateRatherRavenRawRazorReadyRealReasonRebelRebuildRecallReceiveRecipeRecordRecycleReduceReflectReformRefuseRegionRegretRegularRejectRelaxReleaseReliefRelyRemainRememberRemindRemoveRenderRenewRentReopenRepairRepeatReplaceReportRequireRescueResembleResistResourceResponseResultRetireRetreatReturnReunionRevealReviewRewardRhythmRibRibbonRiceRichRideRidgeRifleRightRigidRingRiotRippleRiskRitualRivalRiverRoadRoastRobotRobustRocketRomanceRoofRookieRoomRoseRotateRoughRoundRouteRoyalRubberRudeRugRuleRunRunwayRuralSadSaddleSadnessSafeSailSaladSalmonSalonSaltSaluteSameSampleSandSatisfySatoshiSauceSausageSaveSayScaleScanScareScatterSceneSchemeSchoolScienceScissorsScorpionScoutScrapScreenScriptScrubSeaSearchSeasonSeatSecondSecretSectionSecuritySeedSeekSegmentSelectSellSeminarSeniorSenseSentenceSeriesServiceSessionSettleSetupSevenShadowShaftShallowShareShedShellSheriffShieldShiftShineShipShiverShockShoeShootShopShortShoulderShoveShrimpShrugShuffleShySiblingSickSideSiegeSightSignSilentSilkSillySilverSimilarSimpleSinceSingSirenSisterSituateSixSizeSkateSketchSkiSkillSkinSkirtSkullSlabSlamSleepSlenderSliceSlideSlightSlimSloganSlotSlowSlushSmallSmartSmileSmokeSmoothSnackSnakeSnapSniffSnowSoapSoccerSocialSockSodaSoftSolarSoldierSolidSolutionSolveSomeoneSongSoonSorrySortSoulSoundSoupSourceSouthSpaceSpareSpatialSpawnSpeakSpecialSpeedSpellSpendSphereSpiceSpiderSpikeSpinSpiritSplitSpoilSponsorSpoonSportSpotSpraySpreadSpringSpySquareSqueezeSquirrelStableStadiumStaffStageStairsStampStandStartStateStaySteakSteelStemStepStereoStickStillStingStockStomachStoneStoolStoryStoveStrategyStreetStrikeStrongStruggleStudentStuffStumbleStyleSubjectSubmitSubwaySuccessSuchSuddenSufferSugarSuggestSuitSummerSunSunnySunsetSuperSupplySupremeSureSurfaceSurgeSurpriseSurroundSurveySuspectSustainSwallowSwampSwapSwarmSwearSweetSwiftSwimSwingSwitchSwordSymbolSymptomSyrupSystemTableTackleTagTailTalentTalkTankTapeTargetTaskTasteTattooTaxiTeachTeamTellTenTenantTennisTentTermTestTextThankThatThemeThenTheoryThereTheyThingThisThoughtThreeThriveThrowThumbThunderTicketTideTigerTiltTimberTimeTinyTipTiredTissueTitleToastTobaccoTodayToddlerToeTogetherToiletTokenTomatoTomorrowToneTongueTonightToolToothTopTopicToppleTorchTornadoTortoiseTossTotalTouristTowardTowerTownToyTrackTradeTrafficTragicTrainTransferTrapTrashTravelTrayTreatTreeTrendTrialTribeTrickTriggerTrimTripTrophyTroubleTruckTrueTrulyTrumpetTrustTruthTryTubeTuitionTumbleTunaTunnelTurkeyTurnTurtleTwelveTwentyTwiceTwinTwistTwoTypeTypicalUglyUmbrellaUnableUnawareUncleUncoverUnderUndoUnfairUnfoldUnhappyUniformUniqueUnitUniverseUnknownUnlockUntilUnusualUnveilUpdateUpgradeUpholdUponUpperUpsetUrbanUrgeUsageUseUsedUsefulUselessUsualUtilityVacantVacuumVagueValidValleyValveVanVanishVaporVariousVastVaultVehicleVelvetVendorVentureVenueVerbVerifyVersionVeryVesselVeteranViableVibrantViciousVictoryVideoViewVillageVintageViolinVirtualVirusVisaVisitVisualVitalVividVocalVoiceVoidVolcanoVolumeVoteVoyageWageWagonWaitWalkWallWalnutWantWarfareWarmWarriorWashWaspWasteWaterWaveWayWealthWeaponWearWeaselWeatherWebWeddingWeekendWeirdWelcomeWestWetWhaleWhatWheatWheelWhenWhereWhipWhisperWideWidthWifeWildWillWinWindowWineWingWinkWinnerWinterWireWisdomWiseWishWitnessWolfWomanWonderWoodWoolWordWorkWorldWorryWorthWrapWreckWrestleWristWriteWrongYardYearYellowYouYoungYouthZebraZeroZoneZoo";let tl=null;function nl(e){if(null==tl&&(tl=el.replace(/([A-Z])/g," $1").toLowerCase().substring(1).split(" "),"0x3c8acc1e7b08d8e76f9fda015ef48dc8c710a73cb7e0f77b2c18a9b5a7adde60"!==$u.check(e)))throw tl=null,new Error("BIP39 Wordlist for en (English) FAILED")}const rl=new class extends $u{constructor(){super("en")}getWord(e){return nl(this),tl[e]}getWordIndex(e){return nl(this),tl.indexOf(e)}};$u.register(rl);const il={en:rl},sl=new In("hdnode/5.8.0"),al=Xn.from("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"),ol=ei("Bitcoin seed"),ul=2147483648;function ll(e){return(1<<e)-1<<8-e}function cl(e){return qn(Fn(e),32)}function dl(e){return Gr.encode(Pn([e,Un(La(La(e)),0,4)]))}function hl(e){if(null==e)return il.en;if("string"==typeof e){const t=il[e];return null==t&&sl.throwArgumentError("unknown locale","wordlist",e),t}return e}const pl={},fl="m/44'/60'/0'/0/0";class ml{constructor(e,t,n,r,i,s,a,o){if(e!==pl)throw new Error("HDNode constructor cannot be called directly");if(t){const e=new Go(t);gr(this,"privateKey",e.privateKey),gr(this,"publicKey",e.compressedPublicKey)}else gr(this,"privateKey",null),gr(this,"publicKey",Fn(n));var u;gr(this,"parentFingerprint",r),gr(this,"fingerprint",Un((u=La(this.publicKey),"0x"+Da.ripemd160().update(Mn(u)).digest("hex")),0,4)),gr(this,"address",Jo(this.publicKey)),gr(this,"chainCode",i),gr(this,"index",s),gr(this,"depth",a),null==o?(gr(this,"mnemonic",null),gr(this,"path",null)):"string"==typeof o?(gr(this,"mnemonic",null),gr(this,"path",o)):(gr(this,"mnemonic",o),gr(this,"path",o.path))}get extendedKey(){if(this.depth>=256)throw new Error("Depth too large!");return dl(Pn([null!=this.privateKey?"0x0488ADE4":"0x0488B21E",Fn(this.depth),this.parentFingerprint,qn(Fn(this.index),4),this.chainCode,null!=this.privateKey?Pn(["0x00",this.privateKey]):this.publicKey]))}neuter(){return new ml(pl,null,this.publicKey,this.parentFingerprint,this.chainCode,this.index,this.depth,this.path)}_derive(e){if(e>4294967295)throw new Error("invalid index - "+String(e));let t=this.path;t&&(t+="/"+(2147483647&e));const n=new Uint8Array(37);if(e&ul){if(!this.privateKey)throw new Error("cannot derive child of neutered node");n.set(Mn(this.privateKey),1),t&&(t+="'")}else n.set(Mn(this.publicKey));for(let t=24;t>=0;t-=8)n[33+(t>>3)]=e>>24-t&255;const r=Mn(Ua(Oa.sha512,this.chainCode,n)),i=r.slice(0,32),s=r.slice(32);let a=null,o=null;this.privateKey?a=cl(Xn.from(i).add(this.privateKey).mod(al)):o=new Go(Fn(i))._addPoint(this.publicKey);let u=t;const l=this.mnemonic;return l&&(u=Object.freeze({phrase:l.phrase,path:t,locale:l.locale||"en"})),new ml(pl,a,o,this.fingerprint,cl(s),e,this.depth+1,u)}derivePath(e){const t=e.split("/");if(0===t.length||"m"===t[0]&&0!==this.depth)throw new Error("invalid path - "+e);"m"===t[0]&&t.shift();let n=this;for(let e=0;e<t.length;e++){const r=t[e];if(r.match(/^[0-9]+'$/)){const e=parseInt(r.substring(0,r.length-1));if(e>=ul)throw new Error("invalid path index - "+r);n=n._derive(ul+e)}else{if(!r.match(/^[0-9]+$/))throw new Error("invalid path component - "+r);{const e=parseInt(r);if(e>=ul)throw new Error("invalid path index - "+r);n=n._derive(e)}}}return n}static _fromSeed(e,t){const n=Mn(e);if(n.length<16||n.length>64)throw new Error("invalid seed");const r=Mn(Ua(Oa.sha512,ol,n));return new ml(pl,cl(r.slice(0,32)),null,"0x00000000",cl(r.slice(32)),0,0,t)}static fromMnemonic(e,t,n){return e=gl(yl(e,n=hl(n)),n),ml._fromSeed(function(e,t){t||(t="");const n=ei("mnemonic"+t,Qr.NFKD);return Xu(ei(e,Qr.NFKD),n,2048,64,"sha512")}(e,t),{phrase:e,path:"m",locale:n.locale})}static fromSeed(e){return ml._fromSeed(e,null)}static fromExtendedKey(e){const t=Gr.decode(e);82===t.length&&dl(t.slice(0,78))===e||sl.throwArgumentError("invalid extended key","extendedKey","[REDACTED]");const n=t[4],r=Fn(t.slice(5,9)),i=parseInt(Fn(t.slice(9,13)).substring(2),16),s=Fn(t.slice(13,45)),a=t.slice(45,78);switch(Fn(t.slice(0,4))){case"0x0488b21e":case"0x043587cf":return new ml(pl,null,Fn(a),r,s,i,n,null);case"0x0488ade4":case"0x04358394 ":if(0!==a[0])break;return new ml(pl,Fn(a.slice(1)),null,r,s,i,n,null)}return sl.throwArgumentError("invalid extended key","extendedKey","[REDACTED]")}}function yl(e,t){t=hl(t),sl.checkNormalize();const n=t.split(e);if(n.length%3!=0)throw new Error("invalid mnemonic");const r=Mn(new Uint8Array(Math.ceil(11*n.length/8)));let i=0;for(let e=0;e<n.length;e++){let s=t.getWordIndex(n[e].normalize("NFKD"));if(-1===s)throw new Error("invalid mnemonic");for(let e=0;e<11;e++)s&1<<10-e&&(r[i>>3]|=1<<7-i%8),i++}const s=32*n.length/3,a=ll(n.length/3);if((Mn(La(r.slice(0,s/8)))[0]&a)!=(r[r.length-1]&a))throw new Error("invalid checksum");return Fn(r.slice(0,s/8))}function gl(e,t){if(t=hl(t),(e=Mn(e)).length%4!=0||e.length<16||e.length>32)throw new Error("invalid entropy");const n=[0];let r=11;for(let t=0;t<e.length;t++)r>8?(n[n.length-1]<<=8,n[n.length-1]|=e[t],r-=8):(n[n.length-1]<<=r,n[n.length-1]|=e[t]>>8-r,n.push(e[t]&(1<<8-r)-1),r+=3);const i=e.length/4,s=Mn(La(e))[0]&ll(i);return n[n.length-1]<<=i,n[n.length-1]|=s>>8-i,t.join(n.map(e=>t.getWord(e)))}var bl=pn(function(e,t){!function(t){function n(e){return parseInt(e)===e}function r(e){if(!n(e.length))return!1;for(var t=0;t<e.length;t++)if(!n(e[t])||e[t]<0||e[t]>255)return!1;return!0}function i(e,t){if(e.buffer&&ArrayBuffer.isView(e)&&"Uint8Array"===e.name)return t&&(e=e.slice?e.slice():Array.prototype.slice.call(e)),e;if(Array.isArray(e)){if(!r(e))throw new Error("Array contains invalid value: "+e);return new Uint8Array(e)}if(n(e.length)&&r(e))return new Uint8Array(e);throw new Error("unsupported array-like object")}function s(e){return new Uint8Array(e)}function a(e,t,n,r,i){null==r&&null==i||(e=e.slice?e.slice(r,i):Array.prototype.slice.call(e,r,i)),t.set(e,n)}var o,u={toBytes:function(e){var t=[],n=0;for(e=encodeURI(e);n<e.length;){var r=e.charCodeAt(n++);37===r?(t.push(parseInt(e.substr(n,2),16)),n+=2):t.push(r)}return i(t)},fromBytes:function(e){for(var t=[],n=0;n<e.length;){var r=e[n];r<128?(t.push(String.fromCharCode(r)),n++):r>191&&r<224?(t.push(String.fromCharCode((31&r)<<6|63&e[n+1])),n+=2):(t.push(String.fromCharCode((15&r)<<12|(63&e[n+1])<<6|63&e[n+2])),n+=3)}return t.join("")}},l=(o="0123456789abcdef",{toBytes:function(e){for(var t=[],n=0;n<e.length;n+=2)t.push(parseInt(e.substr(n,2),16));return t},fromBytes:function(e){for(var t=[],n=0;n<e.length;n++){var r=e[n];t.push(o[(240&r)>>4]+o[15&r])}return t.join("")}}),c={16:10,24:12,32:14},d=[1,2,4,8,16,32,64,128,27,54,108,216,171,77,154,47,94,188,99,198,151,53,106,212,179,125,250,239,197,145],h=[99,124,119,123,242,107,111,197,48,1,103,43,254,215,171,118,202,130,201,125,250,89,71,240,173,212,162,175,156,164,114,192,183,253,147,38,54,63,247,204,52,165,229,241,113,216,49,21,4,199,35,195,24,150,5,154,7,18,128,226,235,39,178,117,9,131,44,26,27,110,90,160,82,59,214,179,41,227,47,132,83,209,0,237,32,252,177,91,106,203,190,57,74,76,88,207,208,239,170,251,67,77,51,133,69,249,2,127,80,60,159,168,81,163,64,143,146,157,56,245,188,182,218,33,16,255,243,210,205,12,19,236,95,151,68,23,196,167,126,61,100,93,25,115,96,129,79,220,34,42,144,136,70,238,184,20,222,94,11,219,224,50,58,10,73,6,36,92,194,211,172,98,145,149,228,121,231,200,55,109,141,213,78,169,108,86,244,234,101,122,174,8,186,120,37,46,28,166,180,198,232,221,116,31,75,189,139,138,112,62,181,102,72,3,246,14,97,53,87,185,134,193,29,158,225,248,152,17,105,217,142,148,155,30,135,233,206,85,40,223,140,161,137,13,191,230,66,104,65,153,45,15,176,84,187,22],p=[82,9,106,213,48,54,165,56,191,64,163,158,129,243,215,251,124,227,57,130,155,47,255,135,52,142,67,68,196,222,233,203,84,123,148,50,166,194,35,61,238,76,149,11,66,250,195,78,8,46,161,102,40,217,36,178,118,91,162,73,109,139,209,37,114,248,246,100,134,104,152,22,212,164,92,204,93,101,182,146,108,112,72,80,253,237,185,218,94,21,70,87,167,141,157,132,144,216,171,0,140,188,211,10,247,228,88,5,184,179,69,6,208,44,30,143,202,63,15,2,193,175,189,3,1,19,138,107,58,145,17,65,79,103,220,234,151,242,207,206,240,180,230,115,150,172,116,34,231,173,53,133,226,249,55,232,28,117,223,110,71,241,26,113,29,41,197,137,111,183,98,14,170,24,190,27,252,86,62,75,198,210,121,32,154,219,192,254,120,205,90,244,31,221,168,51,136,7,199,49,177,18,16,89,39,128,236,95,96,81,127,169,25,181,74,13,45,229,122,159,147,201,156,239,160,224,59,77,174,42,245,176,200,235,187,60,131,83,153,97,23,43,4,126,186,119,214,38,225,105,20,99,85,33,12,125],f=[3328402341,4168907908,4000806809,4135287693,4294111757,3597364157,3731845041,2445657428,1613770832,33620227,3462883241,1445669757,3892248089,3050821474,1303096294,3967186586,2412431941,528646813,2311702848,4202528135,4026202645,2992200171,2387036105,4226871307,1101901292,3017069671,1604494077,1169141738,597466303,1403299063,3832705686,2613100635,1974974402,3791519004,1033081774,1277568618,1815492186,2118074177,4126668546,2211236943,1748251740,1369810420,3521504564,4193382664,3799085459,2883115123,1647391059,706024767,134480908,2512897874,1176707941,2646852446,806885416,932615841,168101135,798661301,235341577,605164086,461406363,3756188221,3454790438,1311188841,2142417613,3933566367,302582043,495158174,1479289972,874125870,907746093,3698224818,3025820398,1537253627,2756858614,1983593293,3084310113,2108928974,1378429307,3722699582,1580150641,327451799,2790478837,3117535592,0,3253595436,1075847264,3825007647,2041688520,3059440621,3563743934,2378943302,1740553945,1916352843,2487896798,2555137236,2958579944,2244988746,3151024235,3320835882,1336584933,3992714006,2252555205,2588757463,1714631509,293963156,2319795663,3925473552,67240454,4269768577,2689618160,2017213508,631218106,1269344483,2723238387,1571005438,2151694528,93294474,1066570413,563977660,1882732616,4059428100,1673313503,2008463041,2950355573,1109467491,537923632,3858759450,4260623118,3218264685,2177748300,403442708,638784309,3287084079,3193921505,899127202,2286175436,773265209,2479146071,1437050866,4236148354,2050833735,3362022572,3126681063,840505643,3866325909,3227541664,427917720,2655997905,2749160575,1143087718,1412049534,999329963,193497219,2353415882,3354324521,1807268051,672404540,2816401017,3160301282,369822493,2916866934,3688947771,1681011286,1949973070,336202270,2454276571,201721354,1210328172,3093060836,2680341085,3184776046,1135389935,3294782118,965841320,831886756,3554993207,4068047243,3588745010,2345191491,1849112409,3664604599,26054028,2983581028,2622377682,1235855840,3630984372,2891339514,4092916743,3488279077,3395642799,4101667470,1202630377,268961816,1874508501,4034427016,1243948399,1546530418,941366308,1470539505,1941222599,2546386513,3421038627,2715671932,3899946140,1042226977,2521517021,1639824860,227249030,260737669,3765465232,2084453954,1907733956,3429263018,2420656344,100860677,4160157185,470683154,3261161891,1781871967,2924959737,1773779408,394692241,2579611992,974986535,664706745,3655459128,3958962195,731420851,571543859,3530123707,2849626480,126783113,865375399,765172662,1008606754,361203602,3387549984,2278477385,2857719295,1344809080,2782912378,59542671,1503764984,160008576,437062935,1707065306,3622233649,2218934982,3496503480,2185314755,697932208,1512910199,504303377,2075177163,2824099068,1841019862,739644986],m=[2781242211,2230877308,2582542199,2381740923,234877682,3184946027,2984144751,1418839493,1348481072,50462977,2848876391,2102799147,434634494,1656084439,3863849899,2599188086,1167051466,2636087938,1082771913,2281340285,368048890,3954334041,3381544775,201060592,3963727277,1739838676,4250903202,3930435503,3206782108,4149453988,2531553906,1536934080,3262494647,484572669,2923271059,1783375398,1517041206,1098792767,49674231,1334037708,1550332980,4098991525,886171109,150598129,2481090929,1940642008,1398944049,1059722517,201851908,1385547719,1699095331,1587397571,674240536,2704774806,252314885,3039795866,151914247,908333586,2602270848,1038082786,651029483,1766729511,3447698098,2682942837,454166793,2652734339,1951935532,775166490,758520603,3000790638,4004797018,4217086112,4137964114,1299594043,1639438038,3464344499,2068982057,1054729187,1901997871,2534638724,4121318227,1757008337,0,750906861,1614815264,535035132,3363418545,3988151131,3201591914,1183697867,3647454910,1265776953,3734260298,3566750796,3903871064,1250283471,1807470800,717615087,3847203498,384695291,3313910595,3617213773,1432761139,2484176261,3481945413,283769337,100925954,2180939647,4037038160,1148730428,3123027871,3813386408,4087501137,4267549603,3229630528,2315620239,2906624658,3156319645,1215313976,82966005,3747855548,3245848246,1974459098,1665278241,807407632,451280895,251524083,1841287890,1283575245,337120268,891687699,801369324,3787349855,2721421207,3431482436,959321879,1469301956,4065699751,2197585534,1199193405,2898814052,3887750493,724703513,2514908019,2696962144,2551808385,3516813135,2141445340,1715741218,2119445034,2872807568,2198571144,3398190662,700968686,3547052216,1009259540,2041044702,3803995742,487983883,1991105499,1004265696,1449407026,1316239930,504629770,3683797321,168560134,1816667172,3837287516,1570751170,1857934291,4014189740,2797888098,2822345105,2754712981,936633572,2347923833,852879335,1133234376,1500395319,3084545389,2348912013,1689376213,3533459022,3762923945,3034082412,4205598294,133428468,634383082,2949277029,2398386810,3913789102,403703816,3580869306,2297460856,1867130149,1918643758,607656988,4049053350,3346248884,1368901318,600565992,2090982877,2632479860,557719327,3717614411,3697393085,2249034635,2232388234,2430627952,1115438654,3295786421,2865522278,3633334344,84280067,33027830,303828494,2747425121,1600795957,4188952407,3496589753,2434238086,1486471617,658119965,3106381470,953803233,334231800,3005978776,857870609,3151128937,1890179545,2298973838,2805175444,3056442267,574365214,2450884487,550103529,1233637070,4289353045,2018519080,2057691103,2399374476,4166623649,2148108681,387583245,3664101311,836232934,3330556482,3100665960,3280093505,2955516313,2002398509,287182607,3413881008,4238890068,3597515707,975967766],y=[1671808611,2089089148,2006576759,2072901243,4061003762,1807603307,1873927791,3310653893,810573872,16974337,1739181671,729634347,4263110654,3613570519,2883997099,1989864566,3393556426,2191335298,3376449993,2106063485,4195741690,1508618841,1204391495,4027317232,2917941677,3563566036,2734514082,2951366063,2629772188,2767672228,1922491506,3227229120,3082974647,4246528509,2477669779,644500518,911895606,1061256767,4144166391,3427763148,878471220,2784252325,3845444069,4043897329,1905517169,3631459288,827548209,356461077,67897348,3344078279,593839651,3277757891,405286936,2527147926,84871685,2595565466,118033927,305538066,2157648768,3795705826,3945188843,661212711,2999812018,1973414517,152769033,2208177539,745822252,439235610,455947803,1857215598,1525593178,2700827552,1391895634,994932283,3596728278,3016654259,695947817,3812548067,795958831,2224493444,1408607827,3513301457,0,3979133421,543178784,4229948412,2982705585,1542305371,1790891114,3410398667,3201918910,961245753,1256100938,1289001036,1491644504,3477767631,3496721360,4012557807,2867154858,4212583931,1137018435,1305975373,861234739,2241073541,1171229253,4178635257,33948674,2139225727,1357946960,1011120188,2679776671,2833468328,1374921297,2751356323,1086357568,2408187279,2460827538,2646352285,944271416,4110742005,3168756668,3066132406,3665145818,560153121,271589392,4279952895,4077846003,3530407890,3444343245,202643468,322250259,3962553324,1608629855,2543990167,1154254916,389623319,3294073796,2817676711,2122513534,1028094525,1689045092,1575467613,422261273,1939203699,1621147744,2174228865,1339137615,3699352540,577127458,712922154,2427141008,2290289544,1187679302,3995715566,3100863416,339486740,3732514782,1591917662,186455563,3681988059,3762019296,844522546,978220090,169743370,1239126601,101321734,611076132,1558493276,3260915650,3547250131,2901361580,1655096418,2443721105,2510565781,3828863972,2039214713,3878868455,3359869896,928607799,1840765549,2374762893,3580146133,1322425422,2850048425,1823791212,1459268694,4094161908,3928346602,1706019429,2056189050,2934523822,135794696,3134549946,2022240376,628050469,779246638,472135708,2800834470,3032970164,3327236038,3894660072,3715932637,1956440180,522272287,1272813131,3185336765,2340818315,2323976074,1888542832,1044544574,3049550261,1722469478,1222152264,50660867,4127324150,236067854,1638122081,895445557,1475980887,3117443513,2257655686,3243809217,489110045,2662934430,3778599393,4162055160,2561878936,288563729,1773916777,3648039385,2391345038,2493985684,2612407707,505560094,2274497927,3911240169,3460925390,1442818645,678973480,3749357023,2358182796,2717407649,2306869641,219617805,3218761151,3862026214,1120306242,1756942440,1103331905,2578459033,762796589,252780047,2966125488,1425844308,3151392187,372911126],g=[1667474886,2088535288,2004326894,2071694838,4075949567,1802223062,1869591006,3318043793,808472672,16843522,1734846926,724270422,4278065639,3621216949,2880169549,1987484396,3402253711,2189597983,3385409673,2105378810,4210693615,1499065266,1195886990,4042263547,2913856577,3570689971,2728590687,2947541573,2627518243,2762274643,1920112356,3233831835,3082273397,4261223649,2475929149,640051788,909531756,1061110142,4160160501,3435941763,875846760,2779116625,3857003729,4059105529,1903268834,3638064043,825316194,353713962,67374088,3351728789,589522246,3284360861,404236336,2526454071,84217610,2593830191,117901582,303183396,2155911963,3806477791,3958056653,656894286,2998062463,1970642922,151591698,2206440989,741110872,437923380,454765878,1852748508,1515908788,2694904667,1381168804,993742198,3604373943,3014905469,690584402,3823320797,791638366,2223281939,1398011302,3520161977,0,3991743681,538992704,4244381667,2981218425,1532751286,1785380564,3419096717,3200178535,960056178,1246420628,1280103576,1482221744,3486468741,3503319995,4025428677,2863326543,4227536621,1128514950,1296947098,859002214,2240123921,1162203018,4193849577,33687044,2139062782,1347481760,1010582648,2678045221,2829640523,1364325282,2745433693,1077985408,2408548869,2459086143,2644360225,943212656,4126475505,3166494563,3065430391,3671750063,555836226,269496352,4294908645,4092792573,3537006015,3452783745,202118168,320025894,3974901699,1600119230,2543297077,1145359496,387397934,3301201811,2812801621,2122220284,1027426170,1684319432,1566435258,421079858,1936954854,1616945344,2172753945,1330631070,3705438115,572679748,707427924,2425400123,2290647819,1179044492,4008585671,3099120491,336870440,3739122087,1583276732,185277718,3688593069,3772791771,842159716,976899700,168435220,1229577106,101059084,606366792,1549591736,3267517855,3553849021,2897014595,1650632388,2442242105,2509612081,3840161747,2038008818,3890688725,3368567691,926374254,1835907034,2374863873,3587531953,1313788572,2846482505,1819063512,1448540844,4109633523,3941213647,1701162954,2054852340,2930698567,134748176,3132806511,2021165296,623210314,774795868,471606328,2795958615,3031746419,3334885783,3907527627,3722280097,1953799400,522133822,1263263126,3183336545,2341176845,2324333839,1886425312,1044267644,3048588401,1718004428,1212733584,50529542,4143317495,235803164,1633788866,892690282,1465383342,3115962473,2256965911,3250673817,488449850,2661202215,3789633753,4177007595,2560144171,286339874,1768537042,3654906025,2391705863,2492770099,2610673197,505291324,2273808917,3924369609,3469625735,1431699370,673740880,3755965093,2358021891,2711746649,2307489801,218961690,3217021541,3873845719,1111672452,1751693520,1094828930,2576986153,757954394,252645662,2964376443,1414855848,3149649517,370555436],b=[1374988112,2118214995,437757123,975658646,1001089995,530400753,2902087851,1273168787,540080725,2910219766,2295101073,4110568485,1340463100,3307916247,641025152,3043140495,3736164937,632953703,1172967064,1576976609,3274667266,2169303058,2370213795,1809054150,59727847,361929877,3211623147,2505202138,3569255213,1484005843,1239443753,2395588676,1975683434,4102977912,2572697195,666464733,3202437046,4035489047,3374361702,2110667444,1675577880,3843699074,2538681184,1649639237,2976151520,3144396420,4269907996,4178062228,1883793496,2403728665,2497604743,1383856311,2876494627,1917518562,3810496343,1716890410,3001755655,800440835,2261089178,3543599269,807962610,599762354,33778362,3977675356,2328828971,2809771154,4077384432,1315562145,1708848333,101039829,3509871135,3299278474,875451293,2733856160,92987698,2767645557,193195065,1080094634,1584504582,3178106961,1042385657,2531067453,3711829422,1306967366,2438237621,1908694277,67556463,1615861247,429456164,3602770327,2302690252,1742315127,2968011453,126454664,3877198648,2043211483,2709260871,2084704233,4169408201,0,159417987,841739592,504459436,1817866830,4245618683,260388950,1034867998,908933415,168810852,1750902305,2606453969,607530554,202008497,2472011535,3035535058,463180190,2160117071,1641816226,1517767529,470948374,3801332234,3231722213,1008918595,303765277,235474187,4069246893,766945465,337553864,1475418501,2943682380,4003061179,2743034109,4144047775,1551037884,1147550661,1543208500,2336434550,3408119516,3069049960,3102011747,3610369226,1113818384,328671808,2227573024,2236228733,3535486456,2935566865,3341394285,496906059,3702665459,226906860,2009195472,733156972,2842737049,294930682,1206477858,2835123396,2700099354,1451044056,573804783,2269728455,3644379585,2362090238,2564033334,2801107407,2776292904,3669462566,1068351396,742039012,1350078989,1784663195,1417561698,4136440770,2430122216,775550814,2193862645,2673705150,1775276924,1876241833,3475313331,3366754619,270040487,3902563182,3678124923,3441850377,1851332852,3969562369,2203032232,3868552805,2868897406,566021896,4011190502,3135740889,1248802510,3936291284,699432150,832877231,708780849,3332740144,899835584,1951317047,4236429990,3767586992,866637845,4043610186,1106041591,2144161806,395441711,1984812685,1139781709,3433712980,3835036895,2664543715,1282050075,3240894392,1181045119,2640243204,25965917,4203181171,4211818798,3009879386,2463879762,3910161971,1842759443,2597806476,933301370,1509430414,3943906441,3467192302,3076639029,3776767469,2051518780,2631065433,1441952575,404016761,1942435775,1408749034,1610459739,3745345300,2017778566,3400528769,3110650942,941896748,3265478751,371049330,3168937228,675039627,4279080257,967311729,135050206,3635733660,1683407248,2076935265,3576870512,1215061108,3501741890],v=[1347548327,1400783205,3273267108,2520393566,3409685355,4045380933,2880240216,2471224067,1428173050,4138563181,2441661558,636813900,4233094615,3620022987,2149987652,2411029155,1239331162,1730525723,2554718734,3781033664,46346101,310463728,2743944855,3328955385,3875770207,2501218972,3955191162,3667219033,768917123,3545789473,692707433,1150208456,1786102409,2029293177,1805211710,3710368113,3065962831,401639597,1724457132,3028143674,409198410,2196052529,1620529459,1164071807,3769721975,2226875310,486441376,2499348523,1483753576,428819965,2274680428,3075636216,598438867,3799141122,1474502543,711349675,129166120,53458370,2592523643,2782082824,4063242375,2988687269,3120694122,1559041666,730517276,2460449204,4042459122,2706270690,3446004468,3573941694,533804130,2328143614,2637442643,2695033685,839224033,1973745387,957055980,2856345839,106852767,1371368976,4181598602,1033297158,2933734917,1179510461,3046200461,91341917,1862534868,4284502037,605657339,2547432937,3431546947,2003294622,3182487618,2282195339,954669403,3682191598,1201765386,3917234703,3388507166,0,2198438022,1211247597,2887651696,1315723890,4227665663,1443857720,507358933,657861945,1678381017,560487590,3516619604,975451694,2970356327,261314535,3535072918,2652609425,1333838021,2724322336,1767536459,370938394,182621114,3854606378,1128014560,487725847,185469197,2918353863,3106780840,3356761769,2237133081,1286567175,3152976349,4255350624,2683765030,3160175349,3309594171,878443390,1988838185,3704300486,1756818940,1673061617,3403100636,272786309,1075025698,545572369,2105887268,4174560061,296679730,1841768865,1260232239,4091327024,3960309330,3497509347,1814803222,2578018489,4195456072,575138148,3299409036,446754879,3629546796,4011996048,3347532110,3252238545,4270639778,915985419,3483825537,681933534,651868046,2755636671,3828103837,223377554,2607439820,1649704518,3270937875,3901806776,1580087799,4118987695,3198115200,2087309459,2842678573,3016697106,1003007129,2802849917,1860738147,2077965243,164439672,4100872472,32283319,2827177882,1709610350,2125135846,136428751,3874428392,3652904859,3460984630,3572145929,3593056380,2939266226,824852259,818324884,3224740454,930369212,2801566410,2967507152,355706840,1257309336,4148292826,243256656,790073846,2373340630,1296297904,1422699085,3756299780,3818836405,457992840,3099667487,2135319889,77422314,1560382517,1945798516,788204353,1521706781,1385356242,870912086,325965383,2358957921,2050466060,2388260884,2313884476,4006521127,901210569,3990953189,1014646705,1503449823,1062597235,2031621326,3212035895,3931371469,1533017514,350174575,2256028891,2177544179,1052338372,741876788,1606591296,1914052035,213705253,2334669897,1107234197,1899603969,3725069491,2631447780,2422494913,1635502980,1893020342,1950903388,1120974935],w=[2807058932,1699970625,2764249623,1586903591,1808481195,1173430173,1487645946,59984867,4199882800,1844882806,1989249228,1277555970,3623636965,3419915562,1149249077,2744104290,1514790577,459744698,244860394,3235995134,1963115311,4027744588,2544078150,4190530515,1608975247,2627016082,2062270317,1507497298,2200818878,567498868,1764313568,3359936201,2305455554,2037970062,1047239e3,1910319033,1337376481,2904027272,2892417312,984907214,1243112415,830661914,861968209,2135253587,2011214180,2927934315,2686254721,731183368,1750626376,4246310725,1820824798,4172763771,3542330227,48394827,2404901663,2871682645,671593195,3254988725,2073724613,145085239,2280796200,2779915199,1790575107,2187128086,472615631,3029510009,4075877127,3802222185,4107101658,3201631749,1646252340,4270507174,1402811438,1436590835,3778151818,3950355702,3963161475,4020912224,2667994737,273792366,2331590177,104699613,95345982,3175501286,2377486676,1560637892,3564045318,369057872,4213447064,3919042237,1137477952,2658625497,1119727848,2340947849,1530455833,4007360968,172466556,266959938,516552836,0,2256734592,3980931627,1890328081,1917742170,4294704398,945164165,3575528878,958871085,3647212047,2787207260,1423022939,775562294,1739656202,3876557655,2530391278,2443058075,3310321856,547512796,1265195639,437656594,3121275539,719700128,3762502690,387781147,218828297,3350065803,2830708150,2848461854,428169201,122466165,3720081049,1627235199,648017665,4122762354,1002783846,2117360635,695634755,3336358691,4234721005,4049844452,3704280881,2232435299,574624663,287343814,612205898,1039717051,840019705,2708326185,793451934,821288114,1391201670,3822090177,376187827,3113855344,1224348052,1679968233,2361698556,1058709744,752375421,2431590963,1321699145,3519142200,2734591178,188127444,2177869557,3727205754,2384911031,3215212461,2648976442,2450346104,3432737375,1180849278,331544205,3102249176,4150144569,2952102595,2159976285,2474404304,766078933,313773861,2570832044,2108100632,1668212892,3145456443,2013908262,418672217,3070356634,2594734927,1852171925,3867060991,3473416636,3907448597,2614737639,919489135,164948639,2094410160,2997825956,590424639,2486224549,1723872674,3157750862,3399941250,3501252752,3625268135,2555048196,3673637356,1343127501,4130281361,3599595085,2957853679,1297403050,81781910,3051593425,2283490410,532201772,1367295589,3926170974,895287692,1953757831,1093597963,492483431,3528626907,1446242576,1192455638,1636604631,209336225,344873464,1015671571,669961897,3375740769,3857572124,2973530695,3747192018,1933530610,3464042516,935293895,3454686199,2858115069,1863638845,3683022916,4085369519,3292445032,875313188,1080017571,3279033885,621591778,1233856572,2504130317,24197544,3017672716,3835484340,3247465558,2220981195,3060847922,1551124588,1463996600],A=[4104605777,1097159550,396673818,660510266,2875968315,2638606623,4200115116,3808662347,821712160,1986918061,3430322568,38544885,3856137295,718002117,893681702,1654886325,2975484382,3122358053,3926825029,4274053469,796197571,1290801793,1184342925,3556361835,2405426947,2459735317,1836772287,1381620373,3196267988,1948373848,3764988233,3385345166,3263785589,2390325492,1480485785,3111247143,3780097726,2293045232,548169417,3459953789,3746175075,439452389,1362321559,1400849762,1685577905,1806599355,2174754046,137073913,1214797936,1174215055,3731654548,2079897426,1943217067,1258480242,529487843,1437280870,3945269170,3049390895,3313212038,923313619,679998e3,3215307299,57326082,377642221,3474729866,2041877159,133361907,1776460110,3673476453,96392454,878845905,2801699524,777231668,4082475170,2330014213,4142626212,2213296395,1626319424,1906247262,1846563261,562755902,3708173718,1040559837,3871163981,1418573201,3294430577,114585348,1343618912,2566595609,3186202582,1078185097,3651041127,3896688048,2307622919,425408743,3371096953,2081048481,1108339068,2216610296,0,2156299017,736970802,292596766,1517440620,251657213,2235061775,2933202493,758720310,265905162,1554391400,1532285339,908999204,174567692,1474760595,4002861748,2610011675,3234156416,3693126241,2001430874,303699484,2478443234,2687165888,585122620,454499602,151849742,2345119218,3064510765,514443284,4044981591,1963412655,2581445614,2137062819,19308535,1928707164,1715193156,4219352155,1126790795,600235211,3992742070,3841024952,836553431,1669664834,2535604243,3323011204,1243905413,3141400786,4180808110,698445255,2653899549,2989552604,2253581325,3252932727,3004591147,1891211689,2487810577,3915653703,4237083816,4030667424,2100090966,865136418,1229899655,953270745,3399679628,3557504664,4118925222,2061379749,3079546586,2915017791,983426092,2022837584,1607244650,2118541908,2366882550,3635996816,972512814,3283088770,1568718495,3499326569,3576539503,621982671,2895723464,410887952,2623762152,1002142683,645401037,1494807662,2595684844,1335535747,2507040230,4293295786,3167684641,367585007,3885750714,1865862730,2668221674,2960971305,2763173681,1059270954,2777952454,2724642869,1320957812,2194319100,2429595872,2815956275,77089521,3973773121,3444575871,2448830231,1305906550,4021308739,2857194700,2516901860,3518358430,1787304780,740276417,1699839814,1592394909,2352307457,2272556026,188821243,1729977011,3687994002,274084841,3594982253,3613494426,2701949495,4162096729,322734571,2837966542,1640576439,484830689,1202797690,3537852828,4067639125,349075736,3342319475,4157467219,4255800159,1030690015,1155237496,2951971274,1757691577,607398968,2738905026,499347990,3794078908,1011452712,227885567,2818666809,213114376,3034881240,1455525988,3414450555,850817237,1817998408,3092726480],T=[0,235474187,470948374,303765277,941896748,908933415,607530554,708780849,1883793496,2118214995,1817866830,1649639237,1215061108,1181045119,1417561698,1517767529,3767586992,4003061179,4236429990,4069246893,3635733660,3602770327,3299278474,3400528769,2430122216,2664543715,2362090238,2193862645,2835123396,2801107407,3035535058,3135740889,3678124923,3576870512,3341394285,3374361702,3810496343,3977675356,4279080257,4043610186,2876494627,2776292904,3076639029,3110650942,2472011535,2640243204,2403728665,2169303058,1001089995,899835584,666464733,699432150,59727847,226906860,530400753,294930682,1273168787,1172967064,1475418501,1509430414,1942435775,2110667444,1876241833,1641816226,2910219766,2743034109,2976151520,3211623147,2505202138,2606453969,2302690252,2269728455,3711829422,3543599269,3240894392,3475313331,3843699074,3943906441,4178062228,4144047775,1306967366,1139781709,1374988112,1610459739,1975683434,2076935265,1775276924,1742315127,1034867998,866637845,566021896,800440835,92987698,193195065,429456164,395441711,1984812685,2017778566,1784663195,1683407248,1315562145,1080094634,1383856311,1551037884,101039829,135050206,437757123,337553864,1042385657,807962610,573804783,742039012,2531067453,2564033334,2328828971,2227573024,2935566865,2700099354,3001755655,3168937228,3868552805,3902563182,4203181171,4102977912,3736164937,3501741890,3265478751,3433712980,1106041591,1340463100,1576976609,1408749034,2043211483,2009195472,1708848333,1809054150,832877231,1068351396,766945465,599762354,159417987,126454664,361929877,463180190,2709260871,2943682380,3178106961,3009879386,2572697195,2538681184,2236228733,2336434550,3509871135,3745345300,3441850377,3274667266,3910161971,3877198648,4110568485,4211818798,2597806476,2497604743,2261089178,2295101073,2733856160,2902087851,3202437046,2968011453,3936291284,3835036895,4136440770,4169408201,3535486456,3702665459,3467192302,3231722213,2051518780,1951317047,1716890410,1750902305,1113818384,1282050075,1584504582,1350078989,168810852,67556463,371049330,404016761,841739592,1008918595,775550814,540080725,3969562369,3801332234,4035489047,4269907996,3569255213,3669462566,3366754619,3332740144,2631065433,2463879762,2160117071,2395588676,2767645557,2868897406,3102011747,3069049960,202008497,33778362,270040487,504459436,875451293,975658646,675039627,641025152,2084704233,1917518562,1615861247,1851332852,1147550661,1248802510,1484005843,1451044056,933301370,967311729,733156972,632953703,260388950,25965917,328671808,496906059,1206477858,1239443753,1543208500,1441952575,2144161806,1908694277,1675577880,1842759443,3610369226,3644379585,3408119516,3307916247,4011190502,3776767469,4077384432,4245618683,2809771154,2842737049,3144396420,3043140495,2673705150,2438237621,2203032232,2370213795],E=[0,185469197,370938394,487725847,741876788,657861945,975451694,824852259,1483753576,1400783205,1315723890,1164071807,1950903388,2135319889,1649704518,1767536459,2967507152,3152976349,2801566410,2918353863,2631447780,2547432937,2328143614,2177544179,3901806776,3818836405,4270639778,4118987695,3299409036,3483825537,3535072918,3652904859,2077965243,1893020342,1841768865,1724457132,1474502543,1559041666,1107234197,1257309336,598438867,681933534,901210569,1052338372,261314535,77422314,428819965,310463728,3409685355,3224740454,3710368113,3593056380,3875770207,3960309330,4045380933,4195456072,2471224067,2554718734,2237133081,2388260884,3212035895,3028143674,2842678573,2724322336,4138563181,4255350624,3769721975,3955191162,3667219033,3516619604,3431546947,3347532110,2933734917,2782082824,3099667487,3016697106,2196052529,2313884476,2499348523,2683765030,1179510461,1296297904,1347548327,1533017514,1786102409,1635502980,2087309459,2003294622,507358933,355706840,136428751,53458370,839224033,957055980,605657339,790073846,2373340630,2256028891,2607439820,2422494913,2706270690,2856345839,3075636216,3160175349,3573941694,3725069491,3273267108,3356761769,4181598602,4063242375,4011996048,3828103837,1033297158,915985419,730517276,545572369,296679730,446754879,129166120,213705253,1709610350,1860738147,1945798516,2029293177,1239331162,1120974935,1606591296,1422699085,4148292826,4233094615,3781033664,3931371469,3682191598,3497509347,3446004468,3328955385,2939266226,2755636671,3106780840,2988687269,2198438022,2282195339,2501218972,2652609425,1201765386,1286567175,1371368976,1521706781,1805211710,1620529459,2105887268,1988838185,533804130,350174575,164439672,46346101,870912086,954669403,636813900,788204353,2358957921,2274680428,2592523643,2441661558,2695033685,2880240216,3065962831,3182487618,3572145929,3756299780,3270937875,3388507166,4174560061,4091327024,4006521127,3854606378,1014646705,930369212,711349675,560487590,272786309,457992840,106852767,223377554,1678381017,1862534868,1914052035,2031621326,1211247597,1128014560,1580087799,1428173050,32283319,182621114,401639597,486441376,768917123,651868046,1003007129,818324884,1503449823,1385356242,1333838021,1150208456,1973745387,2125135846,1673061617,1756818940,2970356327,3120694122,2802849917,2887651696,2637442643,2520393566,2334669897,2149987652,3917234703,3799141122,4284502037,4100872472,3309594171,3460984630,3545789473,3629546796,2050466060,1899603969,1814803222,1730525723,1443857720,1560382517,1075025698,1260232239,575138148,692707433,878443390,1062597235,243256656,91341917,409198410,325965383,3403100636,3252238545,3704300486,3620022987,3874428392,3990953189,4042459122,4227665663,2460449204,2578018489,2226875310,2411029155,3198115200,3046200461,2827177882,2743944855],S=[0,218828297,437656594,387781147,875313188,958871085,775562294,590424639,1750626376,1699970625,1917742170,2135253587,1551124588,1367295589,1180849278,1265195639,3501252752,3720081049,3399941250,3350065803,3835484340,3919042237,4270507174,4085369519,3102249176,3051593425,2734591178,2952102595,2361698556,2177869557,2530391278,2614737639,3145456443,3060847922,2708326185,2892417312,2404901663,2187128086,2504130317,2555048196,3542330227,3727205754,3375740769,3292445032,3876557655,3926170974,4246310725,4027744588,1808481195,1723872674,1910319033,2094410160,1608975247,1391201670,1173430173,1224348052,59984867,244860394,428169201,344873464,935293895,984907214,766078933,547512796,1844882806,1627235199,2011214180,2062270317,1507497298,1423022939,1137477952,1321699145,95345982,145085239,532201772,313773861,830661914,1015671571,731183368,648017665,3175501286,2957853679,2807058932,2858115069,2305455554,2220981195,2474404304,2658625497,3575528878,3625268135,3473416636,3254988725,3778151818,3963161475,4213447064,4130281361,3599595085,3683022916,3432737375,3247465558,3802222185,4020912224,4172763771,4122762354,3201631749,3017672716,2764249623,2848461854,2331590177,2280796200,2431590963,2648976442,104699613,188127444,472615631,287343814,840019705,1058709744,671593195,621591778,1852171925,1668212892,1953757831,2037970062,1514790577,1463996600,1080017571,1297403050,3673637356,3623636965,3235995134,3454686199,4007360968,3822090177,4107101658,4190530515,2997825956,3215212461,2830708150,2779915199,2256734592,2340947849,2627016082,2443058075,172466556,122466165,273792366,492483431,1047239e3,861968209,612205898,695634755,1646252340,1863638845,2013908262,1963115311,1446242576,1530455833,1277555970,1093597963,1636604631,1820824798,2073724613,1989249228,1436590835,1487645946,1337376481,1119727848,164948639,81781910,331544205,516552836,1039717051,821288114,669961897,719700128,2973530695,3157750862,2871682645,2787207260,2232435299,2283490410,2667994737,2450346104,3647212047,3564045318,3279033885,3464042516,3980931627,3762502690,4150144569,4199882800,3070356634,3121275539,2904027272,2686254721,2200818878,2384911031,2570832044,2486224549,3747192018,3528626907,3310321856,3359936201,3950355702,3867060991,4049844452,4234721005,1739656202,1790575107,2108100632,1890328081,1402811438,1586903591,1233856572,1149249077,266959938,48394827,369057872,418672217,1002783846,919489135,567498868,752375421,209336225,24197544,376187827,459744698,945164165,895287692,574624663,793451934,1679968233,1764313568,2117360635,1933530610,1343127501,1560637892,1243112415,1192455638,3704280881,3519142200,3336358691,3419915562,3907448597,3857572124,4075877127,4294704398,3029510009,3113855344,2927934315,2744104290,2159976285,2377486676,2594734927,2544078150],I=[0,151849742,303699484,454499602,607398968,758720310,908999204,1059270954,1214797936,1097159550,1517440620,1400849762,1817998408,1699839814,2118541908,2001430874,2429595872,2581445614,2194319100,2345119218,3034881240,3186202582,2801699524,2951971274,3635996816,3518358430,3399679628,3283088770,4237083816,4118925222,4002861748,3885750714,1002142683,850817237,698445255,548169417,529487843,377642221,227885567,77089521,1943217067,2061379749,1640576439,1757691577,1474760595,1592394909,1174215055,1290801793,2875968315,2724642869,3111247143,2960971305,2405426947,2253581325,2638606623,2487810577,3808662347,3926825029,4044981591,4162096729,3342319475,3459953789,3576539503,3693126241,1986918061,2137062819,1685577905,1836772287,1381620373,1532285339,1078185097,1229899655,1040559837,923313619,740276417,621982671,439452389,322734571,137073913,19308535,3871163981,4021308739,4104605777,4255800159,3263785589,3414450555,3499326569,3651041127,2933202493,2815956275,3167684641,3049390895,2330014213,2213296395,2566595609,2448830231,1305906550,1155237496,1607244650,1455525988,1776460110,1626319424,2079897426,1928707164,96392454,213114376,396673818,514443284,562755902,679998e3,865136418,983426092,3708173718,3557504664,3474729866,3323011204,4180808110,4030667424,3945269170,3794078908,2507040230,2623762152,2272556026,2390325492,2975484382,3092726480,2738905026,2857194700,3973773121,3856137295,4274053469,4157467219,3371096953,3252932727,3673476453,3556361835,2763173681,2915017791,3064510765,3215307299,2156299017,2307622919,2459735317,2610011675,2081048481,1963412655,1846563261,1729977011,1480485785,1362321559,1243905413,1126790795,878845905,1030690015,645401037,796197571,274084841,425408743,38544885,188821243,3613494426,3731654548,3313212038,3430322568,4082475170,4200115116,3780097726,3896688048,2668221674,2516901860,2366882550,2216610296,3141400786,2989552604,2837966542,2687165888,1202797690,1320957812,1437280870,1554391400,1669664834,1787304780,1906247262,2022837584,265905162,114585348,499347990,349075736,736970802,585122620,972512814,821712160,2595684844,2478443234,2293045232,2174754046,3196267988,3079546586,2895723464,2777952454,3537852828,3687994002,3234156416,3385345166,4142626212,4293295786,3841024952,3992742070,174567692,57326082,410887952,292596766,777231668,660510266,1011452712,893681702,1108339068,1258480242,1343618912,1494807662,1715193156,1865862730,1948373848,2100090966,2701949495,2818666809,3004591147,3122358053,2235061775,2352307457,2535604243,2653899549,3915653703,3764988233,4219352155,4067639125,3444575871,3294430577,3746175075,3594982253,836553431,953270745,600235211,718002117,367585007,484830689,133361907,251657213,2041877159,1891211689,1806599355,1654886325,1568718495,1418573201,1335535747,1184342925];function k(e){for(var t=[],n=0;n<e.length;n+=4)t.push(e[n]<<24|e[n+1]<<16|e[n+2]<<8|e[n+3]);return t}var C=function(e){if(!(this instanceof C))throw Error("AES must be instanitated with `new`");Object.defineProperty(this,"key",{value:i(e,!0)}),this._prepare()};C.prototype._prepare=function(){var e=c[this.key.length];if(null==e)throw new Error("invalid key size (must be 16, 24 or 32 bytes)");this._Ke=[],this._Kd=[];for(var t=0;t<=e;t++)this._Ke.push([0,0,0,0]),this._Kd.push([0,0,0,0]);var n,r=4*(e+1),i=this.key.length/4,s=k(this.key);for(t=0;t<i;t++)this._Ke[n=t>>2][t%4]=s[t],this._Kd[e-n][t%4]=s[t];for(var a,o=0,u=i;u<r;){if(s[0]^=h[(a=s[i-1])>>16&255]<<24^h[a>>8&255]<<16^h[255&a]<<8^h[a>>24&255]^d[o]<<24,o+=1,8!=i)for(t=1;t<i;t++)s[t]^=s[t-1];else{for(t=1;t<i/2;t++)s[t]^=s[t-1];for(s[i/2]^=h[255&(a=s[i/2-1])]^h[a>>8&255]<<8^h[a>>16&255]<<16^h[a>>24&255]<<24,t=i/2+1;t<i;t++)s[t]^=s[t-1]}for(t=0;t<i&&u<r;)this._Ke[l=u>>2][p=u%4]=s[t],this._Kd[e-l][p]=s[t++],u++}for(var l=1;l<e;l++)for(var p=0;p<4;p++)this._Kd[l][p]=T[(a=this._Kd[l][p])>>24&255]^E[a>>16&255]^S[a>>8&255]^I[255&a]},C.prototype.encrypt=function(e){if(16!=e.length)throw new Error("invalid plaintext size (must be 16 bytes)");for(var t=this._Ke.length-1,n=[0,0,0,0],r=k(e),i=0;i<4;i++)r[i]^=this._Ke[0][i];for(var a=1;a<t;a++){for(i=0;i<4;i++)n[i]=f[r[i]>>24&255]^m[r[(i+1)%4]>>16&255]^y[r[(i+2)%4]>>8&255]^g[255&r[(i+3)%4]]^this._Ke[a][i];r=n.slice()}var o,u=s(16);for(i=0;i<4;i++)u[4*i]=255&(h[r[i]>>24&255]^(o=this._Ke[t][i])>>24),u[4*i+1]=255&(h[r[(i+1)%4]>>16&255]^o>>16),u[4*i+2]=255&(h[r[(i+2)%4]>>8&255]^o>>8),u[4*i+3]=255&(h[255&r[(i+3)%4]]^o);return u},C.prototype.decrypt=function(e){if(16!=e.length)throw new Error("invalid ciphertext size (must be 16 bytes)");for(var t=this._Kd.length-1,n=[0,0,0,0],r=k(e),i=0;i<4;i++)r[i]^=this._Kd[0][i];for(var a=1;a<t;a++){for(i=0;i<4;i++)n[i]=b[r[i]>>24&255]^v[r[(i+3)%4]>>16&255]^w[r[(i+2)%4]>>8&255]^A[255&r[(i+1)%4]]^this._Kd[a][i];r=n.slice()}var o,u=s(16);for(i=0;i<4;i++)u[4*i]=255&(p[r[i]>>24&255]^(o=this._Kd[t][i])>>24),u[4*i+1]=255&(p[r[(i+3)%4]>>16&255]^o>>16),u[4*i+2]=255&(p[r[(i+2)%4]>>8&255]^o>>8),u[4*i+3]=255&(p[255&r[(i+1)%4]]^o);return u};var N=function(e){if(!(this instanceof N))throw Error("AES must be instanitated with `new`");this.description="Electronic Code Block",this.name="ecb",this._aes=new C(e)};N.prototype.encrypt=function(e){if((e=i(e)).length%16!=0)throw new Error("invalid plaintext size (must be multiple of 16 bytes)");for(var t=s(e.length),n=s(16),r=0;r<e.length;r+=16)a(e,n,0,r,r+16),a(n=this._aes.encrypt(n),t,r);return t},N.prototype.decrypt=function(e){if((e=i(e)).length%16!=0)throw new Error("invalid ciphertext size (must be multiple of 16 bytes)");for(var t=s(e.length),n=s(16),r=0;r<e.length;r+=16)a(e,n,0,r,r+16),a(n=this._aes.decrypt(n),t,r);return t};var x=function(e,t){if(!(this instanceof x))throw Error("AES must be instanitated with `new`");if(this.description="Cipher Block Chaining",this.name="cbc",t){if(16!=t.length)throw new Error("invalid initialation vector size (must be 16 bytes)")}else t=s(16);this._lastCipherblock=i(t,!0),this._aes=new C(e)};x.prototype.encrypt=function(e){if((e=i(e)).length%16!=0)throw new Error("invalid plaintext size (must be multiple of 16 bytes)");for(var t=s(e.length),n=s(16),r=0;r<e.length;r+=16){a(e,n,0,r,r+16);for(var o=0;o<16;o++)n[o]^=this._lastCipherblock[o];this._lastCipherblock=this._aes.encrypt(n),a(this._lastCipherblock,t,r)}return t},x.prototype.decrypt=function(e){if((e=i(e)).length%16!=0)throw new Error("invalid ciphertext size (must be multiple of 16 bytes)");for(var t=s(e.length),n=s(16),r=0;r<e.length;r+=16){a(e,n,0,r,r+16),n=this._aes.decrypt(n);for(var o=0;o<16;o++)t[r+o]=n[o]^this._lastCipherblock[o];a(e,this._lastCipherblock,0,r,r+16)}return t};var _=function(e,t,n){if(!(this instanceof _))throw Error("AES must be instanitated with `new`");if(this.description="Cipher Feedback",this.name="cfb",t){if(16!=t.length)throw new Error("invalid initialation vector size (must be 16 size)")}else t=s(16);n||(n=1),this.segmentSize=n,this._shiftRegister=i(t,!0),this._aes=new C(e)};_.prototype.encrypt=function(e){if(e.length%this.segmentSize!=0)throw new Error("invalid plaintext size (must be segmentSize bytes)");for(var t,n=i(e,!0),r=0;r<n.length;r+=this.segmentSize){t=this._aes.encrypt(this._shiftRegister);for(var s=0;s<this.segmentSize;s++)n[r+s]^=t[s];a(this._shiftRegister,this._shiftRegister,0,this.segmentSize),a(n,this._shiftRegister,16-this.segmentSize,r,r+this.segmentSize)}return n},_.prototype.decrypt=function(e){if(e.length%this.segmentSize!=0)throw new Error("invalid ciphertext size (must be segmentSize bytes)");for(var t,n=i(e,!0),r=0;r<n.length;r+=this.segmentSize){t=this._aes.encrypt(this._shiftRegister);for(var s=0;s<this.segmentSize;s++)n[r+s]^=t[s];a(this._shiftRegister,this._shiftRegister,0,this.segmentSize),a(e,this._shiftRegister,16-this.segmentSize,r,r+this.segmentSize)}return n};var R=function(e,t){if(!(this instanceof R))throw Error("AES must be instanitated with `new`");if(this.description="Output Feedback",this.name="ofb",t){if(16!=t.length)throw new Error("invalid initialation vector size (must be 16 bytes)")}else t=s(16);this._lastPrecipher=i(t,!0),this._lastPrecipherIndex=16,this._aes=new C(e)};R.prototype.encrypt=function(e){for(var t=i(e,!0),n=0;n<t.length;n++)16===this._lastPrecipherIndex&&(this._lastPrecipher=this._aes.encrypt(this._lastPrecipher),this._lastPrecipherIndex=0),t[n]^=this._lastPrecipher[this._lastPrecipherIndex++];return t},R.prototype.decrypt=R.prototype.encrypt;var M=function(e){if(!(this instanceof M))throw Error("Counter must be instanitated with `new`");0===e||e||(e=1),"number"==typeof e?(this._counter=s(16),this.setValue(e)):this.setBytes(e)};M.prototype.setValue=function(e){if("number"!=typeof e||parseInt(e)!=e)throw new Error("invalid counter value (must be an integer)");for(var t=15;t>=0;--t)this._counter[t]=e%256,e>>=8},M.prototype.setBytes=function(e){if(16!=(e=i(e,!0)).length)throw new Error("invalid counter bytes size (must be 16 bytes)");this._counter=e},M.prototype.increment=function(){for(var e=15;e>=0;e--){if(255!==this._counter[e]){this._counter[e]++;break}this._counter[e]=0}};var P=function(e,t){if(!(this instanceof P))throw Error("AES must be instanitated with `new`");this.description="Counter",this.name="ctr",t instanceof M||(t=new M(t)),this._counter=t,this._remainingCounter=null,this._remainingCounterIndex=16,this._aes=new C(e)};P.prototype.encrypt=function(e){for(var t=i(e,!0),n=0;n<t.length;n++)16===this._remainingCounterIndex&&(this._remainingCounter=this._aes.encrypt(this._counter._counter),this._remainingCounterIndex=0,this._counter.increment()),t[n]^=this._remainingCounter[this._remainingCounterIndex++];return t},P.prototype.decrypt=P.prototype.encrypt,e.exports={AES:C,Counter:M,ModeOfOperation:{ecb:N,cbc:x,cfb:_,ofb:R,ctr:P},utils:{hex:l,utf8:u},padding:{pkcs7:{pad:function(e){var t=16-(e=i(e,!0)).length%16,n=s(e.length+t);a(e,n);for(var r=e.length;r<n.length;r++)n[r]=t;return n},strip:function(e){if((e=i(e,!0)).length<16)throw new Error("PKCS#7 invalid length");var t=e[e.length-1];if(t>16)throw new Error("PKCS#7 padding byte out of range");for(var n=e.length-t,r=0;r<t;r++)if(e[n+r]!==t)throw new Error("PKCS#7 invalid padding byte");var o=s(n);return a(e,o,0,0,n),o}}},_arrayTest:{coerceArray:i,createArray:s,copyArray:a}}}()});const vl="json-wallets/5.8.0";function wl(e){return"string"==typeof e&&"0x"!==e.substring(0,2)&&(e="0x"+e),Mn(e)}function Al(e,t){for(e=String(e);e.length<t;)e="0"+e;return e}function Tl(e){return"string"==typeof e?ei(e,Qr.NFKC):Mn(e)}function El(e,t){let n=e;const r=t.toLowerCase().split("/");for(let e=0;e<r.length;e++){let t=null;for(const i in n)if(i.toLowerCase()===r[e]){t=n[i];break}if(null===t)return null;n=t}return n}function Sl(e){const t=Mn(e);t[6]=15&t[6]|64,t[8]=63&t[8]|128;const n=Fn(t);return[n.substring(2,10),n.substring(10,14),n.substring(14,18),n.substring(18,22),n.substring(22,34)].join("-")}const Il=new In(vl);class kl extends kr{isCrowdsaleAccount(e){return!(!e||!e._isCrowdsaleAccount)}}function Cl(e,t){const n=JSON.parse(e);t=Tl(t);const r=Gi(El(n,"ethaddr")),i=wl(El(n,"encseed"));i&&i.length%16==0||Il.throwArgumentError("invalid encseed","json",e);const s=Mn(Xu(t,t,2e3,32,"sha256")).slice(0,16),a=i.slice(0,16),o=i.slice(16),u=new bl.ModeOfOperation.cbc(s,a),l=bl.padding.pkcs7.strip(Mn(u.decrypt(o)));let c="";for(let e=0;e<l.length;e++)c+=String.fromCharCode(l[e]);const d=Wr(ei(c));return new kl({_isCrowdsaleAccount:!0,address:r,privateKey:d})}function Nl(e){let t=null;try{t=JSON.parse(e)}catch(e){return!1}return t.encseed&&t.ethaddr}function xl(e){let t=null;try{t=JSON.parse(e)}catch(e){return!1}return!(!t.version||parseInt(t.version)!==t.version||3!==parseInt(t.version))}var _l=pn(function(e,t){!function(t){const n=2147483647;function r(e){const t=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]);let n=1779033703,r=3144134277,i=1013904242,s=2773480762,a=1359893119,o=2600822924,u=528734635,l=1541459225;const c=new Uint32Array(64);function d(e){let d=0,h=e.length;for(;h>=64;){let p,f,m,y,g,b=n,v=r,w=i,A=s,T=a,E=o,S=u,I=l;for(f=0;f<16;f++)m=d+4*f,c[f]=(255&e[m])<<24|(255&e[m+1])<<16|(255&e[m+2])<<8|255&e[m+3];for(f=16;f<64;f++)p=c[f-2],y=(p>>>17|p<<15)^(p>>>19|p<<13)^p>>>10,p=c[f-15],g=(p>>>7|p<<25)^(p>>>18|p<<14)^p>>>3,c[f]=(y+c[f-7]|0)+(g+c[f-16]|0)|0;for(f=0;f<64;f++)y=(((T>>>6|T<<26)^(T>>>11|T<<21)^(T>>>25|T<<7))+(T&E^~T&S)|0)+(I+(t[f]+c[f]|0)|0)|0,g=((b>>>2|b<<30)^(b>>>13|b<<19)^(b>>>22|b<<10))+(b&v^b&w^v&w)|0,I=S,S=E,E=T,T=A+y|0,A=w,w=v,v=b,b=y+g|0;n=n+b|0,r=r+v|0,i=i+w|0,s=s+A|0,a=a+T|0,o=o+E|0,u=u+S|0,l=l+I|0,d+=64,h-=64}}d(e);let h,p=e.length%64,f=e.length/536870912|0,m=e.length<<3,y=p<56?56:120,g=e.slice(e.length-p,e.length);for(g.push(128),h=p+1;h<y;h++)g.push(0);return g.push(f>>>24&255),g.push(f>>>16&255),g.push(f>>>8&255),g.push(f>>>0&255),g.push(m>>>24&255),g.push(m>>>16&255),g.push(m>>>8&255),g.push(m>>>0&255),d(g),[n>>>24&255,n>>>16&255,n>>>8&255,n>>>0&255,r>>>24&255,r>>>16&255,r>>>8&255,r>>>0&255,i>>>24&255,i>>>16&255,i>>>8&255,i>>>0&255,s>>>24&255,s>>>16&255,s>>>8&255,s>>>0&255,a>>>24&255,a>>>16&255,a>>>8&255,a>>>0&255,o>>>24&255,o>>>16&255,o>>>8&255,o>>>0&255,u>>>24&255,u>>>16&255,u>>>8&255,u>>>0&255,l>>>24&255,l>>>16&255,l>>>8&255,l>>>0&255]}function i(e,t,n){e=e.length<=64?e:r(e);const i=64+t.length+4,s=new Array(i),a=new Array(64);let o,u=[];for(o=0;o<64;o++)s[o]=54;for(o=0;o<e.length;o++)s[o]^=e[o];for(o=0;o<t.length;o++)s[64+o]=t[o];for(o=i-4;o<i;o++)s[o]=0;for(o=0;o<64;o++)a[o]=92;for(o=0;o<e.length;o++)a[o]^=e[o];function l(){for(let e=i-1;e>=i-4;e--){if(s[e]++,s[e]<=255)return;s[e]=0}}for(;n>=32;)l(),u=u.concat(r(a.concat(r(s)))),n-=32;return n>0&&(l(),u=u.concat(r(a.concat(r(s))).slice(0,n))),u}function s(e,t,n,r,i){let s;for(l(e,16*(2*n-1),i,0,16),s=0;s<2*n;s++)u(e,16*s,i,16),o(i,r),l(i,0,e,t+16*s,16);for(s=0;s<n;s++)l(e,t+2*s*16,e,16*s,16);for(s=0;s<n;s++)l(e,t+16*(2*s+1),e,16*(s+n),16)}function a(e,t){return e<<t|e>>>32-t}function o(e,t){l(e,0,t,0,16);for(let e=8;e>0;e-=2)t[4]^=a(t[0]+t[12],7),t[8]^=a(t[4]+t[0],9),t[12]^=a(t[8]+t[4],13),t[0]^=a(t[12]+t[8],18),t[9]^=a(t[5]+t[1],7),t[13]^=a(t[9]+t[5],9),t[1]^=a(t[13]+t[9],13),t[5]^=a(t[1]+t[13],18),t[14]^=a(t[10]+t[6],7),t[2]^=a(t[14]+t[10],9),t[6]^=a(t[2]+t[14],13),t[10]^=a(t[6]+t[2],18),t[3]^=a(t[15]+t[11],7),t[7]^=a(t[3]+t[15],9),t[11]^=a(t[7]+t[3],13),t[15]^=a(t[11]+t[7],18),t[1]^=a(t[0]+t[3],7),t[2]^=a(t[1]+t[0],9),t[3]^=a(t[2]+t[1],13),t[0]^=a(t[3]+t[2],18),t[6]^=a(t[5]+t[4],7),t[7]^=a(t[6]+t[5],9),t[4]^=a(t[7]+t[6],13),t[5]^=a(t[4]+t[7],18),t[11]^=a(t[10]+t[9],7),t[8]^=a(t[11]+t[10],9),t[9]^=a(t[8]+t[11],13),t[10]^=a(t[9]+t[8],18),t[12]^=a(t[15]+t[14],7),t[13]^=a(t[12]+t[15],9),t[14]^=a(t[13]+t[12],13),t[15]^=a(t[14]+t[13],18);for(let n=0;n<16;++n)e[n]+=t[n]}function u(e,t,n,r){for(let i=0;i<r;i++)n[i]^=e[t+i]}function l(e,t,n,r,i){for(;i--;)n[r++]=e[t++]}function c(e){if(!e||"number"!=typeof e.length)return!1;for(let t=0;t<e.length;t++){const n=e[t];if("number"!=typeof n||n%1||n<0||n>=256)return!1}return!0}function d(e,t){if("number"!=typeof e||e%1)throw new Error("invalid "+t);return e}function h(e,t,r,a,o,h,p){if(r=d(r,"N"),a=d(a,"r"),o=d(o,"p"),h=d(h,"dkLen"),0===r||0!=(r&r-1))throw new Error("N must be power of 2");if(r>n/128/a)throw new Error("N too large");if(a>n/128/o)throw new Error("r too large");if(!c(e))throw new Error("password must be an array or buffer");if(e=Array.prototype.slice.call(e),!c(t))throw new Error("salt must be an array or buffer");t=Array.prototype.slice.call(t);let f=i(e,t,128*o*a);const m=new Uint32Array(32*o*a);for(let e=0;e<m.length;e++){const t=4*e;m[e]=(255&f[t+3])<<24|(255&f[t+2])<<16|(255&f[t+1])<<8|(255&f[t+0])<<0}const y=new Uint32Array(64*a),g=new Uint32Array(32*a*r),b=32*a,v=new Uint32Array(16),w=new Uint32Array(16),A=o*r*2;let T,E,S=0,I=null,k=!1,C=0,N=0;const x=p?parseInt(1e3/a):4294967295,_="undefined"!=typeof setImmediate?setImmediate:setTimeout,R=function(){if(k)return p(new Error("cancelled"),S/A);let t;switch(C){case 0:E=32*N*a,l(m,E,y,0,b),C=1,T=0;case 1:t=r-T,t>x&&(t=x);for(let e=0;e<t;e++)l(y,0,g,(T+e)*b,b),s(y,b,a,v,w);if(T+=t,S+=t,p){const e=parseInt(1e3*S/A);if(e!==I){if(k=p(null,S/A),k)break;I=e}}if(T<r)break;T=0,C=2;case 2:t=r-T,t>x&&(t=x);for(let e=0;e<t;e++)u(g,(y[16*(2*a-1)]&r-1)*b,y,b),s(y,b,a,v,w);if(T+=t,S+=t,p){const e=parseInt(1e3*S/A);if(e!==I){if(k=p(null,S/A),k)break;I=e}}if(T<r)break;if(l(y,0,m,E,b),N++,N<o){C=0;break}f=[];for(let e=0;e<m.length;e++)f.push(m[e]>>0&255),f.push(m[e]>>8&255),f.push(m[e]>>16&255),f.push(m[e]>>24&255);const n=i(e,f,h);return p&&p(null,1,n),n}p&&_(R)};if(!p)for(;;){const e=R();if(null!=e)return e}R()}const p={scrypt:function(e,t,n,r,i,s,a){return new Promise(function(o,u){let l=0;a&&a(0),h(e,t,n,r,i,s,function(e,t,n){if(e)u(e);else if(n)a&&1!==l&&a(1),o(new Uint8Array(n));else if(a&&t!==l)return l=t,a(t)})})},syncScrypt:function(e,t,n,r,i,s){return new Uint8Array(h(e,t,n,r,i,s))}};e.exports=p}()}),Rl=_l;const Ml=new In(vl);function Pl(e){return null!=e&&e.mnemonic&&e.mnemonic.phrase}class Ol extends kr{isKeystoreAccount(e){return!(!e||!e._isKeystoreAccount)}}function Bl(e,t){const n=wl(El(e,"crypto/ciphertext"));if(Fn(Wr(Pn([t.slice(16,32),n]))).substring(2)!==El(e,"crypto/mac").toLowerCase())throw new Error("invalid password");const r=function(e,t,n){if("aes-128-ctr"===El(e,"crypto/cipher")){const r=wl(El(e,"crypto/cipherparams/iv")),i=new bl.Counter(r);return Mn(new bl.ModeOfOperation.ctr(t,i).decrypt(n))}return null}(e,t.slice(0,16),n);r||Ml.throwError("unsupported cipher",In.errors.UNSUPPORTED_OPERATION,{operation:"decrypt"});const i=t.slice(32,64),s=Jo(r);if(e.address){let t=e.address.toLowerCase();if("0x"!==t.substring(0,2)&&(t="0x"+t),Gi(t)!==s)throw new Error("address mismatch")}const a={_isKeystoreAccount:!0,address:s,privateKey:Fn(r)};if("0.1"===El(e,"x-ethers/version")){const t=wl(El(e,"x-ethers/mnemonicCiphertext")),n=wl(El(e,"x-ethers/mnemonicCounter")),r=new bl.Counter(n),s=new bl.ModeOfOperation.ctr(i,r),o=El(e,"x-ethers/path")||fl,u=El(e,"x-ethers/locale")||"en",l=Mn(s.decrypt(t));try{const e=gl(l,u),t=ml.fromMnemonic(e,null,u).derivePath(o);if(t.privateKey!=a.privateKey)throw new Error("mnemonic mismatch");a.mnemonic=t.mnemonic}catch(e){if(e.code!==In.errors.INVALID_ARGUMENT||"wordlist"!==e.argument)throw e}}return new Ol(a)}function Dl(e,t,n,r,i){return Mn(Xu(e,t,n,r,i))}function Fl(e,t,n,r,i){return Promise.resolve(Dl(e,t,n,r,i))}function Ll(e,t,n,r,i){const s=Tl(t),a=El(e,"crypto/kdf");if(a&&"string"==typeof a){const t=function(e,t){return Ml.throwArgumentError("invalid key-derivation function parameters",e,t)};if("scrypt"===a.toLowerCase()){const n=wl(El(e,"crypto/kdfparams/salt")),o=parseInt(El(e,"crypto/kdfparams/n")),u=parseInt(El(e,"crypto/kdfparams/r")),l=parseInt(El(e,"crypto/kdfparams/p"));o&&u&&l||t("kdf",a),0!=(o&o-1)&&t("N",o);const c=parseInt(El(e,"crypto/kdfparams/dklen"));return 32!==c&&t("dklen",c),r(s,n,o,u,l,64,i)}if("pbkdf2"===a.toLowerCase()){const r=wl(El(e,"crypto/kdfparams/salt"));let i=null;const a=El(e,"crypto/kdfparams/prf");"hmac-sha256"===a?i="sha256":"hmac-sha512"===a?i="sha512":t("prf",a);const o=parseInt(El(e,"crypto/kdfparams/c")),u=parseInt(El(e,"crypto/kdfparams/dklen"));return 32!==u&&t("dklen",u),n(s,r,o,u,i)}}return Ml.throwArgumentError("unsupported key-derivation function","kdf",a)}var Ul=function(e,t,n,r){return new(n||(n=Promise))(function(i,s){function a(e){try{u(r.next(e))}catch(e){s(e)}}function o(e){try{u(r.throw(e))}catch(e){s(e)}}function u(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n(function(e){e(t)})).then(a,o)}u((r=r.apply(e,t||[])).next())})};const Gl=new In("wallet/5.8.0");class Hl extends o{constructor(e,t){if(super(),null!=(n=e)&&Bn(n.privateKey,32)&&null!=n.address){const t=new Go(e.privateKey);if(gr(this,"_signingKey",()=>t),gr(this,"address",Jo(this.publicKey)),this.address!==Gi(e.address)&&Gl.throwArgumentError("privateKey/address mismatch","privateKey","[REDACTED]"),function(e){const t=e.mnemonic;return t&&t.phrase}(e)){const t=e.mnemonic;gr(this,"_mnemonic",()=>({phrase:t.phrase,path:t.path||fl,locale:t.locale||"en"}));const n=this.mnemonic;Jo(ml.fromMnemonic(n.phrase,null,n.locale).derivePath(n.path).privateKey)!==this.address&&Gl.throwArgumentError("mnemonic/address mismatch","privateKey","[REDACTED]")}else gr(this,"_mnemonic",()=>null)}else{if(Go.isSigningKey(e))"secp256k1"!==e.curve&&Gl.throwArgumentError("unsupported curve; must be secp256k1","privateKey","[REDACTED]"),gr(this,"_signingKey",()=>e);else{"string"==typeof e&&e.match(/^[0-9a-f]*$/i)&&64===e.length&&(e="0x"+e);const t=new Go(e);gr(this,"_signingKey",()=>t)}gr(this,"_mnemonic",()=>null),gr(this,"address",Jo(this.publicKey))}var n;t&&!xr.isProvider(t)&&Gl.throwArgumentError("invalid provider","provider",t),gr(this,"provider",t||null)}get mnemonic(){return this._mnemonic()}get privateKey(){return this._signingKey().privateKey}get publicKey(){return this._signingKey().publicKey}getAddress(){return Promise.resolve(this.address)}connect(e){return new Hl(this,e)}signTransaction(e){return vr(e).then(t=>{null!=t.from&&(Gi(t.from)!==this.address&&Gl.throwArgumentError("transaction from address mismatch","transaction.from",e.from),delete t.from);const n=this._signingKey().signDigest(Wr(nu(t)));return nu(t,n)})}signMessage(e){return Ul(this,void 0,void 0,function*(){return zn(this._signingKey().signDigest(function(e){return"string"==typeof e&&(e=ei(e)),Wr(Pn([ei("Ethereum Signed Message:\n"),ei(String(e.length)),e]))}(e)))})}_signTypedData(e,t,n){return Ul(this,void 0,void 0,function*(){const r=yield ns.resolveNames(e,t,n,e=>(null==this.provider&&Gl.throwError("cannot resolve ENS names without a provider",In.errors.UNSUPPORTED_OPERATION,{operation:"resolveName",value:e}),this.provider.resolveName(e)));return zn(this._signingKey().signDigest(ns.hash(r.domain,t,r.value)))})}encrypt(e,t,n){if("function"!=typeof t||n||(n=t,t={}),n&&"function"!=typeof n)throw new Error("invalid callback");return t||(t={}),function(e,t,n,r){try{if(Gi(e.address)!==Jo(e.privateKey))throw new Error("address/privateKey mismatch");if(Pl(e)){const t=e.mnemonic;if(ml.fromMnemonic(t.phrase,null,t.locale).derivePath(t.path||fl).privateKey!=e.privateKey)throw new Error("mnemonic mismatch")}}catch(e){return Promise.reject(e)}"function"!=typeof n||r||(r=n,n={}),n||(n={});const i=Mn(e.privateKey),s=Tl(t);let a=null,o=null,u=null;if(Pl(e)){const t=e.mnemonic;a=Mn(yl(t.phrase,t.locale||"en")),o=t.path||fl,u=t.locale||"en"}let l=n.client;l||(l="ethers.js");let c=null;c=n.salt?Mn(n.salt):Ku(32);let d=null;if(n.iv){if(d=Mn(n.iv),16!==d.length)throw new Error("invalid iv")}else d=Ku(16);let h=null;if(n.uuid){if(h=Mn(n.uuid),16!==h.length)throw new Error("invalid uuid")}else h=Ku(16);let p=1<<17,f=8,m=1;return n.scrypt&&(n.scrypt.N&&(p=n.scrypt.N),n.scrypt.r&&(f=n.scrypt.r),n.scrypt.p&&(m=n.scrypt.p)),Rl.scrypt(s,c,p,f,m,64,r).then(t=>{const n=(t=Mn(t)).slice(0,16),r=t.slice(16,32),s=t.slice(32,64),y=new bl.Counter(d),g=Mn(new bl.ModeOfOperation.ctr(n,y).encrypt(i)),b=Wr(Pn([r,g])),v={address:e.address.substring(2).toLowerCase(),id:Sl(h),version:3,crypto:{cipher:"aes-128-ctr",cipherparams:{iv:Fn(d).substring(2)},ciphertext:Fn(g).substring(2),kdf:"scrypt",kdfparams:{salt:Fn(c).substring(2),n:p,dklen:32,p:m,r:f},mac:b.substring(2)}};if(a){const e=Ku(16),t=new bl.Counter(e),n=Mn(new bl.ModeOfOperation.ctr(s,t).encrypt(a)),r=new Date,i=r.getUTCFullYear()+"-"+Al(r.getUTCMonth()+1,2)+"-"+Al(r.getUTCDate(),2)+"T"+Al(r.getUTCHours(),2)+"-"+Al(r.getUTCMinutes(),2)+"-"+Al(r.getUTCSeconds(),2)+".0Z";v["x-ethers"]={client:l,gethFilename:"UTC--"+i+"--"+v.address,mnemonicCounter:Fn(e).substring(2),mnemonicCiphertext:Fn(n).substring(2),path:o,locale:u,version:"0.1"}}return JSON.stringify(v)})}(this,e,t,n)}static createRandom(e){let t=Ku(16);e||(e={}),e.extraEntropy&&(t=Mn(Un(Wr(Pn([t,e.extraEntropy])),0,16)));const n=gl(t,e.locale);return Hl.fromMnemonic(n,e.path,e.locale)}static fromEncryptedJson(e,t,n){return function(e,t,n){if(Nl(e)){n&&n(0);const r=Cl(e,t);return n&&n(1),Promise.resolve(r)}return xl(e)?function(e,t,n){return r=this,s=function*(){const r=JSON.parse(e);return Bl(r,yield Ll(r,t,Fl,Rl.scrypt,n))},new((i=void 0)||(i=Promise))(function(e,t){function n(e){try{o(s.next(e))}catch(e){t(e)}}function a(e){try{o(s.throw(e))}catch(e){t(e)}}function o(t){var r;t.done?e(t.value):(r=t.value,r instanceof i?r:new i(function(e){e(r)})).then(n,a)}o((s=s.apply(r,[])).next())});var r,i,s}(e,t,n):Promise.reject(new Error("invalid JSON wallet"))}(e,t,n).then(e=>new Hl(e))}static fromEncryptedJsonSync(e,t){return new Hl(function(e,t){if(Nl(e))return Cl(e,t);if(xl(e))return function(e,t){const n=JSON.parse(e);return Bl(n,Ll(n,t,Dl,Rl.syncScrypt))}(e,t);throw new Error("invalid JSON wallet")}(e,t))}static fromMnemonic(e,t,n){return t||(t=fl),new Hl(ml.fromMnemonic(e,null,n).derivePath(t))}}function ql(e){return"string"==typeof e?new Hl(e):"request"in e||"send"in e?new Yu(e).getSigner():e}const Vl=new l;async function zl({slippageBps:e,appCode:t,orderClass:n,partnerFee:r},i){const s={slippageBips:e},a={orderClass:n},o=await Vl.generateAppDataDoc(A({appCode:t,metadata:{quote:s,orderClass:a,partnerFee:r}},i||{})),{fullAppData:u,appDataKeccak256:l}=await jl(o);return{doc:o,fullAppData:u,appDataKeccak256:l}}async function jl(e){const t=await c(e);return{fullAppData:t,appDataKeccak256:d(h(t))}}async function Kl(e,t){var n;const r=null!=(n=t.metadata)&&n.hooks?K({},e,{metadata:K({},e.metadata,{hooks:{}})}):e,i=t?A(r,t):r,{fullAppData:s,appDataKeccak256:a}=await jl(i);return{fullAppData:s,appDataKeccak256:a,doc:i}}const Wl="Order",Jl=[{name:"name",type:"string"},{name:"version",type:"string"},{name:"chainId",type:"uint256"},{name:"verifyingContract",type:"address"}],Ql=1e6,Yl=BigInt(Ql),Xl=10000n;function Zl(e,t){const n=e*BigInt(Math.floor(t*Ql))/Yl;return n/100n+(n%100n>=50n?1n:0n)}const $l=1e4,ec=50,tc=.5;function nc(e){const{quote:t,tradeParameters:n,trader:r,isEthFlow:i}=e,{sellTokenDecimals:s,buyTokenDecimals:a}=n,{isSell:o,sellAmountBeforeNetworkCosts:u,sellAmountAfterNetworkCosts:l}=kt({sellDecimals:s,buyDecimals:a,orderParams:t.quote}),{feeAmount:c}=t.quote,d=function(e){const{feeAmount:t,multiplyingFactorPercent:n}=e;if(t<0n)throw new Error("Fee amount must be non-negative: "+t);if(n<0)throw new Error("multiplyingFactorPercent must be non-negative: "+n);return Zl(t,n)}({feeAmount:BigInt(c),multiplyingFactorPercent:ec}),h=function(e){const{sellAmountBeforeNetworkCosts:t,sellAmountAfterNetworkCosts:n,isSell:r,slippagePercent:i}=e,s=r?n:t;if(s<=0n)throw new Error("sellAmount must be greater than 0: "+s);if(i<0)throw new Error("slippagePercent must be non-negative: "+i);return Zl(s,i)}({isSell:o,sellAmountBeforeNetworkCosts:u,sellAmountAfterNetworkCosts:l,slippagePercent:tc}),p=function(e){const{sellAmountBeforeNetworkCosts:t,sellAmountAfterNetworkCosts:n,slippage:r,isSell:i}=e,s=i?n:t;if(s<=0n)throw new Error("sellAmount must be greater than 0: "+s);if(r<0n)throw new Error("slippage must be non-negative: "+r);return i?Number(Ut-Ut*(s-r)/s)/Number(Ut):Number(Ut*(s+r)/s-Ut)/Number(Ut)}({isSell:o,sellAmountBeforeNetworkCosts:u,sellAmountAfterNetworkCosts:l,slippage:d+h}),f=function(e){const t="bigint"==typeof e?Number(e*Xl):e*Number(Xl);return Math.round(t)}(p);return Math.max(Math.min(f,$l),qt(r.chainId,i))}const rc={signingScheme:St.EIP1271,onchainOrder:!0,verificationGasLimit:0};async function ic(e,t,n,r){const{quote:i,orderBookApi:s,tradeParameters:a,slippageBps:o,suggestedSlippageBps:u,appDataInfo:l,isEthFlow:c}=await async function(e,t,n,r){const{appCode:i,chainId:s,account:a}=t,o=rn(e),u=o?un(s,e):e,{sellToken:l,buyToken:c,amount:d,kind:h,partnerFee:p,validFor:f=Vt,slippageBps:m,env:y="prod"}=u;$e(`getQuote for: Swap ${d} ${l} for ${c} on chain ${s} with ${void 0!==m?`${m} BPS`:"AUTO"} slippage`);const g=r||new lt({chainId:s,env:y}),b=u.receiver||a,v="sell"===h;$e("Building app data...");const w=qt(s,o),A=null!=m?m:w,T={slippageBps:A,orderClass:"market",appCode:i,partnerFee:p},E=await zl(T,null==n?void 0:n.appData),{appDataKeccak256:S,fullAppData:I}=E;$e(`App data: appDataKeccak256=${S} fullAppData=${I}`);const k=K({from:a,sellToken:l,buyToken:c,receiver:b,validFor:f,appData:I,appDataHash:S,priceQuality:Tt.OPTIMAL,signingScheme:St.EIP712},o?rc:{},v?{kind:vt.SELL,sellAmountBeforeFee:d}:{kind:bt.BUY,buyAmountAfterFee:d},null==n?void 0:n.quoteRequest);$e("Getting quote...");const C=await g.getQuote(k),N=nc({isEthFlow:o,quote:C,tradeParameters:u,trader:t,advancedSettings:n}),x={isEthFlow:o,quote:C,orderBookApi:g,suggestedSlippageBps:N};if(void 0===m){if(N>w){$e(`Suggested slippage is greater than ${w} BPS (default), using the suggested slippage (${N} BPS)`);const t=await zl(K({},T,{slippageBps:N}),null==n?void 0:n.appData);return $e(`App data with new suggested slippage: appDataKeccak256=${t.appDataKeccak256} fullAppData=${t.fullAppData}`),K({},x,{appDataInfo:t,tradeParameters:K({},e,{slippageBps:N}),slippageBps:N})}$e(`Suggested slippage is only ${N} BPS. Using the default slippage (${w} BPS)`)}return K({},x,{appDataInfo:E,tradeParameters:e,slippageBps:A})}(e,t,n,r),{partnerFee:d,sellTokenDecimals:h,buyTokenDecimals:p}=a,{chainId:f,account:m}=t,y=Nt({orderParams:i.quote,slippagePercentBps:o,partnerFeeBps:Ot(d),sellDecimals:h,buyDecimals:p}),g=zt({chainId:f,from:m,networkCostsAmount:i.quote.feeAmount,isEthFlow:c},nn(a,i),l.appDataKeccak256),b=await async function(e,t){return{domain:await Pt.getDomain(e),primaryType:Wl,types:{[Wl]:T,EIP712Domain:Jl},message:t}}(f,g);return{result:{tradeParameters:a,suggestedSlippageBps:u,amountsAndCosts:y,orderToSign:g,quoteResponse:i,appDataInfo:l,orderTypedData:b},orderBookApi:s}}async function sc(e,t,n){const r=ql(e.signer),i=await async function(e,t){const n=t.owner||await e.getAddress();return{chainId:t.chainId,appCode:t.appCode,account:n}}(r,e),s=await ic(e,i,t,n);return{result:K({},s.result,{signer:r}),orderBookApi:s.orderBookApi}}async function ac(e,t,n){return oc(await sc(e,t,n),t)}async function oc({orderBookApi:e,result:{signer:t,appDataInfo:n,quoteResponse:r,tradeParameters:i}},s){var a,o,u;const l=nn(i,r),c=null==s?void 0:s.appData,d=c?await Kl(n.doc,c):n,h=null==c||null==(a=c.metadata)||null==(a=a.quote)?void 0:a.slippageBips,p=null==c||null==(o=c.metadata)?void 0:o.partnerFee;if(void 0!==h&&(l.slippageBps=h),p&&(l.partnerFee=p),null!=s&&s.quoteRequest){const{receiver:e,validTo:t,sellToken:n,buyToken:r}=s.quoteRequest;e&&(l.receiver=e),t&&(l.validTo=t),n&&(l.sellToken=n),r&&(l.buyToken=r)}return dn(e,t,d,l,K({signingScheme:null==s||null==(u=s.quoteRequest)?void 0:u.signingScheme,networkCostsAmount:r.quote.feeAmount},null==s?void 0:s.additionalParams))}async function uc(e,t,n){var r,i;const s=null==t||null==(r=t.appData)||null==(r=r.metadata)||null==(r=r.quote)?void 0:r.slippageBips,a=null==t||null==(i=t.appData)||null==(i=i.metadata)?void 0:i.partnerFee;void 0!==s&&(e.slippageBps=s),a&&(e.partnerFee=a),e.slippageBps||(e.slippageBps=0),e.env||(e.env="prod");const{appCode:o,chainId:u,sellToken:l,buyToken:c,sellAmount:d,buyAmount:h,partnerFee:p}=e;$e(`Limit order ${d} ${l} for ${h} ${c} on chain ${u}`);const f=ql(e.signer),m=n||new lt({chainId:u,env:e.env});return $e("Building app data..."),dn(m,f,await zl({slippageBps:e.slippageBps,orderClass:"limit",appCode:o,partnerFee:p},null==t?void 0:t.appData),e,null==t?void 0:t.additionalParams)}async function lc(e,t,n,r){const i=tn.connect(n,e),s=qe[t];return{data:i.interface.encodeFunctionData("setPreSignature",[r,!0]),gasLimit:"0x"+sn(await i.estimateGas.setPreSignature(r,!0).then(e=>BigInt(e.toHexString())).catch(()=>Rt)).toString(16),to:s,value:"0"}}class cc{constructor(e={},t={}){this.traderParams=e,this.options=t,void 0!==t.enableLogging&&et(t.enableLogging)}setTraderParams(e){return this.traderParams=K({},this.traderParams,e),this}async getQuote(e,t){const n=await sc(this.mergeParams(e),t,this.options.orderBookApi);return{quoteResults:n.result,postSwapOrderFromQuote:async function(t,r){return await(null==r||null==r.beforeOrderSign?void 0:r.beforeOrderSign()),oc(K({},n,{result:K({},n.result,{tradeParameters:on({quoteParameters:n.result.tradeParameters,sellToken:e.sellToken})})}),t).catch(e=>{throw null==r||null==r.onOrderSignError||r.onOrderSignError(),e}).then(e=>(null==r||null==r.afterOrderSign||r.afterOrderSign(),e))}}}async getQuoteResults(e,t){return sc(this.mergeParams(e),t,this.options.orderBookApi)}async postSwapOrder(e,t){return ac(this.mergeParams(e),t,this.options.orderBookApi)}async postLimitOrder(e,t){return uc(this.mergeParams(e),t,this.options.orderBookApi)}async postSellNativeCurrencyOrder(e,t){const n=await sc(this.mergeParams(e),t,this.options.orderBookApi),{tradeParameters:r,quoteResponse:i}=n.result;return cn(n.orderBookApi,n.result.signer,n.result.appDataInfo,nn(on({quoteParameters:r,sellToken:e.sellToken}),i),null==t?void 0:t.additionalParams)}async getPreSignTransaction(e){const t=this.mergeParams(e);return lc(ql(t.signer),t.chainId,e.account,e.orderId)}mergeParams(e){const{chainId:t,signer:n,appCode:r,env:i}=e,s={chainId:t||this.traderParams.chainId,signer:n||this.traderParams.signer,appCode:r||this.traderParams.appCode,env:i||this.traderParams.env};return function(e){if(!function(e){return 0===dc(e).length}(e))throw new Error("Missing trader parameters: "+dc(e).join(", "))}(s),K({},e,s)}}function dc(e){const t=[];return e.chainId||t.push("chainId"),e.signer||t.push("signer"),e.appCode||t.push("appCode"),t}const hc=["sellTokenAddress","buyTokenAddress","amount"],pc=["signer"],fc=`${ae}/src/bridging/providers`,mc=24e4,yc=36e4,gc="cow-sdk://bridging/providers";function bc(e){return{callData:"0x00",gasLimit:e.toString(),target:"0x0000000000000000000000000000000000000000",dappId:gc}}function vc(e,t){return e.callData===t.callData&&e.gasLimit===t.gasLimit&&e.target===t.target}const wc=new In("units/5.8.0"),Ac=["wei","kwei","mwei","gwei","szabo","finney","ether"],Tc=["kind","sellTokenChainId","sellTokenAddress","buyTokenChainId","buyTokenAddress","amount","signer"],Ec=["signer"];function Sc(e,t){const n=z(e).find(e=>{var t;return null==(t=e.dappId)?void 0:t.startsWith(gc)});if(!n)return;const r=n.dappId;return t.find(e=>e.info.dappId===r)}async function Ic(e){const{chainId:t,orderId:n,orderBookApi:r,providers:i,env:s}=e,a={chainId:t,env:s},o=await r.getOrder(n,a),u=o.fullAppData&&Sc(o.fullAppData,i);if(!u)throw new U(`Unknown Bridge provider in order ${o.uid}. Add provider to the SDK config to be able to decode the order`);const l=await r.getTrades({orderUid:o.uid},a);if(l.length>0){const e=l[0],r=e.txHash;if(!r)throw new U(`No tx hash found for order ${n} . First trade, with log index ${e.logIndex}`);const{params:i,status:s}=await u.getBridgingParams(t,n,r)||{};if(!i||!s)throw new U(`Bridging params cannot be derived from transaction: ${r}`);const a={provider:u,chainId:t,order:o,statusResult:{status:P.UNKNOWN},bridgingParams:i,tradeTxHash:r};try{return K({},a,{statusResult:s,explorerUrl:u.getExplorerUrl(i.bridgingId)})}catch(e){return console.error("Cannot get bridging status",e),a}}return null}const kc=["providers"];class Cc{constructor(e){var t,n;this.options=e;const{providers:r}=e,i=W(e,kc);if(!r||1!==r.length)throw new Error("Current implementation only supports a single bridge provider");void 0!==e.enableLogging&&et(e.enableLogging);const s=null!==(t=e.tradingSdk)&&void 0!==t?t:new cc,a=null!==(n=null==s?void 0:s.options.orderBookApi)&&void 0!==n?n:new lt;this.config=K({},i,{providers:r,tradingSdk:s,orderBookApi:a})}get provider(){const{providers:e}=this.config;return e[0]}getProviders(){return this.config.providers}async getSourceNetworks(){return ke}async getTargetNetworks(){return this.provider.getNetworks()}async getBuyTokens(e){return this.provider.getBuyTokens(e)}async getQuote(e,t){const{sellTokenChainId:n,buyTokenChainId:r}=e,i=this.config.tradingSdk;return n!==r?async function(e){var t;const{provider:n,swapAndBridgeRequest:r,advancedSettings:i,tradingSdk:s,bridgeHookSigner:a}=e,{kind:o,sellTokenChainId:u,sellTokenAddress:l,buyTokenChainId:c,buyTokenAddress:d,amount:h,signer:f}=r,m=W(r,Tc),y=ql(f);if(o!==yt.SELL)throw new Error("Bridging only support SELL orders");$e(`Cross-chain ${o} ${h} ${l} (source chain ${u}) for ${d} (target chain ${c})`);const g=await async function(e){const{provider:t,swapAndBridgeRequest:n}=e,r=await t.getIntermediateTokens(n);if(0===r.length)throw new F(O.NO_INTERMEDIATE_TOKENS);const i=r[0];return $e(`Using ${i} as intermediate tokens`),K({},n,{sellTokenAddress:i.address,sellTokenDecimals:i.decimals})}({swapAndBridgeRequest:r,provider:n}),b=await n.getGasLimitEstimationForHook(g),v=bc(b);$e(`Using mocked hook for swap gas estimation: ${JSON.stringify(v)}`);const{sellTokenAddress:w,sellTokenDecimals:A}=g,T=K({},m,{kind:o,chainId:u,sellToken:l,buyToken:w,buyTokenDecimals:A,amount:h.toString(),signer:y}),E=W(T,Ec);$e(`Getting a quote for the swap (sell token to buy intermediate token). Delegate to trading SDK with params: ${JSON.stringify(E,st)}`);const S=null==i||null==(t=i.appData)||null==(t=t.metadata)?void 0:t.hooks,{result:I,orderBookApi:k}=await s.getQuoteResults(T,K({},i,{appData:K({},null==i?void 0:i.appData,{metadata:{hooks:{pre:null==S?void 0:S.pre,post:[...(null==S?void 0:S.post)||[],v]},bridging:{destinationChainId:c.toString(),destinationTokenAddress:d}}})})),C=I.amountsAndCosts.afterSlippage.buyAmount;async function N(e,t,i){var s,a;const o=null==i?void 0:i.appData,u=null==i||null==(s=i.quoteRequest)?void 0:s.receiver,l=null==i||null==(a=i.quoteRequest)?void 0:a.validTo,{bridgeHook:c,appDataInfo:{doc:d,fullAppData:h,appDataKeccak256:f},bridgeResult:m}=await async function(e){const{swapResult:t,bridgeRequestWithoutAmount:n,provider:r,intermediateTokenAmount:i,appDataOverride:s}=e,a=K({},n,{amount:i}),{hook:o,unsignedBridgeCall:u,bridgingQuote:l}=await async function(e,{provider:t,signer:n,hookGasLimit:r,swapResult:i,validToOverride:s}){const a=await t.getQuote(e),o=await t.getUnsignedBridgeCall(e,a),u=BigInt(s||i.orderToSign.validTo),l=p(["bytes","uint256"],[o.data,u]);return{hook:await t.getSignedHook(e.sellTokenChainId,o,n,l,u,r),unsignedBridgeCall:o,bridgingQuote:a}}(a,e),c=await Kl(t.appDataInfo.doc,s||{}),d=c.doc.metadata.hooks,h=((null==d?void 0:d.post)||[]).filter(e=>{var t;return!(null!=(t=e.dappId)&&t.startsWith(gc))}),f=await Kl(c.doc,{metadata:{hooks:{pre:null==d?void 0:d.pre,post:[...h,o.postHook]}}});return{bridgeResult:{providerInfo:r.info,tradeParameters:a,bridgeCallDetails:{unsignedBridgeCall:u,preAuthorizedBridgingHook:o},isSell:l.isSell,expectedFillTimeSeconds:l.expectedFillTimeSeconds,fees:l.fees,limits:l.limits,quoteTimestamp:l.quoteTimestamp,amountsAndCosts:l.amountsAndCosts},bridgeHook:o,appDataInfo:f}}({swapAndBridgeRequest:K({},r,{kind:yt.SELL}),swapResult:I,bridgeRequestWithoutAmount:K({},g,{receiver:u||g.receiver}),provider:n,intermediateTokenAmount:C,signer:e,appDataOverride:o,validToOverride:l,hookGasLimit:t});return $e(`Bridge hook for swap: ${JSON.stringify(c)}`),I.tradeParameters.receiver=c.recipient,$e(`App data for swap: appDataKeccak256=${f}, fullAppData="${h}"`),I.appDataInfo={fullAppData:h,appDataKeccak256:f,doc:d},{bridgeResult:m,swapResult:K({},I,{tradeParameters:K({},I.tradeParameters,{receiver:c.recipient})})}}$e(`Expected to receive ${C} of the intermediate token (${function(e,t){if("string"!=typeof e&&wc.throwArgumentError("value must be a string","value",e),"string"==typeof t){const e=Ac.indexOf(t);-1!==e&&(t=3*e)}return cr(e,null!=t?t:18)}(C.toString(),A).toString()})`),$e(`Using gas limit: ${b}`);const x=await N(a?ql(a):y,b);return{swap:x.swapResult,bridge:x.bridgeResult,async postSwapOrderFromQuote(e,t){await(null==t||null==t.beforeBridgingSign?void 0:t.beforeBridgingSign());const{swapResult:n}=await N(y,b,e).catch(e=>{throw null==t||null==t.onBridgingSignError||t.onBridgingSignError(),e});await(null==t||null==t.afterBridgingSign?void 0:t.afterBridgingSign());const r={result:K({},n,{tradeParameters:on({quoteParameters:n.tradeParameters,sellToken:l}),signer:y}),orderBookApi:k};return await(null==t||null==t.beforeOrderSign?void 0:t.beforeOrderSign()),oc(r,K({},e,{appData:n.appDataInfo.doc,quoteRequest:K({},null==e?void 0:e.quoteRequest,{receiver:n.tradeParameters.receiver})})).catch(e=>{throw null==t||null==t.onOrderSignError||t.onOrderSignError(),e}).then(async e=>(await(null==t||null==t.afterOrderSign?void 0:t.afterOrderSign()),e))}}}({swapAndBridgeRequest:e,advancedSettings:t,tradingSdk:i,provider:this.provider,bridgeHookSigner:null==t?void 0:t.quoteSigner}):function(e){const{quoteBridgeRequest:t,advancedSettings:n,tradingSdk:r}=e,{sellTokenAddress:i,buyTokenAddress:s,amount:a}=t,o=K({},W(t,hc),{chainId:t.sellTokenChainId,sellToken:i,buyToken:s,amount:a.toString()}),u=W(o,pc);return $e(`Single-chain swap: Delegate to trading SDK with params ${JSON.stringify(u,st)}`),r.getQuote(o,n)}({quoteBridgeRequest:e,advancedSettings:t,tradingSdk:i})}async getOrder(e){const{orderBookApi:t}=this.config,{chainId:n,orderId:r,env:i=t.context.env}=e;return Ic({chainId:n,orderId:r,orderBookApi:t,env:i,providers:this.config.providers})}async getOrderBridgingStatus(e,t){return this.provider.getStatus(e,t)}getProviderFromAppData(e){return Sc(e,this.getProviders())}}class Nc{constructor(e={}){this.options=e}async getAvailableRoutes({originChainId:e,originToken:t,destinationChainId:n,destinationToken:r}){const i={};return e&&(i.originChainId=e),t&&(i.originToken=t),n&&(i.destinationChainId=n),r&&(i.destinationToken=r),this.fetchApi("/available-routes",i,Rc)}async getSuggestedFees(e){const t={token:e.token,originChainId:e.originChainId.toString(),destinationChainId:e.destinationChainId.toString(),amount:e.amount.toString()};return e.recipient&&(t.recipient=e.recipient),this.fetchApi("/suggested-fees",t,xc)}async getSupportedTokens(){return this.fetchApi("/token-list",{}).then(e=>e.map(e=>K({},e,{logoUrl:e.logoURI})))}async getDepositStatus(e){return this.fetchApi("/deposit/status",{originChainId:e.originChainId,depositId:e.depositId})}async fetchApi(e,t,n){const r=`${this.options.apiBaseUrl||"https://app.across.to/api"}${e}?${new URLSearchParams(t).toString()}`;$e(`Fetching Across API: GET ${r}. Params: ${JSON.stringify(t)}`);const i=await fetch(r,{method:"GET"});if(!i.ok){const e=await i.json();throw new F(O.API_ERROR,e)}const s=await i.json();if(n){if(n(s))return s;throw new F(O.INVALID_API_JSON_RESPONSE,{path:e,json:s})}return s}}function xc(e){return"object"==typeof e&&null!==e&&"totalRelayFee"in e&&_c(e.totalRelayFee)&&"relayerCapitalFee"in e&&_c(e.relayerCapitalFee)&&"relayerGasFee"in e&&_c(e.relayerGasFee)&&"lpFee"in e&&_c(e.lpFee)&&"timestamp"in e&&"isAmountTooLow"in e&&"quoteBlock"in e&&"spokePoolAddress"in e&&"exclusiveRelayer"in e&&"exclusivityDeadline"in e&&"estimatedFillTimeSec"in e&&"fillDeadline"in e&&"limits"in e&&"object"==typeof(t=e.limits)&&null!==t&&"minDeposit"in t&&"maxDeposit"in t&&"maxDepositInstant"in t&&"maxDepositShortDelay"in t&&"recommendedDepositInstant"in t;var t}function _c(e){return"object"==typeof e&&null!==e&&"pct"in e&&"total"in e}function Rc(e){return!!Array.isArray(e)&&e.every(e=>function(e){return"object"==typeof e&&null!==e&&"originChainId"in e&&"originToken"in e&&"destinationChainId"in e&&"destinationToken"in e&&"originTokenSymbol"in e&&"destinationTokenSymbol"in e}(e))}const Mc=new f(["event FundsDeposited(bytes32 inputToken, bytes32 outputToken, uint256 inputAmount, uint256 outputAmount, uint256 indexed destinationChainId, uint256 indexed depositId, uint32 quoteTimestamp, uint32 fillDeadline, uint32 exclusivityDeadline, bytes32 indexed depositor, bytes32 recipient, bytes32 exclusiveRelayer, bytes message)"]),Pc=new f(["event Trade(address owner, address sellToken, address buyToken, uint256 sellAmount, uint256 buyAmount, uint256 feeAmount, bytes orderUid)"]);[{chainId:B.MAINNET,tokens:{usdc:"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",weth:"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",wbtc:"0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599",dai:"0x6B175474E89094C44Da98b954EedeAC495271d0F",usdt:"0xdAC17F958D2ee523a2206206994597C13D831ec7"}},{chainId:B.POLYGON,tokens:{usdc:"0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359",weth:"0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619",wbtc:"0x1BFD67037B42Cf73acF2047067bd4F2C47D9BfD6",dai:"0x8f3Cf7ad23Cd3CaDbD9735AFf958023239c6A063",usdt:"0xc2132D05D31c914a87C6611C10748AEb04B58e8F"}},{chainId:B.ARBITRUM_ONE,tokens:{usdc:"0xaf88d065e77c8cC2239327C5EDb3A432268e5831",weth:"0x82aF49447D8a07e3bd95BD0d56f35241523fBab1",wbtc:"0x2f2a2543B76A4166549F7aaB2e75Bef0aefC5B0f",dai:"0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1",usdt:"0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9"}},{chainId:B.BASE,tokens:{usdc:"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",weth:"0x4200000000000000000000000000000000000006",dai:"0x50c5725949A6F0c72E6C4a641F24049A917DB0Cb"}},{chainId:D.OPTIMISM,tokens:{usdc:"0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85",weth:"0x4200000000000000000000000000000000000006",wbtc:"0x68f180fcCe6836688e9084f035309E29Bf0A2095",dai:"0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1",usdt:"0x94b008aA00579c1307B0EF2c499aD98a8ce58e58"}}].reduce((e,t)=>(e[t.chainId]=t,e),{});const Oc=Mc.getEventTopic("FundsDeposited"),Bc=Pc.getEventTopic("Trade"),Dc={[B.MAINNET]:"0x5c7BCd6E7De5423a257D81B442095A1a6ced35C5",[B.ARBITRUM_ONE]:"0xe35e9842fceaca96570b734083f4a58e8f7c5f2a",[B.BASE]:"0x09aea4b2242abC8bb4BB78D537A67a245A7bEC64",[B.SEPOLIA]:"0x5ef6C01E11889d86803e0B23e3cB3F9E9d97B662",[B.POLYGON]:"0x9295ee1d8C5b022Be115A2AD3c30C72E34e7F096",[B.GNOSIS_CHAIN]:void 0,[B.AVALANCHE]:void 0,[D.OPTIMISM]:void 0},Fc={[B.MAINNET]:"0xf2ae6728b6f146556977Af0A68bFbf5bADA22863",[B.ARBITRUM_ONE]:"0x5771A4b4029832e79a75De7B485E5fBbec28848f",[B.BASE]:"0xd4e943dc6ddc885f6229ce33c2e3dfe402a12c81",[B.GNOSIS_CHAIN]:void 0,[B.SEPOLIA]:void 0,[B.POLYGON]:void 0,[D.OPTIMISM]:void 0,[B.AVALANCHE]:void 0},Lc=10n**18n;function Uc(e,t,n){const{amount:r,sellTokenDecimals:i,buyTokenDecimals:s}=e,a=xt(r,i),o=a.big,u=xt(a.num,s).big,l=BigInt(n.totalRelayFee.pct),c=qc(u,l),d=o-qc(o,l),h=u-c,p=function(e,t){return e*BigInt(1e4-t)/10000n}(c,t);return{beforeFee:{sellAmount:o,buyAmount:u},afterFee:{sellAmount:o,buyAmount:c},afterSlippage:{sellAmount:o,buyAmount:p},costs:{bridgingFee:{feeBps:(f=l,Hc(f),Number(10000n*f/Lc)),amountInSellCurrency:d,amountInBuyCurrency:h}},slippageBps:t};var f}function Gc(e){return m.decode(["address"],e).toString()}function Hc(e){if(e>Lc||e<0n)throw new Error("Fee cannot exceed 100% or be negative")}function qc(e,t){return Hc(t),e*(Lc-t)/Lc}const Vc={filled:P.EXECUTED,slowFillRequested:P.EXECUTED,pending:P.IN_PROGRESS,expired:P.EXPIRED,refunded:P.REFUND};let zc;const jc={ExecuteHooks:[{type:"Call[]",name:"calls"},{type:"bytes32",name:"nonce"},{type:"uint256",name:"deadline"}],Call:[{type:"address",name:"target"},{type:"uint256",name:"value"},{type:"bytes",name:"callData"},{type:"bool",name:"allowFailure"},{type:"bool",name:"isDelegateCall"}]};class Kc{constructor(e,t,n=Le){this.chainId=e,this.customOptions=t,this.version=n}proxyOf(e){const t=m.encode(["address"],[e]),n=p(["bytes","bytes"],[this.proxyCreationCode(),m.encode(["address","address"],[this.getImplementationAddress(),e])]);return y(this.getFactoryAddress(),t,n)}encodeExecuteHooksForFactory(e,t,n,r,i){return(zc||(zc=Wt.createInterface()),zc).encodeFunctionData("executeHooks",[e,t,n,r,i])}async signCalls(e,t,n,r,i){const s=await r.getAddress(),a=this.proxyOf(s),{domain:o,types:u,message:l}=this.infoToSign(e,t,n,a);return await async function(e,t,n,r,i){let s=null;switch(e){case S.EIP712:if(!k(t))throw new Error("signer does not support signing typed data");s=await t._signTypedData(n,r,i);break;case S.ETHSIGN:s=await t.signMessage(g(I(n,r,i)));break;default:throw new Error("invalid signing scheme")}return b(v(s))}(i,r,o,u,l)}infoToSign(e,t,n,r){const i={calls:e,nonce:t,deadline:n};return{domain:this.getDomain(r),types:jc,message:i}}getDomain(e){return{name:"COWShed",version:this.version,chainId:this.chainId,verifyingContract:e}}proxyCreationCode(){var e,t;return null!==(e=null==(t=this.customOptions)?void 0:t.proxyCreationCode)&&void 0!==e?e:He[this.version]}getFactoryAddress(){var e,t;return null!==(e=null==(t=this.customOptions)?void 0:t.factoryAddress)&&void 0!==e?e:Ue[this.version]}getImplementationAddress(){var e,t;return null!==(e=null==(t=this.customOptions)?void 0:t.implementationAddress)&&void 0!==e?e:Ge[this.version]}}const Wc=zr.toBigInt();class Jc{constructor(e={},t=Le){this.hooksCache=new Map,this.options=e,this.version=t}getCowShedAccount(e,t){var n;return this.getCowShedHooks(e,null==(n=this.options)?void 0:n.factoryOptions).proxyOf(t)}async signCalls({calls:e,signer:t,chainId:n,nonce:r=Jc.getNonce(),deadline:i=Wc,gasLimit:s,defaultGasLimit:a,signingScheme:o=S.EIP712}){var u;const l=this.getCowShedHooks(n),c=t||(null==(u=this.options)?void 0:u.signer);if(!c)throw new Error("Signer is required");const d=ql(c),h=await d.getAddress(),p=l.proxyOf(h),f=await l.signCalls(e,r,i,d,o),m=l.encodeExecuteHooksForFactory(e,r,i,h,f),y={to:l.getFactoryAddress(),data:m,value:BigInt(0)},g=s||await d.estimateGas(y).catch(e=>{const t=`Error estimating gas for the cow-shed call: ${JSON.stringify(y,st,2)}. Review the factory call`;if(a)return $e(`${t}, using the default gas limit.`),a;throw new Error(`${t}, or provide the defaultGasLimit parameter.`,{cause:e})});return{cowShedAccount:p,signedMulticall:y,gasLimit:BigInt(g.toString())}}getCowShedHooks(e,t){let n=this.hooksCache.get(e);return n||(n=new Kc(e,t),this.hooksCache.set(e,n),n)}static getNonce(){return w(Date.now().toString())}}const Qc="abi/5.8.0",Yc=new In(Qc),Xc={};let Zc={calldata:!0,memory:!0,storage:!0},$c={calldata:!0,memory:!0};function ed(e,t){if("bytes"===e||"string"===e){if(Zc[t])return!0}else if("address"===e){if("payable"===t)return!0}else if((e.indexOf("[")>=0||"tuple"===e)&&$c[t])return!0;return(Zc[t]||"payable"===t)&&Yc.throwArgumentError("invalid modifier","name",t),!1}function td(e,t){for(let n in t)gr(e,n,t[n])}const nd=Object.freeze({sighash:"sighash",minimal:"minimal",full:"full",json:"json"}),rd=new RegExp(/^(.*)\[([0-9]*)\]$/);class id{constructor(e,t){e!==Xc&&Yc.throwError("use fromString",In.errors.UNSUPPORTED_OPERATION,{operation:"new ParamType()"}),td(this,t);let n=this.type.match(rd);td(this,n?{arrayLength:parseInt(n[2]||"-1"),arrayChildren:id.fromObject({type:n[1],components:this.components}),baseType:"array"}:{arrayLength:null,arrayChildren:null,baseType:null!=this.components?"tuple":this.type}),this._isParamType=!0,Object.freeze(this)}format(e){if(e||(e=nd.sighash),nd[e]||Yc.throwArgumentError("invalid format type","format",e),e===nd.json){let t={type:"tuple"===this.baseType?"tuple":this.type,name:this.name||void 0};return"boolean"==typeof this.indexed&&(t.indexed=this.indexed),this.components&&(t.components=this.components.map(t=>JSON.parse(t.format(e)))),JSON.stringify(t)}let t="";return"array"===this.baseType?(t+=this.arrayChildren.format(e),t+="["+(this.arrayLength<0?"":String(this.arrayLength))+"]"):"tuple"===this.baseType?(e!==nd.sighash&&(t+=this.type),t+="("+this.components.map(t=>t.format(e)).join(e===nd.full?", ":",")+")"):t+=this.type,e!==nd.sighash&&(!0===this.indexed&&(t+=" indexed"),e===nd.full&&this.name&&(t+=" "+this.name)),t}static from(e,t){return"string"==typeof e?id.fromString(e,t):id.fromObject(e)}static fromObject(e){return id.isParamType(e)?e:new id(Xc,{name:e.name||null,type:md(e.type),indexed:null==e.indexed?null:!!e.indexed,components:e.components?e.components.map(id.fromObject):null})}static fromString(e,t){return n=function(e,t){let n=e;function r(t){Yc.throwArgumentError(`unexpected character at position ${t}`,"param",e)}function i(e){let n={type:"",name:"",parent:e,state:{allowType:!0}};return t&&(n.indexed=!1),n}e=e.replace(/\s/g," ");let s={type:"",name:"",state:{allowType:!0}},a=s;for(let n=0;n<e.length;n++){let s=e[n];switch(s){case"(":a.state.allowType&&""===a.type?a.type="tuple":a.state.allowParams||r(n),a.state.allowType=!1,a.type=md(a.type),a.components=[i(a)],a=a.components[0];break;case")":delete a.state,"indexed"===a.name&&(t||r(n),a.indexed=!0,a.name=""),ed(a.type,a.name)&&(a.name=""),a.type=md(a.type);let e=a;a=a.parent,a||r(n),delete e.parent,a.state.allowParams=!1,a.state.allowName=!0,a.state.allowArray=!0;break;case",":delete a.state,"indexed"===a.name&&(t||r(n),a.indexed=!0,a.name=""),ed(a.type,a.name)&&(a.name=""),a.type=md(a.type);let o=i(a.parent);a.parent.components.push(o),delete a.parent,a=o;break;case" ":a.state.allowType&&""!==a.type&&(a.type=md(a.type),delete a.state.allowType,a.state.allowName=!0,a.state.allowParams=!0),a.state.allowName&&""!==a.name&&("indexed"===a.name?(t||r(n),a.indexed&&r(n),a.indexed=!0,a.name=""):ed(a.type,a.name)?a.name="":a.state.allowName=!1);break;case"[":a.state.allowArray||r(n),a.type+=s,a.state.allowArray=!1,a.state.allowName=!1,a.state.readArray=!0;break;case"]":a.state.readArray||r(n),a.type+=s,a.state.readArray=!1,a.state.allowArray=!0,a.state.allowName=!0;break;default:a.state.allowType?(a.type+=s,a.state.allowParams=!0,a.state.allowArray=!0):a.state.allowName?(a.name+=s,delete a.state.allowArray):a.state.readArray?a.type+=s:r(n)}}return a.parent&&Yc.throwArgumentError("unexpected eof","param",e),delete s.state,"indexed"===a.name?(t||r(n.length-7),a.indexed&&r(n.length-7),a.indexed=!0,a.name=""):ed(a.type,a.name)&&(a.name=""),s.type=md(s.type),s}(e,!!t),id.fromObject({name:n.name,type:n.type,indexed:n.indexed,components:n.components});var n}static isParamType(e){return!(null==e||!e._isParamType)}}function sd(e,t){return function(e){e=e.trim();let t=[],n="",r=0;for(let i=0;i<e.length;i++){let s=e[i];","===s&&0===r?(t.push(n),n=""):(n+=s,"("===s?r++:")"===s&&(r--,-1===r&&Yc.throwArgumentError("unbalanced parenthesis","value",e)))}return n&&t.push(n),t}(e).map(e=>id.fromString(e,t))}class ad{constructor(e,t){e!==Xc&&Yc.throwError("use a static from method",In.errors.UNSUPPORTED_OPERATION,{operation:"new Fragment()"}),td(this,t),this._isFragment=!0,Object.freeze(this)}static from(e){return ad.isFragment(e)?e:"string"==typeof e?ad.fromString(e):ad.fromObject(e)}static fromObject(e){if(ad.isFragment(e))return e;switch(e.type){case"function":return hd.fromObject(e);case"event":return od.fromObject(e);case"constructor":return dd.fromObject(e);case"error":return fd.fromObject(e);case"fallback":case"receive":return null}return Yc.throwArgumentError("invalid fragment object","value",e)}static fromString(e){return"event"===(e=(e=(e=e.replace(/\s/g," ")).replace(/\(/g," (").replace(/\)/g,") ").replace(/\s+/g," ")).trim()).split(" ")[0]?od.fromString(e.substring(5).trim()):"function"===e.split(" ")[0]?hd.fromString(e.substring(8).trim()):"constructor"===e.split("(")[0].trim()?dd.fromString(e.trim()):"error"===e.split(" ")[0]?fd.fromString(e.substring(5).trim()):Yc.throwArgumentError("unsupported fragment","value",e)}static isFragment(e){return!(!e||!e._isFragment)}}class od extends ad{format(e){if(e||(e=nd.sighash),nd[e]||Yc.throwArgumentError("invalid format type","format",e),e===nd.json)return JSON.stringify({type:"event",anonymous:this.anonymous,name:this.name,inputs:this.inputs.map(t=>JSON.parse(t.format(e)))});let t="";return e!==nd.sighash&&(t+="event "),t+=this.name+"("+this.inputs.map(t=>t.format(e)).join(e===nd.full?", ":",")+") ",e!==nd.sighash&&this.anonymous&&(t+="anonymous "),t.trim()}static from(e){return"string"==typeof e?od.fromString(e):od.fromObject(e)}static fromObject(e){if(od.isEventFragment(e))return e;"event"!==e.type&&Yc.throwArgumentError("invalid event object","value",e);const t={name:gd(e.name),anonymous:e.anonymous,inputs:e.inputs?e.inputs.map(id.fromObject):[],type:"event"};return new od(Xc,t)}static fromString(e){let t=e.match(bd);t||Yc.throwArgumentError("invalid event string","value",e);let n=!1;return t[3].split(" ").forEach(e=>{switch(e.trim()){case"anonymous":n=!0;break;case"":break;default:Yc.warn("unknown modifier: "+e)}}),od.fromObject({name:t[1].trim(),anonymous:n,inputs:sd(t[2],!0),type:"event"})}static isEventFragment(e){return e&&e._isFragment&&"event"===e.type}}function ud(e,t){t.gas=null;let n=e.split("@");return 1!==n.length?(n.length>2&&Yc.throwArgumentError("invalid human-readable ABI signature","value",e),n[1].match(/^[0-9]+$/)||Yc.throwArgumentError("invalid human-readable ABI signature gas","value",e),t.gas=Xn.from(n[1]),n[0]):e}function ld(e,t){t.constant=!1,t.payable=!1,t.stateMutability="nonpayable",e.split(" ").forEach(e=>{switch(e.trim()){case"constant":t.constant=!0;break;case"payable":t.payable=!0,t.stateMutability="payable";break;case"nonpayable":t.payable=!1,t.stateMutability="nonpayable";break;case"pure":t.constant=!0,t.stateMutability="pure";break;case"view":t.constant=!0,t.stateMutability="view";break;case"external":case"public":case"":break;default:console.log("unknown modifier: "+e)}})}function cd(e){let t={constant:!1,payable:!0,stateMutability:"payable"};return null!=e.stateMutability?(t.stateMutability=e.stateMutability,t.constant="view"===t.stateMutability||"pure"===t.stateMutability,null!=e.constant&&!!e.constant!==t.constant&&Yc.throwArgumentError("cannot have constant function with mutability "+t.stateMutability,"value",e),t.payable="payable"===t.stateMutability,null!=e.payable&&!!e.payable!==t.payable&&Yc.throwArgumentError("cannot have payable function with mutability "+t.stateMutability,"value",e)):null!=e.payable?(t.payable=!!e.payable,null!=e.constant||t.payable||"constructor"===e.type||Yc.throwArgumentError("unable to determine stateMutability","value",e),t.constant=!!e.constant,t.stateMutability=t.constant?"view":t.payable?"payable":"nonpayable",t.payable&&t.constant&&Yc.throwArgumentError("cannot have constant payable function","value",e)):null!=e.constant?(t.constant=!!e.constant,t.payable=!t.constant,t.stateMutability=t.constant?"view":"payable"):"constructor"!==e.type&&Yc.throwArgumentError("unable to determine stateMutability","value",e),t}class dd extends ad{format(e){if(e||(e=nd.sighash),nd[e]||Yc.throwArgumentError("invalid format type","format",e),e===nd.json)return JSON.stringify({type:"constructor",stateMutability:"nonpayable"!==this.stateMutability?this.stateMutability:void 0,payable:this.payable,gas:this.gas?this.gas.toNumber():void 0,inputs:this.inputs.map(t=>JSON.parse(t.format(e)))});e===nd.sighash&&Yc.throwError("cannot format a constructor for sighash",In.errors.UNSUPPORTED_OPERATION,{operation:"format(sighash)"});let t="constructor("+this.inputs.map(t=>t.format(e)).join(e===nd.full?", ":",")+") ";return this.stateMutability&&"nonpayable"!==this.stateMutability&&(t+=this.stateMutability+" "),t.trim()}static from(e){return"string"==typeof e?dd.fromString(e):dd.fromObject(e)}static fromObject(e){if(dd.isConstructorFragment(e))return e;"constructor"!==e.type&&Yc.throwArgumentError("invalid constructor object","value",e);let t=cd(e);t.constant&&Yc.throwArgumentError("constructor cannot be constant","value",e);const n={name:null,type:e.type,inputs:e.inputs?e.inputs.map(id.fromObject):[],payable:t.payable,stateMutability:t.stateMutability,gas:e.gas?Xn.from(e.gas):null};return new dd(Xc,n)}static fromString(e){let t={type:"constructor"},n=(e=ud(e,t)).match(bd);return n&&"constructor"===n[1].trim()||Yc.throwArgumentError("invalid constructor string","value",e),t.inputs=sd(n[2].trim(),!1),ld(n[3].trim(),t),dd.fromObject(t)}static isConstructorFragment(e){return e&&e._isFragment&&"constructor"===e.type}}class hd extends dd{format(e){if(e||(e=nd.sighash),nd[e]||Yc.throwArgumentError("invalid format type","format",e),e===nd.json)return JSON.stringify({type:"function",name:this.name,constant:this.constant,stateMutability:"nonpayable"!==this.stateMutability?this.stateMutability:void 0,payable:this.payable,gas:this.gas?this.gas.toNumber():void 0,inputs:this.inputs.map(t=>JSON.parse(t.format(e))),outputs:this.outputs.map(t=>JSON.parse(t.format(e)))});let t="";return e!==nd.sighash&&(t+="function "),t+=this.name+"("+this.inputs.map(t=>t.format(e)).join(e===nd.full?", ":",")+") ",e!==nd.sighash&&(this.stateMutability?"nonpayable"!==this.stateMutability&&(t+=this.stateMutability+" "):this.constant&&(t+="view "),this.outputs&&this.outputs.length&&(t+="returns ("+this.outputs.map(t=>t.format(e)).join(", ")+") "),null!=this.gas&&(t+="@"+this.gas.toString()+" ")),t.trim()}static from(e){return"string"==typeof e?hd.fromString(e):hd.fromObject(e)}static fromObject(e){if(hd.isFunctionFragment(e))return e;"function"!==e.type&&Yc.throwArgumentError("invalid function object","value",e);let t=cd(e);const n={type:e.type,name:gd(e.name),constant:t.constant,inputs:e.inputs?e.inputs.map(id.fromObject):[],outputs:e.outputs?e.outputs.map(id.fromObject):[],payable:t.payable,stateMutability:t.stateMutability,gas:e.gas?Xn.from(e.gas):null};return new hd(Xc,n)}static fromString(e){let t={type:"function"},n=(e=ud(e,t)).split(" returns ");n.length>2&&Yc.throwArgumentError("invalid function string","value",e);let r=n[0].match(bd);if(r||Yc.throwArgumentError("invalid function signature","value",e),t.name=r[1].trim(),t.name&&gd(t.name),t.inputs=sd(r[2],!1),ld(r[3].trim(),t),n.length>1){let r=n[1].match(bd);""==r[1].trim()&&""==r[3].trim()||Yc.throwArgumentError("unexpected tokens","value",e),t.outputs=sd(r[2],!1)}else t.outputs=[];return hd.fromObject(t)}static isFunctionFragment(e){return e&&e._isFragment&&"function"===e.type}}function pd(e){const t=e.format();return"Error(string)"!==t&&"Panic(uint256)"!==t||Yc.throwArgumentError(`cannot specify user defined ${t} error`,"fragment",e),e}class fd extends ad{format(e){if(e||(e=nd.sighash),nd[e]||Yc.throwArgumentError("invalid format type","format",e),e===nd.json)return JSON.stringify({type:"error",name:this.name,inputs:this.inputs.map(t=>JSON.parse(t.format(e)))});let t="";return e!==nd.sighash&&(t+="error "),t+=this.name+"("+this.inputs.map(t=>t.format(e)).join(e===nd.full?", ":",")+") ",t.trim()}static from(e){return"string"==typeof e?fd.fromString(e):fd.fromObject(e)}static fromObject(e){if(fd.isErrorFragment(e))return e;"error"!==e.type&&Yc.throwArgumentError("invalid error object","value",e);const t={type:e.type,name:gd(e.name),inputs:e.inputs?e.inputs.map(id.fromObject):[]};return pd(new fd(Xc,t))}static fromString(e){let t={type:"error"},n=e.match(bd);return n||Yc.throwArgumentError("invalid error signature","value",e),t.name=n[1].trim(),t.name&&gd(t.name),t.inputs=sd(n[2],!1),pd(fd.fromObject(t))}static isErrorFragment(e){return e&&e._isFragment&&"error"===e.type}}function md(e){return e.match(/^uint($|[^1-9])/)?e="uint256"+e.substring(4):e.match(/^int($|[^1-9])/)&&(e="int256"+e.substring(3)),e}const yd=new RegExp("^[a-zA-Z$_][a-zA-Z0-9$_]*$");function gd(e){return e&&e.match(yd)||Yc.throwArgumentError(`invalid identifier "${e}"`,"value",e),e}const bd=new RegExp("^([^)(]*)\\((.*)\\)([^)(]*)$"),vd=new In(Qc);class wd{constructor(e,t,n,r){this.name=e,this.type=t,this.localName=n,this.dynamic=r}_throwError(e,t){vd.throwArgumentError(e,this.localName,t)}}class Ad{constructor(e){gr(this,"wordSize",e||32),this._data=[],this._dataLength=0,this._padding=new Uint8Array(e)}get data(){return Gn(this._data)}get length(){return this._dataLength}_writeData(e){return this._data.push(e),this._dataLength+=e.length,e.length}appendWriter(e){return this._writeData(Pn(e._data))}writeBytes(e){let t=Mn(e);const n=t.length%this.wordSize;return n&&(t=Pn([t,this._padding.slice(n)])),this._writeData(t)}_getValue(e){let t=Mn(Xn.from(e));return t.length>this.wordSize&&vd.throwError("value out-of-bounds",In.errors.BUFFER_OVERRUN,{length:this.wordSize,offset:t.length}),t.length%this.wordSize&&(t=Pn([this._padding.slice(t.length%this.wordSize),t])),t}writeValue(e){return this._writeData(this._getValue(e))}writeUpdatableValue(){const e=this._data.length;return this._data.push(this._padding),this._dataLength+=this.wordSize,t=>{this._data[e]=this._getValue(t)}}}class Td{constructor(e,t,n,r){gr(this,"_data",Mn(e)),gr(this,"wordSize",t||32),gr(this,"_coerceFunc",n),gr(this,"allowLoose",r),this._offset=0}get data(){return Fn(this._data)}get consumed(){return this._offset}static coerce(e,t){let n=e.match("^u?int([0-9]+)$");return n&&parseInt(n[1])<=48&&(t=t.toNumber()),t}coerce(e,t){return this._coerceFunc?this._coerceFunc(e,t):Td.coerce(e,t)}_peekBytes(e,t,n){let r=Math.ceil(t/this.wordSize)*this.wordSize;return this._offset+r>this._data.length&&(this.allowLoose&&n&&this._offset+t<=this._data.length?r=t:vd.throwError("data out-of-bounds",In.errors.BUFFER_OVERRUN,{length:this._data.length,offset:this._offset+r})),this._data.slice(this._offset,this._offset+r)}subReader(e){return new Td(this._data.slice(this._offset+e),this.wordSize,this._coerceFunc,this.allowLoose)}readBytes(e,t){let n=this._peekBytes(0,e,!!t);return this._offset+=n.length,n.slice(0,e)}readValue(){return Xn.from(this.readBytes(this.wordSize))}}class Ed extends wd{constructor(e){super("address","address",e,!1)}defaultValue(){return"0x0000000000000000000000000000000000000000"}encode(e,t){try{t=Gi(t)}catch(e){this._throwError(e.message,t)}return e.writeValue(t)}decode(e){return Gi(qn(e.readValue().toHexString(),20))}}class Sd extends wd{constructor(e){super(e.name,e.type,void 0,e.dynamic),this.coder=e}defaultValue(){return this.coder.defaultValue()}encode(e,t){return this.coder.encode(e,t)}decode(e){return this.coder.decode(e)}}const Id=new In(Qc);function kd(e,t,n){let r=null;if(Array.isArray(n))r=n;else if(n&&"object"==typeof n){let e={};r=t.map(t=>{const r=t.localName;return r||Id.throwError("cannot encode object for signature with missing names",In.errors.INVALID_ARGUMENT,{argument:"values",coder:t,value:n}),e[r]&&Id.throwError("cannot encode object for signature with duplicate names",In.errors.INVALID_ARGUMENT,{argument:"values",coder:t,value:n}),e[r]=!0,n[r]})}else Id.throwArgumentError("invalid tuple value","tuple",n);t.length!==r.length&&Id.throwArgumentError("types/value length mismatch","tuple",n);let i=new Ad(e.wordSize),s=new Ad(e.wordSize),a=[];t.forEach((e,t)=>{let n=r[t];if(e.dynamic){let t=s.length;e.encode(s,n);let r=i.writeUpdatableValue();a.push(e=>{r(e+t)})}else e.encode(i,n)}),a.forEach(e=>{e(i.length)});let o=e.appendWriter(i);return o+=e.appendWriter(s),o}function Cd(e,t){let n=[],r=e.subReader(0);t.forEach(t=>{let i=null;if(t.dynamic){let n=e.readValue(),s=r.subReader(n.toNumber());try{i=t.decode(s)}catch(e){if(e.code===In.errors.BUFFER_OVERRUN)throw e;i=e,i.baseType=t.name,i.name=t.localName,i.type=t.type}}else try{i=t.decode(e)}catch(e){if(e.code===In.errors.BUFFER_OVERRUN)throw e;i=e,i.baseType=t.name,i.name=t.localName,i.type=t.type}null!=i&&n.push(i)});const i=t.reduce((e,t)=>{const n=t.localName;return n&&(e[n]||(e[n]=0),e[n]++),e},{});t.forEach((e,t)=>{let r=e.localName;if(!r||1!==i[r])return;if("length"===r&&(r="_length"),null!=n[r])return;const s=n[t];s instanceof Error?Object.defineProperty(n,r,{enumerable:!0,get:()=>{throw s}}):n[r]=s});for(let e=0;e<n.length;e++){const t=n[e];t instanceof Error&&Object.defineProperty(n,e,{enumerable:!0,get:()=>{throw t}})}return Object.freeze(n)}class Nd extends wd{constructor(e,t,n){super("array",e.type+"["+(t>=0?t:"")+"]",n,-1===t||e.dynamic),this.coder=e,this.length=t}defaultValue(){const e=this.coder.defaultValue(),t=[];for(let n=0;n<this.length;n++)t.push(e);return t}encode(e,t){Array.isArray(t)||this._throwError("expected array value",t);let n=this.length;-1===n&&(n=t.length,e.writeValue(t.length)),Id.checkArgumentCount(t.length,n,"coder array"+(this.localName?" "+this.localName:""));let r=[];for(let e=0;e<t.length;e++)r.push(this.coder);return kd(e,r,t)}decode(e){let t=this.length;-1===t&&(t=e.readValue().toNumber(),32*t>e._data.length&&Id.throwError("insufficient data length",In.errors.BUFFER_OVERRUN,{length:e._data.length,count:t}));let n=[];for(let e=0;e<t;e++)n.push(new Sd(this.coder));return e.coerce(this.name,Cd(e,n))}}class xd extends wd{constructor(e){super("bool","bool",e,!1)}defaultValue(){return!1}encode(e,t){return e.writeValue(t?1:0)}decode(e){return e.coerce(this.type,!e.readValue().isZero())}}class _d extends wd{constructor(e,t){super(e,e,t,!0)}defaultValue(){return"0x"}encode(e,t){t=Mn(t);let n=e.writeValue(t.length);return n+=e.writeBytes(t),n}decode(e){return e.readBytes(e.readValue().toNumber(),!0)}}class Rd extends _d{constructor(e){super("bytes",e)}decode(e){return e.coerce(this.name,Fn(super.decode(e)))}}class Md extends wd{constructor(e,t){let n="bytes"+String(e);super(n,n,t,!1),this.size=e}defaultValue(){return"0x0000000000000000000000000000000000000000000000000000000000000000".substring(0,2+2*this.size)}encode(e,t){let n=Mn(t);return n.length!==this.size&&this._throwError("incorrect data length",t),e.writeBytes(n)}decode(e){return e.coerce(this.name,Fn(e.readBytes(this.size)))}}class Pd extends wd{constructor(e){super("null","",e,!1)}defaultValue(){return null}encode(e,t){return null!=t&&this._throwError("not null",t),e.writeBytes([])}decode(e){return e.readBytes(0),e.coerce(this.name,null)}}class Od extends wd{constructor(e,t,n){const r=(t?"int":"uint")+8*e;super(r,r,n,!1),this.size=e,this.signed=t}defaultValue(){return 0}encode(e,t){let n=Xn.from(t),r=zr.mask(8*e.wordSize);if(this.signed){let e=r.mask(8*this.size-1);(n.gt(e)||n.lt(e.add(Vr).mul(Hr)))&&this._throwError("value out-of-bounds",t)}else(n.lt(qr)||n.gt(r.mask(8*this.size)))&&this._throwError("value out-of-bounds",t);return n=n.toTwos(8*this.size).mask(8*this.size),this.signed&&(n=n.fromTwos(8*this.size).toTwos(8*e.wordSize)),e.writeValue(n)}decode(e){let t=e.readValue().mask(8*this.size);return this.signed&&(t=t.fromTwos(8*this.size)),e.coerce(this.name,t)}}class Bd extends _d{constructor(e){super("string",e)}defaultValue(){return""}encode(e,t){return super.encode(e,ei(t))}decode(e){return ti(super.decode(e))}}class Dd extends wd{constructor(e,t){let n=!1;const r=[];e.forEach(e=>{e.dynamic&&(n=!0),r.push(e.type)}),super("tuple","tuple("+r.join(",")+")",t,n),this.coders=e}defaultValue(){const e=[];this.coders.forEach(t=>{e.push(t.defaultValue())});const t=this.coders.reduce((e,t)=>{const n=t.localName;return n&&(e[n]||(e[n]=0),e[n]++),e},{});return this.coders.forEach((n,r)=>{let i=n.localName;i&&1===t[i]&&("length"===i&&(i="_length"),null==e[i]&&(e[i]=e[r]))}),Object.freeze(e)}encode(e,t){return kd(e,this.coders,t)}decode(e){return e.coerce(this.name,Cd(e,this.coders))}}const Fd=new In(Qc),Ld=new RegExp(/^bytes([0-9]*)$/),Ud=new RegExp(/^(u?int)([0-9]*)$/),Gd=new class{constructor(e){gr(this,"coerceFunc",e||null)}_getCoder(e){switch(e.baseType){case"address":return new Ed(e.name);case"bool":return new xd(e.name);case"string":return new Bd(e.name);case"bytes":return new Rd(e.name);case"array":return new Nd(this._getCoder(e.arrayChildren),e.arrayLength,e.name);case"tuple":return new Dd((e.components||[]).map(e=>this._getCoder(e)),e.name);case"":return new Pd(e.name)}let t=e.type.match(Ud);if(t){let n=parseInt(t[2]||"256");return(0===n||n>256||n%8!=0)&&Fd.throwArgumentError("invalid "+t[1]+" bit length","param",e),new Od(n/8,"int"===t[1],e.name)}if(t=e.type.match(Ld),t){let n=parseInt(t[1]);return(0===n||n>32)&&Fd.throwArgumentError("invalid bytes length","param",e),new Md(n,e.name)}return Fd.throwArgumentError("invalid type","type",e.type)}_getWordSize(){return 32}_getReader(e,t){return new Td(e,this._getWordSize(),this.coerceFunc,t)}_getWriter(){return new Ad(this._getWordSize())}getDefaultValue(e){const t=e.map(e=>this._getCoder(id.from(e)));return new Dd(t,"_").defaultValue()}encode(e,t){e.length!==t.length&&Fd.throwError("types/values length mismatch",In.errors.INVALID_ARGUMENT,{count:{types:e.length,values:t.length},value:{types:e,values:t}});const n=e.map(e=>this._getCoder(id.from(e))),r=new Dd(n,"_"),i=this._getWriter();return r.encode(i,t),i.data}decode(e,t,n){const r=e.map(e=>this._getCoder(id.from(e)));return new Dd(r,"_").decode(this._getReader(Mn(t),n))}},Hd=new In(Qc);class qd extends kr{}class Vd extends kr{}class zd extends kr{}class jd extends kr{static isIndexed(e){return!(!e||!e._isIndexed)}}const Kd={"0x08c379a0":{signature:"Error(string)",name:"Error",inputs:["string"],reason:!0},"0x4e487b71":{signature:"Panic(uint256)",name:"Panic",inputs:["uint256"]}};function Wd(e,t){const n=new Error(`deferred error during ABI decoding triggered accessing ${e}`);return n.error=t,n}class Jd{constructor(e){let t=[];t="string"==typeof e?JSON.parse(e):e,gr(this,"fragments",t.map(e=>ad.from(e)).filter(e=>null!=e)),gr(this,"_abiCoder",br(new.target,"getAbiCoder")()),gr(this,"functions",{}),gr(this,"errors",{}),gr(this,"events",{}),gr(this,"structs",{}),this.fragments.forEach(e=>{let t=null;switch(e.type){case"constructor":return this.deploy?void Hd.warn("duplicate definition - constructor"):void gr(this,"deploy",e);case"function":t=this.functions;break;case"event":t=this.events;break;case"error":t=this.errors;break;default:return}let n=e.format();t[n]?Hd.warn("duplicate definition - "+n):t[n]=e}),this.deploy||gr(this,"deploy",dd.from({payable:!1,type:"constructor"})),gr(this,"_isInterface",!0)}format(e){e||(e=nd.full),e===nd.sighash&&Hd.throwArgumentError("interface does not support formatting sighash","format",e);const t=this.fragments.map(t=>t.format(e));return e===nd.json?JSON.stringify(t.map(e=>JSON.parse(e))):t}static getAbiCoder(){return Gd}static getAddress(e){return Gi(e)}static getSighash(e){return Un(ni(e.format()),0,4)}static getEventTopic(e){return ni(e.format())}getFunction(e){if(Bn(e)){for(const t in this.functions)if(e===this.getSighash(t))return this.functions[t];Hd.throwArgumentError("no matching function","sighash",e)}if(-1===e.indexOf("(")){const t=e.trim(),n=Object.keys(this.functions).filter(e=>e.split("(")[0]===t);return 0===n.length?Hd.throwArgumentError("no matching function","name",t):n.length>1&&Hd.throwArgumentError("multiple matching functions","name",t),this.functions[n[0]]}const t=this.functions[hd.fromString(e).format()];return t||Hd.throwArgumentError("no matching function","signature",e),t}getEvent(e){if(Bn(e)){const t=e.toLowerCase();for(const e in this.events)if(t===this.getEventTopic(e))return this.events[e];Hd.throwArgumentError("no matching event","topichash",t)}if(-1===e.indexOf("(")){const t=e.trim(),n=Object.keys(this.events).filter(e=>e.split("(")[0]===t);return 0===n.length?Hd.throwArgumentError("no matching event","name",t):n.length>1&&Hd.throwArgumentError("multiple matching events","name",t),this.events[n[0]]}const t=this.events[od.fromString(e).format()];return t||Hd.throwArgumentError("no matching event","signature",e),t}getError(e){if(Bn(e)){const t=br(this.constructor,"getSighash");for(const n in this.errors)if(e===t(this.errors[n]))return this.errors[n];Hd.throwArgumentError("no matching error","sighash",e)}if(-1===e.indexOf("(")){const t=e.trim(),n=Object.keys(this.errors).filter(e=>e.split("(")[0]===t);return 0===n.length?Hd.throwArgumentError("no matching error","name",t):n.length>1&&Hd.throwArgumentError("multiple matching errors","name",t),this.errors[n[0]]}const t=this.errors[hd.fromString(e).format()];return t||Hd.throwArgumentError("no matching error","signature",e),t}getSighash(e){if("string"==typeof e)try{e=this.getFunction(e)}catch(t){try{e=this.getError(e)}catch(e){throw t}}return br(this.constructor,"getSighash")(e)}getEventTopic(e){return"string"==typeof e&&(e=this.getEvent(e)),br(this.constructor,"getEventTopic")(e)}_decodeParams(e,t){return this._abiCoder.decode(e,t)}_encodeParams(e,t){return this._abiCoder.encode(e,t)}encodeDeploy(e){return this._encodeParams(this.deploy.inputs,e||[])}decodeErrorResult(e,t){"string"==typeof e&&(e=this.getError(e));const n=Mn(t);return Fn(n.slice(0,4))!==this.getSighash(e)&&Hd.throwArgumentError(`data signature does not match error ${e.name}.`,"data",Fn(n)),this._decodeParams(e.inputs,n.slice(4))}encodeErrorResult(e,t){return"string"==typeof e&&(e=this.getError(e)),Fn(Pn([this.getSighash(e),this._encodeParams(e.inputs,t||[])]))}decodeFunctionData(e,t){"string"==typeof e&&(e=this.getFunction(e));const n=Mn(t);return Fn(n.slice(0,4))!==this.getSighash(e)&&Hd.throwArgumentError(`data signature does not match function ${e.name}.`,"data",Fn(n)),this._decodeParams(e.inputs,n.slice(4))}encodeFunctionData(e,t){return"string"==typeof e&&(e=this.getFunction(e)),Fn(Pn([this.getSighash(e),this._encodeParams(e.inputs,t||[])]))}decodeFunctionResult(e,t){"string"==typeof e&&(e=this.getFunction(e));let n=Mn(t),r=null,i="",s=null,a=null,o=null;switch(n.length%this._abiCoder._getWordSize()){case 0:try{return this._abiCoder.decode(e.outputs,n)}catch(e){}break;case 4:{const e=Fn(n.slice(0,4)),t=Kd[e];if(t)s=this._abiCoder.decode(t.inputs,n.slice(4)),a=t.name,o=t.signature,t.reason&&(r=s[0]),"Error"===a?i=`; VM Exception while processing transaction: reverted with reason string ${JSON.stringify(s[0])}`:"Panic"===a&&(i=`; VM Exception while processing transaction: reverted with panic code ${s[0]}`);else try{const t=this.getError(e);s=this._abiCoder.decode(t.inputs,n.slice(4)),a=t.name,o=t.format()}catch(e){}break}}return Hd.throwError("call revert exception"+i,In.errors.CALL_EXCEPTION,{method:e.format(),data:Fn(t),errorArgs:s,errorName:a,errorSignature:o,reason:r})}encodeFunctionResult(e,t){return"string"==typeof e&&(e=this.getFunction(e)),Fn(this._abiCoder.encode(e.outputs,t||[]))}encodeFilterTopics(e,t){"string"==typeof e&&(e=this.getEvent(e)),t.length>e.inputs.length&&Hd.throwError("too many arguments for "+e.format(),In.errors.UNEXPECTED_ARGUMENT,{argument:"values",value:t});let n=[];e.anonymous||n.push(this.getEventTopic(e));const r=(e,t)=>"string"===e.type?ni(t):"bytes"===e.type?Wr(Fn(t)):("bool"===e.type&&"boolean"==typeof t&&(t=t?"0x01":"0x00"),e.type.match(/^u?int/)&&(t=Xn.from(t).toHexString()),"address"===e.type&&this._abiCoder.encode(["address"],[t]),qn(Fn(t),32));for(t.forEach((t,i)=>{let s=e.inputs[i];s.indexed?null==t?n.push(null):"array"===s.baseType||"tuple"===s.baseType?Hd.throwArgumentError("filtering with tuples or arrays not supported","contract."+s.name,t):Array.isArray(t)?n.push(t.map(e=>r(s,e))):n.push(r(s,t)):null!=t&&Hd.throwArgumentError("cannot filter non-indexed parameters; must be null","contract."+s.name,t)});n.length&&null===n[n.length-1];)n.pop();return n}encodeEventLog(e,t){"string"==typeof e&&(e=this.getEvent(e));const n=[],r=[],i=[];return e.anonymous||n.push(this.getEventTopic(e)),t.length!==e.inputs.length&&Hd.throwArgumentError("event arguments/values mismatch","values",t),e.inputs.forEach((e,s)=>{const a=t[s];if(e.indexed)if("string"===e.type)n.push(ni(a));else if("bytes"===e.type)n.push(Wr(a));else{if("tuple"===e.baseType||"array"===e.baseType)throw new Error("not implemented");n.push(this._abiCoder.encode([e.type],[a]))}else r.push(e),i.push(a)}),{data:this._abiCoder.encode(r,i),topics:n}}decodeEventLog(e,t,n){if("string"==typeof e&&(e=this.getEvent(e)),null!=n&&!e.anonymous){let t=this.getEventTopic(e);Bn(n[0],32)&&n[0].toLowerCase()===t||Hd.throwError("fragment/topic mismatch",In.errors.INVALID_ARGUMENT,{argument:"topics[0]",expected:t,value:n[0]}),n=n.slice(1)}let r=[],i=[],s=[];e.inputs.forEach((e,t)=>{e.indexed?"string"===e.type||"bytes"===e.type||"tuple"===e.baseType||"array"===e.baseType?(r.push(id.fromObject({type:"bytes32",name:e.name})),s.push(!0)):(r.push(e),s.push(!1)):(i.push(e),s.push(!1))});let a=null!=n?this._abiCoder.decode(r,Pn(n)):null,o=this._abiCoder.decode(i,t,!0),u=[],l=0,c=0;e.inputs.forEach((e,t)=>{if(e.indexed)if(null==a)u[t]=new jd({_isIndexed:!0,hash:null});else if(s[t])u[t]=new jd({_isIndexed:!0,hash:a[c++]});else try{u[t]=a[c++]}catch(e){u[t]=e}else try{u[t]=o[l++]}catch(e){u[t]=e}if(e.name&&null==u[e.name]){const n=u[t];n instanceof Error?Object.defineProperty(u,e.name,{enumerable:!0,get:()=>{throw Wd(`property ${JSON.stringify(e.name)}`,n)}}):u[e.name]=n}});for(let e=0;e<u.length;e++){const t=u[e];t instanceof Error&&Object.defineProperty(u,e,{enumerable:!0,get:()=>{throw Wd(`index ${e}`,t)}})}return Object.freeze(u)}parseTransaction(e){let t=this.getFunction(e.data.substring(0,10).toLowerCase());return t?new Vd({args:this._abiCoder.decode(t.inputs,"0x"+e.data.substring(10)),functionFragment:t,name:t.name,signature:t.format(),sighash:this.getSighash(t),value:Xn.from(e.value||"0")}):null}parseLog(e){let t=this.getEvent(e.topics[0]);return!t||t.anonymous?null:new qd({eventFragment:t,name:t.name,signature:t.format(),topic:this.getEventTopic(t),args:this.decodeEventLog(t,e.data,e.topics)})}parseError(e){const t=Fn(e);let n=this.getError(t.substring(0,10).toLowerCase());return n?new zd({args:this._abiCoder.decode(n.inputs,"0x"+t.substring(10)),errorFragment:n,name:n.name,signature:n.format(),sighash:this.getSighash(n)}):null}static isInterface(e){return!(!e||!e._isInterface)}}var Qd=function(e,t,n,r){return new(n||(n=Promise))(function(i,s){function a(e){try{u(r.next(e))}catch(e){s(e)}}function o(e){try{u(r.throw(e))}catch(e){s(e)}}function u(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n(function(e){e(t)})).then(a,o)}u((r=r.apply(e,t||[])).next())})};const Yd=new In("contracts/5.8.0");function Xd(e,t){return Qd(this,void 0,void 0,function*(){const n=yield t;"string"!=typeof n&&Yd.throwArgumentError("invalid address or ENS name","name",n);try{return Gi(n)}catch(e){}e||Yd.throwError("a provider or signer is needed to resolve ENS names",In.errors.UNSUPPORTED_OPERATION,{operation:"resolveName"});const r=yield e.resolveName(n);return null==r&&Yd.throwArgumentError("resolver or addr is not configured for ENS name","name",n),r})}function Zd(e,t,n){return Qd(this,void 0,void 0,function*(){return Array.isArray(n)?yield Promise.all(n.map((n,r)=>Zd(e,Array.isArray(t)?t[r]:t[n.name],n))):"address"===n.type?yield Xd(e,t):"tuple"===n.type?yield Zd(e,t,n.components):"array"===n.baseType?Array.isArray(t)?yield Promise.all(t.map(t=>Zd(e,t,n.arrayChildren))):Promise.reject(Yd.makeError("invalid value for array",In.errors.INVALID_ARGUMENT,{argument:"value",value:t})):t})}function $d(e,t,n){return Qd(this,void 0,void 0,function*(){let r={};n.length===t.inputs.length+1&&"object"==typeof n[n.length-1]&&(r=Ar(n.pop())),Yd.checkArgumentCount(n.length,t.inputs.length,"passed to contract"),e.signer?r.from=r.from?vr({override:Xd(e.signer,r.from),signer:e.signer.getAddress()}).then(e=>Qd(this,void 0,void 0,function*(){return Gi(e.signer)!==e.override&&Yd.throwError("Contract with a Signer cannot override from",In.errors.UNSUPPORTED_OPERATION,{operation:"overrides.from"}),e.override})):e.signer.getAddress():r.from&&(r.from=Xd(e.provider,r.from));const i=yield vr({args:Zd(e.signer||e.provider,n,t.inputs),address:e.resolvedAddress,overrides:vr(r)||{}}),s=e.interface.encodeFunctionData(t,i.args),a={data:s,to:i.address},o=i.overrides;if(null!=o.nonce&&(a.nonce=Xn.from(o.nonce).toNumber()),null!=o.gasLimit&&(a.gasLimit=Xn.from(o.gasLimit)),null!=o.gasPrice&&(a.gasPrice=Xn.from(o.gasPrice)),null!=o.maxFeePerGas&&(a.maxFeePerGas=Xn.from(o.maxFeePerGas)),null!=o.maxPriorityFeePerGas&&(a.maxPriorityFeePerGas=Xn.from(o.maxPriorityFeePerGas)),null!=o.from&&(a.from=o.from),null!=o.type&&(a.type=o.type),null!=o.accessList&&(a.accessList=Zo(o.accessList)),null==a.gasLimit&&null!=t.gas){let e=21e3;const n=Mn(s);for(let t=0;t<n.length;t++)e+=4,n[t]&&(e+=64);a.gasLimit=Xn.from(t.gas).add(e)}if(o.value){const e=Xn.from(o.value);e.isZero()||t.payable||Yd.throwError("non-payable method cannot override value",In.errors.UNSUPPORTED_OPERATION,{operation:"overrides.value",value:r.value}),a.value=e}o.customData&&(a.customData=Ar(o.customData)),o.ccipReadEnabled&&(a.ccipReadEnabled=!!o.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;const u=Object.keys(r).filter(e=>null!=r[e]);return u.length&&Yd.throwError(`cannot override ${u.map(e=>JSON.stringify(e)).join(",")}`,In.errors.UNSUPPORTED_OPERATION,{operation:"overrides",overrides:u}),a})}function eh(e,t,n){const r=e.signer||e.provider;return function(...i){return Qd(this,void 0,void 0,function*(){let s;if(i.length===t.inputs.length+1&&"object"==typeof i[i.length-1]){const e=Ar(i.pop());null!=e.blockTag&&(s=yield e.blockTag),delete e.blockTag,i.push(e)}null!=e.deployTransaction&&(yield e._deployed(s));const a=yield $d(e,t,i),o=yield r.call(a,s);try{let r=e.interface.decodeFunctionResult(t,o);return n&&1===t.outputs.length&&(r=r[0]),r}catch(t){throw t.code===In.errors.CALL_EXCEPTION&&(t.address=e.address,t.args=i,t.transaction=a),t}})}}function th(e,t,n){return t.constant?eh(e,t,n):function(e,t){return function(...n){return Qd(this,void 0,void 0,function*(){e.signer||Yd.throwError("sending a transaction requires a signer",In.errors.UNSUPPORTED_OPERATION,{operation:"sendTransaction"}),null!=e.deployTransaction&&(yield e._deployed());const r=yield $d(e,t,n),i=yield e.signer.sendTransaction(r);return function(e,t){const n=t.wait.bind(t);t.wait=t=>n(t).then(t=>(t.events=t.logs.map(n=>{let r=Ir(n),i=null;try{i=e.interface.parseLog(n)}catch(e){}return i&&(r.args=i.args,r.decode=(t,n)=>e.interface.decodeEventLog(i.eventFragment,t,n),r.event=i.name,r.eventSignature=i.signature),r.removeListener=()=>e.provider,r.getBlock=()=>e.provider.getBlock(t.blockHash),r.getTransaction=()=>e.provider.getTransaction(t.transactionHash),r.getTransactionReceipt=()=>Promise.resolve(t),r}),t))}(e,i),i})}}(e,t)}function nh(e){return!e.address||null!=e.topics&&0!==e.topics.length?(e.address||"*")+"@"+(e.topics?e.topics.map(e=>Array.isArray(e)?e.join("|"):e).join(":"):""):"*"}class rh{constructor(e,t){gr(this,"tag",e),gr(this,"filter",t),this._listeners=[]}addListener(e,t){this._listeners.push({listener:e,once:t})}removeListener(e){let t=!1;this._listeners=this._listeners.filter(n=>!(!t&&n.listener===e&&(t=!0,1)))}removeAllListeners(){this._listeners=[]}listeners(){return this._listeners.map(e=>e.listener)}listenerCount(){return this._listeners.length}run(e){const t=this.listenerCount();return this._listeners=this._listeners.filter(t=>{const n=e.slice();return setTimeout(()=>{t.listener.apply(this,n)},0),!t.once}),t}prepareEvent(e){}getEmit(e){return[e]}}class ih extends rh{constructor(){super("error",null)}}class sh extends rh{constructor(e,t,n,r){const i={address:e};let s=t.getEventTopic(n);r?(s!==r[0]&&Yd.throwArgumentError("topic mismatch","topics",r),i.topics=r.slice()):i.topics=[s],super(nh(i),i),gr(this,"address",e),gr(this,"interface",t),gr(this,"fragment",n)}prepareEvent(e){super.prepareEvent(e),e.event=this.fragment.name,e.eventSignature=this.fragment.format(),e.decode=(e,t)=>this.interface.decodeEventLog(this.fragment,e,t);try{e.args=this.interface.decodeEventLog(this.fragment,e.data,e.topics)}catch(t){e.args=null,e.decodeError=t}}getEmit(e){const t=function(e){const t=[],n=function(e,r){if(Array.isArray(r))for(let i in r){const s=e.slice();s.push(i);try{n(s,r[i])}catch(e){t.push({path:s,error:e})}}};return n([],e),t}(e.args);if(t.length)throw t[0].error;const n=(e.args||[]).slice();return n.push(e),n}}class ah extends rh{constructor(e,t){super("*",{address:e}),gr(this,"address",e),gr(this,"interface",t)}prepareEvent(e){super.prepareEvent(e);try{const t=this.interface.parseLog(e);e.event=t.name,e.eventSignature=t.signature,e.decode=(e,n)=>this.interface.decodeEventLog(t.eventFragment,e,n),e.args=t.args}catch(e){}}}class oh{constructor(e,t,n){gr(this,"interface",br(new.target,"getInterface")(t)),null==n?(gr(this,"provider",null),gr(this,"signer",null)):o.isSigner(n)?(gr(this,"provider",n.provider||null),gr(this,"signer",n)):xr.isProvider(n)?(gr(this,"provider",n),gr(this,"signer",null)):Yd.throwArgumentError("invalid signer or provider","signerOrProvider",n),gr(this,"callStatic",{}),gr(this,"estimateGas",{}),gr(this,"functions",{}),gr(this,"populateTransaction",{}),gr(this,"filters",{});{const e={};Object.keys(this.interface.events).forEach(t=>{const n=this.interface.events[t];gr(this.filters,t,(...e)=>({address:this.address,topics:this.interface.encodeFilterTopics(n,e)})),e[n.name]||(e[n.name]=[]),e[n.name].push(t)}),Object.keys(e).forEach(t=>{const n=e[t];1===n.length?gr(this.filters,t,this.filters[n[0]]):Yd.warn(`Duplicate definition of ${t} (${n.join(", ")})`)})}if(gr(this,"_runningEvents",{}),gr(this,"_wrappedEmits",{}),null==e&&Yd.throwArgumentError("invalid contract address or ENS name","addressOrName",e),gr(this,"address",e),this.provider)gr(this,"resolvedAddress",Xd(this.provider,e));else try{gr(this,"resolvedAddress",Promise.resolve(Gi(e)))}catch(e){Yd.throwError("provider is required to use ENS name as contract address",In.errors.UNSUPPORTED_OPERATION,{operation:"new Contract"})}this.resolvedAddress.catch(e=>{});const r={},i={};Object.keys(this.interface.functions).forEach(e=>{const t=this.interface.functions[e];if(i[e])Yd.warn(`Duplicate ABI entry for ${JSON.stringify(e)}`);else{i[e]=!0;{const n=t.name;r[`%${n}`]||(r[`%${n}`]=[]),r[`%${n}`].push(e)}null==this[e]&&gr(this,e,th(this,t,!0)),null==this.functions[e]&&gr(this.functions,e,th(this,t,!1)),null==this.callStatic[e]&&gr(this.callStatic,e,eh(this,t,!0)),null==this.populateTransaction[e]&&gr(this.populateTransaction,e,function(e,t){return function(...n){return $d(e,t,n)}}(this,t)),null==this.estimateGas[e]&&gr(this.estimateGas,e,function(e,t){const n=e.signer||e.provider;return function(...r){return Qd(this,void 0,void 0,function*(){n||Yd.throwError("estimate require a provider or signer",In.errors.UNSUPPORTED_OPERATION,{operation:"estimateGas"});const i=yield $d(e,t,r);return yield n.estimateGas(i)})}}(this,t))}}),Object.keys(r).forEach(e=>{const t=r[e];if(t.length>1)return;e=e.substring(1);const n=t[0];try{null==this[e]&&gr(this,e,this[n])}catch(e){}null==this.functions[e]&&gr(this.functions,e,this.functions[n]),null==this.callStatic[e]&&gr(this.callStatic,e,this.callStatic[n]),null==this.populateTransaction[e]&&gr(this.populateTransaction,e,this.populateTransaction[n]),null==this.estimateGas[e]&&gr(this.estimateGas,e,this.estimateGas[n])})}static getContractAddress(e){return Hi(e)}static getInterface(e){return Jd.isInterface(e)?e:new Jd(e)}deployed(){return this._deployed()}_deployed(e){return this._deployedPromise||(this._deployedPromise=this.deployTransaction?this.deployTransaction.wait().then(()=>this):this.provider.getCode(this.address,e).then(e=>("0x"===e&&Yd.throwError("contract not deployed",In.errors.UNSUPPORTED_OPERATION,{contractAddress:this.address,operation:"getDeployed"}),this))),this._deployedPromise}fallback(e){this.signer||Yd.throwError("sending a transactions require a signer",In.errors.UNSUPPORTED_OPERATION,{operation:"sendTransaction(fallback)"});const t=Ar(e||{});return["from","to"].forEach(function(e){null!=t[e]&&Yd.throwError("cannot override "+e,In.errors.UNSUPPORTED_OPERATION,{operation:e})}),t.to=this.resolvedAddress,this.deployed().then(()=>this.signer.sendTransaction(t))}connect(e){"string"==typeof e&&(e=new u(e,this.provider));const t=new this.constructor(this.address,this.interface,e);return this.deployTransaction&&gr(t,"deployTransaction",this.deployTransaction),t}attach(e){return new this.constructor(e,this.interface,this.signer||this.provider)}static isIndexed(e){return jd.isIndexed(e)}_normalizeRunningEvent(e){return this._runningEvents[e.tag]?this._runningEvents[e.tag]:e}_getRunningEvent(e){if("string"==typeof e){if("error"===e)return this._normalizeRunningEvent(new ih);if("event"===e)return this._normalizeRunningEvent(new rh("event",null));if("*"===e)return this._normalizeRunningEvent(new ah(this.address,this.interface));const t=this.interface.getEvent(e);return this._normalizeRunningEvent(new sh(this.address,this.interface,t))}if(e.topics&&e.topics.length>0){try{const t=e.topics[0];if("string"!=typeof t)throw new Error("invalid topic");const n=this.interface.getEvent(t);return this._normalizeRunningEvent(new sh(this.address,this.interface,n,e.topics))}catch(e){}const t={address:this.address,topics:e.topics};return this._normalizeRunningEvent(new rh(nh(t),t))}return this._normalizeRunningEvent(new ah(this.address,this.interface))}_checkRunningEvents(e){if(0===e.listenerCount()){delete this._runningEvents[e.tag];const t=this._wrappedEmits[e.tag];t&&e.filter&&(this.provider.off(e.filter,t),delete this._wrappedEmits[e.tag])}}_wrapEvent(e,t,n){const r=Ir(t);return r.removeListener=()=>{n&&(e.removeListener(n),this._checkRunningEvents(e))},r.getBlock=()=>this.provider.getBlock(t.blockHash),r.getTransaction=()=>this.provider.getTransaction(t.transactionHash),r.getTransactionReceipt=()=>this.provider.getTransactionReceipt(t.transactionHash),e.prepareEvent(r),r}_addEventListener(e,t,n){if(this.provider||Yd.throwError("events require a provider or a signer with a provider",In.errors.UNSUPPORTED_OPERATION,{operation:"once"}),e.addListener(t,n),this._runningEvents[e.tag]=e,!this._wrappedEmits[e.tag]){const n=n=>{let r=this._wrapEvent(e,n,t);if(null==r.decodeError)try{const t=e.getEmit(r);this.emit(e.filter,...t)}catch(e){r.decodeError=e.error}null!=e.filter&&this.emit("event",r),null!=r.decodeError&&this.emit("error",r.decodeError,r)};this._wrappedEmits[e.tag]=n,null!=e.filter&&this.provider.on(e.filter,n)}}queryFilter(e,t,n){const r=this._getRunningEvent(e),i=Ar(r.filter);return"string"==typeof t&&Bn(t,32)?(null!=n&&Yd.throwArgumentError("cannot specify toBlock with blockhash","toBlock",n),i.blockHash=t):(i.fromBlock=null!=t?t:0,i.toBlock=null!=n?n:"latest"),this.provider.getLogs(i).then(e=>e.map(e=>this._wrapEvent(r,e,null)))}on(e,t){return this._addEventListener(this._getRunningEvent(e),t,!1),this}once(e,t){return this._addEventListener(this._getRunningEvent(e),t,!0),this}emit(e,...t){if(!this.provider)return!1;const n=this._getRunningEvent(e),r=n.run(t)>0;return this._checkRunningEvents(n),r}listenerCount(e){return this.provider?null==e?Object.keys(this._runningEvents).reduce((e,t)=>e+this._runningEvents[t].listenerCount(),0):this._getRunningEvent(e).listenerCount():0}listeners(e){if(!this.provider)return[];if(null==e){const e=[];for(let t in this._runningEvents)this._runningEvents[t].listeners().forEach(t=>{e.push(t)});return e}return this._getRunningEvent(e).listeners()}removeAllListeners(e){if(!this.provider)return this;if(null==e){for(const e in this._runningEvents){const t=this._runningEvents[e];t.removeAllListeners(),this._checkRunningEvents(t)}return this}const t=this._getRunningEvent(e);return t.removeAllListeners(),this._checkRunningEvents(t),this}off(e,t){if(!this.provider)return this;const n=this._getRunningEvent(e);return n.removeListener(t),this._checkRunningEvents(n),this}removeListener(e,t){return this.off(e,t)}}class uh extends oh{}var lh;!function(e){e[e.DELEGATECALL=0]="DELEGATECALL",e[e.CALL=1]="CALL",e[e.STATICCALL=2]="STATICCALL",e[e.CALL_WITH_VALUE=3]="CALL_WITH_VALUE",e[e.CALLTYPE_MASK=3]="CALLTYPE_MASK",e[e.EXTENDED_COMMAND=64]="EXTENDED_COMMAND",e[e.TUPLE_RETURN=128]="TUPLE_RETURN"}(lh||(lh={}));const ch="0x9585c3062Df1C247d5E373Cfca9167F7dC2b5963",dh=[{inputs:[{internalType:"uint256",name:"command_index",type:"uint256"},{internalType:"address",name:"target",type:"address"},{internalType:"string",name:"message",type:"string"}],name:"ExecutionFailed",type:"error"},{inputs:[{internalType:"bytes32[]",name:"commands",type:"bytes32[]"},{internalType:"bytes[]",name:"state",type:"bytes[]"}],name:"execute",outputs:[{internalType:"bytes[]",name:"",type:"bytes[]"}],stateMutability:"payable",type:"function"}];function hh(e){const t=e.plan(),{commands:n,state:r}=t;return new Jd(dh).encodeFunctionData("execute",[n,r])}function ph(e){const t=new N;return e(t),{to:ch,value:BigInt(0),data:hh(t)}}function fh(e,t){return x.createContract(e,t)}function mh(e){return x.createLibrary(e)}const yh=[{inputs:[{internalType:"uint256",name:"_a",type:"uint256"},{internalType:"uint256",name:"_b",type:"uint256"}],name:"multiplyAndSubtract",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"pure",type:"function"}],gh=[{inputs:[{internalType:"address",name:"_wrappedNativeTokenAddress",type:"address"},{internalType:"uint32",name:"_depositQuoteTimeBuffer",type:"uint32"},{internalType:"uint32",name:"_fillDeadlineBuffer",type:"uint32"}],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"ClaimedMerkleLeaf",type:"error"},{inputs:[],name:"DepositsArePaused",type:"error"},{inputs:[],name:"DisabledRoute",type:"error"},{inputs:[],name:"ExpiredFillDeadline",type:"error"},{inputs:[],name:"FillsArePaused",type:"error"},{inputs:[],name:"InsufficientSpokePoolBalanceToExecuteLeaf",type:"error"},{inputs:[],name:"InvalidBytes32",type:"error"},{inputs:[],name:"InvalidChainId",type:"error"},{inputs:[],name:"InvalidCrossDomainAdmin",type:"error"},{inputs:[],name:"InvalidDepositorSignature",type:"error"},{inputs:[],name:"InvalidExclusiveRelayer",type:"error"},{inputs:[],name:"InvalidFillDeadline",type:"error"},{inputs:[],name:"InvalidMerkleLeaf",type:"error"},{inputs:[],name:"InvalidMerkleProof",type:"error"},{inputs:[],name:"InvalidPayoutAdjustmentPct",type:"error"},{inputs:[],name:"InvalidQuoteTimestamp",type:"error"},{inputs:[],name:"InvalidRelayerFeePct",type:"error"},{inputs:[],name:"InvalidSlowFillRequest",type:"error"},{inputs:[],name:"InvalidWithdrawalRecipient",type:"error"},{inputs:[{internalType:"bytes",name:"data",type:"bytes"}],name:"LowLevelCallFailed",type:"error"},{inputs:[],name:"MaxTransferSizeExceeded",type:"error"},{inputs:[],name:"MsgValueDoesNotMatchInputAmount",type:"error"},{inputs:[],name:"NoRelayerRefundToClaim",type:"error"},{inputs:[],name:"NoSlowFillsInExclusivityWindow",type:"error"},{inputs:[],name:"NotEOA",type:"error"},{inputs:[],name:"NotExclusiveRelayer",type:"error"},{inputs:[],name:"RelayFilled",type:"error"},{inputs:[],name:"WrongERC7683OrderId",type:"error"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"previousAdmin",type:"address"},{indexed:!1,internalType:"address",name:"newAdmin",type:"address"}],name:"AdminChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"beacon",type:"address"}],name:"BeaconUpgraded",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"bytes32",name:"l2TokenAddress",type:"bytes32"},{indexed:!0,internalType:"bytes32",name:"refundAddress",type:"bytes32"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!0,internalType:"address",name:"caller",type:"address"}],name:"ClaimedRelayerRefund",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"uint256",name:"rootBundleId",type:"uint256"}],name:"EmergencyDeletedRootBundle",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"originToken",type:"address"},{indexed:!0,internalType:"uint256",name:"destinationChainId",type:"uint256"},{indexed:!1,internalType:"bool",name:"enabled",type:"bool"}],name:"EnabledDepositRoute",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"amountToReturn",type:"uint256"},{indexed:!0,internalType:"uint256",name:"chainId",type:"uint256"},{indexed:!1,internalType:"uint256[]",name:"refundAmounts",type:"uint256[]"},{indexed:!0,internalType:"uint32",name:"rootBundleId",type:"uint32"},{indexed:!0,internalType:"uint32",name:"leafId",type:"uint32"},{indexed:!1,internalType:"address",name:"l2TokenAddress",type:"address"},{indexed:!1,internalType:"address[]",name:"refundAddresses",type:"address[]"},{indexed:!1,internalType:"bool",name:"deferredRefunds",type:"bool"},{indexed:!1,internalType:"address",name:"caller",type:"address"}],name:"ExecutedRelayerRefundRoot",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"bytes32",name:"inputToken",type:"bytes32"},{indexed:!1,internalType:"bytes32",name:"outputToken",type:"bytes32"},{indexed:!1,internalType:"uint256",name:"inputAmount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"outputAmount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"repaymentChainId",type:"uint256"},{indexed:!0,internalType:"uint256",name:"originChainId",type:"uint256"},{indexed:!0,internalType:"uint256",name:"depositId",type:"uint256"},{indexed:!1,internalType:"uint32",name:"fillDeadline",type:"uint32"},{indexed:!1,internalType:"uint32",name:"exclusivityDeadline",type:"uint32"},{indexed:!1,internalType:"bytes32",name:"exclusiveRelayer",type:"bytes32"},{indexed:!0,internalType:"bytes32",name:"relayer",type:"bytes32"},{indexed:!1,internalType:"bytes32",name:"depositor",type:"bytes32"},{indexed:!1,internalType:"bytes32",name:"recipient",type:"bytes32"},{indexed:!1,internalType:"bytes32",name:"messageHash",type:"bytes32"},{components:[{internalType:"bytes32",name:"updatedRecipient",type:"bytes32"},{internalType:"bytes32",name:"updatedMessageHash",type:"bytes32"},{internalType:"uint256",name:"updatedOutputAmount",type:"uint256"},{internalType:"enum V3SpokePoolInterface.FillType",name:"fillType",type:"uint8"}],indexed:!1,internalType:"struct V3SpokePoolInterface.V3RelayExecutionEventInfo",name:"relayExecutionInfo",type:"tuple"}],name:"FilledRelay",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"inputToken",type:"address"},{indexed:!1,internalType:"address",name:"outputToken",type:"address"},{indexed:!1,internalType:"uint256",name:"inputAmount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"outputAmount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"repaymentChainId",type:"uint256"},{indexed:!0,internalType:"uint256",name:"originChainId",type:"uint256"},{indexed:!0,internalType:"uint32",name:"depositId",type:"uint32"},{indexed:!1,internalType:"uint32",name:"fillDeadline",type:"uint32"},{indexed:!1,internalType:"uint32",name:"exclusivityDeadline",type:"uint32"},{indexed:!1,internalType:"address",name:"exclusiveRelayer",type:"address"},{indexed:!0,internalType:"address",name:"relayer",type:"address"},{indexed:!1,internalType:"address",name:"depositor",type:"address"},{indexed:!1,internalType:"address",name:"recipient",type:"address"},{indexed:!1,internalType:"bytes",name:"message",type:"bytes"},{components:[{internalType:"address",name:"updatedRecipient",type:"address"},{internalType:"bytes",name:"updatedMessage",type:"bytes"},{internalType:"uint256",name:"updatedOutputAmount",type:"uint256"},{internalType:"enum V3SpokePoolInterface.FillType",name:"fillType",type:"uint8"}],indexed:!1,internalType:"struct V3SpokePoolInterface.LegacyV3RelayExecutionEventInfo",name:"relayExecutionInfo",type:"tuple"}],name:"FilledV3Relay",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"bytes32",name:"inputToken",type:"bytes32"},{indexed:!1,internalType:"bytes32",name:"outputToken",type:"bytes32"},{indexed:!1,internalType:"uint256",name:"inputAmount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"outputAmount",type:"uint256"},{indexed:!0,internalType:"uint256",name:"destinationChainId",type:"uint256"},{indexed:!0,internalType:"uint256",name:"depositId",type:"uint256"},{indexed:!1,internalType:"uint32",name:"quoteTimestamp",type:"uint32"},{indexed:!1,internalType:"uint32",name:"fillDeadline",type:"uint32"},{indexed:!1,internalType:"uint32",name:"exclusivityDeadline",type:"uint32"},{indexed:!0,internalType:"bytes32",name:"depositor",type:"bytes32"},{indexed:!1,internalType:"bytes32",name:"recipient",type:"bytes32"},{indexed:!1,internalType:"bytes32",name:"exclusiveRelayer",type:"bytes32"},{indexed:!1,internalType:"bytes",name:"message",type:"bytes"}],name:"FundsDeposited",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint8",name:"version",type:"uint8"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"previousOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"bool",name:"isPaused",type:"bool"}],name:"PausedDeposits",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"bool",name:"isPaused",type:"bool"}],name:"PausedFills",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"uint32",name:"rootBundleId",type:"uint32"},{indexed:!0,internalType:"bytes32",name:"relayerRefundRoot",type:"bytes32"},{indexed:!0,internalType:"bytes32",name:"slowRelayRoot",type:"bytes32"}],name:"RelayedRootBundle",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"bytes32",name:"inputToken",type:"bytes32"},{indexed:!1,internalType:"bytes32",name:"outputToken",type:"bytes32"},{indexed:!1,internalType:"uint256",name:"inputAmount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"outputAmount",type:"uint256"},{indexed:!0,internalType:"uint256",name:"originChainId",type:"uint256"},{indexed:!0,internalType:"uint256",name:"depositId",type:"uint256"},{indexed:!1,internalType:"uint32",name:"fillDeadline",type:"uint32"},{indexed:!1,internalType:"uint32",name:"exclusivityDeadline",type:"uint32"},{indexed:!1,internalType:"bytes32",name:"exclusiveRelayer",type:"bytes32"},{indexed:!1,internalType:"bytes32",name:"depositor",type:"bytes32"},{indexed:!1,internalType:"bytes32",name:"recipient",type:"bytes32"},{indexed:!1,internalType:"bytes32",name:"messageHash",type:"bytes32"}],name:"RequestedSlowFill",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"updatedOutputAmount",type:"uint256"},{indexed:!0,internalType:"uint256",name:"depositId",type:"uint256"},{indexed:!0,internalType:"bytes32",name:"depositor",type:"bytes32"},{indexed:!1,internalType:"bytes32",name:"updatedRecipient",type:"bytes32"},{indexed:!1,internalType:"bytes",name:"updatedMessage",type:"bytes"},{indexed:!1,internalType:"bytes",name:"depositorSignature",type:"bytes"}],name:"RequestedSpeedUpDeposit",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"updatedOutputAmount",type:"uint256"},{indexed:!0,internalType:"uint32",name:"depositId",type:"uint32"},{indexed:!0,internalType:"address",name:"depositor",type:"address"},{indexed:!1,internalType:"address",name:"updatedRecipient",type:"address"},{indexed:!1,internalType:"bytes",name:"updatedMessage",type:"bytes"},{indexed:!1,internalType:"bytes",name:"depositorSignature",type:"bytes"}],name:"RequestedSpeedUpV3Deposit",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"inputToken",type:"address"},{indexed:!1,internalType:"address",name:"outputToken",type:"address"},{indexed:!1,internalType:"uint256",name:"inputAmount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"outputAmount",type:"uint256"},{indexed:!0,internalType:"uint256",name:"originChainId",type:"uint256"},{indexed:!0,internalType:"uint32",name:"depositId",type:"uint32"},{indexed:!1,internalType:"uint32",name:"fillDeadline",type:"uint32"},{indexed:!1,internalType:"uint32",name:"exclusivityDeadline",type:"uint32"},{indexed:!1,internalType:"address",name:"exclusiveRelayer",type:"address"},{indexed:!1,internalType:"address",name:"depositor",type:"address"},{indexed:!1,internalType:"address",name:"recipient",type:"address"},{indexed:!1,internalType:"bytes",name:"message",type:"bytes"}],name:"RequestedV3SlowFill",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"newWithdrawalRecipient",type:"address"}],name:"SetWithdrawalRecipient",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"newAdmin",type:"address"}],name:"SetXDomainAdmin",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"amountToReturn",type:"uint256"},{indexed:!0,internalType:"uint256",name:"chainId",type:"uint256"},{indexed:!0,internalType:"uint32",name:"leafId",type:"uint32"},{indexed:!0,internalType:"bytes32",name:"l2TokenAddress",type:"bytes32"},{indexed:!1,internalType:"address",name:"caller",type:"address"}],name:"TokensBridged",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"implementation",type:"address"}],name:"Upgraded",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"inputToken",type:"address"},{indexed:!1,internalType:"address",name:"outputToken",type:"address"},{indexed:!1,internalType:"uint256",name:"inputAmount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"outputAmount",type:"uint256"},{indexed:!0,internalType:"uint256",name:"destinationChainId",type:"uint256"},{indexed:!0,internalType:"uint32",name:"depositId",type:"uint32"},{indexed:!1,internalType:"uint32",name:"quoteTimestamp",type:"uint32"},{indexed:!1,internalType:"uint32",name:"fillDeadline",type:"uint32"},{indexed:!1,internalType:"uint32",name:"exclusivityDeadline",type:"uint32"},{indexed:!0,internalType:"address",name:"depositor",type:"address"},{indexed:!1,internalType:"address",name:"recipient",type:"address"},{indexed:!1,internalType:"address",name:"exclusiveRelayer",type:"address"},{indexed:!1,internalType:"bytes",name:"message",type:"bytes"}],name:"V3FundsDeposited",type:"event"},{inputs:[],name:"EMPTY_RELAYER",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"EMPTY_REPAYMENT_CHAIN_ID",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"INFINITE_FILL_DEADLINE",outputs:[{internalType:"uint32",name:"",type:"uint32"}],stateMutability:"view",type:"function"},{inputs:[],name:"MAX_EXCLUSIVITY_PERIOD_SECONDS",outputs:[{internalType:"uint32",name:"",type:"uint32"}],stateMutability:"view",type:"function"},{inputs:[],name:"MAX_TRANSFER_SIZE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"UPDATE_ADDRESS_DEPOSIT_DETAILS_HASH",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"UPDATE_BYTES32_DEPOSIT_DETAILS_HASH",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint32",name:"_initialDepositId",type:"uint32"},{internalType:"address",name:"_crossDomainAdmin",type:"address"},{internalType:"address",name:"_withdrawalRecipient",type:"address"}],name:"__SpokePool_init",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"chainId",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"l2TokenAddress",type:"bytes32"},{internalType:"bytes32",name:"refundAddress",type:"bytes32"}],name:"claimRelayerRefund",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"crossDomainAdmin",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"depositor",type:"bytes32"},{internalType:"bytes32",name:"recipient",type:"bytes32"},{internalType:"bytes32",name:"inputToken",type:"bytes32"},{internalType:"bytes32",name:"outputToken",type:"bytes32"},{internalType:"uint256",name:"inputAmount",type:"uint256"},{internalType:"uint256",name:"outputAmount",type:"uint256"},{internalType:"uint256",name:"destinationChainId",type:"uint256"},{internalType:"bytes32",name:"exclusiveRelayer",type:"bytes32"},{internalType:"uint32",name:"quoteTimestamp",type:"uint32"},{internalType:"uint32",name:"fillDeadline",type:"uint32"},{internalType:"uint32",name:"exclusivityParameter",type:"uint32"},{internalType:"bytes",name:"message",type:"bytes"}],name:"deposit",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"recipient",type:"address"},{internalType:"address",name:"originToken",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"uint256",name:"destinationChainId",type:"uint256"},{internalType:"int64",name:"relayerFeePct",type:"int64"},{internalType:"uint32",name:"quoteTimestamp",type:"uint32"},{internalType:"bytes",name:"message",type:"bytes"},{internalType:"uint256",name:"",type:"uint256"}],name:"depositDeprecated_5947912356",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"depositor",type:"address"},{internalType:"address",name:"recipient",type:"address"},{internalType:"address",name:"originToken",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"uint256",name:"destinationChainId",type:"uint256"},{internalType:"int64",name:"relayerFeePct",type:"int64"},{internalType:"uint32",name:"quoteTimestamp",type:"uint32"},{internalType:"bytes",name:"message",type:"bytes"},{internalType:"uint256",name:"",type:"uint256"}],name:"depositFor",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"bytes32",name:"depositor",type:"bytes32"},{internalType:"bytes32",name:"recipient",type:"bytes32"},{internalType:"bytes32",name:"inputToken",type:"bytes32"},{internalType:"bytes32",name:"outputToken",type:"bytes32"},{internalType:"uint256",name:"inputAmount",type:"uint256"},{internalType:"uint256",name:"outputAmount",type:"uint256"},{internalType:"uint256",name:"destinationChainId",type:"uint256"},{internalType:"bytes32",name:"exclusiveRelayer",type:"bytes32"},{internalType:"uint32",name:"fillDeadlineOffset",type:"uint32"},{internalType:"uint32",name:"exclusivityParameter",type:"uint32"},{internalType:"bytes",name:"message",type:"bytes"}],name:"depositNow",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"depositQuoteTimeBuffer",outputs:[{internalType:"uint32",name:"",type:"uint32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"depositor",type:"address"},{internalType:"address",name:"recipient",type:"address"},{internalType:"address",name:"inputToken",type:"address"},{internalType:"address",name:"outputToken",type:"address"},{internalType:"uint256",name:"inputAmount",type:"uint256"},{internalType:"uint256",name:"outputAmount",type:"uint256"},{internalType:"uint256",name:"destinationChainId",type:"uint256"},{internalType:"address",name:"exclusiveRelayer",type:"address"},{internalType:"uint32",name:"quoteTimestamp",type:"uint32"},{internalType:"uint32",name:"fillDeadline",type:"uint32"},{internalType:"uint32",name:"exclusivityParameter",type:"uint32"},{internalType:"bytes",name:"message",type:"bytes"}],name:"depositV3",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"depositor",type:"address"},{internalType:"address",name:"recipient",type:"address"},{internalType:"address",name:"inputToken",type:"address"},{internalType:"address",name:"outputToken",type:"address"},{internalType:"uint256",name:"inputAmount",type:"uint256"},{internalType:"uint256",name:"outputAmount",type:"uint256"},{internalType:"uint256",name:"destinationChainId",type:"uint256"},{internalType:"address",name:"exclusiveRelayer",type:"address"},{internalType:"uint32",name:"fillDeadlineOffset",type:"uint32"},{internalType:"uint32",name:"exclusivityParameter",type:"uint32"},{internalType:"bytes",name:"message",type:"bytes"}],name:"depositV3Now",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"rootBundleId",type:"uint256"}],name:"emergencyDeleteRootBundle",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"},{internalType:"uint256",name:"",type:"uint256"}],name:"enabledDepositRoutes",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint32",name:"rootBundleId",type:"uint32"},{components:[{internalType:"uint256",name:"amountToReturn",type:"uint256"},{internalType:"uint256",name:"chainId",type:"uint256"},{internalType:"uint256[]",name:"refundAmounts",type:"uint256[]"},{internalType:"uint32",name:"leafId",type:"uint32"},{internalType:"address",name:"l2TokenAddress",type:"address"},{internalType:"address[]",name:"refundAddresses",type:"address[]"}],internalType:"struct SpokePoolInterface.RelayerRefundLeaf",name:"relayerRefundLeaf",type:"tuple"},{internalType:"bytes32[]",name:"proof",type:"bytes32[]"}],name:"executeRelayerRefundLeaf",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{components:[{components:[{internalType:"bytes32",name:"depositor",type:"bytes32"},{internalType:"bytes32",name:"recipient",type:"bytes32"},{internalType:"bytes32",name:"exclusiveRelayer",type:"bytes32"},{internalType:"bytes32",name:"inputToken",type:"bytes32"},{internalType:"bytes32",name:"outputToken",type:"bytes32"},{internalType:"uint256",name:"inputAmount",type:"uint256"},{internalType:"uint256",name:"outputAmount",type:"uint256"},{internalType:"uint256",name:"originChainId",type:"uint256"},{internalType:"uint256",name:"depositId",type:"uint256"},{internalType:"uint32",name:"fillDeadline",type:"uint32"},{internalType:"uint32",name:"exclusivityDeadline",type:"uint32"},{internalType:"bytes",name:"message",type:"bytes"}],internalType:"struct V3SpokePoolInterface.V3RelayData",name:"relayData",type:"tuple"},{internalType:"uint256",name:"chainId",type:"uint256"},{internalType:"uint256",name:"updatedOutputAmount",type:"uint256"}],internalType:"struct V3SpokePoolInterface.V3SlowFill",name:"slowFillLeaf",type:"tuple"},{internalType:"uint32",name:"rootBundleId",type:"uint32"},{internalType:"bytes32[]",name:"proof",type:"bytes32[]"}],name:"executeSlowRelayLeaf",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"orderId",type:"bytes32"},{internalType:"bytes",name:"originData",type:"bytes"},{internalType:"bytes",name:"fillerData",type:"bytes"}],name:"fill",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"fillDeadlineBuffer",outputs:[{internalType:"uint32",name:"",type:"uint32"}],stateMutability:"view",type:"function"},{inputs:[{components:[{internalType:"bytes32",name:"depositor",type:"bytes32"},{internalType:"bytes32",name:"recipient",type:"bytes32"},{internalType:"bytes32",name:"exclusiveRelayer",type:"bytes32"},{internalType:"bytes32",name:"inputToken",type:"bytes32"},{internalType:"bytes32",name:"outputToken",type:"bytes32"},{internalType:"uint256",name:"inputAmount",type:"uint256"},{internalType:"uint256",name:"outputAmount",type:"uint256"},{internalType:"uint256",name:"originChainId",type:"uint256"},{internalType:"uint256",name:"depositId",type:"uint256"},{internalType:"uint32",name:"fillDeadline",type:"uint32"},{internalType:"uint32",name:"exclusivityDeadline",type:"uint32"},{internalType:"bytes",name:"message",type:"bytes"}],internalType:"struct V3SpokePoolInterface.V3RelayData",name:"relayData",type:"tuple"},{internalType:"uint256",name:"repaymentChainId",type:"uint256"},{internalType:"bytes32",name:"repaymentAddress",type:"bytes32"}],name:"fillRelay",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{components:[{internalType:"bytes32",name:"depositor",type:"bytes32"},{internalType:"bytes32",name:"recipient",type:"bytes32"},{internalType:"bytes32",name:"exclusiveRelayer",type:"bytes32"},{internalType:"bytes32",name:"inputToken",type:"bytes32"},{internalType:"bytes32",name:"outputToken",type:"bytes32"},{internalType:"uint256",name:"inputAmount",type:"uint256"},{internalType:"uint256",name:"outputAmount",type:"uint256"},{internalType:"uint256",name:"originChainId",type:"uint256"},{internalType:"uint256",name:"depositId",type:"uint256"},{internalType:"uint32",name:"fillDeadline",type:"uint32"},{internalType:"uint32",name:"exclusivityDeadline",type:"uint32"},{internalType:"bytes",name:"message",type:"bytes"}],internalType:"struct V3SpokePoolInterface.V3RelayData",name:"relayData",type:"tuple"},{internalType:"uint256",name:"repaymentChainId",type:"uint256"},{internalType:"bytes32",name:"repaymentAddress",type:"bytes32"},{internalType:"uint256",name:"updatedOutputAmount",type:"uint256"},{internalType:"bytes32",name:"updatedRecipient",type:"bytes32"},{internalType:"bytes",name:"updatedMessage",type:"bytes"},{internalType:"bytes",name:"depositorSignature",type:"bytes"}],name:"fillRelayWithUpdatedDeposit",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"",type:"bytes32"}],name:"fillStatuses",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{components:[{internalType:"address",name:"depositor",type:"address"},{internalType:"address",name:"recipient",type:"address"},{internalType:"address",name:"exclusiveRelayer",type:"address"},{internalType:"address",name:"inputToken",type:"address"},{internalType:"address",name:"outputToken",type:"address"},{internalType:"uint256",name:"inputAmount",type:"uint256"},{internalType:"uint256",name:"outputAmount",type:"uint256"},{internalType:"uint256",name:"originChainId",type:"uint256"},{internalType:"uint32",name:"depositId",type:"uint32"},{internalType:"uint32",name:"fillDeadline",type:"uint32"},{internalType:"uint32",name:"exclusivityDeadline",type:"uint32"},{internalType:"bytes",name:"message",type:"bytes"}],internalType:"struct V3SpokePoolInterface.V3RelayDataLegacy",name:"relayData",type:"tuple"},{internalType:"uint256",name:"repaymentChainId",type:"uint256"}],name:"fillV3Relay",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"getCurrentTime",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"l2TokenAddress",type:"address"},{internalType:"address",name:"refundAddress",type:"address"}],name:"getRelayerRefund",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"msgSender",type:"address"},{internalType:"bytes32",name:"depositor",type:"bytes32"},{internalType:"uint256",name:"depositNonce",type:"uint256"}],name:"getUnsafeDepositId",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"pure",type:"function"},{inputs:[{components:[{internalType:"bytes32",name:"depositor",type:"bytes32"},{internalType:"bytes32",name:"recipient",type:"bytes32"},{internalType:"bytes32",name:"exclusiveRelayer",type:"bytes32"},{internalType:"bytes32",name:"inputToken",type:"bytes32"},{internalType:"bytes32",name:"outputToken",type:"bytes32"},{internalType:"uint256",name:"inputAmount",type:"uint256"},{internalType:"uint256",name:"outputAmount",type:"uint256"},{internalType:"uint256",name:"originChainId",type:"uint256"},{internalType:"uint256",name:"depositId",type:"uint256"},{internalType:"uint32",name:"fillDeadline",type:"uint32"},{internalType:"uint32",name:"exclusivityDeadline",type:"uint32"},{internalType:"bytes",name:"message",type:"bytes"}],internalType:"struct V3SpokePoolInterface.V3RelayData",name:"relayData",type:"tuple"}],name:"getV3RelayHash",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint32",name:"_initialDepositId",type:"uint32"},{internalType:"address",name:"_withdrawalRecipient",type:"address"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes[]",name:"data",type:"bytes[]"}],name:"multicall",outputs:[{internalType:"bytes[]",name:"results",type:"bytes[]"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"numberOfDeposits",outputs:[{internalType:"uint32",name:"",type:"uint32"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bool",name:"pause",type:"bool"}],name:"pauseDeposits",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bool",name:"pause",type:"bool"}],name:"pauseFills",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"pausedDeposits",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"pausedFills",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"proxiableUUID",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"relayerRefundRoot",type:"bytes32"},{internalType:"bytes32",name:"slowRelayRoot",type:"bytes32"}],name:"relayRootBundle",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"},{internalType:"address",name:"",type:"address"}],name:"relayerRefund",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{components:[{internalType:"bytes32",name:"depositor",type:"bytes32"},{internalType:"bytes32",name:"recipient",type:"bytes32"},{internalType:"bytes32",name:"exclusiveRelayer",type:"bytes32"},{internalType:"bytes32",name:"inputToken",type:"bytes32"},{internalType:"bytes32",name:"outputToken",type:"bytes32"},{internalType:"uint256",name:"inputAmount",type:"uint256"},{internalType:"uint256",name:"outputAmount",type:"uint256"},{internalType:"uint256",name:"originChainId",type:"uint256"},{internalType:"uint256",name:"depositId",type:"uint256"},{internalType:"uint32",name:"fillDeadline",type:"uint32"},{internalType:"uint32",name:"exclusivityDeadline",type:"uint32"},{internalType:"bytes",name:"message",type:"bytes"}],internalType:"struct V3SpokePoolInterface.V3RelayData",name:"relayData",type:"tuple"}],name:"requestSlowFill",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"",type:"uint256"}],name:"rootBundles",outputs:[{internalType:"bytes32",name:"slowRelayRoot",type:"bytes32"},{internalType:"bytes32",name:"relayerRefundRoot",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newCrossDomainAdmin",type:"address"}],name:"setCrossDomainAdmin",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"originToken",type:"address"},{internalType:"uint256",name:"destinationChainId",type:"uint256"},{internalType:"bool",name:"enabled",type:"bool"}],name:"setEnableRoute",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newWithdrawalRecipient",type:"address"}],name:"setWithdrawalRecipient",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"depositor",type:"bytes32"},{internalType:"uint256",name:"depositId",type:"uint256"},{internalType:"uint256",name:"updatedOutputAmount",type:"uint256"},{internalType:"bytes32",name:"updatedRecipient",type:"bytes32"},{internalType:"bytes",name:"updatedMessage",type:"bytes"},{internalType:"bytes",name:"depositorSignature",type:"bytes"}],name:"speedUpDeposit",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"depositor",type:"address"},{internalType:"uint256",name:"depositId",type:"uint256"},{internalType:"uint256",name:"updatedOutputAmount",type:"uint256"},{internalType:"address",name:"updatedRecipient",type:"address"},{internalType:"bytes",name:"updatedMessage",type:"bytes"},{internalType:"bytes",name:"depositorSignature",type:"bytes"}],name:"speedUpV3Deposit",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes[]",name:"data",type:"bytes[]"}],name:"tryMulticall",outputs:[{components:[{internalType:"bool",name:"success",type:"bool"},{internalType:"bytes",name:"returnData",type:"bytes"}],internalType:"struct MultiCallerUpgradeable.Result[]",name:"results",type:"tuple[]"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"depositor",type:"bytes32"},{internalType:"bytes32",name:"recipient",type:"bytes32"},{internalType:"bytes32",name:"inputToken",type:"bytes32"},{internalType:"bytes32",name:"outputToken",type:"bytes32"},{internalType:"uint256",name:"inputAmount",type:"uint256"},{internalType:"uint256",name:"outputAmount",type:"uint256"},{internalType:"uint256",name:"destinationChainId",type:"uint256"},{internalType:"bytes32",name:"exclusiveRelayer",type:"bytes32"},{internalType:"uint256",name:"depositNonce",type:"uint256"},{internalType:"uint32",name:"quoteTimestamp",type:"uint32"},{internalType:"uint32",name:"fillDeadline",type:"uint32"},{internalType:"uint32",name:"exclusivityParameter",type:"uint32"},{internalType:"bytes",name:"message",type:"bytes"}],name:"unsafeDeposit",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"newImplementation",type:"address"}],name:"upgradeTo",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newImplementation",type:"address"},{internalType:"bytes",name:"data",type:"bytes"}],name:"upgradeToAndCall",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"withdrawalRecipient",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"wrappedNativeToken",outputs:[{internalType:"contract WETH9Interface",name:"",type:"address"}],stateMutability:"view",type:"function"},{stateMutability:"payable",type:"receive"}],bh=["function balanceOf(address account) external view returns (uint256)"],vh=["function approve(address spender, uint256 amount) external returns (bool)"];async function wh(e,t,n){const r=e.getCowShedAccount(t.sellTokenChainId,t.owner||t.account),i=await n.getCode(r);return i&&"0x"!==i?mc:mc+yc}const Ah=`${gc}/across`,Th=[le,Se,fe,ye,Te];class Eh{constructor(e){this.supportedTokens=null,this.info={name:"Across",logoUrl:`${fc}/across/across-logo.png`,dappId:Ah,website:"https://across.to"},this.api=new Nc(e.apiOptions),this.cowShedSdk=new Jc(e.cowShedOptions),this.getRpcProvider=e.getRpcProvider}async getNetworks(){return Th}async getBuyTokens(e){return Object.values((await this.getSupportedTokensState())[e.buyChainId]||{})}async getIntermediateTokens(e){var t;if(e.kind!==E.SELL)throw new F(O.ONLY_SELL_ORDER_SUPPORTED,{kind:e.kind});const{sellTokenChainId:n,buyTokenChainId:r,buyTokenAddress:i}=e,s=await this.getSupportedTokensState(),a=i.toLowerCase(),o=s[n],u=s[r],l=u&&(null==(t=u[a])||null==(t=t.symbol)?void 0:t.toLowerCase());return l?Object.values(o||{}).filter(e=>{var t;return(null==(t=e.symbol)?void 0:t.toLowerCase())===l}):[]}async getQuote(e){const{sellTokenAddress:t,sellTokenChainId:n,buyTokenChainId:r,amount:i,receiver:s}=e;return function(e,t,n){const{kind:r}=e;return{isSell:r===E.SELL,amountsAndCosts:Uc(e,0,n),quoteTimestamp:Number(n.timestamp),expectedFillTimeSeconds:Number(n.estimatedFillTimeSec),fees:{bridgeFee:BigInt(n.relayerCapitalFee.total),destinationGasFee:BigInt(n.relayerGasFee.total)},limits:{minDeposit:BigInt(n.limits.minDeposit),maxDeposit:BigInt(n.limits.maxDeposit)},suggestedFees:n}}(e,0,await this.api.getSuggestedFees({token:t,originChainId:n,destinationChainId:r,amount:i,recipient:null!=s?s:void 0}))}async getUnsignedBridgeCall(e,t){return function(e){const{request:t,quote:n,cowShedSdk:r}=e,{sellTokenChainId:i,sellTokenAddress:s,buyTokenChainId:a,buyTokenAddress:o,account:u,receiver:l}=t,c=function(e){const t=Dc[e];if(!t)throw new Error("Spoke pool address not found for chain: "+e);return fh(new uh(t,gh),lh.CALL)}(i),d=function(e){const t=Fc[e];if(!t)throw new Error("Math contract address not found for chain: "+e);return fh(new uh(t,yh),lh.CALL)}(i),h=function(e){return fh(new uh(e,bh),lh.STATICCALL)}(s),p=function(e){return fh(new uh(e,vh),lh.CALL)}(s),f=r.getCowShedAccount(i,u),{suggestedFees:m}=n;return ph(e=>{const t=e.add(h.balanceOf(f)),n=BigInt(m.totalRelayFee.pct),r=e.add(d.multiplyAndSubtract(t,n));e.add(p.approve(c.address,t));const i=BigInt(m.timestamp);e.add(c.depositV3(f,l||u,s,o,t,r,a,m.exclusiveRelayer,i,m.fillDeadline,m.exclusivityDeadline,"0x"))})}({request:e,quote:t,cowShedSdk:this.cowShedSdk})}async getGasLimitEstimationForHook(e){return wh(this.cowShedSdk,e,this.getRpcProvider(e.sellTokenChainId))}async getSignedHook(e,t,n,r,i,s){const{signedMulticall:a,cowShedAccount:o,gasLimit:u}=await this.cowShedSdk.signCalls({calls:[{target:t.to,value:t.value,callData:t.data,allowFailure:!1,isDelegateCall:!0}],chainId:e,signer:n,gasLimit:BigInt(s),deadline:i,nonce:r}),{to:l,data:c}=a;return{postHook:{target:l,callData:c,gasLimit:u.toString(),dappId:Ah},recipient:o}}async decodeBridgeHook(e){throw new Error("Not implemented")}async getBridgingParams(e,t,n){const r=await this.getRpcProvider(e).getTransactionReceipt(n),i=await async function(e,t,n){const r=function(e,t){var n;const r=null==(n=Dc[e])?void 0:n.toLowerCase();if(!r)return[];const i=t.filter(e=>e.address.toLocaleLowerCase()===r&&e.topics[0]===Oc);return i.map(e=>{const{inputToken:t,outputToken:n,inputAmount:r,outputAmount:i,destinationChainId:s,depositId:a,quoteTimestamp:o,fillDeadline:u,exclusivityDeadline:l,depositor:c,recipient:d,exclusiveRelayer:h,message:p}=Mc.parseLog(e).args;return{inputToken:Gc(t),outputToken:Gc(n),inputAmount:r,outputAmount:i,destinationChainId:s,depositId:a,quoteTimestamp:o,fillDeadline:u,exclusivityDeadline:l,depositor:Gc(c),recipient:Gc(d),exclusiveRelayer:h,message:p}})}(e,n.logs);if(0===r.length)return null;const i=function(e,t){const n=t.filter(t=>t.address.toLowerCase()===qe[e].toLowerCase()&&t.topics[0]===Bc);return n.map(e=>{const t=Pc.parseLog(e).args,{owner:n,sellToken:r,buyToken:i,sellAmount:s,buyAmount:a,feeAmount:o}=t;return{owner:n,sellToken:r,buyToken:i,sellAmount:s,buyAmount:a,feeAmount:o,orderUid:"0x"+e.data.slice(450,562)}})}(e,n.logs),s=i.findIndex(e=>e.orderUid===t);if(s<0)return null;const a=r[s];return a?{inputTokenAddress:a.inputToken,outputTokenAddress:a.outputToken,inputAmount:BigInt(a.inputAmount.toString()),outputAmount:BigInt(a.outputAmount.toString()),owner:a.depositor,quoteTimestamp:parseInt(a.quoteTimestamp.toString()),fillDeadline:parseInt(a.fillDeadline.toString()),recipient:a.recipient,sourceChainId:e,destinationChainId:parseInt(a.destinationChainId.toString()),bridgingId:a.depositId.toString()}:($e(`Trade event found at index ${s} but only ${r.length} deposit events available`),null)}(e,t,r);return i?{params:i,status:await this.getStatus(i.bridgingId,e)}:null}getExplorerUrl(e){return`https://app.across.to/transactions/${e}`}async getStatus(e,t){const n=await this.api.getDepositStatus({originChainId:t.toString(),depositId:e});return{status:(r=n.status,Vc[r]),depositTxHash:n.depositTxHash,fillTxHash:n.fillTx};var r}async getCancelBridgingTx(e){throw new Error("Not implemented")}async getRefundBridgingTx(e){throw new Error("Not implemented")}async getSupportedTokensState(){return this.supportedTokens||(this.supportedTokens=(await this.api.getSupportedTokens()).reduce((e,t)=>(e[t.chainId]=e[t.chainId]||{},e[t.chainId][t.address.toLowerCase()]=t,e),{})),this.supportedTokens}}const Sh=[{type:"constructor",inputs:[{name:"_owner",type:"address",internalType:"address"},{name:"_socketGateway",type:"address",internalType:"address"}],stateMutability:"nonpayable"},{type:"function",name:"addVerifier",inputs:[{name:"routeId",type:"uint32",internalType:"uint32"},{name:"verifier",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"claimOwner",inputs:[],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"nominateOwner",inputs:[{name:"nominee_",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"nominee",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"owner",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"parseCallData",inputs:[{name:"callData",type:"bytes",internalType:"bytes"}],outputs:[{name:"",type:"tuple",internalType:"struct SocketVerifier.UserRequest",components:[{name:"routeId",type:"uint32",internalType:"uint32"},{name:"socketRequest",type:"bytes",internalType:"bytes"}]}],stateMutability:"nonpayable"},{type:"function",name:"routeIdsToVerifiers",inputs:[{name:"",type:"uint32",internalType:"uint32"}],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"socketGateway",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"validateRotueId",inputs:[{name:"callData",type:"bytes",internalType:"bytes"},{name:"expectedRouteId",type:"uint32",internalType:"uint32"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"validateSocketRequest",inputs:[{name:"callData",type:"bytes",internalType:"bytes"},{name:"expectedRequest",type:"tuple",internalType:"struct SocketVerifier.UserRequestValidation",components:[{name:"routeId",type:"uint32",internalType:"uint32"},{name:"socketRequest",type:"tuple",internalType:"struct SocketVerifier.SocketRequest",components:[{name:"amount",type:"uint256",internalType:"uint256"},{name:"recipient",type:"address",internalType:"address"},{name:"toChainId",type:"uint256",internalType:"uint256"},{name:"token",type:"address",internalType:"address"},{name:"signature",type:"bytes4",internalType:"bytes4"}]}]}],outputs:[],stateMutability:"nonpayable"},{type:"event",name:"OwnerClaimed",inputs:[{name:"claimer",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"OwnerNominated",inputs:[{name:"nominee",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"error",name:"AmountNotMatched",inputs:[]},{type:"error",name:"FailedToVerify",inputs:[]},{type:"error",name:"OnlyNominee",inputs:[]},{type:"error",name:"OnlyOwner",inputs:[]},{type:"error",name:"RecipientNotMatched",inputs:[]},{type:"error",name:"RouteIdNotFound",inputs:[]},{type:"error",name:"RouteIdNotMatched",inputs:[]},{type:"error",name:"SignatureNotMatched",inputs:[]},{type:"error",name:"ToChainIdNotMatched",inputs:[]},{type:"error",name:"TokenNotMatched",inputs:[]}],Ih=[{type:"function",name:"approveAndBridge",inputs:[{name:"token",type:"address",internalType:"contract IERC20"},{name:"minAmount",type:"uint256",internalType:"uint256"},{name:"nativeTokenExtraFee",type:"uint256",internalType:"uint256"},{name:"data",type:"bytes",internalType:"bytes"}],outputs:[],stateMutability:"nonpayable"}],kh={across:{["0x792ebcb9".toLowerCase()]:{inputAmount:{bytes_startIndex:8,bytes_length:32,bytesString_startIndex:18,bytesString_length:64},outputAmount:{bytes_startIndex:488,bytes_length:32,bytesString_startIndex:978,bytesString_length:64}},["0xe421f352".toLowerCase()]:{inputAmount:{bytes_startIndex:8,bytes_length:32,bytesString_startIndex:18,bytesString_length:64},outputAmount:{bytes_startIndex:392,bytes_length:32,bytesString_startIndex:786,bytesString_length:64}}},cctp:{["0xb7dfe9d0".toLowerCase()]:{inputAmount:{bytes_startIndex:8,bytes_length:32,bytesString_startIndex:18,bytesString_length:64}}}};var Ch;!function(e){e.Across="across",e.CircleCCTP="cctp"}(Ch||(Ch={}));const Nh={Across:Ch.Across,"Circle CCTP":Ch.CircleCCTP};var xh,_h;function Rh(e,t,n){const{amount:r,sellTokenDecimals:i,buyTokenDecimals:s}=e,a=xt(r,i).big,o=xt(n.route.output.amount,s).big,u=o,l=n.route.routeDetails.routeFee.amount,c=function(e,t){return e*BigInt(1e4-t)/10000n}(u,t);return{beforeFee:{sellAmount:a,buyAmount:o},afterFee:{sellAmount:a,buyAmount:u},afterSlippage:{sellAmount:a,buyAmount:c},costs:{bridgingFee:{feeBps:function(e,t){if(0n===t)throw new Error("Denominator is 0");if(e>t)throw new Error("Fee amount is greater than amount");return Number((10000n*e+t/2n)/t)}(BigInt(n.route.routeDetails.routeFee.amount),BigInt(r)),amountInSellCurrency:BigInt(l),amountInBuyCurrency:BigInt(0)}},slippageBps:t}}function Mh(e){if(!e||e.length<10)throw new Error("Invalid txData: too short");if(!e.startsWith("0x"))throw new Error("Invalid txData: must start with 0x");const t=e.slice(2);if(t.length<8)throw new Error("Invalid txData: insufficient data for routeId");const n=`0x${t.slice(0,8)}`,r=`0x${t.slice(8)}`;if(r.length<10)throw new Error("Invalid txData: insufficient data for function selector");const i=`${r.slice(0,10)}`;return{routeId:n,encodedFunctionData:r,functionSelector:i}}function Ph(e){const t=new URLSearchParams;return Object.entries(e).forEach(([e,n])=>{Array.isArray(n)?t.append(e,n.join(",")):t.append(e,String(n))}),t}!function(e){e.COMPLETED="COMPLETED",e.PENDING="PENDING"}(xh||(xh={})),function(e){e.ACROSS="across",e.CCTP="cctp"}(_h||(_h={}));const Oh="0xa27A3f5A96DF7D8Be26EE2790999860C00eb688D",Bh={[B.MAINNET]:Oh,[B.GNOSIS_CHAIN]:Oh,[B.ARBITRUM_ONE]:Oh,[B.BASE]:Oh,[B.AVALANCHE]:Oh,[B.POLYGON]:Oh,[B.SEPOLIA]:void 0,[D.OPTIMISM]:Oh},Dh="0x936fa1cfd96849329B18b915773E176718A64b95",Fh={[B.MAINNET]:Dh,[B.GNOSIS_CHAIN]:Dh,[B.ARBITRUM_ONE]:Dh,[B.BASE]:Dh,[B.AVALANCHE]:Dh,[B.POLYGON]:Dh,[B.SEPOLIA]:void 0,[D.OPTIMISM]:Dh},Lh="https://public-backend.bungee.exchange/api/v1/bungee",Uh="https://microservices.socket.tech/loki",Gh="https://app.across.to/api",Hh=["across","cctp"],qh={bungee:"Bungee Api Error",events:"Bungee Events Api Error",across:"Across Api Error","bungee-manual":"Bungee Manual Api Error"};class Vh{constructor(e={apiBaseUrl:Lh,eventsApiBaseUrl:Uh,acrossApiBaseUrl:Gh,includeBridges:Hh}){this.options=e,this.validateBridges(this.getSupportedBridges())}validateBridges(e){if(null!=e&&e.some(e=>!Hh.includes(e)))throw new L(`Unsupported bridge: ${e.filter(e=>!Hh.includes(e)).join(", ")}`,{includeBridges:e})}async getBuyTokens(e,t){const{sellChainId:n,sellTokenAddress:r,buyChainId:i}=e,s=this.getSupportedBridges(null==t?void 0:t.includeBridges);this.validateBridges(s);const a={toChainId:i.toString(),includeBridges:s.join(",")};n&&(a.fromChainId=n.toString()),r&&(a.fromTokenAddress=r);const o=Ph(a),u=await this.makeApiCall("bungee-manual","/dest-tokens",o);if(!u.success)throw new L("Bungee Api Error: Buy tokens failed",u);return u.result.map(e=>K({},e,{logoUrl:e.logoURI}))}async getIntermediateTokens(e){const{fromChainId:t,toChainId:n,toTokenAddress:r}=e,i=this.getSupportedBridges(e.includeBridges);this.validateBridges(i);const s=Ph({fromChainId:t.toString(),toChainId:n.toString(),toTokenAddress:r,includeBridges:i.join(",")}),a=await this.makeApiCall("bungee-manual","/intermediate-tokens",s);if(!a.success)throw new F(O.NO_INTERMEDIATE_TOKENS,a);return a.result.map(e=>K({},e,{logoUrl:e.logoURI}))}async getBungeeQuoteWithBuildTx(e){const t=await this.getBungeeQuote(e);return{bungeeQuote:t,buildTx:await this.getBungeeBuildTx(t)}}async getBungeeQuote(e){try{var t;e.includeBridges=this.getSupportedBridges(e.includeBridges),this.validateBridges(e.includeBridges);const n=Ph(e),r=await this.makeApiCall("bungee","/quote",n,zh);if(!r.success)throw new F(O.QUOTE_ERROR,r);const i=Math.floor(Date.now()/1e3),{manualRoutes:s}=r.result;if(0===s.length)throw new F(O.NO_ROUTES,r.result);const a=s[0];if(null==a||null==(t=a.routeDetails)||!t.name)throw new F(O.NO_ROUTES,{manualRoutes:s});const o=Nh[a.routeDetails.name];if(!o)throw new F(O.INVALID_BRIDGE,{firstRoute:a});const u=s.sort((e,t)=>Number(t.output.amount)-Number(e.output.amount));return{originChainId:r.result.originChainId,destinationChainId:r.result.destinationChainId,userAddress:r.result.userAddress,receiverAddress:r.result.receiverAddress,input:r.result.input,route:u[0],routeBridge:o,quoteTimestamp:i}}catch(e){throw console.error("🔴 Error getting bungee quote:",e),e}}async getBungeeBuildTx(e){const t=await this.makeApiCall("bungee","/build-tx",{quoteId:e.route.quoteId});if(!t.success)throw new F(O.TX_BUILD_ERROR,t);return t.result}async verifyBungeeBuildTx(e,t,n){const{routeId:r,functionSelector:i}=Mh(t.txData.data),s={amount:e.input.amount,recipient:e.receiverAddress,toChainId:e.destinationChainId.toString(),token:e.input.token.address,signature:i};return this.verifyBungeeBuildTxData(e.originChainId,t.txData.data,r,s,n)}async verifyBungeeBuildTxData(e,t,n,r,s){const a=ql(s),o=Bh[e];if(!o)throw new F(O.TX_BUILD_ERROR,{originChainId:e,error:"Socket verifier not found"});const u=new i.Contract(o,Sh,a);try{await u.callStatic.validateRotueId(t,n)}catch(e){return console.error("🔴 Error validating routeId:",e),!1}const l={routeId:n,socketRequest:r};try{await u.callStatic.validateSocketRequest(t,l)}catch(e){return console.error("🔴 Error validating socket request:",e),!1}return!0}async getEvents(e){const t=await this.makeApiCall("events",e.orderId?"/order":"/tx",e,jh);if(!t.success)throw new L("Bungee Events Api Error",t);return t.result}async getAcrossStatus(e){return(await this.makeApiCall("across","/deposit/status",{depositTxHash:e},Kh)).status}getSupportedBridges(e){var t;return null!==(t=null!=e?e:this.options.includeBridges)&&void 0!==t?t:Hh}async makeApiCall(e,t,n,r){const i=`${{bungee:this.options.apiBaseUrl||Lh,events:this.options.eventsApiBaseUrl||Uh,across:this.options.acrossApiBaseUrl||Gh,"bungee-manual":this.options.manualApiBaseUrl||"https://public-backend.bungee.exchange/api/v1/bungee-manual"}[e]}${t}?${new URLSearchParams(n).toString()}`;$e(`Fetching ${e} API: GET ${i}. Params: ${JSON.stringify(n)}`);const s=await fetch(i,{method:"GET"});if(!s.ok){const t=await s.json();throw new F(O.API_ERROR,{errorBody:t,type:qh[e]})}const a=await s.json();if(r&&!r(a))throw new F(O.INVALID_API_JSON_RESPONSE,{json:a,apiType:e,params:n});return a}}function zh(e){if("object"!=typeof e||null===e)return!1;if(!("success"in e)||!("statusCode"in e)||!("result"in e)||"boolean"!=typeof e.success||"number"!=typeof e.statusCode)return!1;const t=e.result;if("object"!=typeof t||null===t)return!1;const n=t;return!!("originChainId"in n&&"destinationChainId"in n&&"userAddress"in n&&"receiverAddress"in n&&"manualRoutes"in n&&Array.isArray(n.manualRoutes))&&n.manualRoutes.every(e=>{if("object"!=typeof e||null===e)return!1;if(!("routeDetails"in e)||"object"!=typeof e.routeDetails||null===e.routeDetails)return!1;if(!("routeFee"in e.routeDetails))return!1;const t=e.routeDetails.routeFee;return"object"==typeof t&&null!==t&&"amount"in t&&"quoteId"in e&&"quoteExpiry"in e&&"output"in e&&"gasFee"in e&&"slippage"in e&&"estimatedTime"in e&&"routeDetails"in e})}function jh(e){if("object"!=typeof e||null===e)return!1;const t=e;return!!("success"in t&&"result"in t&&"boolean"==typeof t.success&&Array.isArray(t.result))&&t.result.every(e=>"object"==typeof e&&null!==e&&"identifier"in e&&"bridgeName"in e&&"fromChainId"in e&&"isCowswapTrade"in e&&"orderId"in e&&"recipient"in e&&"sender"in e&&"srcTxStatus"in e&&"destTxStatus"in e)}function Kh(e){return"object"==typeof e&&null!==e&&"status"in e}async function Wh(e,t){if(null==e||!e.length)return{status:P.UNKNOWN};const n=e[0];if(n.srcTxStatus===xh.PENDING)return{status:P.IN_PROGRESS};if(n.srcTxStatus===xh.COMPLETED&&n.destTxStatus===xh.PENDING){if(n.bridgeName===_h.ACROSS)try{const e=await t(n.orderId);if("expired"===e)return{status:P.EXPIRED,depositTxHash:n.srcTransactionHash};if("refunded"===e)return{status:P.REFUND,depositTxHash:n.srcTransactionHash}}catch(e){console.error("BungeeBridgeProvider get across status error",e)}return{status:P.IN_PROGRESS,depositTxHash:n.srcTransactionHash}}if(n.srcTxStatus===xh.COMPLETED&&n.destTxStatus===xh.COMPLETED)return{status:P.EXECUTED,depositTxHash:n.srcTransactionHash,fillTxHash:n.destTransactionHash};throw new Error("Unknown status")}const Jh="cow-sdk://bridging/providers/bungee",Qh=[le,Se,fe,ye,Te,we];class Yh{constructor(e){this.info={name:"Bungee",logoUrl:`${fc}/bungee/bungee-logo.png`,dappId:Jh,website:"https://www.bungee.exchange"},this.options=e,this.api=new Vh(e.apiOptions),this.cowShedSdk=new Jc(e.cowShedOptions),this.getRpcProvider=e.getRpcProvider}async getNetworks(){return Qh}async getBuyTokens(e){return this.api.getBuyTokens(e)}async getIntermediateTokens(e){if(e.kind!==E.SELL)throw new F(O.ONLY_SELL_ORDER_SUPPORTED,{kind:e.kind});return this.api.getIntermediateTokens({fromChainId:e.sellTokenChainId,toChainId:e.buyTokenChainId,toTokenAddress:e.buyTokenAddress})}async getQuote(e){var t;const{sellTokenAddress:n,sellTokenChainId:r,buyTokenChainId:i,buyTokenAddress:s,amount:a,receiver:o,account:u,owner:l}=e,c={userAddress:this.cowShedSdk.getCowShedAccount(r,null!=l?l:u),originChainId:r.toString(),destinationChainId:i.toString(),inputToken:n,inputAmount:a.toString(),receiverAddress:null!=o?o:u,outputToken:s,includeBridges:null==(t=this.options.apiOptions)?void 0:t.includeBridges,enableManual:!0,disableSwapping:!0,disableAuto:!0},d=await this.api.getBungeeQuoteWithBuildTx(c);if(!await this.api.verifyBungeeBuildTx(d.bungeeQuote,d.buildTx,ql(e.signer)))throw new F(O.TX_BUILD_ERROR,d);return function(e,t,n){const{kind:r}=e,{bungeeQuote:i,buildTx:s}=n;return{isSell:r===E.SELL,amountsAndCosts:Rh(e,0,i),quoteTimestamp:Number(i.quoteTimestamp),expectedFillTimeSeconds:Number(i.route.estimatedTime),fees:{bridgeFee:BigInt(i.route.routeDetails.routeFee.amount),destinationGasFee:BigInt(0)},limits:{minDeposit:BigInt(0),maxDeposit:BigInt(0)},bungeeQuote:i,buildTx:s}}(e,0,d)}async getUnsignedBridgeCall(e,t){return async function(e){const{request:t,quote:n}=e,{bungeeQuote:r,buildTx:s}=n,a=r.routeBridge,{functionSelector:o}=Mh(s.txData.data),u=o.toLowerCase();let l=!1,c=0;const d=0n;a===Ch.Across&&(l=!0,c=kh[a][u].outputAmount.bytes_startIndex);const h=i.utils.defaultAbiCoder.encode(["uint256","bool","uint256"],[kh[a][u].inputAmount.bytes_startIndex,l,c]);let p=s.txData.data;p.startsWith("0x")&&(p=p.slice(2));let f=h;f.startsWith("0x")&&(f=f.slice(2));const m="0x"+p+f,y=r.input.amount,g=new i.utils.Interface(Ih).encodeFunctionData("approveAndBridge",[t.sellTokenAddress,y,d,m]),b=(t.sellTokenAddress.toLowerCase()===Pe.toLowerCase()?BigInt(y):0n)+d,v=Fh[t.sellTokenChainId];if(!v)throw new Error("BungeeApproveAndBridgeV1 not found");return{to:v,data:g,value:b}}({request:e,quote:t})}async getGasLimitEstimationForHook(e){return wh(this.cowShedSdk,e,this.getRpcProvider(e.sellTokenChainId))}async getSignedHook(e,t,n,r,i,s){const{signedMulticall:a,cowShedAccount:o,gasLimit:u}=await this.cowShedSdk.signCalls({calls:[{target:t.to,value:t.value,callData:t.data,allowFailure:!1,isDelegateCall:!0}],chainId:e,signer:n,gasLimit:BigInt(s),deadline:i,nonce:r}),{to:l,data:c}=a;return{postHook:{target:l,callData:c,gasLimit:u.toString(),dappId:Jh},recipient:o}}async getBridgingParams(e,t,n){const r=await this.api.getEvents({orderId:t}),i=r[0];if(!i)return null;const s=await Wh(r,e=>this.api.getAcrossStatus(e));return{params:{inputTokenAddress:i.srcTokenAddress,outputTokenAddress:i.destTokenAddress,inputAmount:BigInt(i.srcAmount),outputAmount:i.destAmount?BigInt(i.destAmount):null,owner:i.sender,quoteTimestamp:null,fillDeadline:null,recipient:i.recipient,sourceChainId:i.fromChainId,destinationChainId:i.toChainId,bridgingId:t},status:s}}async decodeBridgeHook(e){throw new Error("Not implemented")}getExplorerUrl(e){return`https://socketscan.io/tx/${e}`}async getStatus(e){return Wh(await this.api.getEvents({orderId:e}),e=>this.api.getAcrossStatus(e))}async getCancelBridgingTx(e){throw new Error("Not implemented")}async getRefundBridgingTx(e){throw new Error("Not implemented")}}let Xh,Zh,$h,ep=e=>e;const tp=_(Xh||(Xh=ep`
2
- query Totals {
3
- totals {
4
- tokens
5
- orders
6
- traders
7
- settlements
8
- volumeUsd
9
- volumeEth
10
- feesUsd
11
- feesEth
12
- }
13
- }
14
- `)),np=_(Zh||(Zh=ep`
15
- query LastDaysVolume($days: Int!) {
16
- dailyTotals(orderBy: timestamp, orderDirection: desc, first: $days) {
17
- timestamp
18
- volumeUsd
19
- }
20
- }
21
- `)),rp=_($h||($h=ep`
22
- query LastHoursVolume($hours: Int!) {
23
- hourlyTotals(orderBy: timestamp, orderDirection: desc, first: $hours) {
24
- timestamp
25
- volumeUsd
26
- }
27
- }
28
- `)),ip="https://api.thegraph.com/subgraphs/name/cowprotocol",sp={[B.MAINNET]:ip+"/cow",[B.GNOSIS_CHAIN]:ip+"/cow-gc",[B.ARBITRUM_ONE]:null,[B.BASE]:null,[B.SEPOLIA]:null,[B.POLYGON]:null,[B.AVALANCHE]:null},ap={[B.MAINNET]:ip+"/cow-staging",[B.GNOSIS_CHAIN]:ip+"/cow-gc-staging",[B.ARBITRUM_ONE]:null,[B.BASE]:null,[B.SEPOLIA]:null,[B.POLYGON]:null,[B.AVALANCHE]:null};class op{constructor(e={}){this.API_NAME="CoW Protocol Subgraph",this.context=K({},nt,e)}async getTotals(e={}){return(await this.runQuery(tp,void 0,e)).totals[0]}async getLastDaysVolume(e,t={}){return this.runQuery(np,{days:e},t)}async getLastHoursVolume(e,t={}){return this.runQuery(rp,{hours:e},t)}async runQuery(e,t=undefined,n={}){const{chainId:r,env:i}=this.getContextWithOverride(n),s=this.getEnvConfigs(i)[r];if(null===s)throw new Error("Unsupported Network. The subgraph API is not available in the Network "+r);try{return await R(s,e,t)}catch(n){throw console.error(`[subgraph:${this.API_NAME}]`,n),new J(`Error running query: ${e}. Variables: ${JSON.stringify(t)}. API: ${s}. Inner Error: ${n}`)}}getContextWithOverride(e={}){return K({},this.context,e)}getEnvConfigs(e){return this.context.baseUrls?this.context.baseUrls:"prod"===e?sp:ap}}var up,lp;!function(e){e[e.PRIVATE=0]="PRIVATE",e[e.EMITTED=1]="EMITTED",e[e.SWARM=2]="SWARM",e[e.WAKU=3]="WAKU",e[e.RESERVED=4]="RESERVED",e[e.IPFS=5]="IPFS"}(up||(up={})),function(e){e.SUCCESS="SUCCESS",e.UNEXPECTED_ERROR="UNEXPECTED_ERROR",e.TRY_NEXT_BLOCK="TRY_NEXT_BLOCK",e.TRY_ON_BLOCK="TRY_ON_BLOCK",e.TRY_AT_EPOCH="TRY_AT_EPOCH",e.DONT_TRY_AGAIN="DONT_TRY_AGAIN"}(lp||(lp={}));const cp=["erc20","0x5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc9"],dp=["external","0xabee3b73373acd583a130924aad6dc38cfdc44ba0555ba94ce2ff63980ea0632"],hp=["internal","0x4ac99ace14ee0a5ef932dc609df0943ab7ac16b7583634612f8dc35a4289a6ce"],pp=["sell","0xf3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee346775"],fp=["buy","0x6ed88e868af0a1983e3886d5f3e95a2fafbd6c3450bc229e27342283dc429ccc"],mp=["tuple(address handler, bytes32 salt, bytes staticInput)"],yp=(e,t)=>`${t}@${e}`;function gp(e,t){return e===ze[t]}function bp(e,t){return e===je[t]}async function vp(e,t,n,r){const i=$t.connect(ze[n],r);return await i.callStatic.domainVerifiers(e,t)}function wp(e,t){return $t.createInterface().encodeFunctionData("setDomainVerifier",[e,t])}function Ap(e){return n.defaultAbiCoder.encode(mp,[e])}function Tp(e){const{handler:t,salt:r,staticInput:i}=n.defaultAbiCoder.decode(mp,e)[0];return{handler:t,salt:r,staticInput:i}}function Ep(e,t){try{n.defaultAbiCoder.encode(e,t)}catch(e){return!1}return!0}async function Sp(e){const t=await e.getBlock("latest");return{blockNumber:t.number,blockTimestamp:t.timestamp}}function Ip(e){return new Date(1e3*e).toISOString()}function kp(e){if(cp.includes(e))return C.ERC20;if(dp.includes(e))return C.EXTERNAL;if(hp.includes(e))return C.INTERNAL;throw new Error(`Unknown balance type: ${e}`)}function Cp(e){if(pp.includes(e))return E.SELL;if(fp.includes(e))return E.BUY;throw new Error(`Unknown kind: ${e}`)}function Np(e){const{sellToken:t,sellAmount:n,buyToken:r,buyAmount:i,buyTokenBalance:s,sellTokenBalance:a,feeAmount:o,kind:u,receiver:l,validTo:c,partiallyFillable:d,appData:h}=e;return{sellToken:t,sellAmount:n,buyToken:r,buyAmount:i,feeAmount:o,receiver:l,partiallyFillable:d,appData:h,validTo:Number(c),kind:Cp(u.toString()),sellTokenBalance:kp(a.toString()),buyTokenBalance:kp(s.toString())}}function xp(e){return e.isValid}let _p,Rp;function Mp(){return _p||(_p=Qt.createInterface()),_p}function Pp(e,t){return Rp||(Rp=Qt.connect(je[e],t)),Rp}class Op{constructor(e){const{handler:t,salt:r=n.keccak256(n.randomBytes(32)),data:s,hasOffChainInput:a=!1}=e;if(!i.utils.isAddress(t))throw new Error(`Invalid handler: ${t}`);if(!i.utils.isHexString(r)||32!==i.utils.hexDataLength(r))throw new Error(`Invalid salt: ${r}`);this.handler=t,this.salt=r,this.data=s,this.staticInput=this.transformDataToStruct(s),this.hasOffChainInput=a}get context(){}assertIsValid(){const e=this.isValid();if(!xp(e))throw new Error(`Invalid order: ${e.reason}`)}get createCalldata(){this.assertIsValid();const e=this.context,t=Mp(),r={handler:this.handler,salt:this.salt,staticInput:this.encodeStaticInput()};if(e){const i=e.factoryArgs?n.defaultAbiCoder.encode(e.factoryArgs.argsType,e.factoryArgs.args):"0x";return t.encodeFunctionData("createWithContext",[r,e.address,i,!0])}return t.encodeFunctionData("create",[r,!0])}get removeCalldata(){return this.assertIsValid(),Mp().encodeFunctionData("remove",[this.id])}get id(){return n.keccak256(this.serialize())}get ctx(){return this.isSingleOrder?this.id:s.HashZero}get leaf(){return{handler:this.handler,salt:this.salt,staticInput:this.encodeStaticInput()}}static leafToId(e){return n.keccak256(Ap(e))}get offChainInput(){return"0x"}encodeStaticInputHelper(e,t){return n.defaultAbiCoder.encode(e,[t])}async poll(e){const{chainId:t,owner:n,provider:r,orderBookApi:i}=e,s=Pp(t,r);try{const r=this.isValid();if(!xp(r))return{result:lp.DONT_TRY_AGAIN,reason:`InvalidConditionalOrder. Reason: ${r.reason}`};const a=await this.pollValidate(e);if(a)return a;if(!await this.isAuthorized(e))return{result:lp.DONT_TRY_AGAIN,reason:`NotAuthorized: Order ${this.id} is not authorized for ${n} on chain ${t}`};const[o,u]=await s.getTradeableOrderWithSignature(n,this.leaf,this.offChainInput,[]),l=await async function(e,t,n){const{computeOrderUid:r}=await import("@cowprotocol/contracts");return r(await Pt.getDomain(e),n,t)}(t,n,Np(o));return await i.getOrder(l).then(()=>!0).catch(()=>!1)?await this.handlePollFailedAlreadyPresent(l,o,e)||{result:lp.TRY_NEXT_BLOCK,reason:"Order already in orderbook"}:{result:lp.SUCCESS,order:o,signature:u}}catch(e){return{result:lp.UNEXPECTED_ERROR,error:e}}}isAuthorized(e){const{chainId:t,owner:n,provider:r}=e;return Pp(t,r).callStatic.singleOrders(n,this.id)}cabinet(e){const{chainId:t,owner:n,provider:r}=e;return Pp(t,r).callStatic.cabinet(n,this.ctx)}static deserializeHelper(e,t,r,i){try{const{handler:s,salt:a,staticInput:o}=Tp(e);if(s!=t)throw new Error("HandlerMismatch");const[u]=n.defaultAbiCoder.decode(r,o);return i(u,a)}catch(e){throw"HandlerMismatch"===e.message?e:new Error("InvalidSerializedConditionalOrder")}}}const Bp=["orderType"],Dp=["address","bytes32","bytes"],Fp=["tuple(bytes32[] proof, tuple(address handler, bytes32 salt, bytes staticInput) params)[]"];class Lp{constructor(e,t,n,r=up.PRIVATE){if(this.orders={},this.chain=e,this.location=r,t&&0===Object.keys(t).length)throw new Error("orders must have non-zero length");if(t&&!n||!t&&n)throw new Error("orders cannot have undefined root");for(const e in t)if(t.hasOwnProperty(e)){const n=t[e];if(!Lp.orderTypeRegistry.hasOwnProperty(n.orderType))throw new Error(`Unknown order type: ${n.orderType}`)}if(t&&(this.orders=t,this.getOrGenerateTree().root!==n))throw new Error("root mismatch")}static fromJSON(e){const{chain:t,orders:n,root:r,location:i}=JSON.parse(e,(e,t)=>{if("orders"===e&&"object"==typeof t&&null!==t){const e={};for(const n in t)if(t.hasOwnProperty(n)){const r=t[n],{orderType:i}=r,s=W(r,Bp);if(!Lp.orderTypeRegistry.hasOwnProperty(i))throw new Error(`Unknown order type: ${i}`);e[n]=new(0,Lp.orderTypeRegistry[i])(s)}return e}return"object"==typeof t&&null!==t&&t.hasOwnProperty("type")&&t.hasOwnProperty("hex")&&"BigNumber"===t.type?a.from(t):t}),s=new Lp(t,n,r);return s.location=i,s}toJSON(){const e=this.getOrGenerateTree().root;return JSON.stringify(K({},this,{root:e}),(e,t)=>{if("tree"!==e)return"object"==typeof t&&null!==t&&"orderType"in t?K({},t,{orderType:t.orderType}):t})}add(e){e.assertIsValid(),this.orders[e.id]=e,this.reset()}remove(e){delete this.orders[e],this.reset()}update(e,t){const n=t(this.orders[e],this.ctx);delete this.orders[e],this.orders[n.id]=n,this.reset()}getById(e){return this.orders[e]}getByIndex(e){return this.orders[this.orderIds[e]]}get orderIds(){return Object.keys(this.orders)}get root(){return this.getOrGenerateTree().root}getOrGenerateTree(){return this.tree||(this.tree=M.of(Object.values(this.orders).map(e=>[...Object.values(e.leaf)]),Dp)),this.tree}static decodeFromJSON(e){return JSON.parse(e)}async prepareProofStruct(e=this.location,t,r){var i=this;return await async function(){switch(e){case up.PRIVATE:return"0x";case up.EMITTED:return i.encodeToABI(t);case up.SWARM:case up.WAKU:case up.IPFS:if(!r)throw new Error("Must provide an uploader function");try{return await r(i.encodeToJSON(t))}catch(t){throw new Error(`Error uploading to decentralized storage ${e}: ${t}`)}default:throw new Error("Unsupported location")}}().then(t=>{try{return n.hexlify(n.arrayify(t)),this.location=e,{location:e,data:t}}catch(e){throw new Error("data returned by uploader is invalid")}}).catch(e=>{throw new Error(`Error preparing proof struct: ${e}`)})}static async poll(e,t,n,r,i){const s=Pp(n,r),a=i?await i(e,t.params):"0x";return await s.getTradeableOrderWithSignature(e,t.params,a,t.proof)}dumpProofs(e){return this.encodeToJSON(e)}dumpProofsAndParams(e){return this.getProofs(e)}getProofs(e){return[...this.getOrGenerateTree().entries()].map(([t,n])=>e&&e(n)||void 0===e?{idx:t,value:n}:void 0).reduce((e,t)=>{if(t){const n={handler:t.value[0],salt:t.value[1],staticInput:t.value[2]};e.push({proof:this.getOrGenerateTree().getProof(t.idx),params:n})}return e},[])}encodeToABI(e){return n.defaultAbiCoder.encode(Fp,[this.getProofs(e)])}encodeToJSON(e){return JSON.stringify(this.getProofs(e))}reset(){this.tree=void 0}static registerOrderType(e,t){Lp.orderTypeRegistry[e]=t}static resetOrderTypeRegistry(){Lp.orderTypeRegistry={}}}Lp.orderTypeRegistry={};class Up{constructor(e){this.knownOrderTypes=Object.entries(e).reduce((e,[t,n])=>(e[t.toLowerCase()]=n,e),{})}fromParams(e){const{handler:t}=e,n=this.knownOrderTypes[t.toLocaleLowerCase()];if(n)return n(e)}}const Gp=["sellAmount","buyAmount","numberOfParts","startTime","timeBetweenParts","durationOfPart"],Hp="0x6cF1e9cA41f7611dEf408122793c358a3d11E5a5",qp="0x52eD56Da04309Aca4c3FECC595298d80C2f16BAc",Vp=a.from(2).pow(32).sub(1),zp=a.from(31536e3),jp=["tuple(address sellToken, address buyToken, address receiver, uint256 partSellAmount, uint256 minPartLimit, uint256 t0, uint256 n, uint256 t, uint256 span, bytes32 appData)"];var Kp,Wp;!function(e){e.AUTO="AUTO",e.LIMIT_DURATION="LIMIT_DURATION"}(Kp||(Kp={})),function(e){e.AT_MINING_TIME="AT_MINING_TIME",e.AT_EPOCH="AT_EPOCH"}(Wp||(Wp={}));const Jp={startType:Wp.AT_MINING_TIME},Qp={durationType:Kp.AUTO};class Yp extends Op{constructor(e){const{handler:t,salt:n,data:r,hasOffChainInput:i}=e;if(t!==Hp)throw new Error(`InvalidHandler: Expected: ${Hp}, provided: ${t}`);super({handler:Hp,salt:n,data:r,hasOffChainInput:i}),this.isSingleOrder=!0}static fromData(e,t){return new Yp({handler:Hp,data:e,salt:t})}static fromParams(e){return Yp.deserialize(Ap(e))}get context(){return this.staticInput.t0.gt(0)?super.context:{address:qp,factoryArgs:void 0}}get orderType(){return"twap"}isValid(){const e=(()=>{const{sellToken:e,sellAmount:t,buyToken:n,buyAmount:r,startTime:i=Jp,numberOfParts:a,timeBetweenParts:o,durationOfPart:u=Qp}=this.data;if(e==n)return"InvalidSameToken";if(e==s.AddressZero||n==s.AddressZero)return"InvalidToken";if(!t.gt(s.Zero))return"InvalidSellAmount";if(!r.gt(s.Zero))return"InvalidMinBuyAmount";if(i.startType===Wp.AT_EPOCH){const e=i.epoch;if(!e.gte(s.Zero)||!e.lt(Vp))return"InvalidStartTime"}return a.gt(s.One)&&a.lte(Vp)?o.gt(s.Zero)&&o.lte(zp)?u.durationType!==Kp.LIMIT_DURATION||u.duration.lte(o)?Ep(jp,[this.staticInput])?void 0:"InvalidData":"InvalidSpan":"InvalidFrequency":"InvalidNumParts"})();return e?{isValid:!1,reason:e}:{isValid:!0}}async startTimestamp(e){const{startTime:t}=this.data;if((null==t?void 0:t.startType)===Wp.AT_EPOCH)return t.epoch.toNumber();const r=await this.cabinet(e),i=n.defaultAbiCoder.decode(["uint256"],r)[0];if(i.gt(Vp))throw new Error(`Cabinet epoch out of range: ${i.toString()}`);const s=i.toNumber();if(0===s)throw new Error("Cabinet is not set. Required for TWAP orders that start at mining time.");return s}endTimestamp(e){const{numberOfParts:t,timeBetweenParts:n,durationOfPart:r}=this.data;return r&&r.durationType===Kp.LIMIT_DURATION?e+t.sub(1).mul(n).add(r.duration).toNumber():e+t.mul(n).toNumber()}async pollValidate(e){const{blockInfo:t=await Sp(e.provider)}=e,{blockTimestamp:n}=t;try{const t=await this.startTimestamp(e);if(t>n)return{result:lp.TRY_AT_EPOCH,epoch:t,reason:`TWAP hasn't started yet. Starts at ${t} (${Ip(t)})`};const r=this.endTimestamp(t);return n>=r?{result:lp.DONT_TRY_AGAIN,reason:`TWAP has expired. Expired at ${r} (${Ip(r)})`}:void 0}catch(e){var r,i;const t=e;return null!=t&&null!=(r=t.message)&&r.includes("Cabinet is not set")?{result:lp.DONT_TRY_AGAIN,reason:`${null==t?void 0:t.message}. User likely removed the order.`}:null!=t&&null!=(i=t.message)&&i.includes("Cabinet epoch out of range")?{result:lp.DONT_TRY_AGAIN,reason:`${null==t?void 0:t.message}`}:{result:lp.UNEXPECTED_ERROR,reason:`Unexpected error: ${t.message}`,error:t}}}async handlePollFailedAlreadyPresent(e,t,n){const{blockInfo:r=await Sp(n.provider)}=n,{blockTimestamp:i}=r,s=this.data.timeBetweenParts.toNumber(),{numberOfParts:a}=this.data,o=await this.startTimestamp(n);if(i<o)return{result:lp.UNEXPECTED_ERROR,reason:`TWAP part hash't started. First TWAP part start at ${o} (${Ip(o)})`,error:void 0};const u=a.mul(s).add(o).toNumber();if(i>=u)return{result:lp.UNEXPECTED_ERROR,reason:`TWAP is expired. Expired at ${u} (${Ip(u)})`,error:void 0};const l=Math.floor((i-o)/s);if(l===a.toNumber()-1)return{result:lp.DONT_TRY_AGAIN,reason:`Current active TWAP part (${l+1}/${a}) is already in the Order Book. This was the last TWAP part, no more orders need to be placed`};const c=o+(l+1)*s;return{result:lp.TRY_AT_EPOCH,epoch:c,reason:`Current active TWAP part (${l+1}/${a}) is already in the Order Book. TWAP part ${l+2} doesn't start until ${c} (${Ip(c)})`}}serialize(){return Ap(this.leaf)}encodeStaticInput(){return super.encodeStaticInputHelper(jp,this.staticInput)}static deserialize(e){return super.deserializeHelper(e,Hp,jp,(e,t)=>new Yp({handler:Hp,salt:t,data:Zp(e)}))}toString(){const{sellAmount:e,sellToken:t,buyAmount:n,buyToken:r,numberOfParts:i,startTime:s=Jp,timeBetweenParts:a,durationOfPart:o=Qp,receiver:u,appData:l}=this.data,c=s.startType===Wp.AT_MINING_TIME?"AT_MINING_TIME":s.epoch.toNumber(),d=o.durationType===Kp.AUTO?"AUTO":o.duration.toNumber(),h={sellAmount:e.toString(),sellToken:t,buyAmount:n.toString(),buyToken:r,numberOfParts:i.toString(),startTime:c,timeBetweenParts:a.toNumber(),durationOfPart:d,receiver:u,appData:l};return`${this.orderType} (${this.id}): ${JSON.stringify(h)}`}transformDataToStruct(e){return Xp(e)}transformStructToData(e){return Zp(e)}}function Xp(e){const{sellAmount:t,buyAmount:n,numberOfParts:r,startTime:i=Jp,timeBetweenParts:a,durationOfPart:o=Qp}=e,u=W(e,Gp),{partSellAmount:l,minPartLimit:c}=r&&!r.isZero()?{partSellAmount:t.div(r),minPartLimit:n.div(r)}:{partSellAmount:s.Zero,minPartLimit:s.Zero};return K({partSellAmount:l,minPartLimit:c,t0:i.startType===Wp.AT_MINING_TIME?s.Zero:i.epoch,n:r,t:a,span:o.durationType===Kp.AUTO?s.Zero:o.duration},u)}function Zp(e){const{n:t,partSellAmount:n,minPartLimit:r,t:i,t0:s,span:a,sellToken:o,buyToken:u,receiver:l,appData:c}=e,d=a.isZero()?{durationType:Kp.AUTO}:{durationType:Kp.LIMIT_DURATION,duration:a},h=s.isZero()?{startType:Wp.AT_MINING_TIME}:{startType:Wp.AT_EPOCH,epoch:s};return{sellAmount:n.mul(t),buyAmount:r.mul(t),startTime:h,numberOfParts:t,timeBetweenParts:i,durationOfPart:d,sellToken:o,buyToken:u,receiver:l,appData:c}}const $p={[Hp]:e=>Yp.fromParams(e)};export{ie as $,Eh as A,Yh as B,J as C,mc as D,ht as E,Be as F,De as G,gc as H,Fe as I,Le as J,Ue as K,Ge as L,He as M,Ve as N,ze as O,je as P,Ke as Q,fc as R,We as S,Je as T,Qe as U,Ye as V,rt as W,it as X,te as Y,ne as Z,K as _,qe as a,zt as a$,se as a0,Re as a1,Me as a2,at as a3,ot as a4,lt as a5,ct as a6,dt as a7,pt as a8,ft as a9,bp as aA,vp as aB,wp as aC,Ap as aD,Tp as aE,Ep as aF,Sp as aG,Ip as aH,Np as aI,xp as aJ,Op as aK,Lp as aL,Up as aM,$p as aN,Hp as aO,qp as aP,Vp as aQ,zp as aR,Kp as aS,Wp as aT,Yp as aU,Xp as aV,Zp as aW,Jc as aX,jc as aY,Kc as aZ,ln as a_,mt as aa,yt as ab,gt as ac,bt as ad,vt as ae,wt as af,At as ag,Tt as ah,Et as ai,St as aj,Q as ak,X as al,Z as am,ee as an,kt as ao,Nt as ap,xt as aq,sp as ar,ap as as,op as at,Pt as au,up as av,lp as aw,mp as ax,yp as ay,gp as az,P as b,lc as b0,ic as b1,sc as b2,dn as b3,uc as b4,cn as b5,ac as b6,oc as b7,nc as b8,Ot as b9,bc as bA,vc as bB,an as ba,nn as bb,cc as bc,Wl as bd,zl as be,jl as bf,Kl as bg,jt as bh,lh as bi,ph as bj,fh as bk,mh as bl,B as bm,D as bn,Bt as bo,Dt as bp,Ft as bq,Lt as br,fe as bs,we as bt,ye as bu,de as bv,le as bw,Te as bx,Se as by,be as bz,O as c,F as d,L as e,U as f,Ic as g,H as h,G as i,q as j,V as k,z as l,j as m,Cc as n,yc as o,et as p,Ie as q,ke as r,Ce as s,Ne as t,xe as u,_e as v,tt as w,nt as x,Pe as y,Oe as z};
29
- //# sourceMappingURL=index-67580d8b.js.map