From 03b4a62a89023c00cd1540bae32587275058a2ba Mon Sep 17 00:00:00 2001 From: Denis Date: Wed, 14 Aug 2024 16:46:55 +0100 Subject: [PATCH 1/8] Deploy on mainnet --- README.md | 2 +- deployments/mainnet/CurveOracle.json | 267 ++------------------------- 2 files changed, 21 insertions(+), 248 deletions(-) diff --git a/README.md b/README.md index 5cde812..c4b7307 100644 --- a/README.md +++ b/README.md @@ -36,7 +36,7 @@ If no direct liquidity pair exists between two tokens, the spot price aggregator * SushiSwap - [0x2A45d538f460DDBEeA3a899b0674dA3DFE318faa](https://etherscan.io/address/0x2A45d538f460DDBEeA3a899b0674dA3DFE318faa) * UniswapV2 - [0xA21E47477DE9BbcDC962ee18a5E7D339c5a16D28](https://etherscan.io/address/0xA21E47477DE9BbcDC962ee18a5E7D339c5a16D28) * UniswapV3 - [0xE85B42805e046D1933EB8e1C543C4da4E5e8fFa3](https://etherscan.io/address/0xE85B42805e046D1933EB8e1C543C4da4E5e8fFa3) - * Curve - [0x8e38ec1f7D3D40ebf3987DaB0fb2aD688D96c3D1](https://etherscan.io/address/0x8e38ec1f7D3D40ebf3987DaB0fb2aD688D96c3D1) + * Curve - [0x4e5Cee3B8Af0CB46EFAA94Cba5E0f25f8770BB19](https://etherscan.io/address/0x4e5Cee3B8Af0CB46EFAA94Cba5E0f25f8770BB19) * Pancake 3 - [0xB4039b37d09772801a51764537c167445f52F48b](https://etherscan.io/address/0xB4039b37d09772801a51764537c167445f52F48b) * Dodo - [0x0A7c4d89e1629f189Eb12dd716B178d1b90D9f66](https://etherscan.io/address/0x0A7c4d89e1629f189Eb12dd716B178d1b90D9f66) * DodoV2 - [0x03aA019F3B78110e030c34e9fA98047A1f62859A](https://etherscan.io/address/0x03aA019F3B78110e030c34e9fA98047A1f62859A) diff --git a/deployments/mainnet/CurveOracle.json b/deployments/mainnet/CurveOracle.json index e283dec..e14f58c 100644 --- a/deployments/mainnet/CurveOracle.json +++ b/deployments/mainnet/CurveOracle.json @@ -1,37 +1,17 @@ { - "address": "0x8e38ec1f7D3D40ebf3987DaB0fb2aD688D96c3D1", + "address": "0x4e5Cee3B8Af0CB46EFAA94Cba5E0f25f8770BB19", "abi": [ { "inputs": [ { "internalType": "contract ICurveProvider", - "name": "_addressProvider", + "name": "curveProvider", "type": "address" }, { "internalType": "uint256", - "name": "_maxPools", + "name": "maxPools", "type": "uint256" - }, - { - "internalType": "uint256[]", - "name": "_registryIds", - "type": "uint256[]" - }, - { - "internalType": "enum CurveOracle.CurveRegistryType[]", - "name": "_registryTypes", - "type": "uint8[]" - }, - { - "internalType": "address[]", - "name": "initialBlacklist", - "type": "address[]" - }, - { - "internalType": "address", - "name": "owner", - "type": "address" } ], "stateMutability": "nonpayable", @@ -42,33 +22,6 @@ "name": "ConnectorShouldBeNone", "type": "error" }, - { - "inputs": [], - "name": "MathOverflowedMulDiv", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "owner", - "type": "address" - } - ], - "name": "OwnableInvalidOwner", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "OwnableUnauthorizedAccount", - "type": "error" - }, { "inputs": [], "name": "PoolNotFound", @@ -79,52 +32,14 @@ "name": "PoolWithConnectorNotFound", "type": "error" }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "pool", - "type": "address" - }, - { - "indexed": false, - "internalType": "bool", - "name": "isBlacklisted", - "type": "bool" - } - ], - "name": "BlacklistUpdated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, { "inputs": [], - "name": "MAX_POOLS", + "name": "CURVE_METAREGISTRY", "outputs": [ { - "internalType": "uint256", + "internalType": "contract ICurveMetaregistry", "name": "", - "type": "uint256" + "type": "address" } ], "stateMutability": "view", @@ -132,7 +47,7 @@ }, { "inputs": [], - "name": "REGISTRIES_COUNT", + "name": "MAX_POOLS", "outputs": [ { "internalType": "uint256", @@ -143,25 +58,6 @@ "stateMutability": "view", "type": "function" }, - { - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "blacklisted", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, { "inputs": [ { @@ -200,151 +96,28 @@ ], "stateMutability": "view", "type": "function" - }, - { - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "registries", - "outputs": [ - { - "internalType": "contract ICurveRegistry", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "registryTypes", - "outputs": [ - { - "internalType": "enum CurveOracle.CurveRegistryType", - "name": "", - "type": "uint8" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "pool", - "type": "address" - } - ], - "name": "toggleBlacklistAddress", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" } ], + "transactionHash": "0xb4043861793023b83a38fcd2fe9818e62924a931ec47dec402883e264b1d01ae", "receipt": { "to": "0xD935a2bb926019E0ed6fb31fbD5b1Bbb7c05bf65", "from": "0x56E44874F624EbDE6efCc783eFD685f0FBDC6dcF", "contractAddress": null, - "gasUsed": "1690993", - "logsBloom": "0x00000000000000000000000000000000000000000000000000800000000000000000000000000000000002000004000000000000008000000000000000000000000000000000000000000000000000800001000000000000000000000000000000000000020000000000000000000800000000000000000000000000000000400000000000000000000000000000000200000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000", - "blockHash": "0x69fe5650f6e7f882582c9a432eb614387a4cd4cbd29230d41332b0cf0f51325f", - "logs": [ - { - "_type": "log", - "address": "0x8e38ec1f7D3D40ebf3987DaB0fb2aD688D96c3D1", - "blockHash": "0x69fe5650f6e7f882582c9a432eb614387a4cd4cbd29230d41332b0cf0f51325f", - "blockNumber": 20189607, - "data": "0x", - "index": 477, - "topics": [ - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x00000000000000000000000056e44874f624ebde6efcc783efd685f0fbdc6dcf" - ], - "transactionHash": "0x60107be8f0c4c7f7a824e1ba97600d0a5cd7fb9050c09ddace1daf176c5700bc", - "transactionIndex": 508 - } - ], - "blockNumber": 20189607, - "cumulativeGasUsed": "26610662", + "transactionIndex": 110, + "gasUsed": "928882", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "blockHash": "0xd5d668477778299083bfb94ec4ebc222065bc8d40c1c60f97cd3d564756ab727", + "transactionHash": "0xb4043861793023b83a38fcd2fe9818e62924a931ec47dec402883e264b1d01ae", + "logs": [], + "blockNumber": 20527827, + "cumulativeGasUsed": "9510094", "status": 1 }, "args": [ - "0x0000000022D53366457F9d5E68Ec105046FC4383", - 100, - [ - 0, - 3, - 5, - 6, - 7, - 8, - 11 - ], - [ - 0, - 1, - 2, - 3, - 4, - 5, - 6 - ], - [ - "0xdebf20617708857ebe4f679508e7b7863a8a8eee", - "0x79a8c46dea5ada233abaffd40f3a0a2b1e5a4f27", - "0x2dded6da1bf5dbdf597c45fcfaa3194e53ecfeaf", - "0x06364f10b501e868329afbc005b3492902d6c763", - "0x45f783cce6b7ff23b2ab2d70e416cdb7d6055f51" - ], - "0x56E44874F624EbDE6efCc783eFD685f0FBDC6dcF" + "0x5ffe7FB82894076ECB99A30D6A32e969e6e35E98", + 100 ], "numDeployments": 1, - "bytecode": "0x60c0604090808252346200031d5762001aad8038038091620000228285620003d4565b833981019160c0828403126200031d5781516001600160a01b0380821692918390036200031d5760208481015183860151909591946001600160401b0392918381116200031d5782019288601f850112156200031d5783519362000086856200040c565b906200009588519283620003d4565b8582528882018960059760051b830101918c83116200031d578a809101915b838310620003c3575050505060608401518281116200031d578401918a601f840112156200031d57825192620000ea846200040c565b93620000f98a519586620003d4565b8085528a8086019160051b830101918d83116200031d578b01905b828210620003a95750505060808501519081116200031d5784019980601f8c0112156200031d578a5162000148816200040c565b9b8a808b519e8f906200015c9082620003d4565b848152019260051b8201019283116200031d578a809101915b8383106200038e5750505050856200019160a080960162000424565b1690811562000377575f80546001600160a01b0319808216851783559391908916907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a35f5b8b518110156200020f578088620001f36001938f62000439565b51165f5281808c528a5f209060ff1982541617905501620001d9565b508892918789928c608052805160a0525f5b8851811015620003335762000237818362000439565b51855163124fd3dd60e21b8152600480820192909252602490898183818e5afa90811562000329575f91620002e8575b50600b841015620002d55785846002019116878254161790556200028c838962000439565b5191600a831015620002c457505090600191818c1c600d0190815460f88460031b169160ff809116831b921b19161790550162000221565b602190634e487b7160e01b5f52525ffd5b50634e487b7160e01b5f90815260328352fd5b90508981813d831162000321575b620003028183620003d4565b810103126200031d57620003169062000424565b8d62000267565b5f80fd5b503d620002f6565b88513d5f823e3d90fd5b845161164a90816200046382396080518181816102eb015281816105f601528181610633015281816110190152611146015260a05181818161050401526106740152f35b8751631e4fbdf760e01b81525f6004820152602490fd5b81906200039b8462000424565b8152019101908a9062000175565b8151600a8110156200031d578152908b01908b0162000114565b82518152918101918b9101620000b4565b601f909101601f19168101906001600160401b03821190821017620003f857604052565b634e487b7160e01b5f52604160045260245ffd5b6001600160401b038111620003f85760051b60200190565b51906001600160a01b03821682036200031d57565b80518210156200044e5760209160051b010190565b634e487b7160e01b5f52603260045260245ffdfe6080806040526004361015610012575f80fd5b5f3560e01c9081633d549b32146105275750806347400449146104cf57806361436d6a146104085780636347c900146103a8578063715018a61461030e57806381358498146102b65780638da5cb5b14610266578063b72529f2146101d8578063dbac26e91461016d5763f2fde38b1461008a575f80fd5b346101695760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101695760043573ffffffffffffffffffffffffffffffffffffffff808216809203610169576100e36115c4565b8115610139575f54827fffffffffffffffffffffffff00000000000000000000000000000000000000008216175f55167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3005b60246040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081525f6004820152fd5b5f80fd5b346101695760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101695760043573ffffffffffffffffffffffffffffffffffffffff8116809103610169575f526001602052602060ff60405f2054166040519015158152f35b346101695760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016957600435600b8110156101695761021e60ff91611194565b90549060031b1c16604051600a821015610239576020918152f35b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b34610169575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016957602073ffffffffffffffffffffffffffffffffffffffff5f5416604051908152f35b34610169575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101695760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b34610169575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610169576103446115c4565b5f73ffffffffffffffffffffffffffffffffffffffff81547fffffffffffffffffffffffff000000000000000000000000000000000000000081168355167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b346101695760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016957600435600b8110156101695773ffffffffffffffffffffffffffffffffffffffff6020916002015416604051908152f35b346101695760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101695760043573ffffffffffffffffffffffffffffffffffffffff81168091036101695760407f6a12b3df6cba4203bd7fd06b816789f87de8c594299aed5717ae070fac781bac916104846115c4565b805f5260016020527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00825f20805460ff808216151692839116179055825191825215156020820152a1005b34610169575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101695760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b346101695760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610169576004359073ffffffffffffffffffffffffffffffffffffffff82168203610169576024359073ffffffffffffffffffffffffffffffffffffffff821682036101695760443573ffffffffffffffffffffffffffffffffffffffff81168091036101695773ffffffffffffffffffffffffffffffffffffffff0361116c57506060604080516105e3816111ac565b5f81525f602082015201526040519060807f000000000000000000000000000000000000000000000000000000000000000060061b8301016040525f82525f6020830152606082018060408401527f000000000000000000000000000000000000000000000000000000000000000090525f60408051610662816111ac565b82815282602082015201525f915f925b7f0000000000000000000000000000000000000000000000000000000000000000841080611143575b1561105e575f91600b8510159182610ade5773ffffffffffffffffffffffffffffffffffffffff866002015416936040517f6982eb0b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8916600482015273ffffffffffffffffffffffffffffffffffffffff871660248201525f6044820152602081606481895afa908115610ad3575f9161103f575b50915b73ffffffffffffffffffffffffffffffffffffffff8316151580611016575b156110005773ffffffffffffffffffffffffffffffffffffffff83165f5260016020528460ff60405f205416610ff057506107a090611225565b915f9085610ade575f808b60405173ffffffffffffffffffffffffffffffffffffffff60208201927feb85226d000000000000000000000000000000000000000000000000000000008452818716602484015216604482015273ffffffffffffffffffffffffffffffffffffffff8c16606482015260648152610822816111c8565b51908a5afa9161083061127e565b9280610fe4575b15610fd5576108458a611194565b905490600a60ff838360031b1c1610156102395760031b1c60ff166002148015610fb0575b8015610f8b575b15610f50576040838051810103126101695761089b6040610894602086016112db565b94016112db565b81610ecf576040516108ac816111ac565b7f92e3cc2d0000000000000000000000000000000000000000000000000000000081527f5e0d443f0000000000000000000000000000000000000000000000000000000060208201527f556d6e9f000000000000000000000000000000000000000000000000000000006040820152925b88610ade575f807fffffffff000000000000000000000000000000000000000000000000000000008651166040516020810191825273ffffffffffffffffffffffffffffffffffffffff851660248201526024815261097b816111ac565b51908d5afa9261098961127e565b9380610ec3575b15610e20579089959493929160089015610cb2575b8352600f946fffffffffffffffffffffffffffffffff90818116936109eb6109e66109d087896112e9565b51948316946109df868a6112e9565b51906112fd565b611347565b97612710610a0685826109fe8a8c6112e9565b5104996112e9565b51048715159081610ca8575b50610b0b575b505050505050505050610ade57610a2e90611225565b6040517f6982eb0b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff89811660048301528716602482015260448101829052909690602081606481895afa908115610ad3575f91610aa4575b50915b969096610747565b610ac6915060203d602011610acc575b610abe81836111e4565b810190611252565b89610a99565b503d610ab4565b6040513d5f823e3d90fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f9283927fffffffff0000000000000000000000000000000000000000000000000000000060208b015116926040519260208401948552810b60248401520b604482015287606482015260648152610b62816111c8565b5190855afa92610b7061127e565b9584158015610c9d575b610c2f575b5050505080610c23575b610b99575b808080808080610a18565b90919250602082805181010312610169576020610bb7920151611488565b60405180604081011067ffffffffffffffff604083011117610bf6578692610bed9260408301604052825260208201528561155c565b50898080610b8e565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b50602082511015610b89565b5f95965085945060407fffffffff00000000000000000000000000000000000000000000000000000000910151169160405191602083019384526024830152604482015285606482015260648152610c86816111c8565b51915afa90610c9361127e565b918d808080610b7f565b506020875110610b7a565b905015155f610a12565b9550610cbd8d611194565b96905496600a60ff898360031b1c161015610239578b978f9160031b1c60ff166001148015610df4575b8015610dc8575b8015610d9d575b8015610d71575b15610d0b57505060045b6109a5565b60ff919750610d1990611194565b90549060031b1c1695600a871015610239578d60068c98145f14610d4057505060036109a5565b60ff919750610d4e90611194565b90549060031b1c1695600a8710156102395760038b9703610d06575060026109a5565b5060ff919750610d8090611194565b90549060031b1c1695600a871015610239578d60098c9814610cfc565b5060ff919750610dac90611194565b90549060031b1c1695600a871015610239578d818c9814610cf5565b5060ff919750610dd790611194565b90549060031b1c1695600a871015610239578d60078c9814610cee565b5060ff919750610e0390611194565b90549060031b1c1695600a871015610239578d60058c9814610ce7565b5050505050509250610e325f93611225565b6040517f6982eb0b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff89811660048301528716602482015260448101829052909690602081606481895afa908115610ad3575f91610ea4575b5091610a9c565b610ebd915060203d602011610acc57610abe81836111e4565b89610e9d565b50604084511015610990565b604051610edb816111ac565b7f59f4f3510000000000000000000000000000000000000000000000000000000081527f07211ef70000000000000000000000000000000000000000000000000000000060208201527f85f11d1e0000000000000000000000000000000000000000000000000000000060408201529261091d565b5060608280518101031261016957610f6a602083016112db565b916060610f79604083016112db565b9101518015158103610169579061089b565b5060ff610f978b611194565b90549060031b1c16600a81101561023957600614610871565b5060ff610fbc8b611194565b90549060031b1c16600a8110156102395760031461086a565b5050509250610e325f93611225565b50604083511015610837565b909250610ade57610e3290611225565b945050509361100f9150611225565b9290610672565b507f00000000000000000000000000000000000000000000000000000000000000008110610766565b611058915060203d602011610acc57610abe81836111e4565b89610744565b505f806020830151806040850151525f905b80821061109e57604084848061108d575b82519182526020820152f35b908161109891611310565b90611081565b90916110ae8360408701516112e9565b519360208501948551606481029080820460641490151715611116576110d760643589516112fd565b1161110a57916110f9611101926110f3600195518951906112fd565b906115b7565b9551906115b7565b925b0190611070565b50935091600190611103565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b507f0000000000000000000000000000000000000000000000000000000000000000811061069b565b807fccf7e6f70000000000000000000000000000000000000000000000000000000060049252fd5b90600b821015610ade57601f8260051c600d01921690565b6060810190811067ffffffffffffffff821117610bf657604052565b60a0810190811067ffffffffffffffff821117610bf657604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117610bf657604052565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146111165760010190565b90816020910312610169575173ffffffffffffffffffffffffffffffffffffffff811681036101695790565b3d156112d6573d9067ffffffffffffffff8211610bf657604051916112cb60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601846111e4565b82523d5f602084013e565b606090565b519081600f0b820361016957565b8051821015610ade5760209160051b010190565b8181029291811591840414171561111657565b811561131a570490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b801561148357611411815f908360801c80611477575b508060401c8061146a575b508060201c8061145d575b508060101c80611450575b508060081c80611443575b508060041c80611436575b508060021c80611429575b50600191828092811c611422575b1c1b6113b98185611310565b01811c6113c68185611310565b01811c6113d38185611310565b01811c6113e08185611310565b01811c6113ed8185611310565b01811c6113fa8185611310565b01811c6114078185611310565b01901c8092611310565b8082101561141d575090565b905090565b01816113ad565b600291509101905f61139f565b600491509101905f611394565b600891509101905f611389565b601091509101905f61137e565b602091509101905f611373565b604091509101905f611368565b9150506080905f61135d565b505f90565b670de0b6b3a764000091828202917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8482099383808610950394808603951461154c578483111561152257829109815f038216809204600280826003021880830282030280830282030280830282030280830282030280830282030280920290030293600183805f03040190848311900302920304170290565b60046040517f227bc153000000000000000000000000000000000000000000000000000000008152fd5b5050906115599250611310565b90565b906020810190815161156f575050505f90565b611590604084015191602085019283519161158a83836112e9565b526112e9565b5061159b8151611225565b90525190805182116115af575b5050600190565b525f806115a8565b9190820180921161111657565b73ffffffffffffffffffffffffffffffffffffffff5f541633036115e457565b60246040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152fdfea2646970667358221220d0d949213def817cc3b5510adef9a1d128ae28d9c1d1b78463b09fe776cfefd764736f6c63430008170033", - "deployedBytecode": "0x6080806040526004361015610012575f80fd5b5f3560e01c9081633d549b32146105275750806347400449146104cf57806361436d6a146104085780636347c900146103a8578063715018a61461030e57806381358498146102b65780638da5cb5b14610266578063b72529f2146101d8578063dbac26e91461016d5763f2fde38b1461008a575f80fd5b346101695760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101695760043573ffffffffffffffffffffffffffffffffffffffff808216809203610169576100e36115c4565b8115610139575f54827fffffffffffffffffffffffff00000000000000000000000000000000000000008216175f55167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3005b60246040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081525f6004820152fd5b5f80fd5b346101695760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101695760043573ffffffffffffffffffffffffffffffffffffffff8116809103610169575f526001602052602060ff60405f2054166040519015158152f35b346101695760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016957600435600b8110156101695761021e60ff91611194565b90549060031b1c16604051600a821015610239576020918152f35b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b34610169575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016957602073ffffffffffffffffffffffffffffffffffffffff5f5416604051908152f35b34610169575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101695760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b34610169575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610169576103446115c4565b5f73ffffffffffffffffffffffffffffffffffffffff81547fffffffffffffffffffffffff000000000000000000000000000000000000000081168355167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b346101695760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016957600435600b8110156101695773ffffffffffffffffffffffffffffffffffffffff6020916002015416604051908152f35b346101695760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101695760043573ffffffffffffffffffffffffffffffffffffffff81168091036101695760407f6a12b3df6cba4203bd7fd06b816789f87de8c594299aed5717ae070fac781bac916104846115c4565b805f5260016020527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00825f20805460ff808216151692839116179055825191825215156020820152a1005b34610169575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101695760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b346101695760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610169576004359073ffffffffffffffffffffffffffffffffffffffff82168203610169576024359073ffffffffffffffffffffffffffffffffffffffff821682036101695760443573ffffffffffffffffffffffffffffffffffffffff81168091036101695773ffffffffffffffffffffffffffffffffffffffff0361116c57506060604080516105e3816111ac565b5f81525f602082015201526040519060807f000000000000000000000000000000000000000000000000000000000000000060061b8301016040525f82525f6020830152606082018060408401527f000000000000000000000000000000000000000000000000000000000000000090525f60408051610662816111ac565b82815282602082015201525f915f925b7f0000000000000000000000000000000000000000000000000000000000000000841080611143575b1561105e575f91600b8510159182610ade5773ffffffffffffffffffffffffffffffffffffffff866002015416936040517f6982eb0b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8916600482015273ffffffffffffffffffffffffffffffffffffffff871660248201525f6044820152602081606481895afa908115610ad3575f9161103f575b50915b73ffffffffffffffffffffffffffffffffffffffff8316151580611016575b156110005773ffffffffffffffffffffffffffffffffffffffff83165f5260016020528460ff60405f205416610ff057506107a090611225565b915f9085610ade575f808b60405173ffffffffffffffffffffffffffffffffffffffff60208201927feb85226d000000000000000000000000000000000000000000000000000000008452818716602484015216604482015273ffffffffffffffffffffffffffffffffffffffff8c16606482015260648152610822816111c8565b51908a5afa9161083061127e565b9280610fe4575b15610fd5576108458a611194565b905490600a60ff838360031b1c1610156102395760031b1c60ff166002148015610fb0575b8015610f8b575b15610f50576040838051810103126101695761089b6040610894602086016112db565b94016112db565b81610ecf576040516108ac816111ac565b7f92e3cc2d0000000000000000000000000000000000000000000000000000000081527f5e0d443f0000000000000000000000000000000000000000000000000000000060208201527f556d6e9f000000000000000000000000000000000000000000000000000000006040820152925b88610ade575f807fffffffff000000000000000000000000000000000000000000000000000000008651166040516020810191825273ffffffffffffffffffffffffffffffffffffffff851660248201526024815261097b816111ac565b51908d5afa9261098961127e565b9380610ec3575b15610e20579089959493929160089015610cb2575b8352600f946fffffffffffffffffffffffffffffffff90818116936109eb6109e66109d087896112e9565b51948316946109df868a6112e9565b51906112fd565b611347565b97612710610a0685826109fe8a8c6112e9565b5104996112e9565b51048715159081610ca8575b50610b0b575b505050505050505050610ade57610a2e90611225565b6040517f6982eb0b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff89811660048301528716602482015260448101829052909690602081606481895afa908115610ad3575f91610aa4575b50915b969096610747565b610ac6915060203d602011610acc575b610abe81836111e4565b810190611252565b89610a99565b503d610ab4565b6040513d5f823e3d90fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f9283927fffffffff0000000000000000000000000000000000000000000000000000000060208b015116926040519260208401948552810b60248401520b604482015287606482015260648152610b62816111c8565b5190855afa92610b7061127e565b9584158015610c9d575b610c2f575b5050505080610c23575b610b99575b808080808080610a18565b90919250602082805181010312610169576020610bb7920151611488565b60405180604081011067ffffffffffffffff604083011117610bf6578692610bed9260408301604052825260208201528561155c565b50898080610b8e565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b50602082511015610b89565b5f95965085945060407fffffffff00000000000000000000000000000000000000000000000000000000910151169160405191602083019384526024830152604482015285606482015260648152610c86816111c8565b51915afa90610c9361127e565b918d808080610b7f565b506020875110610b7a565b905015155f610a12565b9550610cbd8d611194565b96905496600a60ff898360031b1c161015610239578b978f9160031b1c60ff166001148015610df4575b8015610dc8575b8015610d9d575b8015610d71575b15610d0b57505060045b6109a5565b60ff919750610d1990611194565b90549060031b1c1695600a871015610239578d60068c98145f14610d4057505060036109a5565b60ff919750610d4e90611194565b90549060031b1c1695600a8710156102395760038b9703610d06575060026109a5565b5060ff919750610d8090611194565b90549060031b1c1695600a871015610239578d60098c9814610cfc565b5060ff919750610dac90611194565b90549060031b1c1695600a871015610239578d818c9814610cf5565b5060ff919750610dd790611194565b90549060031b1c1695600a871015610239578d60078c9814610cee565b5060ff919750610e0390611194565b90549060031b1c1695600a871015610239578d60058c9814610ce7565b5050505050509250610e325f93611225565b6040517f6982eb0b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff89811660048301528716602482015260448101829052909690602081606481895afa908115610ad3575f91610ea4575b5091610a9c565b610ebd915060203d602011610acc57610abe81836111e4565b89610e9d565b50604084511015610990565b604051610edb816111ac565b7f59f4f3510000000000000000000000000000000000000000000000000000000081527f07211ef70000000000000000000000000000000000000000000000000000000060208201527f85f11d1e0000000000000000000000000000000000000000000000000000000060408201529261091d565b5060608280518101031261016957610f6a602083016112db565b916060610f79604083016112db565b9101518015158103610169579061089b565b5060ff610f978b611194565b90549060031b1c16600a81101561023957600614610871565b5060ff610fbc8b611194565b90549060031b1c16600a8110156102395760031461086a565b5050509250610e325f93611225565b50604083511015610837565b909250610ade57610e3290611225565b945050509361100f9150611225565b9290610672565b507f00000000000000000000000000000000000000000000000000000000000000008110610766565b611058915060203d602011610acc57610abe81836111e4565b89610744565b505f806020830151806040850151525f905b80821061109e57604084848061108d575b82519182526020820152f35b908161109891611310565b90611081565b90916110ae8360408701516112e9565b519360208501948551606481029080820460641490151715611116576110d760643589516112fd565b1161110a57916110f9611101926110f3600195518951906112fd565b906115b7565b9551906115b7565b925b0190611070565b50935091600190611103565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b507f0000000000000000000000000000000000000000000000000000000000000000811061069b565b807fccf7e6f70000000000000000000000000000000000000000000000000000000060049252fd5b90600b821015610ade57601f8260051c600d01921690565b6060810190811067ffffffffffffffff821117610bf657604052565b60a0810190811067ffffffffffffffff821117610bf657604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117610bf657604052565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146111165760010190565b90816020910312610169575173ffffffffffffffffffffffffffffffffffffffff811681036101695790565b3d156112d6573d9067ffffffffffffffff8211610bf657604051916112cb60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601846111e4565b82523d5f602084013e565b606090565b519081600f0b820361016957565b8051821015610ade5760209160051b010190565b8181029291811591840414171561111657565b811561131a570490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b801561148357611411815f908360801c80611477575b508060401c8061146a575b508060201c8061145d575b508060101c80611450575b508060081c80611443575b508060041c80611436575b508060021c80611429575b50600191828092811c611422575b1c1b6113b98185611310565b01811c6113c68185611310565b01811c6113d38185611310565b01811c6113e08185611310565b01811c6113ed8185611310565b01811c6113fa8185611310565b01811c6114078185611310565b01901c8092611310565b8082101561141d575090565b905090565b01816113ad565b600291509101905f61139f565b600491509101905f611394565b600891509101905f611389565b601091509101905f61137e565b602091509101905f611373565b604091509101905f611368565b9150506080905f61135d565b505f90565b670de0b6b3a764000091828202917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8482099383808610950394808603951461154c578483111561152257829109815f038216809204600280826003021880830282030280830282030280830282030280830282030280830282030280920290030293600183805f03040190848311900302920304170290565b60046040517f227bc153000000000000000000000000000000000000000000000000000000008152fd5b5050906115599250611310565b90565b906020810190815161156f575050505f90565b611590604084015191602085019283519161158a83836112e9565b526112e9565b5061159b8151611225565b90525190805182116115af575b5050600190565b525f806115a8565b9190820180921161111657565b73ffffffffffffffffffffffffffffffffffffffff5f541633036115e457565b60246040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152fdfea2646970667358221220d0d949213def817cc3b5510adef9a1d128ae28d9c1d1b78463b09fe776cfefd764736f6c63430008170033" + "bytecode": "0x60c080604052346100e85760408161101b803803809161001f82856100ff565b8339810103126100e85780516001600160a01b038082169290918390036100e8576020806024920151936040519283809263124fd3dd60e21b8252600760048301525afa9081156100f4575f916100b5575b501660805260a052604051610ee4908161013782396080518181816101660152818161040e0152818161058d015261062d015260a05181818160720152610a8a0152f35b90506020813d6020116100ec575b816100d0602093836100ff565b810103126100e8575181811681036100e8575f610071565b5f80fd5b3d91506100c3565b6040513d5f823e3d90fd5b601f909101601f19168101906001600160401b0382119082101761012257604052565b634e487b7160e01b5f52604160045260245ffdfe6080806040526004361015610012575f80fd5b5f3560e01c9081630caeeb241461011e575080633d549b32146100995763813584981461003d575f80fd5b34610095575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100955760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b5f80fd5b346100955760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100955773ffffffffffffffffffffffffffffffffffffffff600435818116810361009557602435908282168203610095576044359283168303610095576040926101129260643592610375565b82519182526020820152f35b34610095575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100955760209073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b6040810190811067ffffffffffffffff8211176101a657604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176101a657604052565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146102415760010190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b80518210156102825760209160051b010190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b519081600f0b820361009557565b9060088110156102825760051b0190565b3d15610326573d9067ffffffffffffffff82116101a6576040519161031b60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601846101d3565b82523d5f602084013e565b606090565b8181029291811591840414171561024157565b8115610348570490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b9173ffffffffffffffffffffffffffffffffffffffff80911603610c0e57604051917fa064072b00000000000000000000000000000000000000000000000000000000835273ffffffffffffffffffffffffffffffffffffffff8116600484015273ffffffffffffffffffffffffffffffffffffffff821660248401525f8360448173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa928315610967575f93610b5e575b50825115610b545773ffffffffffffffffffffffffffffffffffffffff811673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee03610aaf57670de0b6b3a7640000915b8351956040516060810181811067ffffffffffffffff8211176101a65760609160409182525f81525f602082015201526040519660808160061b8901016040525f88525f602089015260608801604089015260608801525f5b8551811080610a82575b156109ca5773ffffffffffffffffffffffffffffffffffffffff610509828861026e565b511690604051917feb85226d000000000000000000000000000000000000000000000000000000008352600483015273ffffffffffffffffffffffffffffffffffffffff8516602483015273ffffffffffffffffffffffffffffffffffffffff8416604483015260608260648173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa8015610967575f925f905f92610972575b5073ffffffffffffffffffffffffffffffffffffffff6105e0848b61026e565b511690604051917f59f4f35100000000000000000000000000000000000000000000000000000000835260048301526101008260248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa918215610967575f926108cd575b506fffffffffffffffffffffffffffffffff928a8a61067e868916866102bd565b51118015906108b9575b6108aa576106b773ffffffffffffffffffffffffffffffffffffffff6106b08860ff9461026e565b5116610c38565b16159081806108a3575b156108425750507f07211ef7000000000000000000000000000000000000000000000000000000005b73ffffffffffffffffffffffffffffffffffffffff610709868d61026e565b5116604051916020830152848716602483015284831660448301528a6064830152606482528160a081011067ffffffffffffffff60a0840111176101a657815f929160a0849301604052602082519201905afa6107646102ce565b9080610836575b610783575b5050505061077e9150610214565b6104db565b602081805181010312610095576020015180159283156107a4575b50610770565b670de0b6b3a76400009382858102048514171561024157846107dd6107f2966107d58e6107ed986107e6970261033e565b9916836102bd565b519316906102bd565b519061032b565b610d05565b9160405180604081011067ffffffffffffffff6040830111176101a65761077e9361082b9260408301604052825260208201528a610e46565b505f8080808061079e565b5060208151101561076b565b8161089a575b5015610874577f5e0d443f000000000000000000000000000000000000000000000000000000006106ea565b7f556d6e9f000000000000000000000000000000000000000000000000000000006106ea565b9050155f610848565b50806106c1565b505050505061077e9150610214565b506108c6858416856102bd565b5115610688565b909150610100903d6101001161095f575b6108e882826101d3565b61010081838101031261009557818101601f8201121561009557604051918261010081011067ffffffffffffffff610100850111176101a6576101008301604052829082016101008301116100955781905b6101008301821061094f57505050905f61065d565b815181526020918201910161093a565b3d91506108de565b6040513d5f823e3d90fd5b935050506060823d6060116109c2575b8161098f606093836101d3565b81010312610095576109a0826102af565b60406109ae602085016102af565b93015190811515820361009557925f6105c0565b3d9150610982565b50949593505050505f905f936020820151806040840151525f925b818410610a08575050505082806109fb57509190565b610a049161033e565b9190565b90919295610a1a87604084015161026e565b51946020860195865160649081810291818304149015171561024157610a4187865161032b565b11610a765791610a63610a6b92610a5d600195518a519061032b565b90610ea1565b965190610ea1565b965b019291906109e5565b50945095600190610a6d565b5060208801517f0000000000000000000000000000000000000000000000000000000000000000116104e5565b6040517f313ce56700000000000000000000000000000000000000000000000000000000815260208160048173ffffffffffffffffffffffffffffffffffffffff86165afa8015610967575f90610b17575b60ff915016604d811161024157600a0a91610482565b506020813d602011610b4c575b81610b31602093836101d3565b81010312610095575160ff811681036100955760ff90610b01565b3d9150610b24565b505050505f905f90565b9092503d805f833e610b7081836101d3565b8101602090818382031261009557825167ffffffffffffffff93848211610095570181601f820112156100955780519384116101a6578360051b9060405194610bbb858401876101d3565b85528380860192820101928311610095578301905b828210610be25750505050915f61043e565b815173ffffffffffffffffffffffffffffffffffffffff81168103610095578152908301908301610bd0565b60046040517fccf7e6f7000000000000000000000000000000000000000000000000000000008152fd5b5f8060405160208101907f49fe9e7700000000000000000000000000000000000000000000000000000000825260048152610c728161018a565b5190845afa610c7f6102ce565b81610cf8575b50610cf2575f809160405160208101907f095a0fc600000000000000000000000000000000000000000000000000000000825260048152610cc58161018a565b51915afa610cd16102ce565b81610ce5575b50610ce0575f90565b600290565b602091505110155f610cd7565b50600190565b602091505110155f610c85565b8015610e4157610dcf815f908360801c80610e35575b508060401c80610e28575b508060201c80610e1b575b508060101c80610e0e575b508060081c80610e01575b508060041c80610df4575b508060021c80610de7575b50600191828092811c610de0575b1c1b610d77818561033e565b01811c610d84818561033e565b01811c610d91818561033e565b01811c610d9e818561033e565b01811c610dab818561033e565b01811c610db8818561033e565b01811c610dc5818561033e565b01901c809261033e565b80821015610ddb575090565b905090565b0181610d6b565b600291509101905f610d5d565b600491509101905f610d52565b600891509101905f610d47565b601091509101905f610d3c565b602091509101905f610d31565b604091509101905f610d26565b9150506080905f610d1b565b505f90565b9060208101908151610e59575050505f90565b610e7a6040840151916020850192835191610e74838361026e565b5261026e565b50610e858151610214565b9052519080518211610e99575b5050600190565b525f80610e92565b919082018092116102415756fea2646970667358221220a81ff33c7895af4540da6504953e168cd75a11fa971e7fd306cabb70b1febaea64736f6c63430008170033", + "deployedBytecode": "0x6080806040526004361015610012575f80fd5b5f3560e01c9081630caeeb241461011e575080633d549b32146100995763813584981461003d575f80fd5b34610095575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100955760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b5f80fd5b346100955760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100955773ffffffffffffffffffffffffffffffffffffffff600435818116810361009557602435908282168203610095576044359283168303610095576040926101129260643592610375565b82519182526020820152f35b34610095575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100955760209073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b6040810190811067ffffffffffffffff8211176101a657604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176101a657604052565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146102415760010190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b80518210156102825760209160051b010190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b519081600f0b820361009557565b9060088110156102825760051b0190565b3d15610326573d9067ffffffffffffffff82116101a6576040519161031b60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601846101d3565b82523d5f602084013e565b606090565b8181029291811591840414171561024157565b8115610348570490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b9173ffffffffffffffffffffffffffffffffffffffff80911603610c0e57604051917fa064072b00000000000000000000000000000000000000000000000000000000835273ffffffffffffffffffffffffffffffffffffffff8116600484015273ffffffffffffffffffffffffffffffffffffffff821660248401525f8360448173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa928315610967575f93610b5e575b50825115610b545773ffffffffffffffffffffffffffffffffffffffff811673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee03610aaf57670de0b6b3a7640000915b8351956040516060810181811067ffffffffffffffff8211176101a65760609160409182525f81525f602082015201526040519660808160061b8901016040525f88525f602089015260608801604089015260608801525f5b8551811080610a82575b156109ca5773ffffffffffffffffffffffffffffffffffffffff610509828861026e565b511690604051917feb85226d000000000000000000000000000000000000000000000000000000008352600483015273ffffffffffffffffffffffffffffffffffffffff8516602483015273ffffffffffffffffffffffffffffffffffffffff8416604483015260608260648173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa8015610967575f925f905f92610972575b5073ffffffffffffffffffffffffffffffffffffffff6105e0848b61026e565b511690604051917f59f4f35100000000000000000000000000000000000000000000000000000000835260048301526101008260248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa918215610967575f926108cd575b506fffffffffffffffffffffffffffffffff928a8a61067e868916866102bd565b51118015906108b9575b6108aa576106b773ffffffffffffffffffffffffffffffffffffffff6106b08860ff9461026e565b5116610c38565b16159081806108a3575b156108425750507f07211ef7000000000000000000000000000000000000000000000000000000005b73ffffffffffffffffffffffffffffffffffffffff610709868d61026e565b5116604051916020830152848716602483015284831660448301528a6064830152606482528160a081011067ffffffffffffffff60a0840111176101a657815f929160a0849301604052602082519201905afa6107646102ce565b9080610836575b610783575b5050505061077e9150610214565b6104db565b602081805181010312610095576020015180159283156107a4575b50610770565b670de0b6b3a76400009382858102048514171561024157846107dd6107f2966107d58e6107ed986107e6970261033e565b9916836102bd565b519316906102bd565b519061032b565b610d05565b9160405180604081011067ffffffffffffffff6040830111176101a65761077e9361082b9260408301604052825260208201528a610e46565b505f8080808061079e565b5060208151101561076b565b8161089a575b5015610874577f5e0d443f000000000000000000000000000000000000000000000000000000006106ea565b7f556d6e9f000000000000000000000000000000000000000000000000000000006106ea565b9050155f610848565b50806106c1565b505050505061077e9150610214565b506108c6858416856102bd565b5115610688565b909150610100903d6101001161095f575b6108e882826101d3565b61010081838101031261009557818101601f8201121561009557604051918261010081011067ffffffffffffffff610100850111176101a6576101008301604052829082016101008301116100955781905b6101008301821061094f57505050905f61065d565b815181526020918201910161093a565b3d91506108de565b6040513d5f823e3d90fd5b935050506060823d6060116109c2575b8161098f606093836101d3565b81010312610095576109a0826102af565b60406109ae602085016102af565b93015190811515820361009557925f6105c0565b3d9150610982565b50949593505050505f905f936020820151806040840151525f925b818410610a08575050505082806109fb57509190565b610a049161033e565b9190565b90919295610a1a87604084015161026e565b51946020860195865160649081810291818304149015171561024157610a4187865161032b565b11610a765791610a63610a6b92610a5d600195518a519061032b565b90610ea1565b965190610ea1565b965b019291906109e5565b50945095600190610a6d565b5060208801517f0000000000000000000000000000000000000000000000000000000000000000116104e5565b6040517f313ce56700000000000000000000000000000000000000000000000000000000815260208160048173ffffffffffffffffffffffffffffffffffffffff86165afa8015610967575f90610b17575b60ff915016604d811161024157600a0a91610482565b506020813d602011610b4c575b81610b31602093836101d3565b81010312610095575160ff811681036100955760ff90610b01565b3d9150610b24565b505050505f905f90565b9092503d805f833e610b7081836101d3565b8101602090818382031261009557825167ffffffffffffffff93848211610095570181601f820112156100955780519384116101a6578360051b9060405194610bbb858401876101d3565b85528380860192820101928311610095578301905b828210610be25750505050915f61043e565b815173ffffffffffffffffffffffffffffffffffffffff81168103610095578152908301908301610bd0565b60046040517fccf7e6f7000000000000000000000000000000000000000000000000000000008152fd5b5f8060405160208101907f49fe9e7700000000000000000000000000000000000000000000000000000000825260048152610c728161018a565b5190845afa610c7f6102ce565b81610cf8575b50610cf2575f809160405160208101907f095a0fc600000000000000000000000000000000000000000000000000000000825260048152610cc58161018a565b51915afa610cd16102ce565b81610ce5575b50610ce0575f90565b600290565b602091505110155f610cd7565b50600190565b602091505110155f610c85565b8015610e4157610dcf815f908360801c80610e35575b508060401c80610e28575b508060201c80610e1b575b508060101c80610e0e575b508060081c80610e01575b508060041c80610df4575b508060021c80610de7575b50600191828092811c610de0575b1c1b610d77818561033e565b01811c610d84818561033e565b01811c610d91818561033e565b01811c610d9e818561033e565b01811c610dab818561033e565b01811c610db8818561033e565b01811c610dc5818561033e565b01901c809261033e565b80821015610ddb575090565b905090565b0181610d6b565b600291509101905f610d5d565b600491509101905f610d52565b600891509101905f610d47565b601091509101905f610d3c565b602091509101905f610d31565b604091509101905f610d26565b9150506080905f610d1b565b505f90565b9060208101908151610e59575050505f90565b610e7a6040840151916020850192835191610e74838361026e565b5261026e565b50610e858151610214565b9052519080518211610e99575b5050600190565b525f80610e92565b919082018092116102415756fea2646970667358221220a81ff33c7895af4540da6504953e168cd75a11fa971e7fd306cabb70b1febaea64736f6c63430008170033" } \ No newline at end of file From 47da2d8a39f5b041f9f832355cf03283f46b7809 Mon Sep 17 00:00:00 2001 From: Denis Date: Wed, 14 Aug 2024 16:52:32 +0100 Subject: [PATCH 2/8] Deploy on matic --- README.md | 2 +- deployments/matic/CurveOracle.json | 112 +++++++---------------------- 2 files changed, 25 insertions(+), 89 deletions(-) diff --git a/README.md b/README.md index c4b7307..80dcfff 100644 --- a/README.md +++ b/README.md @@ -150,7 +150,7 @@ If no direct liquidity pair exists between two tokens, the spot price aggregator * SushiSwap - [0x2A45d538f460DDBEeA3a899b0674dA3DFE318faa](https://polygonscan.com/address/0x2A45d538f460DDBEeA3a899b0674dA3DFE318faa) * UniswapV2 - [0x4C5B9573dE7660c097F1a21050038378CD691066](https://polygonscan.com/address/0x4C5B9573dE7660c097F1a21050038378CD691066) * UniswapV3 - [0xE85B42805e046D1933EB8e1C543C4da4E5e8fFa3](https://polygonscan.com/address/0xE85B42805e046D1933EB8e1C543C4da4E5e8fFa3) - * Curve - [0x0bA0D1B119d8a8E193e2802c2C7Ef1BDfAdddc49](https://polygonscan.com/address/0x0bA0D1B119d8a8E193e2802c2C7Ef1BDfAdddc49) + * Curve - [0x4e5Cee3B8Af0CB46EFAA94Cba5E0f25f8770BB19](https://polygonscan.com/address/0x4e5Cee3B8Af0CB46EFAA94Cba5E0f25f8770BB19) diff --git a/deployments/matic/CurveOracle.json b/deployments/matic/CurveOracle.json index e76ca5d..0dfdd6d 100644 --- a/deployments/matic/CurveOracle.json +++ b/deployments/matic/CurveOracle.json @@ -1,27 +1,17 @@ { - "address": "0x0bA0D1B119d8a8E193e2802c2C7Ef1BDfAdddc49", + "address": "0x4e5Cee3B8Af0CB46EFAA94Cba5E0f25f8770BB19", "abi": [ { "inputs": [ { "internalType": "contract ICurveProvider", - "name": "_addressProvider", + "name": "curveProvider", "type": "address" }, { "internalType": "uint256", - "name": "_maxPools", + "name": "maxPools", "type": "uint256" - }, - { - "internalType": "uint256[]", - "name": "_registryIds", - "type": "uint256[]" - }, - { - "internalType": "enum CurveOracle.CurveRegistryType[]", - "name": "_registryTypes", - "type": "uint8[]" } ], "stateMutability": "nonpayable", @@ -32,11 +22,6 @@ "name": "ConnectorShouldBeNone", "type": "error" }, - { - "inputs": [], - "name": "MathOverflowedMulDiv", - "type": "error" - }, { "inputs": [], "name": "PoolNotFound", @@ -49,12 +34,12 @@ }, { "inputs": [], - "name": "MAX_POOLS", + "name": "CURVE_METAREGISTRY", "outputs": [ { - "internalType": "uint256", + "internalType": "contract ICurveMetaregistry", "name": "", - "type": "uint256" + "type": "address" } ], "stateMutability": "view", @@ -62,7 +47,7 @@ }, { "inputs": [], - "name": "REGISTRIES_COUNT", + "name": "MAX_POOLS", "outputs": [ { "internalType": "uint256", @@ -111,94 +96,45 @@ ], "stateMutability": "view", "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "registries", - "outputs": [ - { - "internalType": "contract ICurveRegistry", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "registryTypes", - "outputs": [ - { - "internalType": "enum CurveOracle.CurveRegistryType", - "name": "", - "type": "uint8" - } - ], - "stateMutability": "view", - "type": "function" } ], + "transactionHash": "0x833070362f624f62a33120424fd47ffcba184a6f09d6c4daf56a14af660569f9", "receipt": { "to": "0xD935a2bb926019E0ed6fb31fbD5b1Bbb7c05bf65", "from": "0x56E44874F624EbDE6efCc783eFD685f0FBDC6dcF", "contractAddress": null, - "gasUsed": "1286463", + "transactionIndex": 35, + "gasUsed": "928882", "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000008000008000000000000000000000000000000000008000000000000000800000000000000000000100000000000000000000000000000000000000000000000000000800100080000000000000000000000000000000000000000000000000000000000000000000000000000000200000000002000000000000000000000000000000000000000000000000004000000000000000000001000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000100000", - "blockHash": "0x03fc93c8f2a8974d5037ef2eb900160e8962f0a7b31564875061c1ed1f582962", + "blockHash": "0x28d0208506eeb5141655233b071983b920f5423abef7a5e1c35807232c86e67e", + "transactionHash": "0x833070362f624f62a33120424fd47ffcba184a6f09d6c4daf56a14af660569f9", "logs": [ { "_type": "log", "address": "0x0000000000000000000000000000000000001010", - "blockHash": "0x03fc93c8f2a8974d5037ef2eb900160e8962f0a7b31564875061c1ed1f582962", - "blockNumber": 55969989, - "data": "0x0000000000000000000000000000000000000000000000000129e2fa81b5917d0000000000000000000000000000000000000000000000071cb25b2d6d2788f00000000000000000000000000000000000000000000005d74f9986f52819a9b30000000000000000000000000000000000000000000000071b887832eb71f7730000000000000000000000000000000000000000000005d750c369efa9cf3b30", - "index": 101, + "blockHash": "0x28d0208506eeb5141655233b071983b920f5423abef7a5e1c35807232c86e67e", + "blockNumber": 60584782, + "data": "0x00000000000000000000000000000000000000000000000000630065d1729800000000000000000000000000000000000000000000000007147f369065c96767000000000000000000000000000000000000000000000e3a37c92c42621ab627000000000000000000000000000000000000000000000007141c362a9456cf67000000000000000000000000000000000000000000000e3a382c2ca8338d4e27", + "index": 125, "topics": [ "0x4dfe1bbbcf077ddc3e01291eea2d5c70c2b422b415d95645b9adcfd678cb1d63", "0x0000000000000000000000000000000000000000000000000000000000001010", "0x00000000000000000000000056e44874f624ebde6efcc783efd685f0fbdc6dcf", "0x00000000000000000000000083d69448f88bf9c701c1b93f43e1f753d39b2632" ], - "transactionHash": "0xdcae962816b397269408544a67952597e63202fb8b56b0ca5224b03b232d1d0f", - "transactionIndex": 25 + "transactionHash": "0x833070362f624f62a33120424fd47ffcba184a6f09d6c4daf56a14af660569f9", + "transactionIndex": 35 } ], - "blockNumber": 55969989, - "cumulativeGasUsed": "3809593", + "blockNumber": 60584782, + "cumulativeGasUsed": "6665607", "status": 1 }, "args": [ - "0x0000000022d53366457f9d5e68ec105046fc4383", - 100, - [ - 0, - 3, - 5, - 6, - 7 - ], - [ - 0, - 7, - 2, - 9, - 3 - ] + "0x5ffe7FB82894076ECB99A30D6A32e969e6e35E98", + 100 ], "numDeployments": 1, - "bytecode": "0x60c06040818152346200022a57620015af8038038091620000218286620002af565b84398201906080838303126200022a5782516001600160a01b039283821692918390036200022a57602085810151838701516001600160401b039692939291908781116200022a5788019683601f890112156200022a57875198620000868a620002e7565b986200009588519a8b620002af565b8a8a52868a018760059c60051b830101918783116200022a5788809101915b8383106200029e575050505060608101519182116200022a57019280601f850112156200022a578351620000e881620002e7565b94620000f788519687620002af565b818652868087019260051b8201019283116200022a578601905b828210620002845750505060805285519560a09660a0525f5b87518110156200024057620001408183620002ff565b51865163124fd3dd60e21b8152600491828201526024878282818d5afa91821562000236575f92620001f3575b50600b9182851015620001e05784546001600160a01b031916908716178455620001988488620002ff565b5192600a841015620001cf5750509082916001938c1c0190815460f88460031b169160ff809116831b921b1916179055016200012a565b602190634e487b7160e01b5f52525ffd5b50634e487b7160e01b5f90815260328452fd5b9091508781813d83116200022e575b6200020e8183620002af565b810103126200022a575185811681036200022a57905f6200016d565b5f80fd5b503d62000202565b89513d5f823e3d90fd5b8551611286908162000329823960805181818161011a015281816102c1015281816102fe01528181610ca50152610dd2015260a0518181816101cf015261033f0152f35b8151600a8110156200022a57815290860190860162000111565b8251815291810191899101620000b4565b601f909101601f19168101906001600160401b03821190821017620002d357604052565b634e487b7160e01b5f52604160045260245ffd5b6001600160401b038111620002d35760051b60200190565b8051821015620003145760209160051b010190565b634e487b7160e01b5f52603260045260245ffdfe6080806040526004361015610012575f80fd5b5f3560e01c9081633d549b32146101f257508063474004491461019a5780636347c9001461013d57806381358498146100e55763b72529f214610053575f80fd5b346100e15760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100e157600435600b8110156100e15761009960ff91610e20565b90549060031b1c16604051600a8210156100b4576020918152f35b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f80fd5b346100e1575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100e15760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b346100e15760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100e157600435600b8110156100e15773ffffffffffffffffffffffffffffffffffffffff6020915416604051908152f35b346100e1575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100e15760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b346100e15760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100e1576004359073ffffffffffffffffffffffffffffffffffffffff821682036100e1576024359073ffffffffffffffffffffffffffffffffffffffff821682036100e15760443573ffffffffffffffffffffffffffffffffffffffff81168091036100e15773ffffffffffffffffffffffffffffffffffffffff03610df857506060604080516102ae81610e38565b5f81525f602082015201526040519060807f000000000000000000000000000000000000000000000000000000000000000060061b8301016040525f82525f6020830152606082018060408401527f000000000000000000000000000000000000000000000000000000000000000090525f6040805161032d81610e38565b82815282602082015201525f915f925b7f0000000000000000000000000000000000000000000000000000000000000000841080610dcf575b15610cea575f91600b851015918261077a5773ffffffffffffffffffffffffffffffffffffffff865416936040517f6982eb0b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8916600482015273ffffffffffffffffffffffffffffffffffffffff871660248201525f6044820152602081606481895afa90811561076f575f91610ccb575b50915b73ffffffffffffffffffffffffffffffffffffffff8316151580610ca2575b15610c8c5761043c90610eb1565b915f908561077a575f808b60405173ffffffffffffffffffffffffffffffffffffffff60208201927feb85226d000000000000000000000000000000000000000000000000000000008452818716602484015216604482015273ffffffffffffffffffffffffffffffffffffffff8c166064820152606481526104be81610e54565b51908a5afa916104cc610f0a565b9280610c80575b15610c71576104e18a610e20565b905490600a60ff838360031b1c1610156100b45760031b1c60ff166002148015610c4c575b8015610c27575b15610bec576040838051810103126100e157610537604061053060208601610f67565b9401610f67565b81610b6b5760405161054881610e38565b7f92e3cc2d0000000000000000000000000000000000000000000000000000000081527f5e0d443f0000000000000000000000000000000000000000000000000000000060208201527f556d6e9f000000000000000000000000000000000000000000000000000000006040820152925b8861077a575f807fffffffff000000000000000000000000000000000000000000000000000000008651166040516020810191825273ffffffffffffffffffffffffffffffffffffffff851660248201526024815261061781610e38565b51908d5afa92610625610f0a565b9380610b5f575b15610abc57908995949392916008901561094e575b8352600f946fffffffffffffffffffffffffffffffff908181169361068761068261066c8789610f75565b519483169461067b868a610f75565b5190610f89565b610fd3565b976127106106a2858261069a8a8c610f75565b510499610f75565b51048715159081610944575b506107a7575b50505050505050505061077a576106ca90610eb1565b6040517f6982eb0b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff89811660048301528716602482015260448101829052909690602081606481895afa90811561076f575f91610740575b50915b96909661040f565b610762915060203d602011610768575b61075a8183610e70565b810190610ede565b89610735565b503d610750565b6040513d5f823e3d90fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f9283927fffffffff0000000000000000000000000000000000000000000000000000000060208b015116926040519260208401948552810b60248401520b6044820152876064820152606481526107fe81610e54565b5190855afa9261080c610f0a565b9584158015610939575b6108cb575b50505050806108bf575b610835575b8080808080806106b4565b909192506020828051810103126100e1576020610853920151611114565b60405180604081011067ffffffffffffffff604083011117610892578692610889926040830160405282526020820152856111e8565b5089808061082a565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b50602082511015610825565b5f95965085945060407fffffffff0000000000000000000000000000000000000000000000000000000091015116916040519160208301938452602483015260448201528560648201526064815261092281610e54565b51915afa9061092f610f0a565b918d80808061081b565b506020875110610816565b905015155f6106ae565b95506109598d610e20565b96905496600a60ff898360031b1c1610156100b4578b978f9160031b1c60ff166001148015610a90575b8015610a64575b8015610a39575b8015610a0d575b156109a757505060045b610641565b60ff9197506109b590610e20565b90549060031b1c1695600a8710156100b4578d60068c98145f146109dc5750506003610641565b60ff9197506109ea90610e20565b90549060031b1c1695600a8710156100b45760038b97036109a257506002610641565b5060ff919750610a1c90610e20565b90549060031b1c1695600a8710156100b4578d60098c9814610998565b5060ff919750610a4890610e20565b90549060031b1c1695600a8710156100b4578d818c9814610991565b5060ff919750610a7390610e20565b90549060031b1c1695600a8710156100b4578d60078c981461098a565b5060ff919750610a9f90610e20565b90549060031b1c1695600a8710156100b4578d60058c9814610983565b5050505050509250610ace5f93610eb1565b6040517f6982eb0b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff89811660048301528716602482015260448101829052909690602081606481895afa90811561076f575f91610b40575b5091610738565b610b59915060203d6020116107685761075a8183610e70565b89610b39565b5060408451101561062c565b604051610b7781610e38565b7f59f4f3510000000000000000000000000000000000000000000000000000000081527f07211ef70000000000000000000000000000000000000000000000000000000060208201527f85f11d1e000000000000000000000000000000000000000000000000000000006040820152926105b9565b506060828051810103126100e157610c0660208301610f67565b916060610c1560408301610f67565b91015180151581036100e15790610537565b5060ff610c338b610e20565b90549060031b1c16600a8110156100b45760061461050d565b5060ff610c588b610e20565b90549060031b1c16600a8110156100b457600314610506565b5050509250610ace5f93610eb1565b506040835110156104d3565b9450505093610c9b9150610eb1565b929061033d565b507f0000000000000000000000000000000000000000000000000000000000000000811061042e565b610ce4915060203d6020116107685761075a8183610e70565b8961040c565b505f806020830151806040850151525f905b808210610d2a576040848480610d19575b82519182526020820152f35b9081610d2491610f9c565b90610d0d565b9091610d3a836040870151610f75565b519360208501948551606481029080820460641490151715610da257610d636064358951610f89565b11610d965791610d85610d8d92610d7f60019551895190610f89565b90611243565b955190611243565b925b0190610cfc565b50935091600190610d8f565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b507f00000000000000000000000000000000000000000000000000000000000000008110610366565b807fccf7e6f70000000000000000000000000000000000000000000000000000000060049252fd5b90600b82101561077a57601f8260051c600b01921690565b6060810190811067ffffffffffffffff82111761089257604052565b60a0810190811067ffffffffffffffff82111761089257604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761089257604052565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610da25760010190565b908160209103126100e1575173ffffffffffffffffffffffffffffffffffffffff811681036100e15790565b3d15610f62573d9067ffffffffffffffff82116108925760405191610f5760207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160184610e70565b82523d5f602084013e565b606090565b519081600f0b82036100e157565b805182101561077a5760209160051b010190565b81810292918115918404141715610da257565b8115610fa6570490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b801561110f5761109d815f908360801c80611103575b508060401c806110f6575b508060201c806110e9575b508060101c806110dc575b508060081c806110cf575b508060041c806110c2575b508060021c806110b5575b50600191828092811c6110ae575b1c1b6110458185610f9c565b01811c6110528185610f9c565b01811c61105f8185610f9c565b01811c61106c8185610f9c565b01811c6110798185610f9c565b01811c6110868185610f9c565b01811c6110938185610f9c565b01901c8092610f9c565b808210156110a9575090565b905090565b0181611039565b600291509101905f61102b565b600491509101905f611020565b600891509101905f611015565b601091509101905f61100a565b602091509101905f610fff565b604091509101905f610ff4565b9150506080905f610fe9565b505f90565b670de0b6b3a764000091828202917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848209938380861095039480860395146111d857848311156111ae57829109815f038216809204600280826003021880830282030280830282030280830282030280830282030280830282030280920290030293600183805f03040190848311900302920304170290565b60046040517f227bc153000000000000000000000000000000000000000000000000000000008152fd5b5050906111e59250610f9c565b90565b90602081019081516111fb575050505f90565b61121c60408401519160208501928351916112168383610f75565b52610f75565b506112278151610eb1565b905251908051821161123b575b5050600190565b525f80611234565b91908201809211610da25756fea2646970667358221220f8ad8e013591e6290fbced5a0543480dbccf93b164bbcc20777d33bc04b28f5a64736f6c63430008170033", - "deployedBytecode": "0x6080806040526004361015610012575f80fd5b5f3560e01c9081633d549b32146101f257508063474004491461019a5780636347c9001461013d57806381358498146100e55763b72529f214610053575f80fd5b346100e15760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100e157600435600b8110156100e15761009960ff91610e20565b90549060031b1c16604051600a8210156100b4576020918152f35b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f80fd5b346100e1575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100e15760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b346100e15760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100e157600435600b8110156100e15773ffffffffffffffffffffffffffffffffffffffff6020915416604051908152f35b346100e1575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100e15760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b346100e15760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100e1576004359073ffffffffffffffffffffffffffffffffffffffff821682036100e1576024359073ffffffffffffffffffffffffffffffffffffffff821682036100e15760443573ffffffffffffffffffffffffffffffffffffffff81168091036100e15773ffffffffffffffffffffffffffffffffffffffff03610df857506060604080516102ae81610e38565b5f81525f602082015201526040519060807f000000000000000000000000000000000000000000000000000000000000000060061b8301016040525f82525f6020830152606082018060408401527f000000000000000000000000000000000000000000000000000000000000000090525f6040805161032d81610e38565b82815282602082015201525f915f925b7f0000000000000000000000000000000000000000000000000000000000000000841080610dcf575b15610cea575f91600b851015918261077a5773ffffffffffffffffffffffffffffffffffffffff865416936040517f6982eb0b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8916600482015273ffffffffffffffffffffffffffffffffffffffff871660248201525f6044820152602081606481895afa90811561076f575f91610ccb575b50915b73ffffffffffffffffffffffffffffffffffffffff8316151580610ca2575b15610c8c5761043c90610eb1565b915f908561077a575f808b60405173ffffffffffffffffffffffffffffffffffffffff60208201927feb85226d000000000000000000000000000000000000000000000000000000008452818716602484015216604482015273ffffffffffffffffffffffffffffffffffffffff8c166064820152606481526104be81610e54565b51908a5afa916104cc610f0a565b9280610c80575b15610c71576104e18a610e20565b905490600a60ff838360031b1c1610156100b45760031b1c60ff166002148015610c4c575b8015610c27575b15610bec576040838051810103126100e157610537604061053060208601610f67565b9401610f67565b81610b6b5760405161054881610e38565b7f92e3cc2d0000000000000000000000000000000000000000000000000000000081527f5e0d443f0000000000000000000000000000000000000000000000000000000060208201527f556d6e9f000000000000000000000000000000000000000000000000000000006040820152925b8861077a575f807fffffffff000000000000000000000000000000000000000000000000000000008651166040516020810191825273ffffffffffffffffffffffffffffffffffffffff851660248201526024815261061781610e38565b51908d5afa92610625610f0a565b9380610b5f575b15610abc57908995949392916008901561094e575b8352600f946fffffffffffffffffffffffffffffffff908181169361068761068261066c8789610f75565b519483169461067b868a610f75565b5190610f89565b610fd3565b976127106106a2858261069a8a8c610f75565b510499610f75565b51048715159081610944575b506107a7575b50505050505050505061077a576106ca90610eb1565b6040517f6982eb0b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff89811660048301528716602482015260448101829052909690602081606481895afa90811561076f575f91610740575b50915b96909661040f565b610762915060203d602011610768575b61075a8183610e70565b810190610ede565b89610735565b503d610750565b6040513d5f823e3d90fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f9283927fffffffff0000000000000000000000000000000000000000000000000000000060208b015116926040519260208401948552810b60248401520b6044820152876064820152606481526107fe81610e54565b5190855afa9261080c610f0a565b9584158015610939575b6108cb575b50505050806108bf575b610835575b8080808080806106b4565b909192506020828051810103126100e1576020610853920151611114565b60405180604081011067ffffffffffffffff604083011117610892578692610889926040830160405282526020820152856111e8565b5089808061082a565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b50602082511015610825565b5f95965085945060407fffffffff0000000000000000000000000000000000000000000000000000000091015116916040519160208301938452602483015260448201528560648201526064815261092281610e54565b51915afa9061092f610f0a565b918d80808061081b565b506020875110610816565b905015155f6106ae565b95506109598d610e20565b96905496600a60ff898360031b1c1610156100b4578b978f9160031b1c60ff166001148015610a90575b8015610a64575b8015610a39575b8015610a0d575b156109a757505060045b610641565b60ff9197506109b590610e20565b90549060031b1c1695600a8710156100b4578d60068c98145f146109dc5750506003610641565b60ff9197506109ea90610e20565b90549060031b1c1695600a8710156100b45760038b97036109a257506002610641565b5060ff919750610a1c90610e20565b90549060031b1c1695600a8710156100b4578d60098c9814610998565b5060ff919750610a4890610e20565b90549060031b1c1695600a8710156100b4578d818c9814610991565b5060ff919750610a7390610e20565b90549060031b1c1695600a8710156100b4578d60078c981461098a565b5060ff919750610a9f90610e20565b90549060031b1c1695600a8710156100b4578d60058c9814610983565b5050505050509250610ace5f93610eb1565b6040517f6982eb0b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff89811660048301528716602482015260448101829052909690602081606481895afa90811561076f575f91610b40575b5091610738565b610b59915060203d6020116107685761075a8183610e70565b89610b39565b5060408451101561062c565b604051610b7781610e38565b7f59f4f3510000000000000000000000000000000000000000000000000000000081527f07211ef70000000000000000000000000000000000000000000000000000000060208201527f85f11d1e000000000000000000000000000000000000000000000000000000006040820152926105b9565b506060828051810103126100e157610c0660208301610f67565b916060610c1560408301610f67565b91015180151581036100e15790610537565b5060ff610c338b610e20565b90549060031b1c16600a8110156100b45760061461050d565b5060ff610c588b610e20565b90549060031b1c16600a8110156100b457600314610506565b5050509250610ace5f93610eb1565b506040835110156104d3565b9450505093610c9b9150610eb1565b929061033d565b507f0000000000000000000000000000000000000000000000000000000000000000811061042e565b610ce4915060203d6020116107685761075a8183610e70565b8961040c565b505f806020830151806040850151525f905b808210610d2a576040848480610d19575b82519182526020820152f35b9081610d2491610f9c565b90610d0d565b9091610d3a836040870151610f75565b519360208501948551606481029080820460641490151715610da257610d636064358951610f89565b11610d965791610d85610d8d92610d7f60019551895190610f89565b90611243565b955190611243565b925b0190610cfc565b50935091600190610d8f565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b507f00000000000000000000000000000000000000000000000000000000000000008110610366565b807fccf7e6f70000000000000000000000000000000000000000000000000000000060049252fd5b90600b82101561077a57601f8260051c600b01921690565b6060810190811067ffffffffffffffff82111761089257604052565b60a0810190811067ffffffffffffffff82111761089257604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761089257604052565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610da25760010190565b908160209103126100e1575173ffffffffffffffffffffffffffffffffffffffff811681036100e15790565b3d15610f62573d9067ffffffffffffffff82116108925760405191610f5760207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160184610e70565b82523d5f602084013e565b606090565b519081600f0b82036100e157565b805182101561077a5760209160051b010190565b81810292918115918404141715610da257565b8115610fa6570490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b801561110f5761109d815f908360801c80611103575b508060401c806110f6575b508060201c806110e9575b508060101c806110dc575b508060081c806110cf575b508060041c806110c2575b508060021c806110b5575b50600191828092811c6110ae575b1c1b6110458185610f9c565b01811c6110528185610f9c565b01811c61105f8185610f9c565b01811c61106c8185610f9c565b01811c6110798185610f9c565b01811c6110868185610f9c565b01811c6110938185610f9c565b01901c8092610f9c565b808210156110a9575090565b905090565b0181611039565b600291509101905f61102b565b600491509101905f611020565b600891509101905f611015565b601091509101905f61100a565b602091509101905f610fff565b604091509101905f610ff4565b9150506080905f610fe9565b505f90565b670de0b6b3a764000091828202917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848209938380861095039480860395146111d857848311156111ae57829109815f038216809204600280826003021880830282030280830282030280830282030280830282030280830282030280920290030293600183805f03040190848311900302920304170290565b60046040517f227bc153000000000000000000000000000000000000000000000000000000008152fd5b5050906111e59250610f9c565b90565b90602081019081516111fb575050505f90565b61121c60408401519160208501928351916112168383610f75565b52610f75565b506112278151610eb1565b905251908051821161123b575b5050600190565b525f80611234565b91908201809211610da25756fea2646970667358221220f8ad8e013591e6290fbced5a0543480dbccf93b164bbcc20777d33bc04b28f5a64736f6c63430008170033" + "bytecode": "0x60c080604052346100e85760408161101b803803809161001f82856100ff565b8339810103126100e85780516001600160a01b038082169290918390036100e8576020806024920151936040519283809263124fd3dd60e21b8252600760048301525afa9081156100f4575f916100b5575b501660805260a052604051610ee4908161013782396080518181816101660152818161040e0152818161058d015261062d015260a05181818160720152610a8a0152f35b90506020813d6020116100ec575b816100d0602093836100ff565b810103126100e8575181811681036100e8575f610071565b5f80fd5b3d91506100c3565b6040513d5f823e3d90fd5b601f909101601f19168101906001600160401b0382119082101761012257604052565b634e487b7160e01b5f52604160045260245ffdfe6080806040526004361015610012575f80fd5b5f3560e01c9081630caeeb241461011e575080633d549b32146100995763813584981461003d575f80fd5b34610095575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100955760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b5f80fd5b346100955760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100955773ffffffffffffffffffffffffffffffffffffffff600435818116810361009557602435908282168203610095576044359283168303610095576040926101129260643592610375565b82519182526020820152f35b34610095575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100955760209073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b6040810190811067ffffffffffffffff8211176101a657604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176101a657604052565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146102415760010190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b80518210156102825760209160051b010190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b519081600f0b820361009557565b9060088110156102825760051b0190565b3d15610326573d9067ffffffffffffffff82116101a6576040519161031b60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601846101d3565b82523d5f602084013e565b606090565b8181029291811591840414171561024157565b8115610348570490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b9173ffffffffffffffffffffffffffffffffffffffff80911603610c0e57604051917fa064072b00000000000000000000000000000000000000000000000000000000835273ffffffffffffffffffffffffffffffffffffffff8116600484015273ffffffffffffffffffffffffffffffffffffffff821660248401525f8360448173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa928315610967575f93610b5e575b50825115610b545773ffffffffffffffffffffffffffffffffffffffff811673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee03610aaf57670de0b6b3a7640000915b8351956040516060810181811067ffffffffffffffff8211176101a65760609160409182525f81525f602082015201526040519660808160061b8901016040525f88525f602089015260608801604089015260608801525f5b8551811080610a82575b156109ca5773ffffffffffffffffffffffffffffffffffffffff610509828861026e565b511690604051917feb85226d000000000000000000000000000000000000000000000000000000008352600483015273ffffffffffffffffffffffffffffffffffffffff8516602483015273ffffffffffffffffffffffffffffffffffffffff8416604483015260608260648173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa8015610967575f925f905f92610972575b5073ffffffffffffffffffffffffffffffffffffffff6105e0848b61026e565b511690604051917f59f4f35100000000000000000000000000000000000000000000000000000000835260048301526101008260248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa918215610967575f926108cd575b506fffffffffffffffffffffffffffffffff928a8a61067e868916866102bd565b51118015906108b9575b6108aa576106b773ffffffffffffffffffffffffffffffffffffffff6106b08860ff9461026e565b5116610c38565b16159081806108a3575b156108425750507f07211ef7000000000000000000000000000000000000000000000000000000005b73ffffffffffffffffffffffffffffffffffffffff610709868d61026e565b5116604051916020830152848716602483015284831660448301528a6064830152606482528160a081011067ffffffffffffffff60a0840111176101a657815f929160a0849301604052602082519201905afa6107646102ce565b9080610836575b610783575b5050505061077e9150610214565b6104db565b602081805181010312610095576020015180159283156107a4575b50610770565b670de0b6b3a76400009382858102048514171561024157846107dd6107f2966107d58e6107ed986107e6970261033e565b9916836102bd565b519316906102bd565b519061032b565b610d05565b9160405180604081011067ffffffffffffffff6040830111176101a65761077e9361082b9260408301604052825260208201528a610e46565b505f8080808061079e565b5060208151101561076b565b8161089a575b5015610874577f5e0d443f000000000000000000000000000000000000000000000000000000006106ea565b7f556d6e9f000000000000000000000000000000000000000000000000000000006106ea565b9050155f610848565b50806106c1565b505050505061077e9150610214565b506108c6858416856102bd565b5115610688565b909150610100903d6101001161095f575b6108e882826101d3565b61010081838101031261009557818101601f8201121561009557604051918261010081011067ffffffffffffffff610100850111176101a6576101008301604052829082016101008301116100955781905b6101008301821061094f57505050905f61065d565b815181526020918201910161093a565b3d91506108de565b6040513d5f823e3d90fd5b935050506060823d6060116109c2575b8161098f606093836101d3565b81010312610095576109a0826102af565b60406109ae602085016102af565b93015190811515820361009557925f6105c0565b3d9150610982565b50949593505050505f905f936020820151806040840151525f925b818410610a08575050505082806109fb57509190565b610a049161033e565b9190565b90919295610a1a87604084015161026e565b51946020860195865160649081810291818304149015171561024157610a4187865161032b565b11610a765791610a63610a6b92610a5d600195518a519061032b565b90610ea1565b965190610ea1565b965b019291906109e5565b50945095600190610a6d565b5060208801517f0000000000000000000000000000000000000000000000000000000000000000116104e5565b6040517f313ce56700000000000000000000000000000000000000000000000000000000815260208160048173ffffffffffffffffffffffffffffffffffffffff86165afa8015610967575f90610b17575b60ff915016604d811161024157600a0a91610482565b506020813d602011610b4c575b81610b31602093836101d3565b81010312610095575160ff811681036100955760ff90610b01565b3d9150610b24565b505050505f905f90565b9092503d805f833e610b7081836101d3565b8101602090818382031261009557825167ffffffffffffffff93848211610095570181601f820112156100955780519384116101a6578360051b9060405194610bbb858401876101d3565b85528380860192820101928311610095578301905b828210610be25750505050915f61043e565b815173ffffffffffffffffffffffffffffffffffffffff81168103610095578152908301908301610bd0565b60046040517fccf7e6f7000000000000000000000000000000000000000000000000000000008152fd5b5f8060405160208101907f49fe9e7700000000000000000000000000000000000000000000000000000000825260048152610c728161018a565b5190845afa610c7f6102ce565b81610cf8575b50610cf2575f809160405160208101907f095a0fc600000000000000000000000000000000000000000000000000000000825260048152610cc58161018a565b51915afa610cd16102ce565b81610ce5575b50610ce0575f90565b600290565b602091505110155f610cd7565b50600190565b602091505110155f610c85565b8015610e4157610dcf815f908360801c80610e35575b508060401c80610e28575b508060201c80610e1b575b508060101c80610e0e575b508060081c80610e01575b508060041c80610df4575b508060021c80610de7575b50600191828092811c610de0575b1c1b610d77818561033e565b01811c610d84818561033e565b01811c610d91818561033e565b01811c610d9e818561033e565b01811c610dab818561033e565b01811c610db8818561033e565b01811c610dc5818561033e565b01901c809261033e565b80821015610ddb575090565b905090565b0181610d6b565b600291509101905f610d5d565b600491509101905f610d52565b600891509101905f610d47565b601091509101905f610d3c565b602091509101905f610d31565b604091509101905f610d26565b9150506080905f610d1b565b505f90565b9060208101908151610e59575050505f90565b610e7a6040840151916020850192835191610e74838361026e565b5261026e565b50610e858151610214565b9052519080518211610e99575b5050600190565b525f80610e92565b919082018092116102415756fea2646970667358221220a81ff33c7895af4540da6504953e168cd75a11fa971e7fd306cabb70b1febaea64736f6c63430008170033", + "deployedBytecode": "0x6080806040526004361015610012575f80fd5b5f3560e01c9081630caeeb241461011e575080633d549b32146100995763813584981461003d575f80fd5b34610095575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100955760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b5f80fd5b346100955760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100955773ffffffffffffffffffffffffffffffffffffffff600435818116810361009557602435908282168203610095576044359283168303610095576040926101129260643592610375565b82519182526020820152f35b34610095575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100955760209073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b6040810190811067ffffffffffffffff8211176101a657604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176101a657604052565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146102415760010190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b80518210156102825760209160051b010190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b519081600f0b820361009557565b9060088110156102825760051b0190565b3d15610326573d9067ffffffffffffffff82116101a6576040519161031b60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601846101d3565b82523d5f602084013e565b606090565b8181029291811591840414171561024157565b8115610348570490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b9173ffffffffffffffffffffffffffffffffffffffff80911603610c0e57604051917fa064072b00000000000000000000000000000000000000000000000000000000835273ffffffffffffffffffffffffffffffffffffffff8116600484015273ffffffffffffffffffffffffffffffffffffffff821660248401525f8360448173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa928315610967575f93610b5e575b50825115610b545773ffffffffffffffffffffffffffffffffffffffff811673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee03610aaf57670de0b6b3a7640000915b8351956040516060810181811067ffffffffffffffff8211176101a65760609160409182525f81525f602082015201526040519660808160061b8901016040525f88525f602089015260608801604089015260608801525f5b8551811080610a82575b156109ca5773ffffffffffffffffffffffffffffffffffffffff610509828861026e565b511690604051917feb85226d000000000000000000000000000000000000000000000000000000008352600483015273ffffffffffffffffffffffffffffffffffffffff8516602483015273ffffffffffffffffffffffffffffffffffffffff8416604483015260608260648173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa8015610967575f925f905f92610972575b5073ffffffffffffffffffffffffffffffffffffffff6105e0848b61026e565b511690604051917f59f4f35100000000000000000000000000000000000000000000000000000000835260048301526101008260248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa918215610967575f926108cd575b506fffffffffffffffffffffffffffffffff928a8a61067e868916866102bd565b51118015906108b9575b6108aa576106b773ffffffffffffffffffffffffffffffffffffffff6106b08860ff9461026e565b5116610c38565b16159081806108a3575b156108425750507f07211ef7000000000000000000000000000000000000000000000000000000005b73ffffffffffffffffffffffffffffffffffffffff610709868d61026e565b5116604051916020830152848716602483015284831660448301528a6064830152606482528160a081011067ffffffffffffffff60a0840111176101a657815f929160a0849301604052602082519201905afa6107646102ce565b9080610836575b610783575b5050505061077e9150610214565b6104db565b602081805181010312610095576020015180159283156107a4575b50610770565b670de0b6b3a76400009382858102048514171561024157846107dd6107f2966107d58e6107ed986107e6970261033e565b9916836102bd565b519316906102bd565b519061032b565b610d05565b9160405180604081011067ffffffffffffffff6040830111176101a65761077e9361082b9260408301604052825260208201528a610e46565b505f8080808061079e565b5060208151101561076b565b8161089a575b5015610874577f5e0d443f000000000000000000000000000000000000000000000000000000006106ea565b7f556d6e9f000000000000000000000000000000000000000000000000000000006106ea565b9050155f610848565b50806106c1565b505050505061077e9150610214565b506108c6858416856102bd565b5115610688565b909150610100903d6101001161095f575b6108e882826101d3565b61010081838101031261009557818101601f8201121561009557604051918261010081011067ffffffffffffffff610100850111176101a6576101008301604052829082016101008301116100955781905b6101008301821061094f57505050905f61065d565b815181526020918201910161093a565b3d91506108de565b6040513d5f823e3d90fd5b935050506060823d6060116109c2575b8161098f606093836101d3565b81010312610095576109a0826102af565b60406109ae602085016102af565b93015190811515820361009557925f6105c0565b3d9150610982565b50949593505050505f905f936020820151806040840151525f925b818410610a08575050505082806109fb57509190565b610a049161033e565b9190565b90919295610a1a87604084015161026e565b51946020860195865160649081810291818304149015171561024157610a4187865161032b565b11610a765791610a63610a6b92610a5d600195518a519061032b565b90610ea1565b965190610ea1565b965b019291906109e5565b50945095600190610a6d565b5060208801517f0000000000000000000000000000000000000000000000000000000000000000116104e5565b6040517f313ce56700000000000000000000000000000000000000000000000000000000815260208160048173ffffffffffffffffffffffffffffffffffffffff86165afa8015610967575f90610b17575b60ff915016604d811161024157600a0a91610482565b506020813d602011610b4c575b81610b31602093836101d3565b81010312610095575160ff811681036100955760ff90610b01565b3d9150610b24565b505050505f905f90565b9092503d805f833e610b7081836101d3565b8101602090818382031261009557825167ffffffffffffffff93848211610095570181601f820112156100955780519384116101a6578360051b9060405194610bbb858401876101d3565b85528380860192820101928311610095578301905b828210610be25750505050915f61043e565b815173ffffffffffffffffffffffffffffffffffffffff81168103610095578152908301908301610bd0565b60046040517fccf7e6f7000000000000000000000000000000000000000000000000000000008152fd5b5f8060405160208101907f49fe9e7700000000000000000000000000000000000000000000000000000000825260048152610c728161018a565b5190845afa610c7f6102ce565b81610cf8575b50610cf2575f809160405160208101907f095a0fc600000000000000000000000000000000000000000000000000000000825260048152610cc58161018a565b51915afa610cd16102ce565b81610ce5575b50610ce0575f90565b600290565b602091505110155f610cd7565b50600190565b602091505110155f610c85565b8015610e4157610dcf815f908360801c80610e35575b508060401c80610e28575b508060201c80610e1b575b508060101c80610e0e575b508060081c80610e01575b508060041c80610df4575b508060021c80610de7575b50600191828092811c610de0575b1c1b610d77818561033e565b01811c610d84818561033e565b01811c610d91818561033e565b01811c610d9e818561033e565b01811c610dab818561033e565b01811c610db8818561033e565b01811c610dc5818561033e565b01901c809261033e565b80821015610ddb575090565b905090565b0181610d6b565b600291509101905f610d5d565b600491509101905f610d52565b600891509101905f610d47565b601091509101905f610d3c565b602091509101905f610d31565b604091509101905f610d26565b9150506080905f610d1b565b505f90565b9060208101908151610e59575050505f90565b610e7a6040840151916020850192835191610e74838361026e565b5261026e565b50610e858151610214565b9052519080518211610e99575b5050600190565b525f80610e92565b919082018092116102415756fea2646970667358221220a81ff33c7895af4540da6504953e168cd75a11fa971e7fd306cabb70b1febaea64736f6c63430008170033" } \ No newline at end of file From d5ba247cf9f49eb806e639c35d142fc1f4368a41 Mon Sep 17 00:00:00 2001 From: Denis Date: Wed, 14 Aug 2024 16:57:08 +0100 Subject: [PATCH 3/8] Deploy on optimistic --- README.md | 2 +- deployments/optimistic/CurveOracle.json | 100 +++++------------------- 2 files changed, 20 insertions(+), 82 deletions(-) diff --git a/README.md b/README.md index 80dcfff..4881a42 100644 --- a/README.md +++ b/README.md @@ -198,7 +198,7 @@ If no direct liquidity pair exists between two tokens, the spot price aggregator * VelodromeV2 - [0xD4eFb5998DFBDFB791182fb610D0061136E9DB50](https://optimistic.etherscan.io/address/0xD4eFb5998DFBDFB791182fb610D0061136E9DB50) * Synthetix - [0xb7EF687B322910f3315F91f9F4B9b4B77219ddb4](https://optimistic.etherscan.io/address/0xb7EF687B322910f3315F91f9F4B9b4B77219ddb4) * Slipstream - [0xeD55d76Bb48E042a177d1E21AffBe1B72d0c7dB0](https://optimistic.etherscan.io/address/0xeD55d76Bb48E042a177d1E21AffBe1B72d0c7dB0) - * Curve - [0x0bA0D1B119d8a8E193e2802c2C7Ef1BDfAdddc49](https://optimistic.etherscan.io/address/0x0bA0D1B119d8a8E193e2802c2C7Ef1BDfAdddc49) + * Curve - [0x4e5Cee3B8Af0CB46EFAA94Cba5E0f25f8770BB19](https://optimistic.etherscan.io/address/0x4e5Cee3B8Af0CB46EFAA94Cba5E0f25f8770BB19) diff --git a/deployments/optimistic/CurveOracle.json b/deployments/optimistic/CurveOracle.json index 8b15cc6..f22fe51 100644 --- a/deployments/optimistic/CurveOracle.json +++ b/deployments/optimistic/CurveOracle.json @@ -1,27 +1,17 @@ { - "address": "0x0bA0D1B119d8a8E193e2802c2C7Ef1BDfAdddc49", + "address": "0x4e5Cee3B8Af0CB46EFAA94Cba5E0f25f8770BB19", "abi": [ { "inputs": [ { "internalType": "contract ICurveProvider", - "name": "_addressProvider", + "name": "curveProvider", "type": "address" }, { "internalType": "uint256", - "name": "_maxPools", + "name": "maxPools", "type": "uint256" - }, - { - "internalType": "uint256[]", - "name": "_registryIds", - "type": "uint256[]" - }, - { - "internalType": "enum CurveOracle.CurveRegistryType[]", - "name": "_registryTypes", - "type": "uint8[]" } ], "stateMutability": "nonpayable", @@ -32,11 +22,6 @@ "name": "ConnectorShouldBeNone", "type": "error" }, - { - "inputs": [], - "name": "MathOverflowedMulDiv", - "type": "error" - }, { "inputs": [], "name": "PoolNotFound", @@ -49,12 +34,12 @@ }, { "inputs": [], - "name": "MAX_POOLS", + "name": "CURVE_METAREGISTRY", "outputs": [ { - "internalType": "uint256", + "internalType": "contract ICurveMetaregistry", "name": "", - "type": "uint256" + "type": "address" } ], "stateMutability": "view", @@ -62,7 +47,7 @@ }, { "inputs": [], - "name": "REGISTRIES_COUNT", + "name": "MAX_POOLS", "outputs": [ { "internalType": "uint256", @@ -111,75 +96,28 @@ ], "stateMutability": "view", "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "registries", - "outputs": [ - { - "internalType": "contract ICurveRegistry", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "registryTypes", - "outputs": [ - { - "internalType": "enum CurveOracle.CurveRegistryType", - "name": "", - "type": "uint8" - } - ], - "stateMutability": "view", - "type": "function" } ], + "transactionHash": "0xa63de35aaae933db7f28c6ede7976318e03294c3d1cfba9dc762c1bd78c01a6d", "receipt": { "to": "0xD935a2bb926019E0ed6fb31fbD5b1Bbb7c05bf65", "from": "0x56E44874F624EbDE6efCc783eFD685f0FBDC6dcF", "contractAddress": null, - "gasUsed": "1260456", + "transactionIndex": 7, + "gasUsed": "928882", "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "blockHash": "0x58b6975130b2f7a365b353d5c269fcd64b92a18a89812edc5da12781b01d97de", + "blockHash": "0x61c95aa754bf48d030e6e2c60612448064cb75cd2d2828c440a3a0ae952f807c", + "transactionHash": "0xa63de35aaae933db7f28c6ede7976318e03294c3d1cfba9dc762c1bd78c01a6d", "logs": [], - "blockNumber": 118925341, - "cumulativeGasUsed": "2880440", + "blockNumber": 124026025, + "cumulativeGasUsed": "1697380", "status": 1 }, "args": [ - "0x0000000022d53366457f9d5e68ec105046fc4383", - 100, - [ - 0, - 3, - 5, - 6 - ], - [ - 0, - 7, - 2, - 9 - ] + "0x5ffe7FB82894076ECB99A30D6A32e969e6e35E98", + 100 ], - "numDeployments": 1, - "bytecode": "0x60c06040818152346200022a57620015af8038038091620000218286620002af565b84398201906080838303126200022a5782516001600160a01b039283821692918390036200022a57602085810151838701516001600160401b039692939291908781116200022a5788019683601f890112156200022a57875198620000868a620002e7565b986200009588519a8b620002af565b8a8a52868a018760059c60051b830101918783116200022a5788809101915b8383106200029e575050505060608101519182116200022a57019280601f850112156200022a578351620000e881620002e7565b94620000f788519687620002af565b818652868087019260051b8201019283116200022a578601905b828210620002845750505060805285519560a09660a0525f5b87518110156200024057620001408183620002ff565b51865163124fd3dd60e21b8152600491828201526024878282818d5afa91821562000236575f92620001f3575b50600b9182851015620001e05784546001600160a01b031916908716178455620001988488620002ff565b5192600a841015620001cf5750509082916001938c1c0190815460f88460031b169160ff809116831b921b1916179055016200012a565b602190634e487b7160e01b5f52525ffd5b50634e487b7160e01b5f90815260328452fd5b9091508781813d83116200022e575b6200020e8183620002af565b810103126200022a575185811681036200022a57905f6200016d565b5f80fd5b503d62000202565b89513d5f823e3d90fd5b8551611286908162000329823960805181818161011a015281816102c1015281816102fe01528181610ca50152610dd2015260a0518181816101cf015261033f0152f35b8151600a8110156200022a57815290860190860162000111565b8251815291810191899101620000b4565b601f909101601f19168101906001600160401b03821190821017620002d357604052565b634e487b7160e01b5f52604160045260245ffd5b6001600160401b038111620002d35760051b60200190565b8051821015620003145760209160051b010190565b634e487b7160e01b5f52603260045260245ffdfe6080806040526004361015610012575f80fd5b5f3560e01c9081633d549b32146101f257508063474004491461019a5780636347c9001461013d57806381358498146100e55763b72529f214610053575f80fd5b346100e15760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100e157600435600b8110156100e15761009960ff91610e20565b90549060031b1c16604051600a8210156100b4576020918152f35b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f80fd5b346100e1575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100e15760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b346100e15760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100e157600435600b8110156100e15773ffffffffffffffffffffffffffffffffffffffff6020915416604051908152f35b346100e1575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100e15760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b346100e15760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100e1576004359073ffffffffffffffffffffffffffffffffffffffff821682036100e1576024359073ffffffffffffffffffffffffffffffffffffffff821682036100e15760443573ffffffffffffffffffffffffffffffffffffffff81168091036100e15773ffffffffffffffffffffffffffffffffffffffff03610df857506060604080516102ae81610e38565b5f81525f602082015201526040519060807f000000000000000000000000000000000000000000000000000000000000000060061b8301016040525f82525f6020830152606082018060408401527f000000000000000000000000000000000000000000000000000000000000000090525f6040805161032d81610e38565b82815282602082015201525f915f925b7f0000000000000000000000000000000000000000000000000000000000000000841080610dcf575b15610cea575f91600b851015918261077a5773ffffffffffffffffffffffffffffffffffffffff865416936040517f6982eb0b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8916600482015273ffffffffffffffffffffffffffffffffffffffff871660248201525f6044820152602081606481895afa90811561076f575f91610ccb575b50915b73ffffffffffffffffffffffffffffffffffffffff8316151580610ca2575b15610c8c5761043c90610eb1565b915f908561077a575f808b60405173ffffffffffffffffffffffffffffffffffffffff60208201927feb85226d000000000000000000000000000000000000000000000000000000008452818716602484015216604482015273ffffffffffffffffffffffffffffffffffffffff8c166064820152606481526104be81610e54565b51908a5afa916104cc610f0a565b9280610c80575b15610c71576104e18a610e20565b905490600a60ff838360031b1c1610156100b45760031b1c60ff166002148015610c4c575b8015610c27575b15610bec576040838051810103126100e157610537604061053060208601610f67565b9401610f67565b81610b6b5760405161054881610e38565b7f92e3cc2d0000000000000000000000000000000000000000000000000000000081527f5e0d443f0000000000000000000000000000000000000000000000000000000060208201527f556d6e9f000000000000000000000000000000000000000000000000000000006040820152925b8861077a575f807fffffffff000000000000000000000000000000000000000000000000000000008651166040516020810191825273ffffffffffffffffffffffffffffffffffffffff851660248201526024815261061781610e38565b51908d5afa92610625610f0a565b9380610b5f575b15610abc57908995949392916008901561094e575b8352600f946fffffffffffffffffffffffffffffffff908181169361068761068261066c8789610f75565b519483169461067b868a610f75565b5190610f89565b610fd3565b976127106106a2858261069a8a8c610f75565b510499610f75565b51048715159081610944575b506107a7575b50505050505050505061077a576106ca90610eb1565b6040517f6982eb0b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff89811660048301528716602482015260448101829052909690602081606481895afa90811561076f575f91610740575b50915b96909661040f565b610762915060203d602011610768575b61075a8183610e70565b810190610ede565b89610735565b503d610750565b6040513d5f823e3d90fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f9283927fffffffff0000000000000000000000000000000000000000000000000000000060208b015116926040519260208401948552810b60248401520b6044820152876064820152606481526107fe81610e54565b5190855afa9261080c610f0a565b9584158015610939575b6108cb575b50505050806108bf575b610835575b8080808080806106b4565b909192506020828051810103126100e1576020610853920151611114565b60405180604081011067ffffffffffffffff604083011117610892578692610889926040830160405282526020820152856111e8565b5089808061082a565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b50602082511015610825565b5f95965085945060407fffffffff0000000000000000000000000000000000000000000000000000000091015116916040519160208301938452602483015260448201528560648201526064815261092281610e54565b51915afa9061092f610f0a565b918d80808061081b565b506020875110610816565b905015155f6106ae565b95506109598d610e20565b96905496600a60ff898360031b1c1610156100b4578b978f9160031b1c60ff166001148015610a90575b8015610a64575b8015610a39575b8015610a0d575b156109a757505060045b610641565b60ff9197506109b590610e20565b90549060031b1c1695600a8710156100b4578d60068c98145f146109dc5750506003610641565b60ff9197506109ea90610e20565b90549060031b1c1695600a8710156100b45760038b97036109a257506002610641565b5060ff919750610a1c90610e20565b90549060031b1c1695600a8710156100b4578d60098c9814610998565b5060ff919750610a4890610e20565b90549060031b1c1695600a8710156100b4578d818c9814610991565b5060ff919750610a7390610e20565b90549060031b1c1695600a8710156100b4578d60078c981461098a565b5060ff919750610a9f90610e20565b90549060031b1c1695600a8710156100b4578d60058c9814610983565b5050505050509250610ace5f93610eb1565b6040517f6982eb0b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff89811660048301528716602482015260448101829052909690602081606481895afa90811561076f575f91610b40575b5091610738565b610b59915060203d6020116107685761075a8183610e70565b89610b39565b5060408451101561062c565b604051610b7781610e38565b7f59f4f3510000000000000000000000000000000000000000000000000000000081527f07211ef70000000000000000000000000000000000000000000000000000000060208201527f85f11d1e000000000000000000000000000000000000000000000000000000006040820152926105b9565b506060828051810103126100e157610c0660208301610f67565b916060610c1560408301610f67565b91015180151581036100e15790610537565b5060ff610c338b610e20565b90549060031b1c16600a8110156100b45760061461050d565b5060ff610c588b610e20565b90549060031b1c16600a8110156100b457600314610506565b5050509250610ace5f93610eb1565b506040835110156104d3565b9450505093610c9b9150610eb1565b929061033d565b507f0000000000000000000000000000000000000000000000000000000000000000811061042e565b610ce4915060203d6020116107685761075a8183610e70565b8961040c565b505f806020830151806040850151525f905b808210610d2a576040848480610d19575b82519182526020820152f35b9081610d2491610f9c565b90610d0d565b9091610d3a836040870151610f75565b519360208501948551606481029080820460641490151715610da257610d636064358951610f89565b11610d965791610d85610d8d92610d7f60019551895190610f89565b90611243565b955190611243565b925b0190610cfc565b50935091600190610d8f565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b507f00000000000000000000000000000000000000000000000000000000000000008110610366565b807fccf7e6f70000000000000000000000000000000000000000000000000000000060049252fd5b90600b82101561077a57601f8260051c600b01921690565b6060810190811067ffffffffffffffff82111761089257604052565b60a0810190811067ffffffffffffffff82111761089257604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761089257604052565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610da25760010190565b908160209103126100e1575173ffffffffffffffffffffffffffffffffffffffff811681036100e15790565b3d15610f62573d9067ffffffffffffffff82116108925760405191610f5760207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160184610e70565b82523d5f602084013e565b606090565b519081600f0b82036100e157565b805182101561077a5760209160051b010190565b81810292918115918404141715610da257565b8115610fa6570490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b801561110f5761109d815f908360801c80611103575b508060401c806110f6575b508060201c806110e9575b508060101c806110dc575b508060081c806110cf575b508060041c806110c2575b508060021c806110b5575b50600191828092811c6110ae575b1c1b6110458185610f9c565b01811c6110528185610f9c565b01811c61105f8185610f9c565b01811c61106c8185610f9c565b01811c6110798185610f9c565b01811c6110868185610f9c565b01811c6110938185610f9c565b01901c8092610f9c565b808210156110a9575090565b905090565b0181611039565b600291509101905f61102b565b600491509101905f611020565b600891509101905f611015565b601091509101905f61100a565b602091509101905f610fff565b604091509101905f610ff4565b9150506080905f610fe9565b505f90565b670de0b6b3a764000091828202917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848209938380861095039480860395146111d857848311156111ae57829109815f038216809204600280826003021880830282030280830282030280830282030280830282030280830282030280920290030293600183805f03040190848311900302920304170290565b60046040517f227bc153000000000000000000000000000000000000000000000000000000008152fd5b5050906111e59250610f9c565b90565b90602081019081516111fb575050505f90565b61121c60408401519160208501928351916112168383610f75565b52610f75565b506112278151610eb1565b905251908051821161123b575b5050600190565b525f80611234565b91908201809211610da25756fea2646970667358221220f8ad8e013591e6290fbced5a0543480dbccf93b164bbcc20777d33bc04b28f5a64736f6c63430008170033", - "deployedBytecode": "0x6080806040526004361015610012575f80fd5b5f3560e01c9081633d549b32146101f257508063474004491461019a5780636347c9001461013d57806381358498146100e55763b72529f214610053575f80fd5b346100e15760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100e157600435600b8110156100e15761009960ff91610e20565b90549060031b1c16604051600a8210156100b4576020918152f35b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f80fd5b346100e1575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100e15760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b346100e15760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100e157600435600b8110156100e15773ffffffffffffffffffffffffffffffffffffffff6020915416604051908152f35b346100e1575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100e15760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b346100e15760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100e1576004359073ffffffffffffffffffffffffffffffffffffffff821682036100e1576024359073ffffffffffffffffffffffffffffffffffffffff821682036100e15760443573ffffffffffffffffffffffffffffffffffffffff81168091036100e15773ffffffffffffffffffffffffffffffffffffffff03610df857506060604080516102ae81610e38565b5f81525f602082015201526040519060807f000000000000000000000000000000000000000000000000000000000000000060061b8301016040525f82525f6020830152606082018060408401527f000000000000000000000000000000000000000000000000000000000000000090525f6040805161032d81610e38565b82815282602082015201525f915f925b7f0000000000000000000000000000000000000000000000000000000000000000841080610dcf575b15610cea575f91600b851015918261077a5773ffffffffffffffffffffffffffffffffffffffff865416936040517f6982eb0b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8916600482015273ffffffffffffffffffffffffffffffffffffffff871660248201525f6044820152602081606481895afa90811561076f575f91610ccb575b50915b73ffffffffffffffffffffffffffffffffffffffff8316151580610ca2575b15610c8c5761043c90610eb1565b915f908561077a575f808b60405173ffffffffffffffffffffffffffffffffffffffff60208201927feb85226d000000000000000000000000000000000000000000000000000000008452818716602484015216604482015273ffffffffffffffffffffffffffffffffffffffff8c166064820152606481526104be81610e54565b51908a5afa916104cc610f0a565b9280610c80575b15610c71576104e18a610e20565b905490600a60ff838360031b1c1610156100b45760031b1c60ff166002148015610c4c575b8015610c27575b15610bec576040838051810103126100e157610537604061053060208601610f67565b9401610f67565b81610b6b5760405161054881610e38565b7f92e3cc2d0000000000000000000000000000000000000000000000000000000081527f5e0d443f0000000000000000000000000000000000000000000000000000000060208201527f556d6e9f000000000000000000000000000000000000000000000000000000006040820152925b8861077a575f807fffffffff000000000000000000000000000000000000000000000000000000008651166040516020810191825273ffffffffffffffffffffffffffffffffffffffff851660248201526024815261061781610e38565b51908d5afa92610625610f0a565b9380610b5f575b15610abc57908995949392916008901561094e575b8352600f946fffffffffffffffffffffffffffffffff908181169361068761068261066c8789610f75565b519483169461067b868a610f75565b5190610f89565b610fd3565b976127106106a2858261069a8a8c610f75565b510499610f75565b51048715159081610944575b506107a7575b50505050505050505061077a576106ca90610eb1565b6040517f6982eb0b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff89811660048301528716602482015260448101829052909690602081606481895afa90811561076f575f91610740575b50915b96909661040f565b610762915060203d602011610768575b61075a8183610e70565b810190610ede565b89610735565b503d610750565b6040513d5f823e3d90fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f9283927fffffffff0000000000000000000000000000000000000000000000000000000060208b015116926040519260208401948552810b60248401520b6044820152876064820152606481526107fe81610e54565b5190855afa9261080c610f0a565b9584158015610939575b6108cb575b50505050806108bf575b610835575b8080808080806106b4565b909192506020828051810103126100e1576020610853920151611114565b60405180604081011067ffffffffffffffff604083011117610892578692610889926040830160405282526020820152856111e8565b5089808061082a565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b50602082511015610825565b5f95965085945060407fffffffff0000000000000000000000000000000000000000000000000000000091015116916040519160208301938452602483015260448201528560648201526064815261092281610e54565b51915afa9061092f610f0a565b918d80808061081b565b506020875110610816565b905015155f6106ae565b95506109598d610e20565b96905496600a60ff898360031b1c1610156100b4578b978f9160031b1c60ff166001148015610a90575b8015610a64575b8015610a39575b8015610a0d575b156109a757505060045b610641565b60ff9197506109b590610e20565b90549060031b1c1695600a8710156100b4578d60068c98145f146109dc5750506003610641565b60ff9197506109ea90610e20565b90549060031b1c1695600a8710156100b45760038b97036109a257506002610641565b5060ff919750610a1c90610e20565b90549060031b1c1695600a8710156100b4578d60098c9814610998565b5060ff919750610a4890610e20565b90549060031b1c1695600a8710156100b4578d818c9814610991565b5060ff919750610a7390610e20565b90549060031b1c1695600a8710156100b4578d60078c981461098a565b5060ff919750610a9f90610e20565b90549060031b1c1695600a8710156100b4578d60058c9814610983565b5050505050509250610ace5f93610eb1565b6040517f6982eb0b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff89811660048301528716602482015260448101829052909690602081606481895afa90811561076f575f91610b40575b5091610738565b610b59915060203d6020116107685761075a8183610e70565b89610b39565b5060408451101561062c565b604051610b7781610e38565b7f59f4f3510000000000000000000000000000000000000000000000000000000081527f07211ef70000000000000000000000000000000000000000000000000000000060208201527f85f11d1e000000000000000000000000000000000000000000000000000000006040820152926105b9565b506060828051810103126100e157610c0660208301610f67565b916060610c1560408301610f67565b91015180151581036100e15790610537565b5060ff610c338b610e20565b90549060031b1c16600a8110156100b45760061461050d565b5060ff610c588b610e20565b90549060031b1c16600a8110156100b457600314610506565b5050509250610ace5f93610eb1565b506040835110156104d3565b9450505093610c9b9150610eb1565b929061033d565b507f0000000000000000000000000000000000000000000000000000000000000000811061042e565b610ce4915060203d6020116107685761075a8183610e70565b8961040c565b505f806020830151806040850151525f905b808210610d2a576040848480610d19575b82519182526020820152f35b9081610d2491610f9c565b90610d0d565b9091610d3a836040870151610f75565b519360208501948551606481029080820460641490151715610da257610d636064358951610f89565b11610d965791610d85610d8d92610d7f60019551895190610f89565b90611243565b955190611243565b925b0190610cfc565b50935091600190610d8f565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b507f00000000000000000000000000000000000000000000000000000000000000008110610366565b807fccf7e6f70000000000000000000000000000000000000000000000000000000060049252fd5b90600b82101561077a57601f8260051c600b01921690565b6060810190811067ffffffffffffffff82111761089257604052565b60a0810190811067ffffffffffffffff82111761089257604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761089257604052565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610da25760010190565b908160209103126100e1575173ffffffffffffffffffffffffffffffffffffffff811681036100e15790565b3d15610f62573d9067ffffffffffffffff82116108925760405191610f5760207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160184610e70565b82523d5f602084013e565b606090565b519081600f0b82036100e157565b805182101561077a5760209160051b010190565b81810292918115918404141715610da257565b8115610fa6570490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b801561110f5761109d815f908360801c80611103575b508060401c806110f6575b508060201c806110e9575b508060101c806110dc575b508060081c806110cf575b508060041c806110c2575b508060021c806110b5575b50600191828092811c6110ae575b1c1b6110458185610f9c565b01811c6110528185610f9c565b01811c61105f8185610f9c565b01811c61106c8185610f9c565b01811c6110798185610f9c565b01811c6110868185610f9c565b01811c6110938185610f9c565b01901c8092610f9c565b808210156110a9575090565b905090565b0181611039565b600291509101905f61102b565b600491509101905f611020565b600891509101905f611015565b601091509101905f61100a565b602091509101905f610fff565b604091509101905f610ff4565b9150506080905f610fe9565b505f90565b670de0b6b3a764000091828202917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848209938380861095039480860395146111d857848311156111ae57829109815f038216809204600280826003021880830282030280830282030280830282030280830282030280830282030280920290030293600183805f03040190848311900302920304170290565b60046040517f227bc153000000000000000000000000000000000000000000000000000000008152fd5b5050906111e59250610f9c565b90565b90602081019081516111fb575050505f90565b61121c60408401519160208501928351916112168383610f75565b52610f75565b506112278151610eb1565b905251908051821161123b575b5050600190565b525f80611234565b91908201809211610da25756fea2646970667358221220f8ad8e013591e6290fbced5a0543480dbccf93b164bbcc20777d33bc04b28f5a64736f6c63430008170033" + "numDeployments": 2, + "bytecode": "0x60c080604052346100e85760408161101b803803809161001f82856100ff565b8339810103126100e85780516001600160a01b038082169290918390036100e8576020806024920151936040519283809263124fd3dd60e21b8252600760048301525afa9081156100f4575f916100b5575b501660805260a052604051610ee4908161013782396080518181816101660152818161040e0152818161058d015261062d015260a05181818160720152610a8a0152f35b90506020813d6020116100ec575b816100d0602093836100ff565b810103126100e8575181811681036100e8575f610071565b5f80fd5b3d91506100c3565b6040513d5f823e3d90fd5b601f909101601f19168101906001600160401b0382119082101761012257604052565b634e487b7160e01b5f52604160045260245ffdfe6080806040526004361015610012575f80fd5b5f3560e01c9081630caeeb241461011e575080633d549b32146100995763813584981461003d575f80fd5b34610095575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100955760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b5f80fd5b346100955760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100955773ffffffffffffffffffffffffffffffffffffffff600435818116810361009557602435908282168203610095576044359283168303610095576040926101129260643592610375565b82519182526020820152f35b34610095575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100955760209073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b6040810190811067ffffffffffffffff8211176101a657604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176101a657604052565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146102415760010190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b80518210156102825760209160051b010190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b519081600f0b820361009557565b9060088110156102825760051b0190565b3d15610326573d9067ffffffffffffffff82116101a6576040519161031b60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601846101d3565b82523d5f602084013e565b606090565b8181029291811591840414171561024157565b8115610348570490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b9173ffffffffffffffffffffffffffffffffffffffff80911603610c0e57604051917fa064072b00000000000000000000000000000000000000000000000000000000835273ffffffffffffffffffffffffffffffffffffffff8116600484015273ffffffffffffffffffffffffffffffffffffffff821660248401525f8360448173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa928315610967575f93610b5e575b50825115610b545773ffffffffffffffffffffffffffffffffffffffff811673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee03610aaf57670de0b6b3a7640000915b8351956040516060810181811067ffffffffffffffff8211176101a65760609160409182525f81525f602082015201526040519660808160061b8901016040525f88525f602089015260608801604089015260608801525f5b8551811080610a82575b156109ca5773ffffffffffffffffffffffffffffffffffffffff610509828861026e565b511690604051917feb85226d000000000000000000000000000000000000000000000000000000008352600483015273ffffffffffffffffffffffffffffffffffffffff8516602483015273ffffffffffffffffffffffffffffffffffffffff8416604483015260608260648173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa8015610967575f925f905f92610972575b5073ffffffffffffffffffffffffffffffffffffffff6105e0848b61026e565b511690604051917f59f4f35100000000000000000000000000000000000000000000000000000000835260048301526101008260248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa918215610967575f926108cd575b506fffffffffffffffffffffffffffffffff928a8a61067e868916866102bd565b51118015906108b9575b6108aa576106b773ffffffffffffffffffffffffffffffffffffffff6106b08860ff9461026e565b5116610c38565b16159081806108a3575b156108425750507f07211ef7000000000000000000000000000000000000000000000000000000005b73ffffffffffffffffffffffffffffffffffffffff610709868d61026e565b5116604051916020830152848716602483015284831660448301528a6064830152606482528160a081011067ffffffffffffffff60a0840111176101a657815f929160a0849301604052602082519201905afa6107646102ce565b9080610836575b610783575b5050505061077e9150610214565b6104db565b602081805181010312610095576020015180159283156107a4575b50610770565b670de0b6b3a76400009382858102048514171561024157846107dd6107f2966107d58e6107ed986107e6970261033e565b9916836102bd565b519316906102bd565b519061032b565b610d05565b9160405180604081011067ffffffffffffffff6040830111176101a65761077e9361082b9260408301604052825260208201528a610e46565b505f8080808061079e565b5060208151101561076b565b8161089a575b5015610874577f5e0d443f000000000000000000000000000000000000000000000000000000006106ea565b7f556d6e9f000000000000000000000000000000000000000000000000000000006106ea565b9050155f610848565b50806106c1565b505050505061077e9150610214565b506108c6858416856102bd565b5115610688565b909150610100903d6101001161095f575b6108e882826101d3565b61010081838101031261009557818101601f8201121561009557604051918261010081011067ffffffffffffffff610100850111176101a6576101008301604052829082016101008301116100955781905b6101008301821061094f57505050905f61065d565b815181526020918201910161093a565b3d91506108de565b6040513d5f823e3d90fd5b935050506060823d6060116109c2575b8161098f606093836101d3565b81010312610095576109a0826102af565b60406109ae602085016102af565b93015190811515820361009557925f6105c0565b3d9150610982565b50949593505050505f905f936020820151806040840151525f925b818410610a08575050505082806109fb57509190565b610a049161033e565b9190565b90919295610a1a87604084015161026e565b51946020860195865160649081810291818304149015171561024157610a4187865161032b565b11610a765791610a63610a6b92610a5d600195518a519061032b565b90610ea1565b965190610ea1565b965b019291906109e5565b50945095600190610a6d565b5060208801517f0000000000000000000000000000000000000000000000000000000000000000116104e5565b6040517f313ce56700000000000000000000000000000000000000000000000000000000815260208160048173ffffffffffffffffffffffffffffffffffffffff86165afa8015610967575f90610b17575b60ff915016604d811161024157600a0a91610482565b506020813d602011610b4c575b81610b31602093836101d3565b81010312610095575160ff811681036100955760ff90610b01565b3d9150610b24565b505050505f905f90565b9092503d805f833e610b7081836101d3565b8101602090818382031261009557825167ffffffffffffffff93848211610095570181601f820112156100955780519384116101a6578360051b9060405194610bbb858401876101d3565b85528380860192820101928311610095578301905b828210610be25750505050915f61043e565b815173ffffffffffffffffffffffffffffffffffffffff81168103610095578152908301908301610bd0565b60046040517fccf7e6f7000000000000000000000000000000000000000000000000000000008152fd5b5f8060405160208101907f49fe9e7700000000000000000000000000000000000000000000000000000000825260048152610c728161018a565b5190845afa610c7f6102ce565b81610cf8575b50610cf2575f809160405160208101907f095a0fc600000000000000000000000000000000000000000000000000000000825260048152610cc58161018a565b51915afa610cd16102ce565b81610ce5575b50610ce0575f90565b600290565b602091505110155f610cd7565b50600190565b602091505110155f610c85565b8015610e4157610dcf815f908360801c80610e35575b508060401c80610e28575b508060201c80610e1b575b508060101c80610e0e575b508060081c80610e01575b508060041c80610df4575b508060021c80610de7575b50600191828092811c610de0575b1c1b610d77818561033e565b01811c610d84818561033e565b01811c610d91818561033e565b01811c610d9e818561033e565b01811c610dab818561033e565b01811c610db8818561033e565b01811c610dc5818561033e565b01901c809261033e565b80821015610ddb575090565b905090565b0181610d6b565b600291509101905f610d5d565b600491509101905f610d52565b600891509101905f610d47565b601091509101905f610d3c565b602091509101905f610d31565b604091509101905f610d26565b9150506080905f610d1b565b505f90565b9060208101908151610e59575050505f90565b610e7a6040840151916020850192835191610e74838361026e565b5261026e565b50610e858151610214565b9052519080518211610e99575b5050600190565b525f80610e92565b919082018092116102415756fea2646970667358221220a81ff33c7895af4540da6504953e168cd75a11fa971e7fd306cabb70b1febaea64736f6c63430008170033", + "deployedBytecode": "0x6080806040526004361015610012575f80fd5b5f3560e01c9081630caeeb241461011e575080633d549b32146100995763813584981461003d575f80fd5b34610095575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100955760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b5f80fd5b346100955760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100955773ffffffffffffffffffffffffffffffffffffffff600435818116810361009557602435908282168203610095576044359283168303610095576040926101129260643592610375565b82519182526020820152f35b34610095575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100955760209073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b6040810190811067ffffffffffffffff8211176101a657604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176101a657604052565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146102415760010190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b80518210156102825760209160051b010190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b519081600f0b820361009557565b9060088110156102825760051b0190565b3d15610326573d9067ffffffffffffffff82116101a6576040519161031b60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601846101d3565b82523d5f602084013e565b606090565b8181029291811591840414171561024157565b8115610348570490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b9173ffffffffffffffffffffffffffffffffffffffff80911603610c0e57604051917fa064072b00000000000000000000000000000000000000000000000000000000835273ffffffffffffffffffffffffffffffffffffffff8116600484015273ffffffffffffffffffffffffffffffffffffffff821660248401525f8360448173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa928315610967575f93610b5e575b50825115610b545773ffffffffffffffffffffffffffffffffffffffff811673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee03610aaf57670de0b6b3a7640000915b8351956040516060810181811067ffffffffffffffff8211176101a65760609160409182525f81525f602082015201526040519660808160061b8901016040525f88525f602089015260608801604089015260608801525f5b8551811080610a82575b156109ca5773ffffffffffffffffffffffffffffffffffffffff610509828861026e565b511690604051917feb85226d000000000000000000000000000000000000000000000000000000008352600483015273ffffffffffffffffffffffffffffffffffffffff8516602483015273ffffffffffffffffffffffffffffffffffffffff8416604483015260608260648173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa8015610967575f925f905f92610972575b5073ffffffffffffffffffffffffffffffffffffffff6105e0848b61026e565b511690604051917f59f4f35100000000000000000000000000000000000000000000000000000000835260048301526101008260248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa918215610967575f926108cd575b506fffffffffffffffffffffffffffffffff928a8a61067e868916866102bd565b51118015906108b9575b6108aa576106b773ffffffffffffffffffffffffffffffffffffffff6106b08860ff9461026e565b5116610c38565b16159081806108a3575b156108425750507f07211ef7000000000000000000000000000000000000000000000000000000005b73ffffffffffffffffffffffffffffffffffffffff610709868d61026e565b5116604051916020830152848716602483015284831660448301528a6064830152606482528160a081011067ffffffffffffffff60a0840111176101a657815f929160a0849301604052602082519201905afa6107646102ce565b9080610836575b610783575b5050505061077e9150610214565b6104db565b602081805181010312610095576020015180159283156107a4575b50610770565b670de0b6b3a76400009382858102048514171561024157846107dd6107f2966107d58e6107ed986107e6970261033e565b9916836102bd565b519316906102bd565b519061032b565b610d05565b9160405180604081011067ffffffffffffffff6040830111176101a65761077e9361082b9260408301604052825260208201528a610e46565b505f8080808061079e565b5060208151101561076b565b8161089a575b5015610874577f5e0d443f000000000000000000000000000000000000000000000000000000006106ea565b7f556d6e9f000000000000000000000000000000000000000000000000000000006106ea565b9050155f610848565b50806106c1565b505050505061077e9150610214565b506108c6858416856102bd565b5115610688565b909150610100903d6101001161095f575b6108e882826101d3565b61010081838101031261009557818101601f8201121561009557604051918261010081011067ffffffffffffffff610100850111176101a6576101008301604052829082016101008301116100955781905b6101008301821061094f57505050905f61065d565b815181526020918201910161093a565b3d91506108de565b6040513d5f823e3d90fd5b935050506060823d6060116109c2575b8161098f606093836101d3565b81010312610095576109a0826102af565b60406109ae602085016102af565b93015190811515820361009557925f6105c0565b3d9150610982565b50949593505050505f905f936020820151806040840151525f925b818410610a08575050505082806109fb57509190565b610a049161033e565b9190565b90919295610a1a87604084015161026e565b51946020860195865160649081810291818304149015171561024157610a4187865161032b565b11610a765791610a63610a6b92610a5d600195518a519061032b565b90610ea1565b965190610ea1565b965b019291906109e5565b50945095600190610a6d565b5060208801517f0000000000000000000000000000000000000000000000000000000000000000116104e5565b6040517f313ce56700000000000000000000000000000000000000000000000000000000815260208160048173ffffffffffffffffffffffffffffffffffffffff86165afa8015610967575f90610b17575b60ff915016604d811161024157600a0a91610482565b506020813d602011610b4c575b81610b31602093836101d3565b81010312610095575160ff811681036100955760ff90610b01565b3d9150610b24565b505050505f905f90565b9092503d805f833e610b7081836101d3565b8101602090818382031261009557825167ffffffffffffffff93848211610095570181601f820112156100955780519384116101a6578360051b9060405194610bbb858401876101d3565b85528380860192820101928311610095578301905b828210610be25750505050915f61043e565b815173ffffffffffffffffffffffffffffffffffffffff81168103610095578152908301908301610bd0565b60046040517fccf7e6f7000000000000000000000000000000000000000000000000000000008152fd5b5f8060405160208101907f49fe9e7700000000000000000000000000000000000000000000000000000000825260048152610c728161018a565b5190845afa610c7f6102ce565b81610cf8575b50610cf2575f809160405160208101907f095a0fc600000000000000000000000000000000000000000000000000000000825260048152610cc58161018a565b51915afa610cd16102ce565b81610ce5575b50610ce0575f90565b600290565b602091505110155f610cd7565b50600190565b602091505110155f610c85565b8015610e4157610dcf815f908360801c80610e35575b508060401c80610e28575b508060201c80610e1b575b508060101c80610e0e575b508060081c80610e01575b508060041c80610df4575b508060021c80610de7575b50600191828092811c610de0575b1c1b610d77818561033e565b01811c610d84818561033e565b01811c610d91818561033e565b01811c610d9e818561033e565b01811c610dab818561033e565b01811c610db8818561033e565b01811c610dc5818561033e565b01901c809261033e565b80821015610ddb575090565b905090565b0181610d6b565b600291509101905f610d5d565b600491509101905f610d52565b600891509101905f610d47565b601091509101905f610d3c565b602091509101905f610d31565b604091509101905f610d26565b9150506080905f610d1b565b505f90565b9060208101908151610e59575050505f90565b610e7a6040840151916020850192835191610e74838361026e565b5261026e565b50610e858151610214565b9052519080518211610e99575b5050600190565b525f80610e92565b919082018092116102415756fea2646970667358221220a81ff33c7895af4540da6504953e168cd75a11fa971e7fd306cabb70b1febaea64736f6c63430008170033" } \ No newline at end of file From 0a0a7bb99d9e8af49f35002fe433ab9a1657fb27 Mon Sep 17 00:00:00 2001 From: Denis Date: Wed, 14 Aug 2024 17:01:19 +0100 Subject: [PATCH 4/8] Deploy on arbitrum --- README.md | 2 +- deployments/arbitrum/CurveOracle.json | 96 +++++---------------------- 2 files changed, 19 insertions(+), 79 deletions(-) diff --git a/README.md b/README.md index 4881a42..978d835 100644 --- a/README.md +++ b/README.md @@ -243,7 +243,7 @@ If no direct liquidity pair exists between two tokens, the spot price aggregator * SushiSwap - [0x2A45d538f460DDBEeA3a899b0674dA3DFE318faa](https://arbiscan.io/address/0x2A45d538f460DDBEeA3a899b0674dA3DFE318faa) * UniswapV2 - [0x4C5B9573dE7660c097F1a21050038378CD691066](https://arbiscan.io/address/0x4C5B9573dE7660c097F1a21050038378CD691066) * UniswapV3 - [0xE85B42805e046D1933EB8e1C543C4da4E5e8fFa3](https://arbiscan.io/address/0xE85B42805e046D1933EB8e1C543C4da4E5e8fFa3) - * Curve - [0x0bA0D1B119d8a8E193e2802c2C7Ef1BDfAdddc49](https://arbiscan.io/address/0x0bA0D1B119d8a8E193e2802c2C7Ef1BDfAdddc49) + * Curve - [0x4e5Cee3B8Af0CB46EFAA94Cba5E0f25f8770BB19](https://arbiscan.io/address/0x4e5Cee3B8Af0CB46EFAA94Cba5E0f25f8770BB19) diff --git a/deployments/arbitrum/CurveOracle.json b/deployments/arbitrum/CurveOracle.json index e41ebe5..0092414 100644 --- a/deployments/arbitrum/CurveOracle.json +++ b/deployments/arbitrum/CurveOracle.json @@ -1,27 +1,17 @@ { - "address": "0x0bA0D1B119d8a8E193e2802c2C7Ef1BDfAdddc49", + "address": "0x4e5Cee3B8Af0CB46EFAA94Cba5E0f25f8770BB19", "abi": [ { "inputs": [ { "internalType": "contract ICurveProvider", - "name": "_addressProvider", + "name": "curveProvider", "type": "address" }, { "internalType": "uint256", - "name": "_maxPools", + "name": "maxPools", "type": "uint256" - }, - { - "internalType": "uint256[]", - "name": "_registryIds", - "type": "uint256[]" - }, - { - "internalType": "enum CurveOracle.CurveRegistryType[]", - "name": "_registryTypes", - "type": "uint8[]" } ], "stateMutability": "nonpayable", @@ -32,11 +22,6 @@ "name": "ConnectorShouldBeNone", "type": "error" }, - { - "inputs": [], - "name": "MathOverflowedMulDiv", - "type": "error" - }, { "inputs": [], "name": "PoolNotFound", @@ -49,12 +34,12 @@ }, { "inputs": [], - "name": "MAX_POOLS", + "name": "CURVE_METAREGISTRY", "outputs": [ { - "internalType": "uint256", + "internalType": "contract ICurveMetaregistry", "name": "", - "type": "uint256" + "type": "address" } ], "stateMutability": "view", @@ -62,7 +47,7 @@ }, { "inputs": [], - "name": "REGISTRIES_COUNT", + "name": "MAX_POOLS", "outputs": [ { "internalType": "uint256", @@ -111,73 +96,28 @@ ], "stateMutability": "view", "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "registries", - "outputs": [ - { - "internalType": "contract ICurveRegistry", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "registryTypes", - "outputs": [ - { - "internalType": "enum CurveOracle.CurveRegistryType", - "name": "", - "type": "uint8" - } - ], - "stateMutability": "view", - "type": "function" } ], + "transactionHash": "0x5b63b8d95ce503220e9734c515ea643c293811df4a2d647b9408ec6becefed9c", "receipt": { "to": "0xD935a2bb926019E0ed6fb31fbD5b1Bbb7c05bf65", "from": "0x56E44874F624EbDE6efCc783eFD685f0FBDC6dcF", "contractAddress": null, - "gasUsed": "1759673", + "transactionIndex": 8, + "gasUsed": "1160948", "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "blockHash": "0x503e0c8d8d87ac4bc89e138ddbe57669311d00c489357dcbb2e6cc6a6658acb9", + "blockHash": "0x097e582c9c0892e2337185bd5d64fec0881b0d514cad9fde2b3ca4113ce73272", + "transactionHash": "0x5b63b8d95ce503220e9734c515ea643c293811df4a2d647b9408ec6becefed9c", "logs": [], - "blockNumber": 202307488, - "cumulativeGasUsed": "1759673", + "blockNumber": 242826928, + "cumulativeGasUsed": "2477278", "status": 1 }, "args": [ - "0x0000000022d53366457f9d5e68ec105046fc4383", - 100, - [ - 0, - 3, - 5 - ], - [ - 0, - 7, - 2 - ] + "0x5ffe7FB82894076ECB99A30D6A32e969e6e35E98", + 100 ], "numDeployments": 1, - "bytecode": "0x60c06040818152346200022a57620015af8038038091620000218286620002af565b84398201906080838303126200022a5782516001600160a01b039283821692918390036200022a57602085810151838701516001600160401b039692939291908781116200022a5788019683601f890112156200022a57875198620000868a620002e7565b986200009588519a8b620002af565b8a8a52868a018760059c60051b830101918783116200022a5788809101915b8383106200029e575050505060608101519182116200022a57019280601f850112156200022a578351620000e881620002e7565b94620000f788519687620002af565b818652868087019260051b8201019283116200022a578601905b828210620002845750505060805285519560a09660a0525f5b87518110156200024057620001408183620002ff565b51865163124fd3dd60e21b8152600491828201526024878282818d5afa91821562000236575f92620001f3575b50600b9182851015620001e05784546001600160a01b031916908716178455620001988488620002ff565b5192600a841015620001cf5750509082916001938c1c0190815460f88460031b169160ff809116831b921b1916179055016200012a565b602190634e487b7160e01b5f52525ffd5b50634e487b7160e01b5f90815260328452fd5b9091508781813d83116200022e575b6200020e8183620002af565b810103126200022a575185811681036200022a57905f6200016d565b5f80fd5b503d62000202565b89513d5f823e3d90fd5b8551611286908162000329823960805181818161011a015281816102c1015281816102fe01528181610ca50152610dd2015260a0518181816101cf015261033f0152f35b8151600a8110156200022a57815290860190860162000111565b8251815291810191899101620000b4565b601f909101601f19168101906001600160401b03821190821017620002d357604052565b634e487b7160e01b5f52604160045260245ffd5b6001600160401b038111620002d35760051b60200190565b8051821015620003145760209160051b010190565b634e487b7160e01b5f52603260045260245ffdfe6080806040526004361015610012575f80fd5b5f3560e01c9081633d549b32146101f257508063474004491461019a5780636347c9001461013d57806381358498146100e55763b72529f214610053575f80fd5b346100e15760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100e157600435600b8110156100e15761009960ff91610e20565b90549060031b1c16604051600a8210156100b4576020918152f35b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f80fd5b346100e1575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100e15760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b346100e15760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100e157600435600b8110156100e15773ffffffffffffffffffffffffffffffffffffffff6020915416604051908152f35b346100e1575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100e15760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b346100e15760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100e1576004359073ffffffffffffffffffffffffffffffffffffffff821682036100e1576024359073ffffffffffffffffffffffffffffffffffffffff821682036100e15760443573ffffffffffffffffffffffffffffffffffffffff81168091036100e15773ffffffffffffffffffffffffffffffffffffffff03610df857506060604080516102ae81610e38565b5f81525f602082015201526040519060807f000000000000000000000000000000000000000000000000000000000000000060061b8301016040525f82525f6020830152606082018060408401527f000000000000000000000000000000000000000000000000000000000000000090525f6040805161032d81610e38565b82815282602082015201525f915f925b7f0000000000000000000000000000000000000000000000000000000000000000841080610dcf575b15610cea575f91600b851015918261077a5773ffffffffffffffffffffffffffffffffffffffff865416936040517f6982eb0b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8916600482015273ffffffffffffffffffffffffffffffffffffffff871660248201525f6044820152602081606481895afa90811561076f575f91610ccb575b50915b73ffffffffffffffffffffffffffffffffffffffff8316151580610ca2575b15610c8c5761043c90610eb1565b915f908561077a575f808b60405173ffffffffffffffffffffffffffffffffffffffff60208201927feb85226d000000000000000000000000000000000000000000000000000000008452818716602484015216604482015273ffffffffffffffffffffffffffffffffffffffff8c166064820152606481526104be81610e54565b51908a5afa916104cc610f0a565b9280610c80575b15610c71576104e18a610e20565b905490600a60ff838360031b1c1610156100b45760031b1c60ff166002148015610c4c575b8015610c27575b15610bec576040838051810103126100e157610537604061053060208601610f67565b9401610f67565b81610b6b5760405161054881610e38565b7f92e3cc2d0000000000000000000000000000000000000000000000000000000081527f5e0d443f0000000000000000000000000000000000000000000000000000000060208201527f556d6e9f000000000000000000000000000000000000000000000000000000006040820152925b8861077a575f807fffffffff000000000000000000000000000000000000000000000000000000008651166040516020810191825273ffffffffffffffffffffffffffffffffffffffff851660248201526024815261061781610e38565b51908d5afa92610625610f0a565b9380610b5f575b15610abc57908995949392916008901561094e575b8352600f946fffffffffffffffffffffffffffffffff908181169361068761068261066c8789610f75565b519483169461067b868a610f75565b5190610f89565b610fd3565b976127106106a2858261069a8a8c610f75565b510499610f75565b51048715159081610944575b506107a7575b50505050505050505061077a576106ca90610eb1565b6040517f6982eb0b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff89811660048301528716602482015260448101829052909690602081606481895afa90811561076f575f91610740575b50915b96909661040f565b610762915060203d602011610768575b61075a8183610e70565b810190610ede565b89610735565b503d610750565b6040513d5f823e3d90fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f9283927fffffffff0000000000000000000000000000000000000000000000000000000060208b015116926040519260208401948552810b60248401520b6044820152876064820152606481526107fe81610e54565b5190855afa9261080c610f0a565b9584158015610939575b6108cb575b50505050806108bf575b610835575b8080808080806106b4565b909192506020828051810103126100e1576020610853920151611114565b60405180604081011067ffffffffffffffff604083011117610892578692610889926040830160405282526020820152856111e8565b5089808061082a565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b50602082511015610825565b5f95965085945060407fffffffff0000000000000000000000000000000000000000000000000000000091015116916040519160208301938452602483015260448201528560648201526064815261092281610e54565b51915afa9061092f610f0a565b918d80808061081b565b506020875110610816565b905015155f6106ae565b95506109598d610e20565b96905496600a60ff898360031b1c1610156100b4578b978f9160031b1c60ff166001148015610a90575b8015610a64575b8015610a39575b8015610a0d575b156109a757505060045b610641565b60ff9197506109b590610e20565b90549060031b1c1695600a8710156100b4578d60068c98145f146109dc5750506003610641565b60ff9197506109ea90610e20565b90549060031b1c1695600a8710156100b45760038b97036109a257506002610641565b5060ff919750610a1c90610e20565b90549060031b1c1695600a8710156100b4578d60098c9814610998565b5060ff919750610a4890610e20565b90549060031b1c1695600a8710156100b4578d818c9814610991565b5060ff919750610a7390610e20565b90549060031b1c1695600a8710156100b4578d60078c981461098a565b5060ff919750610a9f90610e20565b90549060031b1c1695600a8710156100b4578d60058c9814610983565b5050505050509250610ace5f93610eb1565b6040517f6982eb0b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff89811660048301528716602482015260448101829052909690602081606481895afa90811561076f575f91610b40575b5091610738565b610b59915060203d6020116107685761075a8183610e70565b89610b39565b5060408451101561062c565b604051610b7781610e38565b7f59f4f3510000000000000000000000000000000000000000000000000000000081527f07211ef70000000000000000000000000000000000000000000000000000000060208201527f85f11d1e000000000000000000000000000000000000000000000000000000006040820152926105b9565b506060828051810103126100e157610c0660208301610f67565b916060610c1560408301610f67565b91015180151581036100e15790610537565b5060ff610c338b610e20565b90549060031b1c16600a8110156100b45760061461050d565b5060ff610c588b610e20565b90549060031b1c16600a8110156100b457600314610506565b5050509250610ace5f93610eb1565b506040835110156104d3565b9450505093610c9b9150610eb1565b929061033d565b507f0000000000000000000000000000000000000000000000000000000000000000811061042e565b610ce4915060203d6020116107685761075a8183610e70565b8961040c565b505f806020830151806040850151525f905b808210610d2a576040848480610d19575b82519182526020820152f35b9081610d2491610f9c565b90610d0d565b9091610d3a836040870151610f75565b519360208501948551606481029080820460641490151715610da257610d636064358951610f89565b11610d965791610d85610d8d92610d7f60019551895190610f89565b90611243565b955190611243565b925b0190610cfc565b50935091600190610d8f565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b507f00000000000000000000000000000000000000000000000000000000000000008110610366565b807fccf7e6f70000000000000000000000000000000000000000000000000000000060049252fd5b90600b82101561077a57601f8260051c600b01921690565b6060810190811067ffffffffffffffff82111761089257604052565b60a0810190811067ffffffffffffffff82111761089257604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761089257604052565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610da25760010190565b908160209103126100e1575173ffffffffffffffffffffffffffffffffffffffff811681036100e15790565b3d15610f62573d9067ffffffffffffffff82116108925760405191610f5760207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160184610e70565b82523d5f602084013e565b606090565b519081600f0b82036100e157565b805182101561077a5760209160051b010190565b81810292918115918404141715610da257565b8115610fa6570490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b801561110f5761109d815f908360801c80611103575b508060401c806110f6575b508060201c806110e9575b508060101c806110dc575b508060081c806110cf575b508060041c806110c2575b508060021c806110b5575b50600191828092811c6110ae575b1c1b6110458185610f9c565b01811c6110528185610f9c565b01811c61105f8185610f9c565b01811c61106c8185610f9c565b01811c6110798185610f9c565b01811c6110868185610f9c565b01811c6110938185610f9c565b01901c8092610f9c565b808210156110a9575090565b905090565b0181611039565b600291509101905f61102b565b600491509101905f611020565b600891509101905f611015565b601091509101905f61100a565b602091509101905f610fff565b604091509101905f610ff4565b9150506080905f610fe9565b505f90565b670de0b6b3a764000091828202917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848209938380861095039480860395146111d857848311156111ae57829109815f038216809204600280826003021880830282030280830282030280830282030280830282030280830282030280920290030293600183805f03040190848311900302920304170290565b60046040517f227bc153000000000000000000000000000000000000000000000000000000008152fd5b5050906111e59250610f9c565b90565b90602081019081516111fb575050505f90565b61121c60408401519160208501928351916112168383610f75565b52610f75565b506112278151610eb1565b905251908051821161123b575b5050600190565b525f80611234565b91908201809211610da25756fea2646970667358221220f8ad8e013591e6290fbced5a0543480dbccf93b164bbcc20777d33bc04b28f5a64736f6c63430008170033", - "deployedBytecode": "0x6080806040526004361015610012575f80fd5b5f3560e01c9081633d549b32146101f257508063474004491461019a5780636347c9001461013d57806381358498146100e55763b72529f214610053575f80fd5b346100e15760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100e157600435600b8110156100e15761009960ff91610e20565b90549060031b1c16604051600a8210156100b4576020918152f35b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f80fd5b346100e1575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100e15760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b346100e15760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100e157600435600b8110156100e15773ffffffffffffffffffffffffffffffffffffffff6020915416604051908152f35b346100e1575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100e15760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b346100e15760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100e1576004359073ffffffffffffffffffffffffffffffffffffffff821682036100e1576024359073ffffffffffffffffffffffffffffffffffffffff821682036100e15760443573ffffffffffffffffffffffffffffffffffffffff81168091036100e15773ffffffffffffffffffffffffffffffffffffffff03610df857506060604080516102ae81610e38565b5f81525f602082015201526040519060807f000000000000000000000000000000000000000000000000000000000000000060061b8301016040525f82525f6020830152606082018060408401527f000000000000000000000000000000000000000000000000000000000000000090525f6040805161032d81610e38565b82815282602082015201525f915f925b7f0000000000000000000000000000000000000000000000000000000000000000841080610dcf575b15610cea575f91600b851015918261077a5773ffffffffffffffffffffffffffffffffffffffff865416936040517f6982eb0b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8916600482015273ffffffffffffffffffffffffffffffffffffffff871660248201525f6044820152602081606481895afa90811561076f575f91610ccb575b50915b73ffffffffffffffffffffffffffffffffffffffff8316151580610ca2575b15610c8c5761043c90610eb1565b915f908561077a575f808b60405173ffffffffffffffffffffffffffffffffffffffff60208201927feb85226d000000000000000000000000000000000000000000000000000000008452818716602484015216604482015273ffffffffffffffffffffffffffffffffffffffff8c166064820152606481526104be81610e54565b51908a5afa916104cc610f0a565b9280610c80575b15610c71576104e18a610e20565b905490600a60ff838360031b1c1610156100b45760031b1c60ff166002148015610c4c575b8015610c27575b15610bec576040838051810103126100e157610537604061053060208601610f67565b9401610f67565b81610b6b5760405161054881610e38565b7f92e3cc2d0000000000000000000000000000000000000000000000000000000081527f5e0d443f0000000000000000000000000000000000000000000000000000000060208201527f556d6e9f000000000000000000000000000000000000000000000000000000006040820152925b8861077a575f807fffffffff000000000000000000000000000000000000000000000000000000008651166040516020810191825273ffffffffffffffffffffffffffffffffffffffff851660248201526024815261061781610e38565b51908d5afa92610625610f0a565b9380610b5f575b15610abc57908995949392916008901561094e575b8352600f946fffffffffffffffffffffffffffffffff908181169361068761068261066c8789610f75565b519483169461067b868a610f75565b5190610f89565b610fd3565b976127106106a2858261069a8a8c610f75565b510499610f75565b51048715159081610944575b506107a7575b50505050505050505061077a576106ca90610eb1565b6040517f6982eb0b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff89811660048301528716602482015260448101829052909690602081606481895afa90811561076f575f91610740575b50915b96909661040f565b610762915060203d602011610768575b61075a8183610e70565b810190610ede565b89610735565b503d610750565b6040513d5f823e3d90fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f9283927fffffffff0000000000000000000000000000000000000000000000000000000060208b015116926040519260208401948552810b60248401520b6044820152876064820152606481526107fe81610e54565b5190855afa9261080c610f0a565b9584158015610939575b6108cb575b50505050806108bf575b610835575b8080808080806106b4565b909192506020828051810103126100e1576020610853920151611114565b60405180604081011067ffffffffffffffff604083011117610892578692610889926040830160405282526020820152856111e8565b5089808061082a565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b50602082511015610825565b5f95965085945060407fffffffff0000000000000000000000000000000000000000000000000000000091015116916040519160208301938452602483015260448201528560648201526064815261092281610e54565b51915afa9061092f610f0a565b918d80808061081b565b506020875110610816565b905015155f6106ae565b95506109598d610e20565b96905496600a60ff898360031b1c1610156100b4578b978f9160031b1c60ff166001148015610a90575b8015610a64575b8015610a39575b8015610a0d575b156109a757505060045b610641565b60ff9197506109b590610e20565b90549060031b1c1695600a8710156100b4578d60068c98145f146109dc5750506003610641565b60ff9197506109ea90610e20565b90549060031b1c1695600a8710156100b45760038b97036109a257506002610641565b5060ff919750610a1c90610e20565b90549060031b1c1695600a8710156100b4578d60098c9814610998565b5060ff919750610a4890610e20565b90549060031b1c1695600a8710156100b4578d818c9814610991565b5060ff919750610a7390610e20565b90549060031b1c1695600a8710156100b4578d60078c981461098a565b5060ff919750610a9f90610e20565b90549060031b1c1695600a8710156100b4578d60058c9814610983565b5050505050509250610ace5f93610eb1565b6040517f6982eb0b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff89811660048301528716602482015260448101829052909690602081606481895afa90811561076f575f91610b40575b5091610738565b610b59915060203d6020116107685761075a8183610e70565b89610b39565b5060408451101561062c565b604051610b7781610e38565b7f59f4f3510000000000000000000000000000000000000000000000000000000081527f07211ef70000000000000000000000000000000000000000000000000000000060208201527f85f11d1e000000000000000000000000000000000000000000000000000000006040820152926105b9565b506060828051810103126100e157610c0660208301610f67565b916060610c1560408301610f67565b91015180151581036100e15790610537565b5060ff610c338b610e20565b90549060031b1c16600a8110156100b45760061461050d565b5060ff610c588b610e20565b90549060031b1c16600a8110156100b457600314610506565b5050509250610ace5f93610eb1565b506040835110156104d3565b9450505093610c9b9150610eb1565b929061033d565b507f0000000000000000000000000000000000000000000000000000000000000000811061042e565b610ce4915060203d6020116107685761075a8183610e70565b8961040c565b505f806020830151806040850151525f905b808210610d2a576040848480610d19575b82519182526020820152f35b9081610d2491610f9c565b90610d0d565b9091610d3a836040870151610f75565b519360208501948551606481029080820460641490151715610da257610d636064358951610f89565b11610d965791610d85610d8d92610d7f60019551895190610f89565b90611243565b955190611243565b925b0190610cfc565b50935091600190610d8f565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b507f00000000000000000000000000000000000000000000000000000000000000008110610366565b807fccf7e6f70000000000000000000000000000000000000000000000000000000060049252fd5b90600b82101561077a57601f8260051c600b01921690565b6060810190811067ffffffffffffffff82111761089257604052565b60a0810190811067ffffffffffffffff82111761089257604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761089257604052565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610da25760010190565b908160209103126100e1575173ffffffffffffffffffffffffffffffffffffffff811681036100e15790565b3d15610f62573d9067ffffffffffffffff82116108925760405191610f5760207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160184610e70565b82523d5f602084013e565b606090565b519081600f0b82036100e157565b805182101561077a5760209160051b010190565b81810292918115918404141715610da257565b8115610fa6570490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b801561110f5761109d815f908360801c80611103575b508060401c806110f6575b508060201c806110e9575b508060101c806110dc575b508060081c806110cf575b508060041c806110c2575b508060021c806110b5575b50600191828092811c6110ae575b1c1b6110458185610f9c565b01811c6110528185610f9c565b01811c61105f8185610f9c565b01811c61106c8185610f9c565b01811c6110798185610f9c565b01811c6110868185610f9c565b01811c6110938185610f9c565b01901c8092610f9c565b808210156110a9575090565b905090565b0181611039565b600291509101905f61102b565b600491509101905f611020565b600891509101905f611015565b601091509101905f61100a565b602091509101905f610fff565b604091509101905f610ff4565b9150506080905f610fe9565b505f90565b670de0b6b3a764000091828202917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848209938380861095039480860395146111d857848311156111ae57829109815f038216809204600280826003021880830282030280830282030280830282030280830282030280830282030280920290030293600183805f03040190848311900302920304170290565b60046040517f227bc153000000000000000000000000000000000000000000000000000000008152fd5b5050906111e59250610f9c565b90565b90602081019081516111fb575050505f90565b61121c60408401519160208501928351916112168383610f75565b52610f75565b506112278151610eb1565b905251908051821161123b575b5050600190565b525f80611234565b91908201809211610da25756fea2646970667358221220f8ad8e013591e6290fbced5a0543480dbccf93b164bbcc20777d33bc04b28f5a64736f6c63430008170033" + "bytecode": "0x60c080604052346100e85760408161101b803803809161001f82856100ff565b8339810103126100e85780516001600160a01b038082169290918390036100e8576020806024920151936040519283809263124fd3dd60e21b8252600760048301525afa9081156100f4575f916100b5575b501660805260a052604051610ee4908161013782396080518181816101660152818161040e0152818161058d015261062d015260a05181818160720152610a8a0152f35b90506020813d6020116100ec575b816100d0602093836100ff565b810103126100e8575181811681036100e8575f610071565b5f80fd5b3d91506100c3565b6040513d5f823e3d90fd5b601f909101601f19168101906001600160401b0382119082101761012257604052565b634e487b7160e01b5f52604160045260245ffdfe6080806040526004361015610012575f80fd5b5f3560e01c9081630caeeb241461011e575080633d549b32146100995763813584981461003d575f80fd5b34610095575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100955760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b5f80fd5b346100955760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100955773ffffffffffffffffffffffffffffffffffffffff600435818116810361009557602435908282168203610095576044359283168303610095576040926101129260643592610375565b82519182526020820152f35b34610095575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100955760209073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b6040810190811067ffffffffffffffff8211176101a657604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176101a657604052565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146102415760010190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b80518210156102825760209160051b010190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b519081600f0b820361009557565b9060088110156102825760051b0190565b3d15610326573d9067ffffffffffffffff82116101a6576040519161031b60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601846101d3565b82523d5f602084013e565b606090565b8181029291811591840414171561024157565b8115610348570490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b9173ffffffffffffffffffffffffffffffffffffffff80911603610c0e57604051917fa064072b00000000000000000000000000000000000000000000000000000000835273ffffffffffffffffffffffffffffffffffffffff8116600484015273ffffffffffffffffffffffffffffffffffffffff821660248401525f8360448173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa928315610967575f93610b5e575b50825115610b545773ffffffffffffffffffffffffffffffffffffffff811673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee03610aaf57670de0b6b3a7640000915b8351956040516060810181811067ffffffffffffffff8211176101a65760609160409182525f81525f602082015201526040519660808160061b8901016040525f88525f602089015260608801604089015260608801525f5b8551811080610a82575b156109ca5773ffffffffffffffffffffffffffffffffffffffff610509828861026e565b511690604051917feb85226d000000000000000000000000000000000000000000000000000000008352600483015273ffffffffffffffffffffffffffffffffffffffff8516602483015273ffffffffffffffffffffffffffffffffffffffff8416604483015260608260648173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa8015610967575f925f905f92610972575b5073ffffffffffffffffffffffffffffffffffffffff6105e0848b61026e565b511690604051917f59f4f35100000000000000000000000000000000000000000000000000000000835260048301526101008260248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa918215610967575f926108cd575b506fffffffffffffffffffffffffffffffff928a8a61067e868916866102bd565b51118015906108b9575b6108aa576106b773ffffffffffffffffffffffffffffffffffffffff6106b08860ff9461026e565b5116610c38565b16159081806108a3575b156108425750507f07211ef7000000000000000000000000000000000000000000000000000000005b73ffffffffffffffffffffffffffffffffffffffff610709868d61026e565b5116604051916020830152848716602483015284831660448301528a6064830152606482528160a081011067ffffffffffffffff60a0840111176101a657815f929160a0849301604052602082519201905afa6107646102ce565b9080610836575b610783575b5050505061077e9150610214565b6104db565b602081805181010312610095576020015180159283156107a4575b50610770565b670de0b6b3a76400009382858102048514171561024157846107dd6107f2966107d58e6107ed986107e6970261033e565b9916836102bd565b519316906102bd565b519061032b565b610d05565b9160405180604081011067ffffffffffffffff6040830111176101a65761077e9361082b9260408301604052825260208201528a610e46565b505f8080808061079e565b5060208151101561076b565b8161089a575b5015610874577f5e0d443f000000000000000000000000000000000000000000000000000000006106ea565b7f556d6e9f000000000000000000000000000000000000000000000000000000006106ea565b9050155f610848565b50806106c1565b505050505061077e9150610214565b506108c6858416856102bd565b5115610688565b909150610100903d6101001161095f575b6108e882826101d3565b61010081838101031261009557818101601f8201121561009557604051918261010081011067ffffffffffffffff610100850111176101a6576101008301604052829082016101008301116100955781905b6101008301821061094f57505050905f61065d565b815181526020918201910161093a565b3d91506108de565b6040513d5f823e3d90fd5b935050506060823d6060116109c2575b8161098f606093836101d3565b81010312610095576109a0826102af565b60406109ae602085016102af565b93015190811515820361009557925f6105c0565b3d9150610982565b50949593505050505f905f936020820151806040840151525f925b818410610a08575050505082806109fb57509190565b610a049161033e565b9190565b90919295610a1a87604084015161026e565b51946020860195865160649081810291818304149015171561024157610a4187865161032b565b11610a765791610a63610a6b92610a5d600195518a519061032b565b90610ea1565b965190610ea1565b965b019291906109e5565b50945095600190610a6d565b5060208801517f0000000000000000000000000000000000000000000000000000000000000000116104e5565b6040517f313ce56700000000000000000000000000000000000000000000000000000000815260208160048173ffffffffffffffffffffffffffffffffffffffff86165afa8015610967575f90610b17575b60ff915016604d811161024157600a0a91610482565b506020813d602011610b4c575b81610b31602093836101d3565b81010312610095575160ff811681036100955760ff90610b01565b3d9150610b24565b505050505f905f90565b9092503d805f833e610b7081836101d3565b8101602090818382031261009557825167ffffffffffffffff93848211610095570181601f820112156100955780519384116101a6578360051b9060405194610bbb858401876101d3565b85528380860192820101928311610095578301905b828210610be25750505050915f61043e565b815173ffffffffffffffffffffffffffffffffffffffff81168103610095578152908301908301610bd0565b60046040517fccf7e6f7000000000000000000000000000000000000000000000000000000008152fd5b5f8060405160208101907f49fe9e7700000000000000000000000000000000000000000000000000000000825260048152610c728161018a565b5190845afa610c7f6102ce565b81610cf8575b50610cf2575f809160405160208101907f095a0fc600000000000000000000000000000000000000000000000000000000825260048152610cc58161018a565b51915afa610cd16102ce565b81610ce5575b50610ce0575f90565b600290565b602091505110155f610cd7565b50600190565b602091505110155f610c85565b8015610e4157610dcf815f908360801c80610e35575b508060401c80610e28575b508060201c80610e1b575b508060101c80610e0e575b508060081c80610e01575b508060041c80610df4575b508060021c80610de7575b50600191828092811c610de0575b1c1b610d77818561033e565b01811c610d84818561033e565b01811c610d91818561033e565b01811c610d9e818561033e565b01811c610dab818561033e565b01811c610db8818561033e565b01811c610dc5818561033e565b01901c809261033e565b80821015610ddb575090565b905090565b0181610d6b565b600291509101905f610d5d565b600491509101905f610d52565b600891509101905f610d47565b601091509101905f610d3c565b602091509101905f610d31565b604091509101905f610d26565b9150506080905f610d1b565b505f90565b9060208101908151610e59575050505f90565b610e7a6040840151916020850192835191610e74838361026e565b5261026e565b50610e858151610214565b9052519080518211610e99575b5050600190565b525f80610e92565b919082018092116102415756fea2646970667358221220a81ff33c7895af4540da6504953e168cd75a11fa971e7fd306cabb70b1febaea64736f6c63430008170033", + "deployedBytecode": "0x6080806040526004361015610012575f80fd5b5f3560e01c9081630caeeb241461011e575080633d549b32146100995763813584981461003d575f80fd5b34610095575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100955760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b5f80fd5b346100955760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100955773ffffffffffffffffffffffffffffffffffffffff600435818116810361009557602435908282168203610095576044359283168303610095576040926101129260643592610375565b82519182526020820152f35b34610095575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100955760209073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b6040810190811067ffffffffffffffff8211176101a657604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176101a657604052565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146102415760010190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b80518210156102825760209160051b010190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b519081600f0b820361009557565b9060088110156102825760051b0190565b3d15610326573d9067ffffffffffffffff82116101a6576040519161031b60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601846101d3565b82523d5f602084013e565b606090565b8181029291811591840414171561024157565b8115610348570490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b9173ffffffffffffffffffffffffffffffffffffffff80911603610c0e57604051917fa064072b00000000000000000000000000000000000000000000000000000000835273ffffffffffffffffffffffffffffffffffffffff8116600484015273ffffffffffffffffffffffffffffffffffffffff821660248401525f8360448173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa928315610967575f93610b5e575b50825115610b545773ffffffffffffffffffffffffffffffffffffffff811673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee03610aaf57670de0b6b3a7640000915b8351956040516060810181811067ffffffffffffffff8211176101a65760609160409182525f81525f602082015201526040519660808160061b8901016040525f88525f602089015260608801604089015260608801525f5b8551811080610a82575b156109ca5773ffffffffffffffffffffffffffffffffffffffff610509828861026e565b511690604051917feb85226d000000000000000000000000000000000000000000000000000000008352600483015273ffffffffffffffffffffffffffffffffffffffff8516602483015273ffffffffffffffffffffffffffffffffffffffff8416604483015260608260648173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa8015610967575f925f905f92610972575b5073ffffffffffffffffffffffffffffffffffffffff6105e0848b61026e565b511690604051917f59f4f35100000000000000000000000000000000000000000000000000000000835260048301526101008260248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa918215610967575f926108cd575b506fffffffffffffffffffffffffffffffff928a8a61067e868916866102bd565b51118015906108b9575b6108aa576106b773ffffffffffffffffffffffffffffffffffffffff6106b08860ff9461026e565b5116610c38565b16159081806108a3575b156108425750507f07211ef7000000000000000000000000000000000000000000000000000000005b73ffffffffffffffffffffffffffffffffffffffff610709868d61026e565b5116604051916020830152848716602483015284831660448301528a6064830152606482528160a081011067ffffffffffffffff60a0840111176101a657815f929160a0849301604052602082519201905afa6107646102ce565b9080610836575b610783575b5050505061077e9150610214565b6104db565b602081805181010312610095576020015180159283156107a4575b50610770565b670de0b6b3a76400009382858102048514171561024157846107dd6107f2966107d58e6107ed986107e6970261033e565b9916836102bd565b519316906102bd565b519061032b565b610d05565b9160405180604081011067ffffffffffffffff6040830111176101a65761077e9361082b9260408301604052825260208201528a610e46565b505f8080808061079e565b5060208151101561076b565b8161089a575b5015610874577f5e0d443f000000000000000000000000000000000000000000000000000000006106ea565b7f556d6e9f000000000000000000000000000000000000000000000000000000006106ea565b9050155f610848565b50806106c1565b505050505061077e9150610214565b506108c6858416856102bd565b5115610688565b909150610100903d6101001161095f575b6108e882826101d3565b61010081838101031261009557818101601f8201121561009557604051918261010081011067ffffffffffffffff610100850111176101a6576101008301604052829082016101008301116100955781905b6101008301821061094f57505050905f61065d565b815181526020918201910161093a565b3d91506108de565b6040513d5f823e3d90fd5b935050506060823d6060116109c2575b8161098f606093836101d3565b81010312610095576109a0826102af565b60406109ae602085016102af565b93015190811515820361009557925f6105c0565b3d9150610982565b50949593505050505f905f936020820151806040840151525f925b818410610a08575050505082806109fb57509190565b610a049161033e565b9190565b90919295610a1a87604084015161026e565b51946020860195865160649081810291818304149015171561024157610a4187865161032b565b11610a765791610a63610a6b92610a5d600195518a519061032b565b90610ea1565b965190610ea1565b965b019291906109e5565b50945095600190610a6d565b5060208801517f0000000000000000000000000000000000000000000000000000000000000000116104e5565b6040517f313ce56700000000000000000000000000000000000000000000000000000000815260208160048173ffffffffffffffffffffffffffffffffffffffff86165afa8015610967575f90610b17575b60ff915016604d811161024157600a0a91610482565b506020813d602011610b4c575b81610b31602093836101d3565b81010312610095575160ff811681036100955760ff90610b01565b3d9150610b24565b505050505f905f90565b9092503d805f833e610b7081836101d3565b8101602090818382031261009557825167ffffffffffffffff93848211610095570181601f820112156100955780519384116101a6578360051b9060405194610bbb858401876101d3565b85528380860192820101928311610095578301905b828210610be25750505050915f61043e565b815173ffffffffffffffffffffffffffffffffffffffff81168103610095578152908301908301610bd0565b60046040517fccf7e6f7000000000000000000000000000000000000000000000000000000008152fd5b5f8060405160208101907f49fe9e7700000000000000000000000000000000000000000000000000000000825260048152610c728161018a565b5190845afa610c7f6102ce565b81610cf8575b50610cf2575f809160405160208101907f095a0fc600000000000000000000000000000000000000000000000000000000825260048152610cc58161018a565b51915afa610cd16102ce565b81610ce5575b50610ce0575f90565b600290565b602091505110155f610cd7565b50600190565b602091505110155f610c85565b8015610e4157610dcf815f908360801c80610e35575b508060401c80610e28575b508060201c80610e1b575b508060101c80610e0e575b508060081c80610e01575b508060041c80610df4575b508060021c80610de7575b50600191828092811c610de0575b1c1b610d77818561033e565b01811c610d84818561033e565b01811c610d91818561033e565b01811c610d9e818561033e565b01811c610dab818561033e565b01811c610db8818561033e565b01811c610dc5818561033e565b01901c809261033e565b80821015610ddb575090565b905090565b0181610d6b565b600291509101905f610d5d565b600491509101905f610d52565b600891509101905f610d47565b601091509101905f610d3c565b602091509101905f610d31565b604091509101905f610d26565b9150506080905f610d1b565b505f90565b9060208101908151610e59575050505f90565b610e7a6040840151916020850192835191610e74838361026e565b5261026e565b50610e858151610214565b9052519080518211610e99575b5050600190565b525f80610e92565b919082018092116102415756fea2646970667358221220a81ff33c7895af4540da6504953e168cd75a11fa971e7fd306cabb70b1febaea64736f6c63430008170033" } \ No newline at end of file From 87ce461211a655c83464e71f0b110996da33e877 Mon Sep 17 00:00:00 2001 From: Denis Date: Wed, 14 Aug 2024 17:06:01 +0100 Subject: [PATCH 5/8] Deploy on avax --- README.md | 2 +- deployments/avax/CurveOracle.json | 255 +++--------------------------- 2 files changed, 21 insertions(+), 236 deletions(-) diff --git a/README.md b/README.md index 978d835..0139031 100644 --- a/README.md +++ b/README.md @@ -286,7 +286,7 @@ If no direct liquidity pair exists between two tokens, the spot price aggregator * SushiSwap - [0x2A45d538f460DDBEeA3a899b0674dA3DFE318faa](https://snowtrace.io/address/0x2A45d538f460DDBEeA3a899b0674dA3DFE318faa) * UniswapV2 - [0x4C5B9573dE7660c097F1a21050038378CD691066](https://snowtrace.io/address/0x4C5B9573dE7660c097F1a21050038378CD691066) * UniswapV3 - [0xE85B42805e046D1933EB8e1C543C4da4E5e8fFa3](https://snowtrace.io/address/0xE85B42805e046D1933EB8e1C543C4da4E5e8fFa3) - * Curve - [0x8e38ec1f7D3D40ebf3987DaB0fb2aD688D96c3D1](https://snowtrace.io/address/0x8e38ec1f7D3D40ebf3987DaB0fb2aD688D96c3D1) + * Curve - [0x4e5Cee3B8Af0CB46EFAA94Cba5E0f25f8770BB19](https://snowtrace.io/address/0x4e5Cee3B8Af0CB46EFAA94Cba5E0f25f8770BB19) diff --git a/deployments/avax/CurveOracle.json b/deployments/avax/CurveOracle.json index 1453b24..5522b94 100644 --- a/deployments/avax/CurveOracle.json +++ b/deployments/avax/CurveOracle.json @@ -1,37 +1,17 @@ { - "address": "0x8e38ec1f7D3D40ebf3987DaB0fb2aD688D96c3D1", + "address": "0x4e5Cee3B8Af0CB46EFAA94Cba5E0f25f8770BB19", "abi": [ { "inputs": [ { "internalType": "contract ICurveProvider", - "name": "_addressProvider", + "name": "curveProvider", "type": "address" }, { "internalType": "uint256", - "name": "_maxPools", + "name": "maxPools", "type": "uint256" - }, - { - "internalType": "uint256[]", - "name": "_registryIds", - "type": "uint256[]" - }, - { - "internalType": "enum CurveOracle.CurveRegistryType[]", - "name": "_registryTypes", - "type": "uint8[]" - }, - { - "internalType": "address[]", - "name": "initialBlacklist", - "type": "address[]" - }, - { - "internalType": "address", - "name": "owner", - "type": "address" } ], "stateMutability": "nonpayable", @@ -42,33 +22,6 @@ "name": "ConnectorShouldBeNone", "type": "error" }, - { - "inputs": [], - "name": "MathOverflowedMulDiv", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "owner", - "type": "address" - } - ], - "name": "OwnableInvalidOwner", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "OwnableUnauthorizedAccount", - "type": "error" - }, { "inputs": [], "name": "PoolNotFound", @@ -79,52 +32,14 @@ "name": "PoolWithConnectorNotFound", "type": "error" }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "pool", - "type": "address" - }, - { - "indexed": false, - "internalType": "bool", - "name": "isBlacklisted", - "type": "bool" - } - ], - "name": "BlacklistUpdated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, { "inputs": [], - "name": "MAX_POOLS", + "name": "CURVE_METAREGISTRY", "outputs": [ { - "internalType": "uint256", + "internalType": "contract ICurveMetaregistry", "name": "", - "type": "uint256" + "type": "address" } ], "stateMutability": "view", @@ -132,7 +47,7 @@ }, { "inputs": [], - "name": "REGISTRIES_COUNT", + "name": "MAX_POOLS", "outputs": [ { "internalType": "uint256", @@ -143,25 +58,6 @@ "stateMutability": "view", "type": "function" }, - { - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "blacklisted", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, { "inputs": [ { @@ -200,139 +96,28 @@ ], "stateMutability": "view", "type": "function" - }, - { - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "registries", - "outputs": [ - { - "internalType": "contract ICurveRegistry", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "registryTypes", - "outputs": [ - { - "internalType": "enum CurveOracle.CurveRegistryType", - "name": "", - "type": "uint8" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "pool", - "type": "address" - } - ], - "name": "toggleBlacklistAddress", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" } ], + "transactionHash": "0x7d3d720ba7c25b877d73166f74660b452f4493a0ad4b3b18941d318cd187035d", "receipt": { "to": "0xD935a2bb926019E0ed6fb31fbD5b1Bbb7c05bf65", "from": "0x56E44874F624EbDE6efCc783eFD685f0FBDC6dcF", "contractAddress": null, - "gasUsed": "1507765", - "logsBloom": "0x00000000000000000000000000000000000000000000000000800000000000000000000000000000000002000004000000000000008000000000000000000000000000000000000000000000000000800001000000000000000000000000000000000000020000000000000000000800000000000000000000000000000000400000000000000000000000000000000200000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000", - "blockHash": "0x637b2c7619ffbb5c83c0a5a26987013ed132e3c2f277e007b5cae96ee3e09f18", - "logs": [ - { - "_type": "log", - "address": "0x8e38ec1f7D3D40ebf3987DaB0fb2aD688D96c3D1", - "blockHash": "0x637b2c7619ffbb5c83c0a5a26987013ed132e3c2f277e007b5cae96ee3e09f18", - "blockNumber": 47175227, - "data": "0x", - "index": 6, - "topics": [ - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x00000000000000000000000056e44874f624ebde6efcc783efd685f0fbdc6dcf" - ], - "transactionHash": "0xd58330ad1fbe3c48ac3fef8a79bb802f20a99fb8c1fe19c5141a074381b4c1e8", - "transactionIndex": 3 - } - ], - "blockNumber": 47175227, - "cumulativeGasUsed": "1754946", + "transactionIndex": 13, + "gasUsed": "954347", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "blockHash": "0x83c53ba1a5255d189a750454078564fbf128c4011f9d339a6bd3e7c0b53609cc", + "transactionHash": "0x7d3d720ba7c25b877d73166f74660b452f4493a0ad4b3b18941d318cd187035d", + "logs": [], + "blockNumber": 49253511, + "cumulativeGasUsed": "1399715", "status": 1 }, "args": [ - "0x0000000022d53366457f9d5e68ec105046fc4383", - 100, - [ - 0, - 3, - 5 - ], - [ - 0, - 7, - 2 - ], - [ - "0xd2acae14ae2ee0f6557ac6c6d0e407a92c36214b" - ], - "0x56E44874F624EbDE6efCc783eFD685f0FBDC6dcF" + "0x5ffe7FB82894076ECB99A30D6A32e969e6e35E98", + 100 ], "numDeployments": 1, - "bytecode": "0x60c060409080825234620003ac5762001af58038038091620000228285620003dc565b833981019160c082840312620003ac5781516001600160a01b03919082811690819003620003ac576020848101518386015190959194916001600160401b0391828111620003ac5781019388601f86011215620003ac57845192620000878462000416565b956200009688519788620003dc565b8487528887018960059660051b830101918c8311620003ac578a809101915b838310620003cb57505050506060830151818111620003ac578301908a601f83011215620003ac57815191620000eb8362000416565b92620000fa8a519485620003dc565b8084528a8085019160051b830101918d8311620003ac578b01905b828210620003b1575050506080840151908111620003ac5783019980601f8c011215620003ac578a51620001498162000416565b9b8a808b519e8f906200015d9082620003dc565b848152019260051b820101928311620003ac578a809101915b838310620003915750505050846200019260a08095016200042e565b1680156200037957600080546001600160a01b031980821684178355919891929088167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08a80a3875b8c5181101562000211578088620001f68f9360019462000443565b51168a52818c528a8a20805460ff19168317905501620001db565b5091888892888c958e608052805160a052855b895181101562000335576200023a818362000443565b51855163124fd3dd60e21b81526004808201929092526024908a8183818f5afa9081156200032b578a91620002ea575b50600b841015620002d85785846002019116878254161790556200028f838962000443565b5191600a831015620002c757505090600191818d1c600d0190815460f88460031b169160ff809116831b921b19161790550162000224565b634e487b7160e01b8a526021905288fd5b50634e487b7160e01b89526032825288fd5b90508a81813d831162000323575b620003048183620003dc565b810103126200031f5762000318906200042e565b8e6200026a565b8980fd5b503d620002f8565b88513d8c823e3d90fd5b845161168690816200046f82396080518181816102fa0152818161060c0152818161064b015281816110480152611179015260a051818181610518015261068f0152f35b8751631e4fbdf760e01b815260006004820152602490fd5b81906200039e846200042e565b8152019101908a9062000176565b600080fd5b8151600a811015620003ac578152908b01908b0162000115565b82518152918101918b9101620000b5565b601f909101601f19168101906001600160401b038211908210176200040057604052565b634e487b7160e01b600052604160045260246000fd5b6001600160401b038111620004005760051b60200190565b51906001600160a01b0382168203620003ac57565b8051821015620004585760209160051b010190565b634e487b7160e01b600052603260045260246000fdfe608080604052600436101561001357600080fd5b60003560e01c9081633d549b321461053b5750806347400449146104e257806361436d6a146104195780636347c900146103b9578063715018a61461031d57806381358498146102c45780638da5cb5b14610272578063b72529f2146101e2578063dbac26e9146101755763f2fde38b1461008d57600080fd5b346101705760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101705760043573ffffffffffffffffffffffffffffffffffffffff808216809203610170576100e66115ff565b811561013f57600054827fffffffffffffffffffffffff0000000000000000000000000000000000000000821617600055167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3005b60246040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260006004820152fd5b600080fd5b346101705760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101705760043573ffffffffffffffffffffffffffffffffffffffff8116809103610170576000526001602052602060ff604060002054166040519015158152f35b346101705760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017057600435600b8110156101705761022860ff916111c7565b90549060031b1c16604051600a821015610243576020918152f35b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b346101705760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017057602073ffffffffffffffffffffffffffffffffffffffff60005416604051908152f35b346101705760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101705760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b346101705760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610170576103546115ff565b600073ffffffffffffffffffffffffffffffffffffffff81547fffffffffffffffffffffffff000000000000000000000000000000000000000081168355167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b346101705760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017057600435600b8110156101705773ffffffffffffffffffffffffffffffffffffffff6020916002015416604051908152f35b346101705760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101705760043573ffffffffffffffffffffffffffffffffffffffff81168091036101705760407f6a12b3df6cba4203bd7fd06b816789f87de8c594299aed5717ae070fac781bac916104956115ff565b8060005260016020527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0082600020805460ff808216151692839116179055825191825215156020820152a1005b346101705760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101705760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b346101705760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610170576004359073ffffffffffffffffffffffffffffffffffffffff82168203610170576024359073ffffffffffffffffffffffffffffffffffffffff821682036101705760443573ffffffffffffffffffffffffffffffffffffffff81168091036101705773ffffffffffffffffffffffffffffffffffffffff0361119f57506060604080516105f7816111df565b600081526000602082015201526040519060807f000000000000000000000000000000000000000000000000000000000000000060061b8301016040526000825260006020830152606082018060408401527f0000000000000000000000000000000000000000000000000000000000000000905260006040805161067b816111df565b82815282602082015201526000916000925b7f0000000000000000000000000000000000000000000000000000000000000000841080611176575b1561108d57600091600b8510159182610aff5773ffffffffffffffffffffffffffffffffffffffff866002015416936040517f6982eb0b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8916600482015273ffffffffffffffffffffffffffffffffffffffff8716602482015260006044820152602081606481895afa908115610af35760009161106e575b50915b73ffffffffffffffffffffffffffffffffffffffff8316151580611045575b1561102f5773ffffffffffffffffffffffffffffffffffffffff831660005260016020528460ff6040600020541661101f57506107c090611258565b9160009085610aff576000808b60405173ffffffffffffffffffffffffffffffffffffffff60208201927feb85226d000000000000000000000000000000000000000000000000000000008452818716602484015216604482015273ffffffffffffffffffffffffffffffffffffffff8c16606482015260648152610844816111fb565b51908a5afa916108526112b1565b9280611013575b15611003576108678a6111c7565b905490600a60ff838360031b1c1610156102435760031b1c60ff166002148015610fde575b8015610fb9575b15610f7e57604083805181010312610170576108bd60406108b66020860161130f565b940161130f565b81610efd576040516108ce816111df565b7f92e3cc2d0000000000000000000000000000000000000000000000000000000081527f5e0d443f0000000000000000000000000000000000000000000000000000000060208201527f556d6e9f000000000000000000000000000000000000000000000000000000006040820152925b88610aff576000807fffffffff000000000000000000000000000000000000000000000000000000008651166040516020810191825273ffffffffffffffffffffffffffffffffffffffff851660248201526024815261099e816111df565b51908d5afa926109ac6112b1565b9380610ef1575b15610e4c579089959493929160089015610cdd575b83526fffffffffffffffffffffffffffffffff91610a07610a026109ee8589168761131d565b516109fb8685168861131d565b5190611331565b61137d565b95612710610a2781610a1b8785168961131d565b5104968685169061131d565b51048515159081610cd3575b50610b2e575b50505050505050610aff57610a4d90611258565b6040517f6982eb0b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff89811660048301528716602482015260448101829052909690602081606481895afa908115610af357600091610ac4575b50915b969096610765565b610ae6915060203d602011610aec575b610ade8183611217565b810190611285565b89610ab9565b503d610ad4565b6040513d6000823e3d90fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000807fffffffff000000000000000000000000000000000000000000000000000000006020890151166040516020810191825284600f0b602482015285600f0b604482015288606482015260648152610b87816111fb565b5190865afa93610b956112b1565b9685158015610cc8575b610c55575b505050505080610c49575b610bbd575b80808080610a39565b90919250602082805181010312610170576020610bdb9201516114c0565b60405180604081011067ffffffffffffffff604083011117610c1a578692610c1192604083016040528252602082015285611596565b50898080610bb4565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b50602082511015610baf565b600096975086955060407fffffffff00000000000000000000000000000000000000000000000000000000910151169281604051936020850195865216602484015216604482015285606482015260648152610cb0816111fb565b51915afa90610cbd6112b1565b918d80808080610ba4565b506020885110610b9f565b9050151538610a33565b9550610ce88d6111c7565b96905496600a60ff898360031b1c161015610243578b978f9160031b1c60ff166001148015610e20575b8015610df4575b8015610dc9575b8015610d9d575b15610d3657505060045b6109c8565b60ff919750610d44906111c7565b90549060031b1c1695600a871015610243578d60068c9814600014610d6c57505060036109c8565b60ff919750610d7a906111c7565b90549060031b1c1695600a8710156102435760038b9703610d31575060026109c8565b5060ff919750610dac906111c7565b90549060031b1c1695600a871015610243578d60098c9814610d27565b5060ff919750610dd8906111c7565b90549060031b1c1695600a871015610243578d818c9814610d20565b5060ff919750610e03906111c7565b90549060031b1c1695600a871015610243578d60078c9814610d19565b5060ff919750610e2f906111c7565b90549060031b1c1695600a871015610243578d60058c9814610d12565b5050505050509250610e5f600093611258565b6040517f6982eb0b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff89811660048301528716602482015260448101829052909690602081606481895afa908115610af357600091610ed2575b5091610abc565b610eeb915060203d602011610aec57610ade8183611217565b89610ecb565b506040845110156109b3565b604051610f09816111df565b7f59f4f3510000000000000000000000000000000000000000000000000000000081527f07211ef70000000000000000000000000000000000000000000000000000000060208201527f85f11d1e0000000000000000000000000000000000000000000000000000000060408201529261093f565b5060608280518101031261017057610f986020830161130f565b916060610fa76040830161130f565b910151801515810361017057906108bd565b5060ff610fc58b6111c7565b90549060031b1c16600a81101561024357600614610893565b5060ff610fea8b6111c7565b90549060031b1c16600a8110156102435760031461088c565b5050509250610e5f600093611258565b50604083511015610859565b909250610aff57610e5f90611258565b945050509361103e9150611258565b929061068d565b507f00000000000000000000000000000000000000000000000000000000000000008110610784565b611087915060203d602011610aec57610ade8183611217565b89610762565b506000806020830151806040850151526000905b8082106110cf5760408484806110be575b82519182526020820152f35b90816110c991611344565b906110b2565b90916110df83604087015161131d565b519360208501948551606481029080820460641490151715611147576111086064358951611331565b1161113b579161112a6111329261112460019551895190611331565b906115f2565b9551906115f2565b925b01906110a1565b50935091600190611134565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b507f000000000000000000000000000000000000000000000000000000000000000081106106b6565b807fccf7e6f70000000000000000000000000000000000000000000000000000000060049252fd5b90600b821015610aff57601f8260051c600d01921690565b6060810190811067ffffffffffffffff821117610c1a57604052565b60a0810190811067ffffffffffffffff821117610c1a57604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117610c1a57604052565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146111475760010190565b90816020910312610170575173ffffffffffffffffffffffffffffffffffffffff811681036101705790565b3d1561130a573d9067ffffffffffffffff8211610c1a57604051916112fe60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160184611217565b82523d6000602084013e565b606090565b519081600f0b820361017057565b8051821015610aff5760209160051b010190565b8181029291811591840414171561114757565b811561134e570490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b80156114ba57611448816000908360801c806114ae575b508060401c806114a1575b508060201c80611494575b508060101c80611487575b508060081c8061147a575b508060041c8061146d575b508060021c80611460575b50600191828092811c611459575b1c1b6113f08185611344565b01811c6113fd8185611344565b01811c61140a8185611344565b01811c6114178185611344565b01811c6114248185611344565b01811c6114318185611344565b01811c61143e8185611344565b01901c8092611344565b80821015611454575090565b905090565b01816113e4565b60029150910190386113d6565b60049150910190386113cb565b60089150910190386113c0565b60109150910190386113b5565b60209150910190386113aa565b604091509101903861139f565b91505060809038611394565b50600090565b670de0b6b3a764000091828202917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84820993838086109503948086039514611586578483111561155c5782910981600003821680920460028082600302188083028203028083028203028083028203028083028203028083028203028092029003029360018380600003040190848311900302920304170290565b60046040517f227bc153000000000000000000000000000000000000000000000000000000008152fd5b5050906115939250611344565b90565b90602081019081516115aa57505050600090565b6115cb60408401519160208501928351916115c5838361131d565b5261131d565b506115d68151611258565b90525190805182116115ea575b5050600190565b5238806115e3565b9190820180921161114757565b73ffffffffffffffffffffffffffffffffffffffff60005416330361162057565b60246040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152fdfea26469706673582212206b228b06a4ccfb1173e0ddd7aa621ac41ab36fcba9ee33c1b4c338e361264c2264736f6c63430008170033", - "deployedBytecode": "0x608080604052600436101561001357600080fd5b60003560e01c9081633d549b321461053b5750806347400449146104e257806361436d6a146104195780636347c900146103b9578063715018a61461031d57806381358498146102c45780638da5cb5b14610272578063b72529f2146101e2578063dbac26e9146101755763f2fde38b1461008d57600080fd5b346101705760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101705760043573ffffffffffffffffffffffffffffffffffffffff808216809203610170576100e66115ff565b811561013f57600054827fffffffffffffffffffffffff0000000000000000000000000000000000000000821617600055167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3005b60246040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260006004820152fd5b600080fd5b346101705760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101705760043573ffffffffffffffffffffffffffffffffffffffff8116809103610170576000526001602052602060ff604060002054166040519015158152f35b346101705760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017057600435600b8110156101705761022860ff916111c7565b90549060031b1c16604051600a821015610243576020918152f35b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b346101705760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017057602073ffffffffffffffffffffffffffffffffffffffff60005416604051908152f35b346101705760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101705760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b346101705760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610170576103546115ff565b600073ffffffffffffffffffffffffffffffffffffffff81547fffffffffffffffffffffffff000000000000000000000000000000000000000081168355167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b346101705760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017057600435600b8110156101705773ffffffffffffffffffffffffffffffffffffffff6020916002015416604051908152f35b346101705760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101705760043573ffffffffffffffffffffffffffffffffffffffff81168091036101705760407f6a12b3df6cba4203bd7fd06b816789f87de8c594299aed5717ae070fac781bac916104956115ff565b8060005260016020527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0082600020805460ff808216151692839116179055825191825215156020820152a1005b346101705760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101705760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b346101705760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610170576004359073ffffffffffffffffffffffffffffffffffffffff82168203610170576024359073ffffffffffffffffffffffffffffffffffffffff821682036101705760443573ffffffffffffffffffffffffffffffffffffffff81168091036101705773ffffffffffffffffffffffffffffffffffffffff0361119f57506060604080516105f7816111df565b600081526000602082015201526040519060807f000000000000000000000000000000000000000000000000000000000000000060061b8301016040526000825260006020830152606082018060408401527f0000000000000000000000000000000000000000000000000000000000000000905260006040805161067b816111df565b82815282602082015201526000916000925b7f0000000000000000000000000000000000000000000000000000000000000000841080611176575b1561108d57600091600b8510159182610aff5773ffffffffffffffffffffffffffffffffffffffff866002015416936040517f6982eb0b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8916600482015273ffffffffffffffffffffffffffffffffffffffff8716602482015260006044820152602081606481895afa908115610af35760009161106e575b50915b73ffffffffffffffffffffffffffffffffffffffff8316151580611045575b1561102f5773ffffffffffffffffffffffffffffffffffffffff831660005260016020528460ff6040600020541661101f57506107c090611258565b9160009085610aff576000808b60405173ffffffffffffffffffffffffffffffffffffffff60208201927feb85226d000000000000000000000000000000000000000000000000000000008452818716602484015216604482015273ffffffffffffffffffffffffffffffffffffffff8c16606482015260648152610844816111fb565b51908a5afa916108526112b1565b9280611013575b15611003576108678a6111c7565b905490600a60ff838360031b1c1610156102435760031b1c60ff166002148015610fde575b8015610fb9575b15610f7e57604083805181010312610170576108bd60406108b66020860161130f565b940161130f565b81610efd576040516108ce816111df565b7f92e3cc2d0000000000000000000000000000000000000000000000000000000081527f5e0d443f0000000000000000000000000000000000000000000000000000000060208201527f556d6e9f000000000000000000000000000000000000000000000000000000006040820152925b88610aff576000807fffffffff000000000000000000000000000000000000000000000000000000008651166040516020810191825273ffffffffffffffffffffffffffffffffffffffff851660248201526024815261099e816111df565b51908d5afa926109ac6112b1565b9380610ef1575b15610e4c579089959493929160089015610cdd575b83526fffffffffffffffffffffffffffffffff91610a07610a026109ee8589168761131d565b516109fb8685168861131d565b5190611331565b61137d565b95612710610a2781610a1b8785168961131d565b5104968685169061131d565b51048515159081610cd3575b50610b2e575b50505050505050610aff57610a4d90611258565b6040517f6982eb0b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff89811660048301528716602482015260448101829052909690602081606481895afa908115610af357600091610ac4575b50915b969096610765565b610ae6915060203d602011610aec575b610ade8183611217565b810190611285565b89610ab9565b503d610ad4565b6040513d6000823e3d90fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000807fffffffff000000000000000000000000000000000000000000000000000000006020890151166040516020810191825284600f0b602482015285600f0b604482015288606482015260648152610b87816111fb565b5190865afa93610b956112b1565b9685158015610cc8575b610c55575b505050505080610c49575b610bbd575b80808080610a39565b90919250602082805181010312610170576020610bdb9201516114c0565b60405180604081011067ffffffffffffffff604083011117610c1a578692610c1192604083016040528252602082015285611596565b50898080610bb4565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b50602082511015610baf565b600096975086955060407fffffffff00000000000000000000000000000000000000000000000000000000910151169281604051936020850195865216602484015216604482015285606482015260648152610cb0816111fb565b51915afa90610cbd6112b1565b918d80808080610ba4565b506020885110610b9f565b9050151538610a33565b9550610ce88d6111c7565b96905496600a60ff898360031b1c161015610243578b978f9160031b1c60ff166001148015610e20575b8015610df4575b8015610dc9575b8015610d9d575b15610d3657505060045b6109c8565b60ff919750610d44906111c7565b90549060031b1c1695600a871015610243578d60068c9814600014610d6c57505060036109c8565b60ff919750610d7a906111c7565b90549060031b1c1695600a8710156102435760038b9703610d31575060026109c8565b5060ff919750610dac906111c7565b90549060031b1c1695600a871015610243578d60098c9814610d27565b5060ff919750610dd8906111c7565b90549060031b1c1695600a871015610243578d818c9814610d20565b5060ff919750610e03906111c7565b90549060031b1c1695600a871015610243578d60078c9814610d19565b5060ff919750610e2f906111c7565b90549060031b1c1695600a871015610243578d60058c9814610d12565b5050505050509250610e5f600093611258565b6040517f6982eb0b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff89811660048301528716602482015260448101829052909690602081606481895afa908115610af357600091610ed2575b5091610abc565b610eeb915060203d602011610aec57610ade8183611217565b89610ecb565b506040845110156109b3565b604051610f09816111df565b7f59f4f3510000000000000000000000000000000000000000000000000000000081527f07211ef70000000000000000000000000000000000000000000000000000000060208201527f85f11d1e0000000000000000000000000000000000000000000000000000000060408201529261093f565b5060608280518101031261017057610f986020830161130f565b916060610fa76040830161130f565b910151801515810361017057906108bd565b5060ff610fc58b6111c7565b90549060031b1c16600a81101561024357600614610893565b5060ff610fea8b6111c7565b90549060031b1c16600a8110156102435760031461088c565b5050509250610e5f600093611258565b50604083511015610859565b909250610aff57610e5f90611258565b945050509361103e9150611258565b929061068d565b507f00000000000000000000000000000000000000000000000000000000000000008110610784565b611087915060203d602011610aec57610ade8183611217565b89610762565b506000806020830151806040850151526000905b8082106110cf5760408484806110be575b82519182526020820152f35b90816110c991611344565b906110b2565b90916110df83604087015161131d565b519360208501948551606481029080820460641490151715611147576111086064358951611331565b1161113b579161112a6111329261112460019551895190611331565b906115f2565b9551906115f2565b925b01906110a1565b50935091600190611134565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b507f000000000000000000000000000000000000000000000000000000000000000081106106b6565b807fccf7e6f70000000000000000000000000000000000000000000000000000000060049252fd5b90600b821015610aff57601f8260051c600d01921690565b6060810190811067ffffffffffffffff821117610c1a57604052565b60a0810190811067ffffffffffffffff821117610c1a57604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117610c1a57604052565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146111475760010190565b90816020910312610170575173ffffffffffffffffffffffffffffffffffffffff811681036101705790565b3d1561130a573d9067ffffffffffffffff8211610c1a57604051916112fe60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160184611217565b82523d6000602084013e565b606090565b519081600f0b820361017057565b8051821015610aff5760209160051b010190565b8181029291811591840414171561114757565b811561134e570490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b80156114ba57611448816000908360801c806114ae575b508060401c806114a1575b508060201c80611494575b508060101c80611487575b508060081c8061147a575b508060041c8061146d575b508060021c80611460575b50600191828092811c611459575b1c1b6113f08185611344565b01811c6113fd8185611344565b01811c61140a8185611344565b01811c6114178185611344565b01811c6114248185611344565b01811c6114318185611344565b01811c61143e8185611344565b01901c8092611344565b80821015611454575090565b905090565b01816113e4565b60029150910190386113d6565b60049150910190386113cb565b60089150910190386113c0565b60109150910190386113b5565b60209150910190386113aa565b604091509101903861139f565b91505060809038611394565b50600090565b670de0b6b3a764000091828202917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84820993838086109503948086039514611586578483111561155c5782910981600003821680920460028082600302188083028203028083028203028083028203028083028203028083028203028092029003029360018380600003040190848311900302920304170290565b60046040517f227bc153000000000000000000000000000000000000000000000000000000008152fd5b5050906115939250611344565b90565b90602081019081516115aa57505050600090565b6115cb60408401519160208501928351916115c5838361131d565b5261131d565b506115d68151611258565b90525190805182116115ea575b5050600190565b5238806115e3565b9190820180921161114757565b73ffffffffffffffffffffffffffffffffffffffff60005416330361162057565b60246040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152fdfea26469706673582212206b228b06a4ccfb1173e0ddd7aa621ac41ab36fcba9ee33c1b4c338e361264c2264736f6c63430008170033" + "bytecode": "0x60c08060405234610106576040816200109f8038038091610020828561010b565b8339810103126101065780516001600160a01b03808216929091839003610106576020806024920151936040519283809263124fd3dd60e21b8252600760048301525afa9081156100fa576000916100b8575b501660805260a052604051610f5a908162000145823960805181818161016f0152818161042b015281816105b40152610657015260a05181818160770152610af60152f35b6020813d6020116100f2575b816100d16020938361010b565b810103126100ee57519082821682036100eb575038610073565b80fd5b5080fd5b3d91506100c4565b6040513d6000823e3d90fd5b600080fd5b601f909101601f19168101906001600160401b0382119082101761012e57604052565b634e487b7160e01b600052604160045260246000fdfe608080604052600436101561001357600080fd5b600090813560e01c9081630caeeb2414610125575080633d549b321461009d5763813584981461004257600080fd5b3461009a57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261009a5760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b80fd5b503461009a5760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261009a576004359073ffffffffffffffffffffffffffffffffffffffff90818316830361009a5760243590828216820361009a57604435928316830361009a576040610119606435858588610390565b82519182526020820152f35b90503461019357817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101935760209073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b5080fd5b6040810190811067ffffffffffffffff8211176101b357604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176101b357604052565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146102505760010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80518210156102935760209160051b010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b519081600f0b82036102d057565b600080fd5b9060088110156102935760051b0190565b3d1561033f573d9067ffffffffffffffff82116101b3576040519161033360207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601846101e2565b82523d6000602084013e565b606090565b8181029291811591840414171561025057565b8115610361570490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b909173ffffffffffffffffffffffffffffffffffffffff80911603610c7e57604051917fa064072b00000000000000000000000000000000000000000000000000000000835273ffffffffffffffffffffffffffffffffffffffff8216600484015273ffffffffffffffffffffffffffffffffffffffff8116602484015260008360448173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa9283156109cf57600093610bcd575b50825115610bc15773ffffffffffffffffffffffffffffffffffffffff821673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee03610b1b57670de0b6b3a7640000905b83519560405180606081011067ffffffffffffffff6060830111176101b35760408160608093018252600081526000602082015201526040519660808160061b8901016040526000885260006020890152606088016040890152606088015260005b8551811080610aee575b15610a335773ffffffffffffffffffffffffffffffffffffffff610530828861027f565b511690604051917feb85226d000000000000000000000000000000000000000000000000000000008352600483015273ffffffffffffffffffffffffffffffffffffffff8616602483015273ffffffffffffffffffffffffffffffffffffffff8416604483015260608260648173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa80156109cf576000926000906000926109db575b5073ffffffffffffffffffffffffffffffffffffffff61060a848b61027f565b511691604051927f59f4f35100000000000000000000000000000000000000000000000000000000845260048401526101008360248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa9283156109cf57600093610935575b5089886106a76fffffffffffffffffffffffffffffffff8816866102d5565b5111801590610911575b610903576106e073ffffffffffffffffffffffffffffffffffffffff6106d98760ff9461027f565b5116610ca8565b16159081806108fc575b1561089b5750507f07211ef7000000000000000000000000000000000000000000000000000000005b73ffffffffffffffffffffffffffffffffffffffff610732858c61027f565b51166040519160208301526fffffffffffffffffffffffffffffffff861660248301526fffffffffffffffffffffffffffffffff83166044830152886064830152606482528160a081011067ffffffffffffffff60a0840111176101b357816000929160a0849301604052602082519201905afa6107ae6102e6565b908061088f575b6107cc575b5050506107c79150610223565b610502565b6020818051810103126102d0576020015190811580156107ed575b506107ba565b670de0b6b3a7640000908382810204821417156102505761084c936fffffffffffffffffffffffffffffffff6108378161082f8d610840966108479902610357565b9916836102d5565b519316906102d5565b5190610344565b610d78565b9160405180604081011067ffffffffffffffff6040830111176101b3576107c7936108859260408301604052825260208201528a610ebb565b50388080806107e7565b506020815110156107b5565b816108f3575b50156108cd577f5e0d443f00000000000000000000000000000000000000000000000000000000610713565b7f556d6e9f00000000000000000000000000000000000000000000000000000000610713565b905015386108a1565b50806106ea565b505050506107c79150610223565b5061092e6fffffffffffffffffffffffffffffffff8416856102d5565b51156106b1565b909250610100903d610100116109c7575b61095082826101e2565b6101008183810103126102d057818101601f820112156102d057604051918261010081011067ffffffffffffffff610100850111176101b3576101008301604052829082016101008301116102d05781905b610100830182106109b7575050509138610688565b81518152602091820191016109a2565b3d9150610946565b6040513d6000823e3d90fd5b935050506060823d606011610a2b575b816109f8606093836101e2565b810103126102d057610a09826102c2565b6040610a17602085016102c2565b9301519081151582036102d05792386105ea565b3d91506109eb565b50949593505050506000906000936020820151806040840151526000925b818410610a7457505050508280610a6757509190565b610a7091610357565b9190565b90919295610a8687604084015161027f565b51946020860195865160649081810291818304149015171561025057610aad878651610344565b11610ae25791610acf610ad792610ac9600195518a5190610344565b90610f17565b965190610f17565b965b01929190610a51565b50945095600190610ad9565b5060208801517f00000000000000000000000000000000000000000000000000000000000000001161050c565b6040517f313ce56700000000000000000000000000000000000000000000000000000000815260208160048173ffffffffffffffffffffffffffffffffffffffff87165afa80156109cf57600090610b84575b60ff915016604d811161025057600a0a906104a0565b506020813d602011610bb9575b81610b9e602093836101e2565b810103126102d0575160ff811681036102d05760ff90610b6e565b3d9150610b91565b50505050600090600090565b9092503d806000833e610be081836101e2565b810160209081838203126102d057825167ffffffffffffffff938482116102d0570181601f820112156102d05780519384116101b3578360051b9060405194610c2b858401876101e2565b855283808601928201019283116102d0578301905b828210610c525750505050913861045c565b815173ffffffffffffffffffffffffffffffffffffffff811681036102d0578152908301908301610c40565b60046040517fccf7e6f7000000000000000000000000000000000000000000000000000000008152fd5b60008060405160208101907f49fe9e7700000000000000000000000000000000000000000000000000000000825260048152610ce381610197565b5190845afa610cf06102e6565b81610d6b575b50610d65576000809160405160208101907f095a0fc600000000000000000000000000000000000000000000000000000000825260048152610d3781610197565b51915afa610d436102e6565b81610d58575b50610d5357600090565b600290565b6020915051101538610d49565b50600190565b6020915051101538610cf6565b8015610eb557610e43816000908360801c80610ea9575b508060401c80610e9c575b508060201c80610e8f575b508060101c80610e82575b508060081c80610e75575b508060041c80610e68575b508060021c80610e5b575b50600191828092811c610e54575b1c1b610deb8185610357565b01811c610df88185610357565b01811c610e058185610357565b01811c610e128185610357565b01811c610e1f8185610357565b01811c610e2c8185610357565b01811c610e398185610357565b01901c8092610357565b80821015610e4f575090565b905090565b0181610ddf565b6002915091019038610dd1565b6004915091019038610dc6565b6008915091019038610dbb565b6010915091019038610db0565b6020915091019038610da5565b6040915091019038610d9a565b91505060809038610d8f565b50600090565b9060208101908151610ecf57505050600090565b610ef06040840151916020850192835191610eea838361027f565b5261027f565b50610efb8151610223565b9052519080518211610f0f575b5050600190565b523880610f08565b919082018092116102505756fea2646970667358221220bf934760b8c950184fbb00c61df2e4b7bc157005de6bde022cb80f0c51b48f5464736f6c63430008170033", + "deployedBytecode": "0x608080604052600436101561001357600080fd5b600090813560e01c9081630caeeb2414610125575080633d549b321461009d5763813584981461004257600080fd5b3461009a57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261009a5760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b80fd5b503461009a5760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261009a576004359073ffffffffffffffffffffffffffffffffffffffff90818316830361009a5760243590828216820361009a57604435928316830361009a576040610119606435858588610390565b82519182526020820152f35b90503461019357817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101935760209073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b5080fd5b6040810190811067ffffffffffffffff8211176101b357604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176101b357604052565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146102505760010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80518210156102935760209160051b010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b519081600f0b82036102d057565b600080fd5b9060088110156102935760051b0190565b3d1561033f573d9067ffffffffffffffff82116101b3576040519161033360207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601846101e2565b82523d6000602084013e565b606090565b8181029291811591840414171561025057565b8115610361570490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b909173ffffffffffffffffffffffffffffffffffffffff80911603610c7e57604051917fa064072b00000000000000000000000000000000000000000000000000000000835273ffffffffffffffffffffffffffffffffffffffff8216600484015273ffffffffffffffffffffffffffffffffffffffff8116602484015260008360448173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa9283156109cf57600093610bcd575b50825115610bc15773ffffffffffffffffffffffffffffffffffffffff821673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee03610b1b57670de0b6b3a7640000905b83519560405180606081011067ffffffffffffffff6060830111176101b35760408160608093018252600081526000602082015201526040519660808160061b8901016040526000885260006020890152606088016040890152606088015260005b8551811080610aee575b15610a335773ffffffffffffffffffffffffffffffffffffffff610530828861027f565b511690604051917feb85226d000000000000000000000000000000000000000000000000000000008352600483015273ffffffffffffffffffffffffffffffffffffffff8616602483015273ffffffffffffffffffffffffffffffffffffffff8416604483015260608260648173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa80156109cf576000926000906000926109db575b5073ffffffffffffffffffffffffffffffffffffffff61060a848b61027f565b511691604051927f59f4f35100000000000000000000000000000000000000000000000000000000845260048401526101008360248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa9283156109cf57600093610935575b5089886106a76fffffffffffffffffffffffffffffffff8816866102d5565b5111801590610911575b610903576106e073ffffffffffffffffffffffffffffffffffffffff6106d98760ff9461027f565b5116610ca8565b16159081806108fc575b1561089b5750507f07211ef7000000000000000000000000000000000000000000000000000000005b73ffffffffffffffffffffffffffffffffffffffff610732858c61027f565b51166040519160208301526fffffffffffffffffffffffffffffffff861660248301526fffffffffffffffffffffffffffffffff83166044830152886064830152606482528160a081011067ffffffffffffffff60a0840111176101b357816000929160a0849301604052602082519201905afa6107ae6102e6565b908061088f575b6107cc575b5050506107c79150610223565b610502565b6020818051810103126102d0576020015190811580156107ed575b506107ba565b670de0b6b3a7640000908382810204821417156102505761084c936fffffffffffffffffffffffffffffffff6108378161082f8d610840966108479902610357565b9916836102d5565b519316906102d5565b5190610344565b610d78565b9160405180604081011067ffffffffffffffff6040830111176101b3576107c7936108859260408301604052825260208201528a610ebb565b50388080806107e7565b506020815110156107b5565b816108f3575b50156108cd577f5e0d443f00000000000000000000000000000000000000000000000000000000610713565b7f556d6e9f00000000000000000000000000000000000000000000000000000000610713565b905015386108a1565b50806106ea565b505050506107c79150610223565b5061092e6fffffffffffffffffffffffffffffffff8416856102d5565b51156106b1565b909250610100903d610100116109c7575b61095082826101e2565b6101008183810103126102d057818101601f820112156102d057604051918261010081011067ffffffffffffffff610100850111176101b3576101008301604052829082016101008301116102d05781905b610100830182106109b7575050509138610688565b81518152602091820191016109a2565b3d9150610946565b6040513d6000823e3d90fd5b935050506060823d606011610a2b575b816109f8606093836101e2565b810103126102d057610a09826102c2565b6040610a17602085016102c2565b9301519081151582036102d05792386105ea565b3d91506109eb565b50949593505050506000906000936020820151806040840151526000925b818410610a7457505050508280610a6757509190565b610a7091610357565b9190565b90919295610a8687604084015161027f565b51946020860195865160649081810291818304149015171561025057610aad878651610344565b11610ae25791610acf610ad792610ac9600195518a5190610344565b90610f17565b965190610f17565b965b01929190610a51565b50945095600190610ad9565b5060208801517f00000000000000000000000000000000000000000000000000000000000000001161050c565b6040517f313ce56700000000000000000000000000000000000000000000000000000000815260208160048173ffffffffffffffffffffffffffffffffffffffff87165afa80156109cf57600090610b84575b60ff915016604d811161025057600a0a906104a0565b506020813d602011610bb9575b81610b9e602093836101e2565b810103126102d0575160ff811681036102d05760ff90610b6e565b3d9150610b91565b50505050600090600090565b9092503d806000833e610be081836101e2565b810160209081838203126102d057825167ffffffffffffffff938482116102d0570181601f820112156102d05780519384116101b3578360051b9060405194610c2b858401876101e2565b855283808601928201019283116102d0578301905b828210610c525750505050913861045c565b815173ffffffffffffffffffffffffffffffffffffffff811681036102d0578152908301908301610c40565b60046040517fccf7e6f7000000000000000000000000000000000000000000000000000000008152fd5b60008060405160208101907f49fe9e7700000000000000000000000000000000000000000000000000000000825260048152610ce381610197565b5190845afa610cf06102e6565b81610d6b575b50610d65576000809160405160208101907f095a0fc600000000000000000000000000000000000000000000000000000000825260048152610d3781610197565b51915afa610d436102e6565b81610d58575b50610d5357600090565b600290565b6020915051101538610d49565b50600190565b6020915051101538610cf6565b8015610eb557610e43816000908360801c80610ea9575b508060401c80610e9c575b508060201c80610e8f575b508060101c80610e82575b508060081c80610e75575b508060041c80610e68575b508060021c80610e5b575b50600191828092811c610e54575b1c1b610deb8185610357565b01811c610df88185610357565b01811c610e058185610357565b01811c610e128185610357565b01811c610e1f8185610357565b01811c610e2c8185610357565b01811c610e398185610357565b01901c8092610357565b80821015610e4f575090565b905090565b0181610ddf565b6002915091019038610dd1565b6004915091019038610dc6565b6008915091019038610dbb565b6010915091019038610db0565b6020915091019038610da5565b6040915091019038610d9a565b91505060809038610d8f565b50600090565b9060208101908151610ecf57505050600090565b610ef06040840151916020850192835191610eea838361027f565b5261027f565b50610efb8151610223565b9052519080518211610f0f575b5050600190565b523880610f08565b919082018092116102505756fea2646970667358221220bf934760b8c950184fbb00c61df2e4b7bc157005de6bde022cb80f0c51b48f5464736f6c63430008170033" } \ No newline at end of file From 3e11ac5571a32c1e879ddbc90591144fac0fca61 Mon Sep 17 00:00:00 2001 From: Denis Date: Wed, 14 Aug 2024 17:14:01 +0100 Subject: [PATCH 6/8] Deploy on xdai --- README.md | 2 +- deployments/xdai/CurveOracle.json | 169 ++++-------------------------- 2 files changed, 22 insertions(+), 149 deletions(-) diff --git a/README.md b/README.md index 0139031..fbba13c 100644 --- a/README.md +++ b/README.md @@ -332,7 +332,7 @@ If no direct liquidity pair exists between two tokens, the spot price aggregator * Levinswap - [0x52a8193C7f42b75F27e4ce96f8ddBA7e854453Ef](https://gnosisscan.io/address/0x52a8193C7f42b75F27e4ce96f8ddBA7e854453Ef) * Swapr - [0x27950ecAeBB4462e18e8041AAF6Ea13cA47Af001](https://gnosisscan.io/address/0x27950ecAeBB4462e18e8041AAF6Ea13cA47Af001) * SushiSwap - [0x2A45d538f460DDBEeA3a899b0674dA3DFE318faa](https://gnosisscan.io/address/0x2A45d538f460DDBEeA3a899b0674dA3DFE318faa) - * Curve - [0x587D67870CF6e733F2Ac101eD83675d6C01Ae127](https://gnosisscan.io/address/0x587D67870CF6e733F2Ac101eD83675d6C01Ae127) + * Curve - [0x4e5Cee3B8Af0CB46EFAA94Cba5E0f25f8770BB19](https://gnosisscan.io/address/0x4e5Cee3B8Af0CB46EFAA94Cba5E0f25f8770BB19) diff --git a/deployments/xdai/CurveOracle.json b/deployments/xdai/CurveOracle.json index 8021788..1c09147 100644 --- a/deployments/xdai/CurveOracle.json +++ b/deployments/xdai/CurveOracle.json @@ -1,27 +1,17 @@ { - "address": "0x587D67870CF6e733F2Ac101eD83675d6C01Ae127", + "address": "0x4e5Cee3B8Af0CB46EFAA94Cba5E0f25f8770BB19", "abi": [ { "inputs": [ { "internalType": "contract ICurveProvider", - "name": "_addressProvider", + "name": "curveProvider", "type": "address" }, { "internalType": "uint256", - "name": "_maxPools", + "name": "maxPools", "type": "uint256" - }, - { - "internalType": "uint256[]", - "name": "_registryIds", - "type": "uint256[]" - }, - { - "internalType": "enum CurveOracle.CurveRegistryType[]", - "name": "_registryTypes", - "type": "uint8[]" } ], "stateMutability": "nonpayable", @@ -32,11 +22,6 @@ "name": "ConnectorShouldBeNone", "type": "error" }, - { - "inputs": [], - "name": "MathOverflowedMulDiv", - "type": "error" - }, { "inputs": [], "name": "PoolNotFound", @@ -49,12 +34,12 @@ }, { "inputs": [], - "name": "MAX_POOLS", + "name": "CURVE_METAREGISTRY", "outputs": [ { - "internalType": "uint256", + "internalType": "contract ICurveMetaregistry", "name": "", - "type": "uint256" + "type": "address" } ], "stateMutability": "view", @@ -62,7 +47,7 @@ }, { "inputs": [], - "name": "REGISTRIES_COUNT", + "name": "MAX_POOLS", "outputs": [ { "internalType": "uint256", @@ -111,140 +96,28 @@ ], "stateMutability": "view", "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "registries", - "outputs": [ - { - "internalType": "contract ICurveRegistry", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "registryTypes", - "outputs": [ - { - "internalType": "enum CurveOracle.CurveRegistryType", - "name": "", - "type": "uint8" - } - ], - "stateMutability": "view", - "type": "function" } ], - "transactionHash": "0xfe7227b5b9edf295aefa6ae76e4e78f0a262e60a7dcf1a77d10273aadadd537c", + "transactionHash": "0x43686186152567976f354541fb562f5014ae9d627359a1dc541e583b11888bf1", "receipt": { - "to": null, + "to": "0xD935a2bb926019E0ed6fb31fbD5b1Bbb7c05bf65", "from": "0x56E44874F624EbDE6efCc783eFD685f0FBDC6dcF", - "contractAddress": "0x587D67870CF6e733F2Ac101eD83675d6C01Ae127", - "transactionIndex": 2, - "gasUsed": "1185653", + "contractAddress": null, + "transactionIndex": 4, + "gasUsed": "928882", "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "blockHash": "0x72b5d7ea8f47de3e58854bb2fe8c2f99853294c2564afaf9a8411bd83befd337", - "transactionHash": "0xfe7227b5b9edf295aefa6ae76e4e78f0a262e60a7dcf1a77d10273aadadd537c", + "blockHash": "0xfdce9ed8f992d9408573ce929c9b570b834662069be8506ec6713e26df577acf", + "transactionHash": "0x43686186152567976f354541fb562f5014ae9d627359a1dc541e583b11888bf1", "logs": [], - "blockNumber": 33507458, - "cumulativeGasUsed": "16849174", - "status": 1, - "byzantium": true + "blockNumber": 35481687, + "cumulativeGasUsed": "1118802", + "status": 1 }, "args": [ - "0x0000000022d53366457f9d5e68ec105046fc4383", - 100, - [ - 0, - 3, - 5 - ], - [ - 0, - 7, - 2 - ] + "0x5ffe7FB82894076ECB99A30D6A32e969e6e35E98", + 100 ], "numDeployments": 1, - "solcInputHash": "ca45e2be7c6359ec53cc6b398cbf70f7", - "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract ICurveProvider\",\"name\":\"_addressProvider\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_maxPools\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"_registryIds\",\"type\":\"uint256[]\"},{\"internalType\":\"enum CurveOracle.CurveRegistryType[]\",\"name\":\"_registryTypes\",\"type\":\"uint8[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ConnectorShouldBeNone\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MathOverflowedMulDiv\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PoolNotFound\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PoolWithConnectorNotFound\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MAX_POOLS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"REGISTRIES_COUNT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"srcToken\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"dstToken\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"connector\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"thresholdFilter\",\"type\":\"uint256\"}],\"name\":\"getRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"rate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"registries\",\"outputs\":[{\"internalType\":\"contract ICurveRegistry\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"registryTypes\",\"outputs\":[{\"internalType\":\"enum CurveOracle.CurveRegistryType\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"MathOverflowedMulDiv()\":[{\"details\":\"Muldiv operation overflow.\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/oracles/CurveOracle.sol\":\"CurveOracle\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/draft-IERC6093.sol)\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Standard ERC20 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC20 tokens.\\n */\\ninterface IERC20Errors {\\n /**\\n * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\\n * @param sender Address whose tokens are being transferred.\\n * @param balance Current balance for the interacting account.\\n * @param needed Minimum amount required to perform a transfer.\\n */\\n error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed);\\n\\n /**\\n * @dev Indicates a failure with the token `sender`. Used in transfers.\\n * @param sender Address whose tokens are being transferred.\\n */\\n error ERC20InvalidSender(address sender);\\n\\n /**\\n * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n * @param receiver Address to which tokens are being transferred.\\n */\\n error ERC20InvalidReceiver(address receiver);\\n\\n /**\\n * @dev Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\\n * @param spender Address that may be allowed to operate on tokens without being their owner.\\n * @param allowance Amount of tokens a `spender` is allowed to operate with.\\n * @param needed Minimum amount required to perform a transfer.\\n */\\n error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed);\\n\\n /**\\n * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n * @param approver Address initiating an approval operation.\\n */\\n error ERC20InvalidApprover(address approver);\\n\\n /**\\n * @dev Indicates a failure with the `spender` to be approved. Used in approvals.\\n * @param spender Address that may be allowed to operate on tokens without being their owner.\\n */\\n error ERC20InvalidSpender(address spender);\\n}\\n\\n/**\\n * @dev Standard ERC721 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC721 tokens.\\n */\\ninterface IERC721Errors {\\n /**\\n * @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in EIP-20.\\n * Used in balance queries.\\n * @param owner Address of the current owner of a token.\\n */\\n error ERC721InvalidOwner(address owner);\\n\\n /**\\n * @dev Indicates a `tokenId` whose `owner` is the zero address.\\n * @param tokenId Identifier number of a token.\\n */\\n error ERC721NonexistentToken(uint256 tokenId);\\n\\n /**\\n * @dev Indicates an error related to the ownership over a particular token. Used in transfers.\\n * @param sender Address whose tokens are being transferred.\\n * @param tokenId Identifier number of a token.\\n * @param owner Address of the current owner of a token.\\n */\\n error ERC721IncorrectOwner(address sender, uint256 tokenId, address owner);\\n\\n /**\\n * @dev Indicates a failure with the token `sender`. Used in transfers.\\n * @param sender Address whose tokens are being transferred.\\n */\\n error ERC721InvalidSender(address sender);\\n\\n /**\\n * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n * @param receiver Address to which tokens are being transferred.\\n */\\n error ERC721InvalidReceiver(address receiver);\\n\\n /**\\n * @dev Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\\n * @param operator Address that may be allowed to operate on tokens without being their owner.\\n * @param tokenId Identifier number of a token.\\n */\\n error ERC721InsufficientApproval(address operator, uint256 tokenId);\\n\\n /**\\n * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n * @param approver Address initiating an approval operation.\\n */\\n error ERC721InvalidApprover(address approver);\\n\\n /**\\n * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\\n * @param operator Address that may be allowed to operate on tokens without being their owner.\\n */\\n error ERC721InvalidOperator(address operator);\\n}\\n\\n/**\\n * @dev Standard ERC1155 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC1155 tokens.\\n */\\ninterface IERC1155Errors {\\n /**\\n * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\\n * @param sender Address whose tokens are being transferred.\\n * @param balance Current balance for the interacting account.\\n * @param needed Minimum amount required to perform a transfer.\\n * @param tokenId Identifier number of a token.\\n */\\n error ERC1155InsufficientBalance(address sender, uint256 balance, uint256 needed, uint256 tokenId);\\n\\n /**\\n * @dev Indicates a failure with the token `sender`. Used in transfers.\\n * @param sender Address whose tokens are being transferred.\\n */\\n error ERC1155InvalidSender(address sender);\\n\\n /**\\n * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n * @param receiver Address to which tokens are being transferred.\\n */\\n error ERC1155InvalidReceiver(address receiver);\\n\\n /**\\n * @dev Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\\n * @param operator Address that may be allowed to operate on tokens without being their owner.\\n * @param owner Address of the current owner of a token.\\n */\\n error ERC1155MissingApprovalForAll(address operator, address owner);\\n\\n /**\\n * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n * @param approver Address initiating an approval operation.\\n */\\n error ERC1155InvalidApprover(address approver);\\n\\n /**\\n * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\\n * @param operator Address that may be allowed to operate on tokens without being their owner.\\n */\\n error ERC1155InvalidOperator(address operator);\\n\\n /**\\n * @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.\\n * Used in batch transfers.\\n * @param idsLength Length of the array of token identifiers\\n * @param valuesLength Length of the array of token amounts\\n */\\n error ERC1155InvalidArrayLength(uint256 idsLength, uint256 valuesLength);\\n}\\n\",\"keccak256\":\"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/ERC20.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC20} from \\\"./IERC20.sol\\\";\\nimport {IERC20Metadata} from \\\"./extensions/IERC20Metadata.sol\\\";\\nimport {Context} from \\\"../../utils/Context.sol\\\";\\nimport {IERC20Errors} from \\\"../../interfaces/draft-IERC6093.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC20} interface.\\n *\\n * This implementation is agnostic to the way tokens are created. This means\\n * that a supply mechanism has to be added in a derived contract using {_mint}.\\n *\\n * TIP: For a detailed writeup see our guide\\n * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How\\n * to implement supply mechanisms].\\n *\\n * The default value of {decimals} is 18. To change this, you should override\\n * this function so it returns a different value.\\n *\\n * We have followed general OpenZeppelin Contracts guidelines: functions revert\\n * instead returning `false` on failure. This behavior is nonetheless\\n * conventional and does not conflict with the expectations of ERC20\\n * applications.\\n *\\n * Additionally, an {Approval} event is emitted on calls to {transferFrom}.\\n * This allows applications to reconstruct the allowance for all accounts just\\n * by listening to said events. Other implementations of the EIP may not emit\\n * these events, as it isn't required by the specification.\\n */\\nabstract contract ERC20 is Context, IERC20, IERC20Metadata, IERC20Errors {\\n mapping(address account => uint256) private _balances;\\n\\n mapping(address account => mapping(address spender => uint256)) private _allowances;\\n\\n uint256 private _totalSupply;\\n\\n string private _name;\\n string private _symbol;\\n\\n /**\\n * @dev Sets the values for {name} and {symbol}.\\n *\\n * All two of these values are immutable: they can only be set once during\\n * construction.\\n */\\n constructor(string memory name_, string memory symbol_) {\\n _name = name_;\\n _symbol = symbol_;\\n }\\n\\n /**\\n * @dev Returns the name of the token.\\n */\\n function name() public view virtual returns (string memory) {\\n return _name;\\n }\\n\\n /**\\n * @dev Returns the symbol of the token, usually a shorter version of the\\n * name.\\n */\\n function symbol() public view virtual returns (string memory) {\\n return _symbol;\\n }\\n\\n /**\\n * @dev Returns the number of decimals used to get its user representation.\\n * For example, if `decimals` equals `2`, a balance of `505` tokens should\\n * be displayed to a user as `5.05` (`505 / 10 ** 2`).\\n *\\n * Tokens usually opt for a value of 18, imitating the relationship between\\n * Ether and Wei. This is the default value returned by this function, unless\\n * it's overridden.\\n *\\n * NOTE: This information is only used for _display_ purposes: it in\\n * no way affects any of the arithmetic of the contract, including\\n * {IERC20-balanceOf} and {IERC20-transfer}.\\n */\\n function decimals() public view virtual returns (uint8) {\\n return 18;\\n }\\n\\n /**\\n * @dev See {IERC20-totalSupply}.\\n */\\n function totalSupply() public view virtual returns (uint256) {\\n return _totalSupply;\\n }\\n\\n /**\\n * @dev See {IERC20-balanceOf}.\\n */\\n function balanceOf(address account) public view virtual returns (uint256) {\\n return _balances[account];\\n }\\n\\n /**\\n * @dev See {IERC20-transfer}.\\n *\\n * Requirements:\\n *\\n * - `to` cannot be the zero address.\\n * - the caller must have a balance of at least `value`.\\n */\\n function transfer(address to, uint256 value) public virtual returns (bool) {\\n address owner = _msgSender();\\n _transfer(owner, to, value);\\n return true;\\n }\\n\\n /**\\n * @dev See {IERC20-allowance}.\\n */\\n function allowance(address owner, address spender) public view virtual returns (uint256) {\\n return _allowances[owner][spender];\\n }\\n\\n /**\\n * @dev See {IERC20-approve}.\\n *\\n * NOTE: If `value` is the maximum `uint256`, the allowance is not updated on\\n * `transferFrom`. This is semantically equivalent to an infinite approval.\\n *\\n * Requirements:\\n *\\n * - `spender` cannot be the zero address.\\n */\\n function approve(address spender, uint256 value) public virtual returns (bool) {\\n address owner = _msgSender();\\n _approve(owner, spender, value);\\n return true;\\n }\\n\\n /**\\n * @dev See {IERC20-transferFrom}.\\n *\\n * Emits an {Approval} event indicating the updated allowance. This is not\\n * required by the EIP. See the note at the beginning of {ERC20}.\\n *\\n * NOTE: Does not update the allowance if the current allowance\\n * is the maximum `uint256`.\\n *\\n * Requirements:\\n *\\n * - `from` and `to` cannot be the zero address.\\n * - `from` must have a balance of at least `value`.\\n * - the caller must have allowance for ``from``'s tokens of at least\\n * `value`.\\n */\\n function transferFrom(address from, address to, uint256 value) public virtual returns (bool) {\\n address spender = _msgSender();\\n _spendAllowance(from, spender, value);\\n _transfer(from, to, value);\\n return true;\\n }\\n\\n /**\\n * @dev Moves a `value` amount of tokens from `from` to `to`.\\n *\\n * This internal function is equivalent to {transfer}, and can be used to\\n * e.g. implement automatic token fees, slashing mechanisms, etc.\\n *\\n * Emits a {Transfer} event.\\n *\\n * NOTE: This function is not virtual, {_update} should be overridden instead.\\n */\\n function _transfer(address from, address to, uint256 value) internal {\\n if (from == address(0)) {\\n revert ERC20InvalidSender(address(0));\\n }\\n if (to == address(0)) {\\n revert ERC20InvalidReceiver(address(0));\\n }\\n _update(from, to, value);\\n }\\n\\n /**\\n * @dev Transfers a `value` amount of tokens from `from` to `to`, or alternatively mints (or burns) if `from`\\n * (or `to`) is the zero address. All customizations to transfers, mints, and burns should be done by overriding\\n * this function.\\n *\\n * Emits a {Transfer} event.\\n */\\n function _update(address from, address to, uint256 value) internal virtual {\\n if (from == address(0)) {\\n // Overflow check required: The rest of the code assumes that totalSupply never overflows\\n _totalSupply += value;\\n } else {\\n uint256 fromBalance = _balances[from];\\n if (fromBalance < value) {\\n revert ERC20InsufficientBalance(from, fromBalance, value);\\n }\\n unchecked {\\n // Overflow not possible: value <= fromBalance <= totalSupply.\\n _balances[from] = fromBalance - value;\\n }\\n }\\n\\n if (to == address(0)) {\\n unchecked {\\n // Overflow not possible: value <= totalSupply or value <= fromBalance <= totalSupply.\\n _totalSupply -= value;\\n }\\n } else {\\n unchecked {\\n // Overflow not possible: balance + value is at most totalSupply, which we know fits into a uint256.\\n _balances[to] += value;\\n }\\n }\\n\\n emit Transfer(from, to, value);\\n }\\n\\n /**\\n * @dev Creates a `value` amount of tokens and assigns them to `account`, by transferring it from address(0).\\n * Relies on the `_update` mechanism\\n *\\n * Emits a {Transfer} event with `from` set to the zero address.\\n *\\n * NOTE: This function is not virtual, {_update} should be overridden instead.\\n */\\n function _mint(address account, uint256 value) internal {\\n if (account == address(0)) {\\n revert ERC20InvalidReceiver(address(0));\\n }\\n _update(address(0), account, value);\\n }\\n\\n /**\\n * @dev Destroys a `value` amount of tokens from `account`, lowering the total supply.\\n * Relies on the `_update` mechanism.\\n *\\n * Emits a {Transfer} event with `to` set to the zero address.\\n *\\n * NOTE: This function is not virtual, {_update} should be overridden instead\\n */\\n function _burn(address account, uint256 value) internal {\\n if (account == address(0)) {\\n revert ERC20InvalidSender(address(0));\\n }\\n _update(account, address(0), value);\\n }\\n\\n /**\\n * @dev Sets `value` as the allowance of `spender` over the `owner` s tokens.\\n *\\n * This internal function is equivalent to `approve`, and can be used to\\n * e.g. set automatic allowances for certain subsystems, etc.\\n *\\n * Emits an {Approval} event.\\n *\\n * Requirements:\\n *\\n * - `owner` cannot be the zero address.\\n * - `spender` cannot be the zero address.\\n *\\n * Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument.\\n */\\n function _approve(address owner, address spender, uint256 value) internal {\\n _approve(owner, spender, value, true);\\n }\\n\\n /**\\n * @dev Variant of {_approve} with an optional flag to enable or disable the {Approval} event.\\n *\\n * By default (when calling {_approve}) the flag is set to true. On the other hand, approval changes made by\\n * `_spendAllowance` during the `transferFrom` operation set the flag to false. This saves gas by not emitting any\\n * `Approval` event during `transferFrom` operations.\\n *\\n * Anyone who wishes to continue emitting `Approval` events on the`transferFrom` operation can force the flag to\\n * true using the following override:\\n * ```\\n * function _approve(address owner, address spender, uint256 value, bool) internal virtual override {\\n * super._approve(owner, spender, value, true);\\n * }\\n * ```\\n *\\n * Requirements are the same as {_approve}.\\n */\\n function _approve(address owner, address spender, uint256 value, bool emitEvent) internal virtual {\\n if (owner == address(0)) {\\n revert ERC20InvalidApprover(address(0));\\n }\\n if (spender == address(0)) {\\n revert ERC20InvalidSpender(address(0));\\n }\\n _allowances[owner][spender] = value;\\n if (emitEvent) {\\n emit Approval(owner, spender, value);\\n }\\n }\\n\\n /**\\n * @dev Updates `owner` s allowance for `spender` based on spent `value`.\\n *\\n * Does not update the allowance value in case of infinite allowance.\\n * Revert if not enough allowance is available.\\n *\\n * Does not emit an {Approval} event.\\n */\\n function _spendAllowance(address owner, address spender, uint256 value) internal virtual {\\n uint256 currentAllowance = allowance(owner, spender);\\n if (currentAllowance != type(uint256).max) {\\n if (currentAllowance < value) {\\n revert ERC20InsufficientAllowance(spender, currentAllowance, value);\\n }\\n unchecked {\\n _approve(owner, spender, currentAllowance - value, false);\\n }\\n }\\n }\\n}\\n\",\"keccak256\":\"0xc3e1fa9d1987f8d349dfb4d6fe93bf2ca014b52ba335cfac30bfe71e357e6f80\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20 {\\n /**\\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n * another (`to`).\\n *\\n * Note that `value` may be zero.\\n */\\n event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n /**\\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n * a call to {approve}. `value` is the new allowance.\\n */\\n event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n /**\\n * @dev Returns the value of tokens in existence.\\n */\\n function totalSupply() external view returns (uint256);\\n\\n /**\\n * @dev Returns the value of tokens owned by `account`.\\n */\\n function balanceOf(address account) external view returns (uint256);\\n\\n /**\\n * @dev Moves a `value` amount of tokens from the caller's account to `to`.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transfer(address to, uint256 value) external returns (bool);\\n\\n /**\\n * @dev Returns the remaining number of tokens that `spender` will be\\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n * zero by default.\\n *\\n * This value changes when {approve} or {transferFrom} are called.\\n */\\n function allowance(address owner, address spender) external view returns (uint256);\\n\\n /**\\n * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\\n * caller's tokens.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n * that someone may use both the old and the new allowance by unfortunate\\n * transaction ordering. One possible solution to mitigate this race\\n * condition is to first reduce the spender's allowance to 0 and set the\\n * desired value afterwards:\\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n *\\n * Emits an {Approval} event.\\n */\\n function approve(address spender, uint256 value) external returns (bool);\\n\\n /**\\n * @dev Moves a `value` amount of tokens from `from` to `to` using the\\n * allowance mechanism. `value` is then deducted from the caller's\\n * allowance.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transferFrom(address from, address to, uint256 value) external returns (bool);\\n}\\n\",\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/extensions/IERC20Metadata.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC20} from \\\"../IERC20.sol\\\";\\n\\n/**\\n * @dev Interface for the optional metadata functions from the ERC20 standard.\\n */\\ninterface IERC20Metadata is IERC20 {\\n /**\\n * @dev Returns the name of the token.\\n */\\n function name() external view returns (string memory);\\n\\n /**\\n * @dev Returns the symbol of the token.\\n */\\n function symbol() external view returns (string memory);\\n\\n /**\\n * @dev Returns the decimals places of the token.\\n */\\n function decimals() external view returns (uint8);\\n}\\n\",\"keccak256\":\"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n function _contextSuffixLength() internal view virtual returns (uint256) {\\n return 0;\\n }\\n}\\n\",\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/math/Math.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Standard math utilities missing in the Solidity language.\\n */\\nlibrary Math {\\n /**\\n * @dev Muldiv operation overflow.\\n */\\n error MathOverflowedMulDiv();\\n\\n enum Rounding {\\n Floor, // Toward negative infinity\\n Ceil, // Toward positive infinity\\n Trunc, // Toward zero\\n Expand // Away from zero\\n }\\n\\n /**\\n * @dev Returns the addition of two unsigned integers, with an overflow flag.\\n */\\n function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {\\n unchecked {\\n uint256 c = a + b;\\n if (c < a) return (false, 0);\\n return (true, c);\\n }\\n }\\n\\n /**\\n * @dev Returns the subtraction of two unsigned integers, with an overflow flag.\\n */\\n function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {\\n unchecked {\\n if (b > a) return (false, 0);\\n return (true, a - b);\\n }\\n }\\n\\n /**\\n * @dev Returns the multiplication of two unsigned integers, with an overflow flag.\\n */\\n function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {\\n unchecked {\\n // Gas optimization: this is cheaper than requiring 'a' not being zero, but the\\n // benefit is lost if 'b' is also tested.\\n // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522\\n if (a == 0) return (true, 0);\\n uint256 c = a * b;\\n if (c / a != b) return (false, 0);\\n return (true, c);\\n }\\n }\\n\\n /**\\n * @dev Returns the division of two unsigned integers, with a division by zero flag.\\n */\\n function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {\\n unchecked {\\n if (b == 0) return (false, 0);\\n return (true, a / b);\\n }\\n }\\n\\n /**\\n * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.\\n */\\n function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {\\n unchecked {\\n if (b == 0) return (false, 0);\\n return (true, a % b);\\n }\\n }\\n\\n /**\\n * @dev Returns the largest of two numbers.\\n */\\n function max(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two numbers.\\n */\\n function min(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two numbers. The result is rounded towards\\n * zero.\\n */\\n function average(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b) / 2 can overflow.\\n return (a & b) + (a ^ b) / 2;\\n }\\n\\n /**\\n * @dev Returns the ceiling of the division of two numbers.\\n *\\n * This differs from standard division with `/` in that it rounds towards infinity instead\\n * of rounding towards zero.\\n */\\n function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {\\n if (b == 0) {\\n // Guarantee the same behavior as in a regular Solidity division.\\n return a / b;\\n }\\n\\n // (a + b - 1) / b can overflow on addition, so we distribute.\\n return a == 0 ? 0 : (a - 1) / b + 1;\\n }\\n\\n /**\\n * @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or\\n * denominator == 0.\\n * @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv) with further edits by\\n * Uniswap Labs also under MIT license.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator) internal pure returns (uint256 result) {\\n unchecked {\\n // 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use\\n // use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\\n // variables such that product = prod1 * 2^256 + prod0.\\n uint256 prod0 = x * y; // Least significant 256 bits of the product\\n uint256 prod1; // Most significant 256 bits of the product\\n assembly {\\n let mm := mulmod(x, y, not(0))\\n prod1 := sub(sub(mm, prod0), lt(mm, prod0))\\n }\\n\\n // Handle non-overflow cases, 256 by 256 division.\\n if (prod1 == 0) {\\n // Solidity will revert if denominator == 0, unlike the div opcode on its own.\\n // The surrounding unchecked block does not change this fact.\\n // See https://docs.soliditylang.org/en/latest/control-structures.html#checked-or-unchecked-arithmetic.\\n return prod0 / denominator;\\n }\\n\\n // Make sure the result is less than 2^256. Also prevents denominator == 0.\\n if (denominator <= prod1) {\\n revert MathOverflowedMulDiv();\\n }\\n\\n ///////////////////////////////////////////////\\n // 512 by 256 division.\\n ///////////////////////////////////////////////\\n\\n // Make division exact by subtracting the remainder from [prod1 prod0].\\n uint256 remainder;\\n assembly {\\n // Compute remainder using mulmod.\\n remainder := mulmod(x, y, denominator)\\n\\n // Subtract 256 bit number from 512 bit number.\\n prod1 := sub(prod1, gt(remainder, prod0))\\n prod0 := sub(prod0, remainder)\\n }\\n\\n // Factor powers of two out of denominator and compute largest power of two divisor of denominator.\\n // Always >= 1. See https://cs.stackexchange.com/q/138556/92363.\\n\\n uint256 twos = denominator & (0 - denominator);\\n assembly {\\n // Divide denominator by twos.\\n denominator := div(denominator, twos)\\n\\n // Divide [prod1 prod0] by twos.\\n prod0 := div(prod0, twos)\\n\\n // Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one.\\n twos := add(div(sub(0, twos), twos), 1)\\n }\\n\\n // Shift in bits from prod1 into prod0.\\n prod0 |= prod1 * twos;\\n\\n // Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such\\n // that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for\\n // four bits. That is, denominator * inv = 1 mod 2^4.\\n uint256 inverse = (3 * denominator) ^ 2;\\n\\n // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also\\n // works in modular arithmetic, doubling the correct bits in each step.\\n inverse *= 2 - denominator * inverse; // inverse mod 2^8\\n inverse *= 2 - denominator * inverse; // inverse mod 2^16\\n inverse *= 2 - denominator * inverse; // inverse mod 2^32\\n inverse *= 2 - denominator * inverse; // inverse mod 2^64\\n inverse *= 2 - denominator * inverse; // inverse mod 2^128\\n inverse *= 2 - denominator * inverse; // inverse mod 2^256\\n\\n // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\\n // This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is\\n // less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1\\n // is no longer required.\\n result = prod0 * inverse;\\n return result;\\n }\\n }\\n\\n /**\\n * @notice Calculates x * y / denominator with full precision, following the selected rounding direction.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator, Rounding rounding) internal pure returns (uint256) {\\n uint256 result = mulDiv(x, y, denominator);\\n if (unsignedRoundsUp(rounding) && mulmod(x, y, denominator) > 0) {\\n result += 1;\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded\\n * towards zero.\\n *\\n * Inspired by Henry S. Warren, Jr.'s \\\"Hacker's Delight\\\" (Chapter 11).\\n */\\n function sqrt(uint256 a) internal pure returns (uint256) {\\n if (a == 0) {\\n return 0;\\n }\\n\\n // For our first guess, we get the biggest power of 2 which is smaller than the square root of the target.\\n //\\n // We know that the \\\"msb\\\" (most significant bit) of our target number `a` is a power of 2 such that we have\\n // `msb(a) <= a < 2*msb(a)`. This value can be written `msb(a)=2**k` with `k=log2(a)`.\\n //\\n // This can be rewritten `2**log2(a) <= a < 2**(log2(a) + 1)`\\n // \\u2192 `sqrt(2**k) <= sqrt(a) < sqrt(2**(k+1))`\\n // \\u2192 `2**(k/2) <= sqrt(a) < 2**((k+1)/2) <= 2**(k/2 + 1)`\\n //\\n // Consequently, `2**(log2(a) / 2)` is a good first approximation of `sqrt(a)` with at least 1 correct bit.\\n uint256 result = 1 << (log2(a) >> 1);\\n\\n // At this point `result` is an estimation with one bit of precision. We know the true value is a uint128,\\n // since it is the square root of a uint256. Newton's method converges quadratically (precision doubles at\\n // every iteration). We thus need at most 7 iteration to turn our partial result with one bit of precision\\n // into the expected uint128 result.\\n unchecked {\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n return min(result, a / result);\\n }\\n }\\n\\n /**\\n * @notice Calculates sqrt(a), following the selected rounding direction.\\n */\\n function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = sqrt(a);\\n return result + (unsignedRoundsUp(rounding) && result * result < a ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 2 of a positive value rounded towards zero.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 128;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 64;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 32;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 16;\\n }\\n if (value >> 8 > 0) {\\n value >>= 8;\\n result += 8;\\n }\\n if (value >> 4 > 0) {\\n value >>= 4;\\n result += 4;\\n }\\n if (value >> 2 > 0) {\\n value >>= 2;\\n result += 2;\\n }\\n if (value >> 1 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 2, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log2(value);\\n return result + (unsignedRoundsUp(rounding) && 1 << result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 10 of a positive value rounded towards zero.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >= 10 ** 64) {\\n value /= 10 ** 64;\\n result += 64;\\n }\\n if (value >= 10 ** 32) {\\n value /= 10 ** 32;\\n result += 32;\\n }\\n if (value >= 10 ** 16) {\\n value /= 10 ** 16;\\n result += 16;\\n }\\n if (value >= 10 ** 8) {\\n value /= 10 ** 8;\\n result += 8;\\n }\\n if (value >= 10 ** 4) {\\n value /= 10 ** 4;\\n result += 4;\\n }\\n if (value >= 10 ** 2) {\\n value /= 10 ** 2;\\n result += 2;\\n }\\n if (value >= 10 ** 1) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log10(value);\\n return result + (unsignedRoundsUp(rounding) && 10 ** result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 256 of a positive value rounded towards zero.\\n * Returns 0 if given 0.\\n *\\n * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.\\n */\\n function log256(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 16;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 8;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 4;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 2;\\n }\\n if (value >> 8 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 256, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log256(value);\\n return result + (unsignedRoundsUp(rounding) && 1 << (result << 3) < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Returns whether a provided rounding mode is considered rounding up for unsigned integers.\\n */\\n function unsignedRoundsUp(Rounding rounding) internal pure returns (bool) {\\n return uint8(rounding) % 2 == 1;\\n }\\n}\\n\",\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\"},\"contracts/interfaces/ICurveProvider.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity 0.8.23;\\n\\n// solhint-disable func-name-mixedcase\\n\\ninterface ICurveProvider {\\n function get_address (uint256 _id) external view returns (address);\\n}\\n\",\"keccak256\":\"0x301cccb7664ac75198c8731fc44d4e23b1f1f91722d297491364d710209d3f57\",\"license\":\"MIT\"},\"contracts/interfaces/ICurveRegistry.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity 0.8.23;\\n\\n// solhint-disable func-name-mixedcase\\n\\ninterface ICurveRegistry {\\n function pool_count() external view returns (uint256);\\n function pool_list(uint256 index) external view returns (address);\\n\\n // MAIN_REGISTRY, METAPOOL_FACTORY, CRYPTOSWAP_REGISTRY, CRYPTOPOOL_FACTORY, METAREGISTRY, CRVUSD_PLAIN_POOLS, CURVE_TRICRYPTO_FACTORY\\n function find_pool_for_coins(address _srcToken, address _dstToken, uint256 _index) external view returns (address);\\n\\n // MAIN_REGISTRY, METAPOOL_FACTORY, METAREGISTRY, CRVUSD_PLAIN_POOLS\\n function get_coin_indices(address _pool, address _srcToken, address _dstToken) external view returns (int128, int128, bool);\\n // CRYPTOSWAP_REGISTRY, CRYPTOPOOL_FACTORY, CURVE_TRICRYPTO_FACTORY - returns (uint256,uint256);\\n\\n // MAIN_REGISTRY, CRYPTOSWAP_REGISTRY, METAREGISTRY\\n function get_balances(address _pool) external view returns (uint256[8] memory);\\n // METAPOOL_FACTORY, CRVUSD_PLAIN_POOLS - returns (uint256[4]);\\n // CURVE_TRICRYPTO_FACTORY - returns (uint256[3]);\\n // CRYPTOPOOL_FACTORY - returns (uint256[2]);\\n\\n // MAIN_REGISTRY, METAPOOL_FACTORY, METAREGISTRY, CRVUSD_PLAIN_POOLS\\n function get_underlying_balances(address _pool) external view returns (uint256[8] memory);\\n // CRYPTOSWAP_REGISTRY, CRYPTOPOOL_FACTORY - NO METHOD\\n}\\n\",\"keccak256\":\"0xeb7cd00351ab42d736b4e1806b43ca5ff4d0dbfe44b74a5110c79d3abb5e9390\",\"license\":\"MIT\"},\"contracts/interfaces/ICurveSwap.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\n// solhint-disable one-contract-per-file\\n\\npragma solidity 0.8.23;\\n\\n// solhint-disable func-name-mixedcase\\n\\ninterface ICurveSwapInt128 {\\n function get_dy(int128 _from, int128 _to, uint256 _amount) external view returns (uint256);\\n function get_dy_underlying(int128 _from, int128 _to, uint256 _amount) external view returns (uint256);\\n}\\n\\ninterface ICurveSwapUint256 {\\n function get_dy(uint256 _from, uint256 _to, uint256 _amount) external view returns (uint256);\\n function get_dy_underlying(uint256 _from, uint256 _to, uint256 _amount) external view returns (uint256);\\n}\\n\",\"keccak256\":\"0x9af89bbeb6d6c48a44d08698312a7378400a2fec331b4d4dbccf91f2a915f15b\",\"license\":\"MIT\"},\"contracts/interfaces/IOracle.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity 0.8.23;\\n\\nimport \\\"@openzeppelin/contracts/token/ERC20/IERC20.sol\\\";\\n\\ninterface IOracle {\\n error ConnectorShouldBeNone();\\n error PoolNotFound();\\n error PoolWithConnectorNotFound();\\n\\n function getRate(IERC20 srcToken, IERC20 dstToken, IERC20 connector, uint256 thresholdFilter) external view returns (uint256 rate, uint256 weight);\\n}\\n\",\"keccak256\":\"0xac06788d609ed5f178e04cc3cffed0607ca444607f4c81abb947bbf1cf91707d\",\"license\":\"MIT\"},\"contracts/libraries/OraclePrices.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity 0.8.23;\\n\\nimport \\\"@openzeppelin/contracts/utils/math/Math.sol\\\";\\n\\n/**\\n * @title OraclePrices\\n * @notice A library that provides functionalities for processing and analyzing token rate and weight data provided by an oracle.\\n * The library is used when an oracle uses multiple pools to determine a token's price.\\n * It allows to filter out pools with low weight and significantly incorrect price, which could distort the weighted price.\\n * The level of low-weight pool filtering can be managed using the thresholdFilter parameter.\\n */\\nlibrary OraclePrices {\\n using Math for uint256;\\n\\n /**\\n * @title Oracle Price Data Structure\\n * @notice This structure encapsulates the rate and weight information for tokens as provided by an oracle\\n * @dev An array of OraclePrice structures can be used to represent oracle data for multiple pools\\n * @param rate The oracle-provided rate for a token\\n * @param weight The oracle-provided derived weight for a token\\n */\\n struct OraclePrice {\\n uint256 rate;\\n uint256 weight;\\n }\\n\\n /**\\n * @title Oracle Prices Data Structure\\n * @notice This structure encapsulates information about a list of oracles prices and weights\\n * @dev The structure is initialized with a maximum possible length by the `init` function\\n * @param oraclePrices An array of OraclePrice structures, each containing a rate and weight\\n * @param maxOracleWeight The maximum weight among the OraclePrice elements in the oraclePrices array\\n * @param size The number of meaningful OraclePrice elements added to the oraclePrices array\\n */\\n struct Data {\\n uint256 maxOracleWeight;\\n uint256 size;\\n OraclePrice[] oraclePrices;\\n }\\n\\n /**\\n * @notice Initializes an array of OraclePrices with a given maximum length and returns it wrapped inside a Data struct\\n * @dev Uses inline assembly for memory allocation to avoid array zeroing and extra array copy to struct\\n * @param maxArrLength The maximum length of the oraclePrices array\\n * @return data Returns an instance of Data struct containing an OraclePrice array with a specified maximum length\\n */\\n function init(uint256 maxArrLength) internal pure returns (Data memory data) {\\n assembly (\\\"memory-safe\\\") { // solhint-disable-line no-inline-assembly\\n data := mload(0x40)\\n mstore(0x40, add(data, add(0x80, mul(maxArrLength, 0x40))))\\n mstore(add(data, 0x00), 0)\\n mstore(add(data, 0x20), 0)\\n mstore(add(data, 0x40), add(data, 0x60))\\n mstore(add(data, 0x60), maxArrLength)\\n }\\n }\\n\\n /**\\n * @notice Appends an OraclePrice to the oraclePrices array in the provided Data struct if the OraclePrice has a non-zero weight\\n * @dev If the weight of the OraclePrice is greater than the current maxOracleWeight, the maxOracleWeight is updated. The size (number of meaningful elements) of the array is incremented after appending the OraclePrice.\\n * @param data The Data struct that contains the oraclePrices array, maxOracleWeight, and the current size\\n * @param oraclePrice The OraclePrice to be appended to the oraclePrices array\\n * @return isAppended A flag indicating whether the oraclePrice was appended or not\\n */\\n function append(Data memory data, OraclePrice memory oraclePrice) internal pure returns (bool isAppended) {\\n if (oraclePrice.weight > 0) {\\n data.oraclePrices[data.size] = oraclePrice;\\n data.size++;\\n if (oraclePrice.weight > data.maxOracleWeight) {\\n data.maxOracleWeight = oraclePrice.weight;\\n }\\n return true;\\n }\\n return false;\\n }\\n\\n /**\\n * @notice Calculates the weighted rate from the oracle prices data using a threshold filter\\n * @dev Shrinks the `oraclePrices` array to remove any unused space, though it's unclear how this optimizes the code, but it is. Then calculates the weighted rate\\n * considering only the oracle prices whose weight is above the threshold which is percent from max weight\\n * @param data The data structure containing oracle prices, the maximum oracle weight and the size of the used oracle prices array\\n * @param thresholdFilter The threshold to filter oracle prices based on their weight\\n * @return weightedRate The calculated weighted rate\\n * @return totalWeight The total weight of the oracle prices that passed the threshold\\n */\\n function getRateAndWeight(Data memory data, uint256 thresholdFilter) internal pure returns (uint256 weightedRate, uint256 totalWeight) {\\n // shrink oraclePrices array\\n uint256 size = data.size;\\n assembly (\\\"memory-safe\\\") { // solhint-disable-line no-inline-assembly\\n let ptr := mload(add(data, 64))\\n mstore(ptr, size)\\n }\\n\\n // calculate weighted rate\\n for (uint256 i = 0; i < size; i++) {\\n OraclePrice memory p = data.oraclePrices[i];\\n if (p.weight * 100 < data.maxOracleWeight * thresholdFilter) {\\n continue;\\n }\\n weightedRate += p.rate * p.weight;\\n totalWeight += p.weight;\\n }\\n if (totalWeight > 0) {\\n unchecked { weightedRate /= totalWeight; }\\n }\\n }\\n\\n /**\\n * @notice See `getRateAndWeight`. It uses SafeMath to prevent overflows.\\n */\\n function getRateAndWeightWithSafeMath(Data memory data, uint256 thresholdFilter) internal pure returns (uint256 weightedRate, uint256 totalWeight) {\\n // shrink oraclePrices array\\n uint256 size = data.size;\\n assembly (\\\"memory-safe\\\") { // solhint-disable-line no-inline-assembly\\n let ptr := mload(add(data, 64))\\n mstore(ptr, size)\\n }\\n\\n // calculate weighted rate\\n for (uint256 i = 0; i < size; i++) {\\n OraclePrice memory p = data.oraclePrices[i];\\n if (p.weight * 100 < data.maxOracleWeight * thresholdFilter) {\\n continue;\\n }\\n (bool ok, uint256 weightedRateI) = p.rate.tryMul(p.weight);\\n if (ok) {\\n (ok, weightedRate) = _tryAdd(weightedRate, weightedRateI);\\n if (ok) totalWeight += p.weight;\\n }\\n }\\n if (totalWeight > 0) {\\n unchecked { weightedRate /= totalWeight; }\\n }\\n }\\n\\n function _tryAdd(uint256 value, uint256 addition) private pure returns (bool, uint256) {\\n unchecked {\\n uint256 result = value + addition;\\n if (result < value) return (false, value);\\n return (true, result);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x2f2b57376ac6f8b4a594312b5771f514bef4579ef2cb1dcf1b60bd278ae3495a\",\"license\":\"MIT\"},\"contracts/oracles/CurveOracle.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity 0.8.23;\\n\\nimport \\\"@openzeppelin/contracts/token/ERC20/ERC20.sol\\\";\\nimport \\\"@openzeppelin/contracts/utils/math/Math.sol\\\";\\nimport \\\"../interfaces/IOracle.sol\\\";\\nimport \\\"../interfaces/ICurveProvider.sol\\\";\\nimport \\\"../interfaces/ICurveRegistry.sol\\\";\\nimport \\\"../interfaces/ICurveSwap.sol\\\";\\nimport \\\"../libraries/OraclePrices.sol\\\";\\n\\ncontract CurveOracle is IOracle {\\n using OraclePrices for OraclePrices.Data;\\n using Math for uint256;\\n\\n enum CurveRegistryType {\\n MAIN_REGISTRY,\\n METAPOOL_FACTORY,\\n CRYPTOSWAP_REGISTRY,\\n CRYPTOPOOL_FACTORY,\\n METAREGISTRY,\\n CRVUSD_PLAIN_POOLS,\\n CURVE_TRICRYPTO_FACTORY,\\n STABLESWAP_FACTORY,\\n L2_FACTORY,\\n CRYPTO_FACTORY\\n }\\n\\n struct FunctionSelectorsInfo {\\n bytes4 balanceFunc;\\n bytes4 dyFuncInt128;\\n bytes4 dyFuncUint256;\\n }\\n\\n IERC20 private constant _NONE = IERC20(0xFFfFfFffFFfffFFfFFfFFFFFffFFFffffFfFFFfF);\\n\\n uint256 public immutable MAX_POOLS;\\n uint256 public immutable REGISTRIES_COUNT;\\n ICurveRegistry[11] public registries;\\n CurveRegistryType[11] public registryTypes;\\n\\n constructor(ICurveProvider _addressProvider, uint256 _maxPools, uint256[] memory _registryIds, CurveRegistryType[] memory _registryTypes) {\\n MAX_POOLS = _maxPools;\\n REGISTRIES_COUNT = _registryIds.length;\\n unchecked {\\n for (uint256 i = 0; i < REGISTRIES_COUNT; i++) {\\n registries[i] = ICurveRegistry(_addressProvider.get_address(_registryIds[i]));\\n registryTypes[i] = _registryTypes[i];\\n }\\n }\\n }\\n\\n function getRate(IERC20 srcToken, IERC20 dstToken, IERC20 connector, uint256 thresholdFilter) external view override returns (uint256 rate, uint256 weight) {\\n if(connector != _NONE) revert ConnectorShouldBeNone();\\n\\n OraclePrices.Data memory ratesAndWeights = OraclePrices.init(MAX_POOLS);\\n FunctionSelectorsInfo memory info;\\n uint256 index = 0;\\n for (uint256 i = 0; i < REGISTRIES_COUNT && index < MAX_POOLS; i++) {\\n uint256 registryIndex = 0;\\n address pool = registries[i].find_pool_for_coins(address(srcToken), address(dstToken), registryIndex);\\n while (pool != address(0) && index < MAX_POOLS) {\\n index++;\\n // call `get_coin_indices` and set (srcTokenIndex, dstTokenIndex, isUnderlying) variables\\n bool isUnderlying;\\n int128 srcTokenIndex;\\n int128 dstTokenIndex;\\n (bool success, bytes memory data) = address(registries[i]).staticcall(abi.encodeWithSelector(ICurveRegistry.get_coin_indices.selector, pool, address(srcToken), address(dstToken)));\\n if (success && data.length >= 64) {\\n if (\\n registryTypes[i] == CurveRegistryType.CRYPTOSWAP_REGISTRY ||\\n registryTypes[i] == CurveRegistryType.CRYPTOPOOL_FACTORY ||\\n registryTypes[i] == CurveRegistryType.CURVE_TRICRYPTO_FACTORY\\n ) {\\n (srcTokenIndex, dstTokenIndex) = abi.decode(data, (int128, int128));\\n } else {\\n // registryTypes[i] == CurveRegistryType.MAIN_REGISTRY ||\\n // registryTypes[i] == CurveRegistryType.METAPOOL_FACTORY ||\\n // registryTypes[i] == CurveRegistryType.METAREGISTRY ||\\n // registryTypes[i] == CurveRegistryType.CRVUSD_PLAIN_POOLS ||\\n // registryTypes[i] == CurveRegistryType.STABLESWAP_FACTORY ||\\n // registryTypes[i] == CurveRegistryType.L2_FACTORY ||\\n // registryTypes[i] == CurveRegistryType.CRYPTO_FACTORY\\n (srcTokenIndex, dstTokenIndex, isUnderlying) = abi.decode(data, (int128, int128, bool));\\n }\\n } else {\\n pool = registries[i].find_pool_for_coins(address(srcToken), address(dstToken), ++registryIndex);\\n continue;\\n }\\n\\n if (!isUnderlying) {\\n info = FunctionSelectorsInfo({\\n balanceFunc: ICurveRegistry.get_balances.selector,\\n dyFuncInt128: ICurveSwapInt128.get_dy.selector,\\n dyFuncUint256: ICurveSwapUint256.get_dy.selector\\n });\\n } else {\\n info = FunctionSelectorsInfo({\\n balanceFunc: ICurveRegistry.get_underlying_balances.selector,\\n dyFuncInt128: ICurveSwapInt128.get_dy_underlying.selector,\\n dyFuncUint256: ICurveSwapUint256.get_dy_underlying.selector\\n });\\n }\\n\\n // call `balanceFunc` (`get_balances` or `get_underlying_balances`) and decode results\\n uint256[] memory balances;\\n (success, data) = address(registries[i]).staticcall(abi.encodeWithSelector(info.balanceFunc, pool));\\n if (success && data.length >= 64) {\\n // registryTypes[i] == CurveRegistryType.MAIN_REGISTRY ||\\n // registryTypes[i] == CurveRegistryType.CRYPTOSWAP_REGISTRY ||\\n // registryTypes[i] == CurveRegistryType.METAREGISTRY\\n uint256 length = 8;\\n if (!isUnderlying) {\\n if (\\n registryTypes[i] == CurveRegistryType.METAPOOL_FACTORY ||\\n registryTypes[i] == CurveRegistryType.CRVUSD_PLAIN_POOLS ||\\n registryTypes[i] == CurveRegistryType.STABLESWAP_FACTORY ||\\n registryTypes[i] == CurveRegistryType.L2_FACTORY ||\\n registryTypes[i] == CurveRegistryType.CRYPTO_FACTORY\\n ) {\\n length = 4;\\n } else if (registryTypes[i] == CurveRegistryType.CURVE_TRICRYPTO_FACTORY) {\\n length = 3;\\n } else if (registryTypes[i] == CurveRegistryType.CRYPTOPOOL_FACTORY) {\\n length = 2;\\n }\\n }\\n\\n assembly (\\\"memory-safe\\\") { // solhint-disable-line no-inline-assembly\\n balances := data\\n mstore(balances, length)\\n }\\n } else {\\n pool = registries[i].find_pool_for_coins(address(srcToken), address(dstToken), ++registryIndex);\\n continue;\\n }\\n\\n uint256 w = (balances[uint128(srcTokenIndex)] * balances[uint128(dstTokenIndex)]).sqrt();\\n uint256 b0 = balances[uint128(srcTokenIndex)] / 10000;\\n uint256 b1 = balances[uint128(dstTokenIndex)] / 10000;\\n\\n if (b0 != 0 && b1 != 0) {\\n (success, data) = pool.staticcall(abi.encodeWithSelector(info.dyFuncInt128, srcTokenIndex, dstTokenIndex, b0));\\n if (!success || data.length < 32) {\\n (success, data) = pool.staticcall(abi.encodeWithSelector(info.dyFuncUint256, uint128(srcTokenIndex), uint128(dstTokenIndex), b0));\\n }\\n if (success && data.length >= 32) { // vyper could return redundant bytes\\n b1 = abi.decode(data, (uint256));\\n ratesAndWeights.append(OraclePrices.OraclePrice(Math.mulDiv(b1, 1e18, b0), w));\\n }\\n }\\n pool = registries[i].find_pool_for_coins(address(srcToken), address(dstToken), ++registryIndex);\\n }\\n }\\n (rate, weight) = ratesAndWeights.getRateAndWeight(thresholdFilter);\\n }\\n}\\n\",\"keccak256\":\"0x1f236be38241d8df4d3fd117f3be3a8e1e4ae0523a4f2bf079c89ebcbeba5a20\",\"license\":\"MIT\"}},\"version\":1}", - "bytecode": "0x60c06040818152346200022a57620015af8038038091620000218286620002af565b84398201906080838303126200022a5782516001600160a01b039283821692918390036200022a57602085810151838701516001600160401b039692939291908781116200022a5788019683601f890112156200022a57875198620000868a620002e7565b986200009588519a8b620002af565b8a8a52868a018760059c60051b830101918783116200022a5788809101915b8383106200029e575050505060608101519182116200022a57019280601f850112156200022a578351620000e881620002e7565b94620000f788519687620002af565b818652868087019260051b8201019283116200022a578601905b828210620002845750505060805285519560a09660a0525f5b87518110156200024057620001408183620002ff565b51865163124fd3dd60e21b8152600491828201526024878282818d5afa91821562000236575f92620001f3575b50600b9182851015620001e05784546001600160a01b031916908716178455620001988488620002ff565b5192600a841015620001cf5750509082916001938c1c0190815460f88460031b169160ff809116831b921b1916179055016200012a565b602190634e487b7160e01b5f52525ffd5b50634e487b7160e01b5f90815260328452fd5b9091508781813d83116200022e575b6200020e8183620002af565b810103126200022a575185811681036200022a57905f6200016d565b5f80fd5b503d62000202565b89513d5f823e3d90fd5b8551611286908162000329823960805181818161011a015281816102c1015281816102fe01528181610ca50152610dd2015260a0518181816101cf015261033f0152f35b8151600a8110156200022a57815290860190860162000111565b8251815291810191899101620000b4565b601f909101601f19168101906001600160401b03821190821017620002d357604052565b634e487b7160e01b5f52604160045260245ffd5b6001600160401b038111620002d35760051b60200190565b8051821015620003145760209160051b010190565b634e487b7160e01b5f52603260045260245ffdfe6080806040526004361015610012575f80fd5b5f3560e01c9081633d549b32146101f257508063474004491461019a5780636347c9001461013d57806381358498146100e55763b72529f214610053575f80fd5b346100e15760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100e157600435600b8110156100e15761009960ff91610e20565b90549060031b1c16604051600a8210156100b4576020918152f35b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f80fd5b346100e1575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100e15760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b346100e15760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100e157600435600b8110156100e15773ffffffffffffffffffffffffffffffffffffffff6020915416604051908152f35b346100e1575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100e15760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b346100e15760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100e1576004359073ffffffffffffffffffffffffffffffffffffffff821682036100e1576024359073ffffffffffffffffffffffffffffffffffffffff821682036100e15760443573ffffffffffffffffffffffffffffffffffffffff81168091036100e15773ffffffffffffffffffffffffffffffffffffffff03610df857506060604080516102ae81610e38565b5f81525f602082015201526040519060807f000000000000000000000000000000000000000000000000000000000000000060061b8301016040525f82525f6020830152606082018060408401527f000000000000000000000000000000000000000000000000000000000000000090525f6040805161032d81610e38565b82815282602082015201525f915f925b7f0000000000000000000000000000000000000000000000000000000000000000841080610dcf575b15610cea575f91600b851015918261077a5773ffffffffffffffffffffffffffffffffffffffff865416936040517f6982eb0b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8916600482015273ffffffffffffffffffffffffffffffffffffffff871660248201525f6044820152602081606481895afa90811561076f575f91610ccb575b50915b73ffffffffffffffffffffffffffffffffffffffff8316151580610ca2575b15610c8c5761043c90610eb1565b915f908561077a575f808b60405173ffffffffffffffffffffffffffffffffffffffff60208201927feb85226d000000000000000000000000000000000000000000000000000000008452818716602484015216604482015273ffffffffffffffffffffffffffffffffffffffff8c166064820152606481526104be81610e54565b51908a5afa916104cc610f0a565b9280610c80575b15610c71576104e18a610e20565b905490600a60ff838360031b1c1610156100b45760031b1c60ff166002148015610c4c575b8015610c27575b15610bec576040838051810103126100e157610537604061053060208601610f67565b9401610f67565b81610b6b5760405161054881610e38565b7f92e3cc2d0000000000000000000000000000000000000000000000000000000081527f5e0d443f0000000000000000000000000000000000000000000000000000000060208201527f556d6e9f000000000000000000000000000000000000000000000000000000006040820152925b8861077a575f807fffffffff000000000000000000000000000000000000000000000000000000008651166040516020810191825273ffffffffffffffffffffffffffffffffffffffff851660248201526024815261061781610e38565b51908d5afa92610625610f0a565b9380610b5f575b15610abc57908995949392916008901561094e575b8352600f946fffffffffffffffffffffffffffffffff908181169361068761068261066c8789610f75565b519483169461067b868a610f75565b5190610f89565b610fd3565b976127106106a2858261069a8a8c610f75565b510499610f75565b51048715159081610944575b506107a7575b50505050505050505061077a576106ca90610eb1565b6040517f6982eb0b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff89811660048301528716602482015260448101829052909690602081606481895afa90811561076f575f91610740575b50915b96909661040f565b610762915060203d602011610768575b61075a8183610e70565b810190610ede565b89610735565b503d610750565b6040513d5f823e3d90fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f9283927fffffffff0000000000000000000000000000000000000000000000000000000060208b015116926040519260208401948552810b60248401520b6044820152876064820152606481526107fe81610e54565b5190855afa9261080c610f0a565b9584158015610939575b6108cb575b50505050806108bf575b610835575b8080808080806106b4565b909192506020828051810103126100e1576020610853920151611114565b60405180604081011067ffffffffffffffff604083011117610892578692610889926040830160405282526020820152856111e8565b5089808061082a565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b50602082511015610825565b5f95965085945060407fffffffff0000000000000000000000000000000000000000000000000000000091015116916040519160208301938452602483015260448201528560648201526064815261092281610e54565b51915afa9061092f610f0a565b918d80808061081b565b506020875110610816565b905015155f6106ae565b95506109598d610e20565b96905496600a60ff898360031b1c1610156100b4578b978f9160031b1c60ff166001148015610a90575b8015610a64575b8015610a39575b8015610a0d575b156109a757505060045b610641565b60ff9197506109b590610e20565b90549060031b1c1695600a8710156100b4578d60068c98145f146109dc5750506003610641565b60ff9197506109ea90610e20565b90549060031b1c1695600a8710156100b45760038b97036109a257506002610641565b5060ff919750610a1c90610e20565b90549060031b1c1695600a8710156100b4578d60098c9814610998565b5060ff919750610a4890610e20565b90549060031b1c1695600a8710156100b4578d818c9814610991565b5060ff919750610a7390610e20565b90549060031b1c1695600a8710156100b4578d60078c981461098a565b5060ff919750610a9f90610e20565b90549060031b1c1695600a8710156100b4578d60058c9814610983565b5050505050509250610ace5f93610eb1565b6040517f6982eb0b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff89811660048301528716602482015260448101829052909690602081606481895afa90811561076f575f91610b40575b5091610738565b610b59915060203d6020116107685761075a8183610e70565b89610b39565b5060408451101561062c565b604051610b7781610e38565b7f59f4f3510000000000000000000000000000000000000000000000000000000081527f07211ef70000000000000000000000000000000000000000000000000000000060208201527f85f11d1e000000000000000000000000000000000000000000000000000000006040820152926105b9565b506060828051810103126100e157610c0660208301610f67565b916060610c1560408301610f67565b91015180151581036100e15790610537565b5060ff610c338b610e20565b90549060031b1c16600a8110156100b45760061461050d565b5060ff610c588b610e20565b90549060031b1c16600a8110156100b457600314610506565b5050509250610ace5f93610eb1565b506040835110156104d3565b9450505093610c9b9150610eb1565b929061033d565b507f0000000000000000000000000000000000000000000000000000000000000000811061042e565b610ce4915060203d6020116107685761075a8183610e70565b8961040c565b505f806020830151806040850151525f905b808210610d2a576040848480610d19575b82519182526020820152f35b9081610d2491610f9c565b90610d0d565b9091610d3a836040870151610f75565b519360208501948551606481029080820460641490151715610da257610d636064358951610f89565b11610d965791610d85610d8d92610d7f60019551895190610f89565b90611243565b955190611243565b925b0190610cfc565b50935091600190610d8f565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b507f00000000000000000000000000000000000000000000000000000000000000008110610366565b807fccf7e6f70000000000000000000000000000000000000000000000000000000060049252fd5b90600b82101561077a57601f8260051c600b01921690565b6060810190811067ffffffffffffffff82111761089257604052565b60a0810190811067ffffffffffffffff82111761089257604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761089257604052565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610da25760010190565b908160209103126100e1575173ffffffffffffffffffffffffffffffffffffffff811681036100e15790565b3d15610f62573d9067ffffffffffffffff82116108925760405191610f5760207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160184610e70565b82523d5f602084013e565b606090565b519081600f0b82036100e157565b805182101561077a5760209160051b010190565b81810292918115918404141715610da257565b8115610fa6570490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b801561110f5761109d815f908360801c80611103575b508060401c806110f6575b508060201c806110e9575b508060101c806110dc575b508060081c806110cf575b508060041c806110c2575b508060021c806110b5575b50600191828092811c6110ae575b1c1b6110458185610f9c565b01811c6110528185610f9c565b01811c61105f8185610f9c565b01811c61106c8185610f9c565b01811c6110798185610f9c565b01811c6110868185610f9c565b01811c6110938185610f9c565b01901c8092610f9c565b808210156110a9575090565b905090565b0181611039565b600291509101905f61102b565b600491509101905f611020565b600891509101905f611015565b601091509101905f61100a565b602091509101905f610fff565b604091509101905f610ff4565b9150506080905f610fe9565b505f90565b670de0b6b3a764000091828202917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848209938380861095039480860395146111d857848311156111ae57829109815f038216809204600280826003021880830282030280830282030280830282030280830282030280830282030280920290030293600183805f03040190848311900302920304170290565b60046040517f227bc153000000000000000000000000000000000000000000000000000000008152fd5b5050906111e59250610f9c565b90565b90602081019081516111fb575050505f90565b61121c60408401519160208501928351916112168383610f75565b52610f75565b506112278151610eb1565b905251908051821161123b575b5050600190565b525f80611234565b91908201809211610da25756fea2646970667358221220f8ad8e013591e6290fbced5a0543480dbccf93b164bbcc20777d33bc04b28f5a64736f6c63430008170033", - "deployedBytecode": "0x6080806040526004361015610012575f80fd5b5f3560e01c9081633d549b32146101f257508063474004491461019a5780636347c9001461013d57806381358498146100e55763b72529f214610053575f80fd5b346100e15760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100e157600435600b8110156100e15761009960ff91610e20565b90549060031b1c16604051600a8210156100b4576020918152f35b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f80fd5b346100e1575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100e15760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b346100e15760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100e157600435600b8110156100e15773ffffffffffffffffffffffffffffffffffffffff6020915416604051908152f35b346100e1575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100e15760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b346100e15760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100e1576004359073ffffffffffffffffffffffffffffffffffffffff821682036100e1576024359073ffffffffffffffffffffffffffffffffffffffff821682036100e15760443573ffffffffffffffffffffffffffffffffffffffff81168091036100e15773ffffffffffffffffffffffffffffffffffffffff03610df857506060604080516102ae81610e38565b5f81525f602082015201526040519060807f000000000000000000000000000000000000000000000000000000000000000060061b8301016040525f82525f6020830152606082018060408401527f000000000000000000000000000000000000000000000000000000000000000090525f6040805161032d81610e38565b82815282602082015201525f915f925b7f0000000000000000000000000000000000000000000000000000000000000000841080610dcf575b15610cea575f91600b851015918261077a5773ffffffffffffffffffffffffffffffffffffffff865416936040517f6982eb0b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8916600482015273ffffffffffffffffffffffffffffffffffffffff871660248201525f6044820152602081606481895afa90811561076f575f91610ccb575b50915b73ffffffffffffffffffffffffffffffffffffffff8316151580610ca2575b15610c8c5761043c90610eb1565b915f908561077a575f808b60405173ffffffffffffffffffffffffffffffffffffffff60208201927feb85226d000000000000000000000000000000000000000000000000000000008452818716602484015216604482015273ffffffffffffffffffffffffffffffffffffffff8c166064820152606481526104be81610e54565b51908a5afa916104cc610f0a565b9280610c80575b15610c71576104e18a610e20565b905490600a60ff838360031b1c1610156100b45760031b1c60ff166002148015610c4c575b8015610c27575b15610bec576040838051810103126100e157610537604061053060208601610f67565b9401610f67565b81610b6b5760405161054881610e38565b7f92e3cc2d0000000000000000000000000000000000000000000000000000000081527f5e0d443f0000000000000000000000000000000000000000000000000000000060208201527f556d6e9f000000000000000000000000000000000000000000000000000000006040820152925b8861077a575f807fffffffff000000000000000000000000000000000000000000000000000000008651166040516020810191825273ffffffffffffffffffffffffffffffffffffffff851660248201526024815261061781610e38565b51908d5afa92610625610f0a565b9380610b5f575b15610abc57908995949392916008901561094e575b8352600f946fffffffffffffffffffffffffffffffff908181169361068761068261066c8789610f75565b519483169461067b868a610f75565b5190610f89565b610fd3565b976127106106a2858261069a8a8c610f75565b510499610f75565b51048715159081610944575b506107a7575b50505050505050505061077a576106ca90610eb1565b6040517f6982eb0b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff89811660048301528716602482015260448101829052909690602081606481895afa90811561076f575f91610740575b50915b96909661040f565b610762915060203d602011610768575b61075a8183610e70565b810190610ede565b89610735565b503d610750565b6040513d5f823e3d90fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f9283927fffffffff0000000000000000000000000000000000000000000000000000000060208b015116926040519260208401948552810b60248401520b6044820152876064820152606481526107fe81610e54565b5190855afa9261080c610f0a565b9584158015610939575b6108cb575b50505050806108bf575b610835575b8080808080806106b4565b909192506020828051810103126100e1576020610853920151611114565b60405180604081011067ffffffffffffffff604083011117610892578692610889926040830160405282526020820152856111e8565b5089808061082a565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b50602082511015610825565b5f95965085945060407fffffffff0000000000000000000000000000000000000000000000000000000091015116916040519160208301938452602483015260448201528560648201526064815261092281610e54565b51915afa9061092f610f0a565b918d80808061081b565b506020875110610816565b905015155f6106ae565b95506109598d610e20565b96905496600a60ff898360031b1c1610156100b4578b978f9160031b1c60ff166001148015610a90575b8015610a64575b8015610a39575b8015610a0d575b156109a757505060045b610641565b60ff9197506109b590610e20565b90549060031b1c1695600a8710156100b4578d60068c98145f146109dc5750506003610641565b60ff9197506109ea90610e20565b90549060031b1c1695600a8710156100b45760038b97036109a257506002610641565b5060ff919750610a1c90610e20565b90549060031b1c1695600a8710156100b4578d60098c9814610998565b5060ff919750610a4890610e20565b90549060031b1c1695600a8710156100b4578d818c9814610991565b5060ff919750610a7390610e20565b90549060031b1c1695600a8710156100b4578d60078c981461098a565b5060ff919750610a9f90610e20565b90549060031b1c1695600a8710156100b4578d60058c9814610983565b5050505050509250610ace5f93610eb1565b6040517f6982eb0b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff89811660048301528716602482015260448101829052909690602081606481895afa90811561076f575f91610b40575b5091610738565b610b59915060203d6020116107685761075a8183610e70565b89610b39565b5060408451101561062c565b604051610b7781610e38565b7f59f4f3510000000000000000000000000000000000000000000000000000000081527f07211ef70000000000000000000000000000000000000000000000000000000060208201527f85f11d1e000000000000000000000000000000000000000000000000000000006040820152926105b9565b506060828051810103126100e157610c0660208301610f67565b916060610c1560408301610f67565b91015180151581036100e15790610537565b5060ff610c338b610e20565b90549060031b1c16600a8110156100b45760061461050d565b5060ff610c588b610e20565b90549060031b1c16600a8110156100b457600314610506565b5050509250610ace5f93610eb1565b506040835110156104d3565b9450505093610c9b9150610eb1565b929061033d565b507f0000000000000000000000000000000000000000000000000000000000000000811061042e565b610ce4915060203d6020116107685761075a8183610e70565b8961040c565b505f806020830151806040850151525f905b808210610d2a576040848480610d19575b82519182526020820152f35b9081610d2491610f9c565b90610d0d565b9091610d3a836040870151610f75565b519360208501948551606481029080820460641490151715610da257610d636064358951610f89565b11610d965791610d85610d8d92610d7f60019551895190610f89565b90611243565b955190611243565b925b0190610cfc565b50935091600190610d8f565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b507f00000000000000000000000000000000000000000000000000000000000000008110610366565b807fccf7e6f70000000000000000000000000000000000000000000000000000000060049252fd5b90600b82101561077a57601f8260051c600b01921690565b6060810190811067ffffffffffffffff82111761089257604052565b60a0810190811067ffffffffffffffff82111761089257604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761089257604052565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610da25760010190565b908160209103126100e1575173ffffffffffffffffffffffffffffffffffffffff811681036100e15790565b3d15610f62573d9067ffffffffffffffff82116108925760405191610f5760207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160184610e70565b82523d5f602084013e565b606090565b519081600f0b82036100e157565b805182101561077a5760209160051b010190565b81810292918115918404141715610da257565b8115610fa6570490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b801561110f5761109d815f908360801c80611103575b508060401c806110f6575b508060201c806110e9575b508060101c806110dc575b508060081c806110cf575b508060041c806110c2575b508060021c806110b5575b50600191828092811c6110ae575b1c1b6110458185610f9c565b01811c6110528185610f9c565b01811c61105f8185610f9c565b01811c61106c8185610f9c565b01811c6110798185610f9c565b01811c6110868185610f9c565b01811c6110938185610f9c565b01901c8092610f9c565b808210156110a9575090565b905090565b0181611039565b600291509101905f61102b565b600491509101905f611020565b600891509101905f611015565b601091509101905f61100a565b602091509101905f610fff565b604091509101905f610ff4565b9150506080905f610fe9565b505f90565b670de0b6b3a764000091828202917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848209938380861095039480860395146111d857848311156111ae57829109815f038216809204600280826003021880830282030280830282030280830282030280830282030280830282030280920290030293600183805f03040190848311900302920304170290565b60046040517f227bc153000000000000000000000000000000000000000000000000000000008152fd5b5050906111e59250610f9c565b90565b90602081019081516111fb575050505f90565b61121c60408401519160208501928351916112168383610f75565b52610f75565b506112278151610eb1565b905251908051821161123b575b5050600190565b525f80611234565b91908201809211610da25756fea2646970667358221220f8ad8e013591e6290fbced5a0543480dbccf93b164bbcc20777d33bc04b28f5a64736f6c63430008170033", - "devdoc": { - "errors": { - "MathOverflowedMulDiv()": [ - { - "details": "Muldiv operation overflow." - } - ] - }, - "kind": "dev", - "methods": {}, - "version": 1 - }, - "userdoc": { - "kind": "user", - "methods": {}, - "version": 1 - }, - "storageLayout": { - "storage": [ - { - "astId": 8378, - "contract": "contracts/oracles/CurveOracle.sol:CurveOracle", - "label": "registries", - "offset": 0, - "slot": "0", - "type": "t_array(t_contract(ICurveRegistry)7259)11_storage" - }, - { - "astId": 8383, - "contract": "contracts/oracles/CurveOracle.sol:CurveOracle", - "label": "registryTypes", - "offset": 0, - "slot": "11", - "type": "t_array(t_enum(CurveRegistryType)8356)11_storage" - } - ], - "types": { - "t_array(t_contract(ICurveRegistry)7259)11_storage": { - "base": "t_contract(ICurveRegistry)7259", - "encoding": "inplace", - "label": "contract ICurveRegistry[11]", - "numberOfBytes": "352" - }, - "t_array(t_enum(CurveRegistryType)8356)11_storage": { - "base": "t_enum(CurveRegistryType)8356", - "encoding": "inplace", - "label": "enum CurveOracle.CurveRegistryType[11]", - "numberOfBytes": "32" - }, - "t_contract(ICurveRegistry)7259": { - "encoding": "inplace", - "label": "contract ICurveRegistry", - "numberOfBytes": "20" - }, - "t_enum(CurveRegistryType)8356": { - "encoding": "inplace", - "label": "enum CurveOracle.CurveRegistryType", - "numberOfBytes": "1" - } - } - } + "bytecode": "0x60c080604052346100e85760408161101b803803809161001f82856100ff565b8339810103126100e85780516001600160a01b038082169290918390036100e8576020806024920151936040519283809263124fd3dd60e21b8252600760048301525afa9081156100f4575f916100b5575b501660805260a052604051610ee4908161013782396080518181816101660152818161040e0152818161058d015261062d015260a05181818160720152610a8a0152f35b90506020813d6020116100ec575b816100d0602093836100ff565b810103126100e8575181811681036100e8575f610071565b5f80fd5b3d91506100c3565b6040513d5f823e3d90fd5b601f909101601f19168101906001600160401b0382119082101761012257604052565b634e487b7160e01b5f52604160045260245ffdfe6080806040526004361015610012575f80fd5b5f3560e01c9081630caeeb241461011e575080633d549b32146100995763813584981461003d575f80fd5b34610095575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100955760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b5f80fd5b346100955760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100955773ffffffffffffffffffffffffffffffffffffffff600435818116810361009557602435908282168203610095576044359283168303610095576040926101129260643592610375565b82519182526020820152f35b34610095575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100955760209073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b6040810190811067ffffffffffffffff8211176101a657604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176101a657604052565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146102415760010190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b80518210156102825760209160051b010190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b519081600f0b820361009557565b9060088110156102825760051b0190565b3d15610326573d9067ffffffffffffffff82116101a6576040519161031b60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601846101d3565b82523d5f602084013e565b606090565b8181029291811591840414171561024157565b8115610348570490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b9173ffffffffffffffffffffffffffffffffffffffff80911603610c0e57604051917fa064072b00000000000000000000000000000000000000000000000000000000835273ffffffffffffffffffffffffffffffffffffffff8116600484015273ffffffffffffffffffffffffffffffffffffffff821660248401525f8360448173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa928315610967575f93610b5e575b50825115610b545773ffffffffffffffffffffffffffffffffffffffff811673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee03610aaf57670de0b6b3a7640000915b8351956040516060810181811067ffffffffffffffff8211176101a65760609160409182525f81525f602082015201526040519660808160061b8901016040525f88525f602089015260608801604089015260608801525f5b8551811080610a82575b156109ca5773ffffffffffffffffffffffffffffffffffffffff610509828861026e565b511690604051917feb85226d000000000000000000000000000000000000000000000000000000008352600483015273ffffffffffffffffffffffffffffffffffffffff8516602483015273ffffffffffffffffffffffffffffffffffffffff8416604483015260608260648173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa8015610967575f925f905f92610972575b5073ffffffffffffffffffffffffffffffffffffffff6105e0848b61026e565b511690604051917f59f4f35100000000000000000000000000000000000000000000000000000000835260048301526101008260248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa918215610967575f926108cd575b506fffffffffffffffffffffffffffffffff928a8a61067e868916866102bd565b51118015906108b9575b6108aa576106b773ffffffffffffffffffffffffffffffffffffffff6106b08860ff9461026e565b5116610c38565b16159081806108a3575b156108425750507f07211ef7000000000000000000000000000000000000000000000000000000005b73ffffffffffffffffffffffffffffffffffffffff610709868d61026e565b5116604051916020830152848716602483015284831660448301528a6064830152606482528160a081011067ffffffffffffffff60a0840111176101a657815f929160a0849301604052602082519201905afa6107646102ce565b9080610836575b610783575b5050505061077e9150610214565b6104db565b602081805181010312610095576020015180159283156107a4575b50610770565b670de0b6b3a76400009382858102048514171561024157846107dd6107f2966107d58e6107ed986107e6970261033e565b9916836102bd565b519316906102bd565b519061032b565b610d05565b9160405180604081011067ffffffffffffffff6040830111176101a65761077e9361082b9260408301604052825260208201528a610e46565b505f8080808061079e565b5060208151101561076b565b8161089a575b5015610874577f5e0d443f000000000000000000000000000000000000000000000000000000006106ea565b7f556d6e9f000000000000000000000000000000000000000000000000000000006106ea565b9050155f610848565b50806106c1565b505050505061077e9150610214565b506108c6858416856102bd565b5115610688565b909150610100903d6101001161095f575b6108e882826101d3565b61010081838101031261009557818101601f8201121561009557604051918261010081011067ffffffffffffffff610100850111176101a6576101008301604052829082016101008301116100955781905b6101008301821061094f57505050905f61065d565b815181526020918201910161093a565b3d91506108de565b6040513d5f823e3d90fd5b935050506060823d6060116109c2575b8161098f606093836101d3565b81010312610095576109a0826102af565b60406109ae602085016102af565b93015190811515820361009557925f6105c0565b3d9150610982565b50949593505050505f905f936020820151806040840151525f925b818410610a08575050505082806109fb57509190565b610a049161033e565b9190565b90919295610a1a87604084015161026e565b51946020860195865160649081810291818304149015171561024157610a4187865161032b565b11610a765791610a63610a6b92610a5d600195518a519061032b565b90610ea1565b965190610ea1565b965b019291906109e5565b50945095600190610a6d565b5060208801517f0000000000000000000000000000000000000000000000000000000000000000116104e5565b6040517f313ce56700000000000000000000000000000000000000000000000000000000815260208160048173ffffffffffffffffffffffffffffffffffffffff86165afa8015610967575f90610b17575b60ff915016604d811161024157600a0a91610482565b506020813d602011610b4c575b81610b31602093836101d3565b81010312610095575160ff811681036100955760ff90610b01565b3d9150610b24565b505050505f905f90565b9092503d805f833e610b7081836101d3565b8101602090818382031261009557825167ffffffffffffffff93848211610095570181601f820112156100955780519384116101a6578360051b9060405194610bbb858401876101d3565b85528380860192820101928311610095578301905b828210610be25750505050915f61043e565b815173ffffffffffffffffffffffffffffffffffffffff81168103610095578152908301908301610bd0565b60046040517fccf7e6f7000000000000000000000000000000000000000000000000000000008152fd5b5f8060405160208101907f49fe9e7700000000000000000000000000000000000000000000000000000000825260048152610c728161018a565b5190845afa610c7f6102ce565b81610cf8575b50610cf2575f809160405160208101907f095a0fc600000000000000000000000000000000000000000000000000000000825260048152610cc58161018a565b51915afa610cd16102ce565b81610ce5575b50610ce0575f90565b600290565b602091505110155f610cd7565b50600190565b602091505110155f610c85565b8015610e4157610dcf815f908360801c80610e35575b508060401c80610e28575b508060201c80610e1b575b508060101c80610e0e575b508060081c80610e01575b508060041c80610df4575b508060021c80610de7575b50600191828092811c610de0575b1c1b610d77818561033e565b01811c610d84818561033e565b01811c610d91818561033e565b01811c610d9e818561033e565b01811c610dab818561033e565b01811c610db8818561033e565b01811c610dc5818561033e565b01901c809261033e565b80821015610ddb575090565b905090565b0181610d6b565b600291509101905f610d5d565b600491509101905f610d52565b600891509101905f610d47565b601091509101905f610d3c565b602091509101905f610d31565b604091509101905f610d26565b9150506080905f610d1b565b505f90565b9060208101908151610e59575050505f90565b610e7a6040840151916020850192835191610e74838361026e565b5261026e565b50610e858151610214565b9052519080518211610e99575b5050600190565b525f80610e92565b919082018092116102415756fea2646970667358221220a81ff33c7895af4540da6504953e168cd75a11fa971e7fd306cabb70b1febaea64736f6c63430008170033", + "deployedBytecode": "0x6080806040526004361015610012575f80fd5b5f3560e01c9081630caeeb241461011e575080633d549b32146100995763813584981461003d575f80fd5b34610095575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100955760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b5f80fd5b346100955760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100955773ffffffffffffffffffffffffffffffffffffffff600435818116810361009557602435908282168203610095576044359283168303610095576040926101129260643592610375565b82519182526020820152f35b34610095575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100955760209073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b6040810190811067ffffffffffffffff8211176101a657604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176101a657604052565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146102415760010190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b80518210156102825760209160051b010190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b519081600f0b820361009557565b9060088110156102825760051b0190565b3d15610326573d9067ffffffffffffffff82116101a6576040519161031b60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601846101d3565b82523d5f602084013e565b606090565b8181029291811591840414171561024157565b8115610348570490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b9173ffffffffffffffffffffffffffffffffffffffff80911603610c0e57604051917fa064072b00000000000000000000000000000000000000000000000000000000835273ffffffffffffffffffffffffffffffffffffffff8116600484015273ffffffffffffffffffffffffffffffffffffffff821660248401525f8360448173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa928315610967575f93610b5e575b50825115610b545773ffffffffffffffffffffffffffffffffffffffff811673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee03610aaf57670de0b6b3a7640000915b8351956040516060810181811067ffffffffffffffff8211176101a65760609160409182525f81525f602082015201526040519660808160061b8901016040525f88525f602089015260608801604089015260608801525f5b8551811080610a82575b156109ca5773ffffffffffffffffffffffffffffffffffffffff610509828861026e565b511690604051917feb85226d000000000000000000000000000000000000000000000000000000008352600483015273ffffffffffffffffffffffffffffffffffffffff8516602483015273ffffffffffffffffffffffffffffffffffffffff8416604483015260608260648173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa8015610967575f925f905f92610972575b5073ffffffffffffffffffffffffffffffffffffffff6105e0848b61026e565b511690604051917f59f4f35100000000000000000000000000000000000000000000000000000000835260048301526101008260248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa918215610967575f926108cd575b506fffffffffffffffffffffffffffffffff928a8a61067e868916866102bd565b51118015906108b9575b6108aa576106b773ffffffffffffffffffffffffffffffffffffffff6106b08860ff9461026e565b5116610c38565b16159081806108a3575b156108425750507f07211ef7000000000000000000000000000000000000000000000000000000005b73ffffffffffffffffffffffffffffffffffffffff610709868d61026e565b5116604051916020830152848716602483015284831660448301528a6064830152606482528160a081011067ffffffffffffffff60a0840111176101a657815f929160a0849301604052602082519201905afa6107646102ce565b9080610836575b610783575b5050505061077e9150610214565b6104db565b602081805181010312610095576020015180159283156107a4575b50610770565b670de0b6b3a76400009382858102048514171561024157846107dd6107f2966107d58e6107ed986107e6970261033e565b9916836102bd565b519316906102bd565b519061032b565b610d05565b9160405180604081011067ffffffffffffffff6040830111176101a65761077e9361082b9260408301604052825260208201528a610e46565b505f8080808061079e565b5060208151101561076b565b8161089a575b5015610874577f5e0d443f000000000000000000000000000000000000000000000000000000006106ea565b7f556d6e9f000000000000000000000000000000000000000000000000000000006106ea565b9050155f610848565b50806106c1565b505050505061077e9150610214565b506108c6858416856102bd565b5115610688565b909150610100903d6101001161095f575b6108e882826101d3565b61010081838101031261009557818101601f8201121561009557604051918261010081011067ffffffffffffffff610100850111176101a6576101008301604052829082016101008301116100955781905b6101008301821061094f57505050905f61065d565b815181526020918201910161093a565b3d91506108de565b6040513d5f823e3d90fd5b935050506060823d6060116109c2575b8161098f606093836101d3565b81010312610095576109a0826102af565b60406109ae602085016102af565b93015190811515820361009557925f6105c0565b3d9150610982565b50949593505050505f905f936020820151806040840151525f925b818410610a08575050505082806109fb57509190565b610a049161033e565b9190565b90919295610a1a87604084015161026e565b51946020860195865160649081810291818304149015171561024157610a4187865161032b565b11610a765791610a63610a6b92610a5d600195518a519061032b565b90610ea1565b965190610ea1565b965b019291906109e5565b50945095600190610a6d565b5060208801517f0000000000000000000000000000000000000000000000000000000000000000116104e5565b6040517f313ce56700000000000000000000000000000000000000000000000000000000815260208160048173ffffffffffffffffffffffffffffffffffffffff86165afa8015610967575f90610b17575b60ff915016604d811161024157600a0a91610482565b506020813d602011610b4c575b81610b31602093836101d3565b81010312610095575160ff811681036100955760ff90610b01565b3d9150610b24565b505050505f905f90565b9092503d805f833e610b7081836101d3565b8101602090818382031261009557825167ffffffffffffffff93848211610095570181601f820112156100955780519384116101a6578360051b9060405194610bbb858401876101d3565b85528380860192820101928311610095578301905b828210610be25750505050915f61043e565b815173ffffffffffffffffffffffffffffffffffffffff81168103610095578152908301908301610bd0565b60046040517fccf7e6f7000000000000000000000000000000000000000000000000000000008152fd5b5f8060405160208101907f49fe9e7700000000000000000000000000000000000000000000000000000000825260048152610c728161018a565b5190845afa610c7f6102ce565b81610cf8575b50610cf2575f809160405160208101907f095a0fc600000000000000000000000000000000000000000000000000000000825260048152610cc58161018a565b51915afa610cd16102ce565b81610ce5575b50610ce0575f90565b600290565b602091505110155f610cd7565b50600190565b602091505110155f610c85565b8015610e4157610dcf815f908360801c80610e35575b508060401c80610e28575b508060201c80610e1b575b508060101c80610e0e575b508060081c80610e01575b508060041c80610df4575b508060021c80610de7575b50600191828092811c610de0575b1c1b610d77818561033e565b01811c610d84818561033e565b01811c610d91818561033e565b01811c610d9e818561033e565b01811c610dab818561033e565b01811c610db8818561033e565b01811c610dc5818561033e565b01901c809261033e565b80821015610ddb575090565b905090565b0181610d6b565b600291509101905f610d5d565b600491509101905f610d52565b600891509101905f610d47565b601091509101905f610d3c565b602091509101905f610d31565b604091509101905f610d26565b9150506080905f610d1b565b505f90565b9060208101908151610e59575050505f90565b610e7a6040840151916020850192835191610e74838361026e565b5261026e565b50610e858151610214565b9052519080518211610e99575b5050600190565b525f80610e92565b919082018092116102415756fea2646970667358221220a81ff33c7895af4540da6504953e168cd75a11fa971e7fd306cabb70b1febaea64736f6c63430008170033" } \ No newline at end of file From e642ebe801a0cf7d0e8dda29cf0a867ecbf8d0c2 Mon Sep 17 00:00:00 2001 From: Denis Date: Wed, 14 Aug 2024 17:18:05 +0100 Subject: [PATCH 7/8] Deploy on fantom --- README.md | 2 +- deployments/fantom/CurveOracle.json | 98 ++++++----------------------- 2 files changed, 20 insertions(+), 80 deletions(-) diff --git a/README.md b/README.md index fbba13c..adaf729 100644 --- a/README.md +++ b/README.md @@ -376,7 +376,7 @@ If no direct liquidity pair exists between two tokens, the spot price aggregator * SpiritSwap - [0xc197Ab9d47206dAf739a47AC75D0833fD2b0f87F](https://ftmscan.com/address/0xc197Ab9d47206dAf739a47AC75D0833fD2b0f87F) * Spooky - [0xE93293A6088d3a8abDDf62e6CA1A085Cec97D06F](https://ftmscan.com/address/0xE93293A6088d3a8abDDf62e6CA1A085Cec97D06F) * SushiSwap - [0x2A45d538f460DDBEeA3a899b0674dA3DFE318faa](https://ftmscan.com/address/0x2A45d538f460DDBEeA3a899b0674dA3DFE318faa) - * Curve - [0x0bA0D1B119d8a8E193e2802c2C7Ef1BDfAdddc49](https://ftmscan.com/address/0x0bA0D1B119d8a8E193e2802c2C7Ef1BDfAdddc49) + * Curve - [0x4e5Cee3B8Af0CB46EFAA94Cba5E0f25f8770BB19](https://ftmscan.com/address/0x4e5Cee3B8Af0CB46EFAA94Cba5E0f25f8770BB19) diff --git a/deployments/fantom/CurveOracle.json b/deployments/fantom/CurveOracle.json index 226a105..9ffaa42 100644 --- a/deployments/fantom/CurveOracle.json +++ b/deployments/fantom/CurveOracle.json @@ -1,27 +1,17 @@ { - "address": "0x0bA0D1B119d8a8E193e2802c2C7Ef1BDfAdddc49", + "address": "0x4e5Cee3B8Af0CB46EFAA94Cba5E0f25f8770BB19", "abi": [ { "inputs": [ { "internalType": "contract ICurveProvider", - "name": "_addressProvider", + "name": "curveProvider", "type": "address" }, { "internalType": "uint256", - "name": "_maxPools", + "name": "maxPools", "type": "uint256" - }, - { - "internalType": "uint256[]", - "name": "_registryIds", - "type": "uint256[]" - }, - { - "internalType": "enum CurveOracle.CurveRegistryType[]", - "name": "_registryTypes", - "type": "uint8[]" } ], "stateMutability": "nonpayable", @@ -32,11 +22,6 @@ "name": "ConnectorShouldBeNone", "type": "error" }, - { - "inputs": [], - "name": "MathOverflowedMulDiv", - "type": "error" - }, { "inputs": [], "name": "PoolNotFound", @@ -49,12 +34,12 @@ }, { "inputs": [], - "name": "MAX_POOLS", + "name": "CURVE_METAREGISTRY", "outputs": [ { - "internalType": "uint256", + "internalType": "contract ICurveMetaregistry", "name": "", - "type": "uint256" + "type": "address" } ], "stateMutability": "view", @@ -62,7 +47,7 @@ }, { "inputs": [], - "name": "REGISTRIES_COUNT", + "name": "MAX_POOLS", "outputs": [ { "internalType": "uint256", @@ -111,73 +96,28 @@ ], "stateMutability": "view", "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "registries", - "outputs": [ - { - "internalType": "contract ICurveRegistry", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "registryTypes", - "outputs": [ - { - "internalType": "enum CurveOracle.CurveRegistryType", - "name": "", - "type": "uint8" - } - ], - "stateMutability": "view", - "type": "function" } ], + "transactionHash": "0x6b369d700f9127426166b980caae1e5d9c26f04e58db0bd845a98294b8e6b89e", "receipt": { "to": "0xD935a2bb926019E0ed6fb31fbD5b1Bbb7c05bf65", "from": "0x56E44874F624EbDE6efCc783eFD685f0FBDC6dcF", "contractAddress": null, - "gasUsed": "1246360", + "transactionIndex": 4, + "gasUsed": "956134", "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "blockHash": "0x00043aab00000cd3c3e8dacbcc08f531824782708c9ba339d443d48a56a93b53", + "blockHash": "0x0004919400001a6aa76364a6f0b2baa4fd4e1c239254792eee395555d6ae9fa6", + "transactionHash": "0x6b369d700f9127426166b980caae1e5d9c26f04e58db0bd845a98294b8e6b89e", "logs": [], - "blockNumber": 79580431, - "cumulativeGasUsed": "1267360", + "blockNumber": 88837337, + "cumulativeGasUsed": "1833798", "status": 1 }, "args": [ - "0x0000000022d53366457f9d5e68ec105046fc4383", - 100, - [ - 0, - 3, - 5 - ], - [ - 0, - 8, - 2 - ] + "0x5ffe7FB82894076ECB99A30D6A32e969e6e35E98", + 100 ], - "numDeployments": 1, - "bytecode": "0x60c0604081815234620002a757620015ee8038038091620000218286620002bd565b8439820190608083830312620002a75782516001600160a01b03928382169291839003620002a757602085810151838701516001600160401b03969293929190878111620002a75788019683601f89011215620002a757875198620000868a620002f7565b986200009588519a8b620002bd565b8a8a52868a018760059c60051b83010191878311620002a75788809101915b838310620002ac57505050506060810151918211620002a757019280601f85011215620002a7578351620000e881620002f7565b94620000f788519687620002bd565b818652868087019260051b820101928311620002a7578601905b8282106200028d5750505060805285519560a09660a05260005b875181101562000249576200014181836200030f565b51865163124fd3dd60e21b815260049182820152602490878183818d5afa9081156200023e57600091620001fa575b5090600b9182851015620001e65784546001600160a01b0319169087161784556200019c84886200030f565b5192600a841015620001d35750509082916001938c1c0190815460f88460031b169160ff809116831b921b1916179055016200012b565b602190634e487b7160e01b600052526000fd5b50634e487b7160e01b600090815260328452fd5b8881813d831162000236575b620002128183620002bd565b810103126200023257519086821682036200022f57503862000170565b80fd5b5080fd5b503d62000206565b89513d6000823e3d90fd5b85516112b390816200033b8239608051818181610121015281816102cb0152818161030a01528181610cc60152610df7015260a0518181816101d7015261034e0152f35b8151600a811015620002a757815290860190860162000111565b600080fd5b8251815291810191899101620000b4565b601f909101601f19168101906001600160401b03821190821017620002e157604052565b634e487b7160e01b600052604160045260246000fd5b6001600160401b038111620002e15760051b60200190565b8051821015620003245760209160051b010190565b634e487b7160e01b600052603260045260246000fdfe608080604052600436101561001357600080fd5b60003560e01c9081633d549b32146101fa5750806347400449146101a15780636347c9001461014457806381358498146100eb5763b72529f21461005657600080fd5b346100e65760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100e657600435600b8110156100e65761009c60ff91610e45565b90549060031b1c16604051600a8210156100b7576020918152f35b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600080fd5b346100e65760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100e65760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b346100e65760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100e657600435600b8110156100e65773ffffffffffffffffffffffffffffffffffffffff6020915416604051908152f35b346100e65760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100e65760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b346100e65760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100e6576004359073ffffffffffffffffffffffffffffffffffffffff821682036100e6576024359073ffffffffffffffffffffffffffffffffffffffff821682036100e65760443573ffffffffffffffffffffffffffffffffffffffff81168091036100e65773ffffffffffffffffffffffffffffffffffffffff03610e1d57506060604080516102b681610e5d565b600081526000602082015201526040519060807f000000000000000000000000000000000000000000000000000000000000000060061b8301016040526000825260006020830152606082018060408401527f0000000000000000000000000000000000000000000000000000000000000000905260006040805161033a81610e5d565b82815282602082015201526000916000925b7f0000000000000000000000000000000000000000000000000000000000000000841080610df4575b15610d0b57600091600b851015918261078d5773ffffffffffffffffffffffffffffffffffffffff865416936040517f6982eb0b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8916600482015273ffffffffffffffffffffffffffffffffffffffff8716602482015260006044820152602081606481895afa90811561078157600091610cec575b50915b73ffffffffffffffffffffffffffffffffffffffff8316151580610cc3575b15610cad5761044e90610ed6565b916000908561078d576000808b60405173ffffffffffffffffffffffffffffffffffffffff60208201927feb85226d000000000000000000000000000000000000000000000000000000008452818716602484015216604482015273ffffffffffffffffffffffffffffffffffffffff8c166064820152606481526104d281610e79565b51908a5afa916104e0610f2f565b9280610ca1575b15610c91576104f58a610e45565b905490600a60ff838360031b1c1610156100b75760031b1c60ff166002148015610c6c575b8015610c47575b15610c0c576040838051810103126100e65761054b604061054460208601610f8d565b9401610f8d565b81610b8b5760405161055c81610e5d565b7f92e3cc2d0000000000000000000000000000000000000000000000000000000081527f5e0d443f0000000000000000000000000000000000000000000000000000000060208201527f556d6e9f000000000000000000000000000000000000000000000000000000006040820152925b8861078d576000807fffffffff000000000000000000000000000000000000000000000000000000008651166040516020810191825273ffffffffffffffffffffffffffffffffffffffff851660248201526024815261062c81610e5d565b51908d5afa9261063a610f2f565b9380610b7f575b15610ada57908995949392916008901561096b575b83526fffffffffffffffffffffffffffffffff9161069561069061067c85891687610f9b565b5161068986851688610f9b565b5190610faf565b610ffb565b956127106106b5816106a987851689610f9b565b51049686851690610f9b565b51048515159081610961575b506107bc575b5050505050505061078d576106db90610ed6565b6040517f6982eb0b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff89811660048301528716602482015260448101829052909690602081606481895afa90811561078157600091610752575b50915b969096610421565b610774915060203d60201161077a575b61076c8183610e95565b810190610f03565b89610747565b503d610762565b6040513d6000823e3d90fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000807fffffffff000000000000000000000000000000000000000000000000000000006020890151166040516020810191825284600f0b602482015285600f0b60448201528860648201526064815261081581610e79565b5190865afa93610823610f2f565b9685158015610956575b6108e3575b5050505050806108d7575b61084b575b808080806106c7565b909192506020828051810103126100e657602061086992015161113e565b60405180604081011067ffffffffffffffff6040830111176108a857869261089f92604083016040528252602082015285611214565b50898080610842565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b5060208251101561083d565b600096975086955060407fffffffff0000000000000000000000000000000000000000000000000000000091015116928160405193602085019586521660248401521660448201528560648201526064815261093e81610e79565b51915afa9061094b610f2f565b918d80808080610832565b50602088511061082d565b90501515386106c1565b95506109768d610e45565b96905496600a60ff898360031b1c1610156100b7578b978f9160031b1c60ff166001148015610aae575b8015610a82575b8015610a57575b8015610a2b575b156109c457505060045b610656565b60ff9197506109d290610e45565b90549060031b1c1695600a8710156100b7578d60068c98146000146109fa5750506003610656565b60ff919750610a0890610e45565b90549060031b1c1695600a8710156100b75760038b97036109bf57506002610656565b5060ff919750610a3a90610e45565b90549060031b1c1695600a8710156100b7578d60098c98146109b5565b5060ff919750610a6690610e45565b90549060031b1c1695600a8710156100b7578d818c98146109ae565b5060ff919750610a9190610e45565b90549060031b1c1695600a8710156100b7578d60078c98146109a7565b5060ff919750610abd90610e45565b90549060031b1c1695600a8710156100b7578d60058c98146109a0565b5050505050509250610aed600093610ed6565b6040517f6982eb0b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff89811660048301528716602482015260448101829052909690602081606481895afa90811561078157600091610b60575b509161074a565b610b79915060203d60201161077a5761076c8183610e95565b89610b59565b50604084511015610641565b604051610b9781610e5d565b7f59f4f3510000000000000000000000000000000000000000000000000000000081527f07211ef70000000000000000000000000000000000000000000000000000000060208201527f85f11d1e000000000000000000000000000000000000000000000000000000006040820152926105cd565b506060828051810103126100e657610c2660208301610f8d565b916060610c3560408301610f8d565b91015180151581036100e6579061054b565b5060ff610c538b610e45565b90549060031b1c16600a8110156100b757600614610521565b5060ff610c788b610e45565b90549060031b1c16600a8110156100b75760031461051a565b5050509250610aed600093610ed6565b506040835110156104e7565b9450505093610cbc9150610ed6565b929061034c565b507f00000000000000000000000000000000000000000000000000000000000000008110610440565b610d05915060203d60201161077a5761076c8183610e95565b8961041e565b506000806020830151806040850151526000905b808210610d4d576040848480610d3c575b82519182526020820152f35b9081610d4791610fc2565b90610d30565b9091610d5d836040870151610f9b565b519360208501948551606481029080820460641490151715610dc557610d866064358951610faf565b11610db95791610da8610db092610da260019551895190610faf565b90611270565b955190611270565b925b0190610d1f565b50935091600190610db2565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b507f00000000000000000000000000000000000000000000000000000000000000008110610375565b807fccf7e6f70000000000000000000000000000000000000000000000000000000060049252fd5b90600b82101561078d57601f8260051c600b01921690565b6060810190811067ffffffffffffffff8211176108a857604052565b60a0810190811067ffffffffffffffff8211176108a857604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176108a857604052565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610dc55760010190565b908160209103126100e6575173ffffffffffffffffffffffffffffffffffffffff811681036100e65790565b3d15610f88573d9067ffffffffffffffff82116108a85760405191610f7c60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160184610e95565b82523d6000602084013e565b606090565b519081600f0b82036100e657565b805182101561078d5760209160051b010190565b81810292918115918404141715610dc557565b8115610fcc570490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b8015611138576110c6816000908360801c8061112c575b508060401c8061111f575b508060201c80611112575b508060101c80611105575b508060081c806110f8575b508060041c806110eb575b508060021c806110de575b50600191828092811c6110d7575b1c1b61106e8185610fc2565b01811c61107b8185610fc2565b01811c6110888185610fc2565b01811c6110958185610fc2565b01811c6110a28185610fc2565b01811c6110af8185610fc2565b01811c6110bc8185610fc2565b01901c8092610fc2565b808210156110d2575090565b905090565b0181611062565b6002915091019038611054565b6004915091019038611049565b600891509101903861103e565b6010915091019038611033565b6020915091019038611028565b604091509101903861101d565b91505060809038611012565b50600090565b670de0b6b3a764000091828202917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8482099383808610950394808603951461120457848311156111da5782910981600003821680920460028082600302188083028203028083028203028083028203028083028203028083028203028092029003029360018380600003040190848311900302920304170290565b60046040517f227bc153000000000000000000000000000000000000000000000000000000008152fd5b5050906112119250610fc2565b90565b906020810190815161122857505050600090565b61124960408401519160208501928351916112438383610f9b565b52610f9b565b506112548151610ed6565b9052519080518211611268575b5050600190565b523880611261565b91908201809211610dc55756fea26469706673582212204b098fefe89cf9d8d130bcd1b394a619e7a09613d63db61aba5c4f062b499bff64736f6c63430008170033", - "deployedBytecode": "0x608080604052600436101561001357600080fd5b60003560e01c9081633d549b32146101fa5750806347400449146101a15780636347c9001461014457806381358498146100eb5763b72529f21461005657600080fd5b346100e65760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100e657600435600b8110156100e65761009c60ff91610e45565b90549060031b1c16604051600a8210156100b7576020918152f35b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600080fd5b346100e65760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100e65760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b346100e65760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100e657600435600b8110156100e65773ffffffffffffffffffffffffffffffffffffffff6020915416604051908152f35b346100e65760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100e65760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b346100e65760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100e6576004359073ffffffffffffffffffffffffffffffffffffffff821682036100e6576024359073ffffffffffffffffffffffffffffffffffffffff821682036100e65760443573ffffffffffffffffffffffffffffffffffffffff81168091036100e65773ffffffffffffffffffffffffffffffffffffffff03610e1d57506060604080516102b681610e5d565b600081526000602082015201526040519060807f000000000000000000000000000000000000000000000000000000000000000060061b8301016040526000825260006020830152606082018060408401527f0000000000000000000000000000000000000000000000000000000000000000905260006040805161033a81610e5d565b82815282602082015201526000916000925b7f0000000000000000000000000000000000000000000000000000000000000000841080610df4575b15610d0b57600091600b851015918261078d5773ffffffffffffffffffffffffffffffffffffffff865416936040517f6982eb0b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8916600482015273ffffffffffffffffffffffffffffffffffffffff8716602482015260006044820152602081606481895afa90811561078157600091610cec575b50915b73ffffffffffffffffffffffffffffffffffffffff8316151580610cc3575b15610cad5761044e90610ed6565b916000908561078d576000808b60405173ffffffffffffffffffffffffffffffffffffffff60208201927feb85226d000000000000000000000000000000000000000000000000000000008452818716602484015216604482015273ffffffffffffffffffffffffffffffffffffffff8c166064820152606481526104d281610e79565b51908a5afa916104e0610f2f565b9280610ca1575b15610c91576104f58a610e45565b905490600a60ff838360031b1c1610156100b75760031b1c60ff166002148015610c6c575b8015610c47575b15610c0c576040838051810103126100e65761054b604061054460208601610f8d565b9401610f8d565b81610b8b5760405161055c81610e5d565b7f92e3cc2d0000000000000000000000000000000000000000000000000000000081527f5e0d443f0000000000000000000000000000000000000000000000000000000060208201527f556d6e9f000000000000000000000000000000000000000000000000000000006040820152925b8861078d576000807fffffffff000000000000000000000000000000000000000000000000000000008651166040516020810191825273ffffffffffffffffffffffffffffffffffffffff851660248201526024815261062c81610e5d565b51908d5afa9261063a610f2f565b9380610b7f575b15610ada57908995949392916008901561096b575b83526fffffffffffffffffffffffffffffffff9161069561069061067c85891687610f9b565b5161068986851688610f9b565b5190610faf565b610ffb565b956127106106b5816106a987851689610f9b565b51049686851690610f9b565b51048515159081610961575b506107bc575b5050505050505061078d576106db90610ed6565b6040517f6982eb0b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff89811660048301528716602482015260448101829052909690602081606481895afa90811561078157600091610752575b50915b969096610421565b610774915060203d60201161077a575b61076c8183610e95565b810190610f03565b89610747565b503d610762565b6040513d6000823e3d90fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000807fffffffff000000000000000000000000000000000000000000000000000000006020890151166040516020810191825284600f0b602482015285600f0b60448201528860648201526064815261081581610e79565b5190865afa93610823610f2f565b9685158015610956575b6108e3575b5050505050806108d7575b61084b575b808080806106c7565b909192506020828051810103126100e657602061086992015161113e565b60405180604081011067ffffffffffffffff6040830111176108a857869261089f92604083016040528252602082015285611214565b50898080610842565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b5060208251101561083d565b600096975086955060407fffffffff0000000000000000000000000000000000000000000000000000000091015116928160405193602085019586521660248401521660448201528560648201526064815261093e81610e79565b51915afa9061094b610f2f565b918d80808080610832565b50602088511061082d565b90501515386106c1565b95506109768d610e45565b96905496600a60ff898360031b1c1610156100b7578b978f9160031b1c60ff166001148015610aae575b8015610a82575b8015610a57575b8015610a2b575b156109c457505060045b610656565b60ff9197506109d290610e45565b90549060031b1c1695600a8710156100b7578d60068c98146000146109fa5750506003610656565b60ff919750610a0890610e45565b90549060031b1c1695600a8710156100b75760038b97036109bf57506002610656565b5060ff919750610a3a90610e45565b90549060031b1c1695600a8710156100b7578d60098c98146109b5565b5060ff919750610a6690610e45565b90549060031b1c1695600a8710156100b7578d818c98146109ae565b5060ff919750610a9190610e45565b90549060031b1c1695600a8710156100b7578d60078c98146109a7565b5060ff919750610abd90610e45565b90549060031b1c1695600a8710156100b7578d60058c98146109a0565b5050505050509250610aed600093610ed6565b6040517f6982eb0b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff89811660048301528716602482015260448101829052909690602081606481895afa90811561078157600091610b60575b509161074a565b610b79915060203d60201161077a5761076c8183610e95565b89610b59565b50604084511015610641565b604051610b9781610e5d565b7f59f4f3510000000000000000000000000000000000000000000000000000000081527f07211ef70000000000000000000000000000000000000000000000000000000060208201527f85f11d1e000000000000000000000000000000000000000000000000000000006040820152926105cd565b506060828051810103126100e657610c2660208301610f8d565b916060610c3560408301610f8d565b91015180151581036100e6579061054b565b5060ff610c538b610e45565b90549060031b1c16600a8110156100b757600614610521565b5060ff610c788b610e45565b90549060031b1c16600a8110156100b75760031461051a565b5050509250610aed600093610ed6565b506040835110156104e7565b9450505093610cbc9150610ed6565b929061034c565b507f00000000000000000000000000000000000000000000000000000000000000008110610440565b610d05915060203d60201161077a5761076c8183610e95565b8961041e565b506000806020830151806040850151526000905b808210610d4d576040848480610d3c575b82519182526020820152f35b9081610d4791610fc2565b90610d30565b9091610d5d836040870151610f9b565b519360208501948551606481029080820460641490151715610dc557610d866064358951610faf565b11610db95791610da8610db092610da260019551895190610faf565b90611270565b955190611270565b925b0190610d1f565b50935091600190610db2565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b507f00000000000000000000000000000000000000000000000000000000000000008110610375565b807fccf7e6f70000000000000000000000000000000000000000000000000000000060049252fd5b90600b82101561078d57601f8260051c600b01921690565b6060810190811067ffffffffffffffff8211176108a857604052565b60a0810190811067ffffffffffffffff8211176108a857604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176108a857604052565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610dc55760010190565b908160209103126100e6575173ffffffffffffffffffffffffffffffffffffffff811681036100e65790565b3d15610f88573d9067ffffffffffffffff82116108a85760405191610f7c60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160184610e95565b82523d6000602084013e565b606090565b519081600f0b82036100e657565b805182101561078d5760209160051b010190565b81810292918115918404141715610dc557565b8115610fcc570490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b8015611138576110c6816000908360801c8061112c575b508060401c8061111f575b508060201c80611112575b508060101c80611105575b508060081c806110f8575b508060041c806110eb575b508060021c806110de575b50600191828092811c6110d7575b1c1b61106e8185610fc2565b01811c61107b8185610fc2565b01811c6110888185610fc2565b01811c6110958185610fc2565b01811c6110a28185610fc2565b01811c6110af8185610fc2565b01811c6110bc8185610fc2565b01901c8092610fc2565b808210156110d2575090565b905090565b0181611062565b6002915091019038611054565b6004915091019038611049565b600891509101903861103e565b6010915091019038611033565b6020915091019038611028565b604091509101903861101d565b91505060809038611012565b50600090565b670de0b6b3a764000091828202917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8482099383808610950394808603951461120457848311156111da5782910981600003821680920460028082600302188083028203028083028203028083028203028083028203028083028203028092029003029360018380600003040190848311900302920304170290565b60046040517f227bc153000000000000000000000000000000000000000000000000000000008152fd5b5050906112119250610fc2565b90565b906020810190815161122857505050600090565b61124960408401519160208501928351916112438383610f9b565b52610f9b565b506112548151610ed6565b9052519080518211611268575b5050600190565b523880611261565b91908201809211610dc55756fea26469706673582212204b098fefe89cf9d8d130bcd1b394a619e7a09613d63db61aba5c4f062b499bff64736f6c63430008170033" + "numDeployments": 2, + "bytecode": "0x60c08060405234610106576040816200109f8038038091610020828561010b565b8339810103126101065780516001600160a01b03808216929091839003610106576020806024920151936040519283809263124fd3dd60e21b8252600760048301525afa9081156100fa576000916100b8575b501660805260a052604051610f5a908162000145823960805181818161016f0152818161042b015281816105b40152610657015260a05181818160770152610af60152f35b6020813d6020116100f2575b816100d16020938361010b565b810103126100ee57519082821682036100eb575038610073565b80fd5b5080fd5b3d91506100c4565b6040513d6000823e3d90fd5b600080fd5b601f909101601f19168101906001600160401b0382119082101761012e57604052565b634e487b7160e01b600052604160045260246000fdfe608080604052600436101561001357600080fd5b600090813560e01c9081630caeeb2414610125575080633d549b321461009d5763813584981461004257600080fd5b3461009a57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261009a5760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b80fd5b503461009a5760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261009a576004359073ffffffffffffffffffffffffffffffffffffffff90818316830361009a5760243590828216820361009a57604435928316830361009a576040610119606435858588610390565b82519182526020820152f35b90503461019357817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101935760209073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b5080fd5b6040810190811067ffffffffffffffff8211176101b357604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176101b357604052565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146102505760010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80518210156102935760209160051b010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b519081600f0b82036102d057565b600080fd5b9060088110156102935760051b0190565b3d1561033f573d9067ffffffffffffffff82116101b3576040519161033360207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601846101e2565b82523d6000602084013e565b606090565b8181029291811591840414171561025057565b8115610361570490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b909173ffffffffffffffffffffffffffffffffffffffff80911603610c7e57604051917fa064072b00000000000000000000000000000000000000000000000000000000835273ffffffffffffffffffffffffffffffffffffffff8216600484015273ffffffffffffffffffffffffffffffffffffffff8116602484015260008360448173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa9283156109cf57600093610bcd575b50825115610bc15773ffffffffffffffffffffffffffffffffffffffff821673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee03610b1b57670de0b6b3a7640000905b83519560405180606081011067ffffffffffffffff6060830111176101b35760408160608093018252600081526000602082015201526040519660808160061b8901016040526000885260006020890152606088016040890152606088015260005b8551811080610aee575b15610a335773ffffffffffffffffffffffffffffffffffffffff610530828861027f565b511690604051917feb85226d000000000000000000000000000000000000000000000000000000008352600483015273ffffffffffffffffffffffffffffffffffffffff8616602483015273ffffffffffffffffffffffffffffffffffffffff8416604483015260608260648173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa80156109cf576000926000906000926109db575b5073ffffffffffffffffffffffffffffffffffffffff61060a848b61027f565b511691604051927f59f4f35100000000000000000000000000000000000000000000000000000000845260048401526101008360248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa9283156109cf57600093610935575b5089886106a76fffffffffffffffffffffffffffffffff8816866102d5565b5111801590610911575b610903576106e073ffffffffffffffffffffffffffffffffffffffff6106d98760ff9461027f565b5116610ca8565b16159081806108fc575b1561089b5750507f07211ef7000000000000000000000000000000000000000000000000000000005b73ffffffffffffffffffffffffffffffffffffffff610732858c61027f565b51166040519160208301526fffffffffffffffffffffffffffffffff861660248301526fffffffffffffffffffffffffffffffff83166044830152886064830152606482528160a081011067ffffffffffffffff60a0840111176101b357816000929160a0849301604052602082519201905afa6107ae6102e6565b908061088f575b6107cc575b5050506107c79150610223565b610502565b6020818051810103126102d0576020015190811580156107ed575b506107ba565b670de0b6b3a7640000908382810204821417156102505761084c936fffffffffffffffffffffffffffffffff6108378161082f8d610840966108479902610357565b9916836102d5565b519316906102d5565b5190610344565b610d78565b9160405180604081011067ffffffffffffffff6040830111176101b3576107c7936108859260408301604052825260208201528a610ebb565b50388080806107e7565b506020815110156107b5565b816108f3575b50156108cd577f5e0d443f00000000000000000000000000000000000000000000000000000000610713565b7f556d6e9f00000000000000000000000000000000000000000000000000000000610713565b905015386108a1565b50806106ea565b505050506107c79150610223565b5061092e6fffffffffffffffffffffffffffffffff8416856102d5565b51156106b1565b909250610100903d610100116109c7575b61095082826101e2565b6101008183810103126102d057818101601f820112156102d057604051918261010081011067ffffffffffffffff610100850111176101b3576101008301604052829082016101008301116102d05781905b610100830182106109b7575050509138610688565b81518152602091820191016109a2565b3d9150610946565b6040513d6000823e3d90fd5b935050506060823d606011610a2b575b816109f8606093836101e2565b810103126102d057610a09826102c2565b6040610a17602085016102c2565b9301519081151582036102d05792386105ea565b3d91506109eb565b50949593505050506000906000936020820151806040840151526000925b818410610a7457505050508280610a6757509190565b610a7091610357565b9190565b90919295610a8687604084015161027f565b51946020860195865160649081810291818304149015171561025057610aad878651610344565b11610ae25791610acf610ad792610ac9600195518a5190610344565b90610f17565b965190610f17565b965b01929190610a51565b50945095600190610ad9565b5060208801517f00000000000000000000000000000000000000000000000000000000000000001161050c565b6040517f313ce56700000000000000000000000000000000000000000000000000000000815260208160048173ffffffffffffffffffffffffffffffffffffffff87165afa80156109cf57600090610b84575b60ff915016604d811161025057600a0a906104a0565b506020813d602011610bb9575b81610b9e602093836101e2565b810103126102d0575160ff811681036102d05760ff90610b6e565b3d9150610b91565b50505050600090600090565b9092503d806000833e610be081836101e2565b810160209081838203126102d057825167ffffffffffffffff938482116102d0570181601f820112156102d05780519384116101b3578360051b9060405194610c2b858401876101e2565b855283808601928201019283116102d0578301905b828210610c525750505050913861045c565b815173ffffffffffffffffffffffffffffffffffffffff811681036102d0578152908301908301610c40565b60046040517fccf7e6f7000000000000000000000000000000000000000000000000000000008152fd5b60008060405160208101907f49fe9e7700000000000000000000000000000000000000000000000000000000825260048152610ce381610197565b5190845afa610cf06102e6565b81610d6b575b50610d65576000809160405160208101907f095a0fc600000000000000000000000000000000000000000000000000000000825260048152610d3781610197565b51915afa610d436102e6565b81610d58575b50610d5357600090565b600290565b6020915051101538610d49565b50600190565b6020915051101538610cf6565b8015610eb557610e43816000908360801c80610ea9575b508060401c80610e9c575b508060201c80610e8f575b508060101c80610e82575b508060081c80610e75575b508060041c80610e68575b508060021c80610e5b575b50600191828092811c610e54575b1c1b610deb8185610357565b01811c610df88185610357565b01811c610e058185610357565b01811c610e128185610357565b01811c610e1f8185610357565b01811c610e2c8185610357565b01811c610e398185610357565b01901c8092610357565b80821015610e4f575090565b905090565b0181610ddf565b6002915091019038610dd1565b6004915091019038610dc6565b6008915091019038610dbb565b6010915091019038610db0565b6020915091019038610da5565b6040915091019038610d9a565b91505060809038610d8f565b50600090565b9060208101908151610ecf57505050600090565b610ef06040840151916020850192835191610eea838361027f565b5261027f565b50610efb8151610223565b9052519080518211610f0f575b5050600190565b523880610f08565b919082018092116102505756fea2646970667358221220bf934760b8c950184fbb00c61df2e4b7bc157005de6bde022cb80f0c51b48f5464736f6c63430008170033", + "deployedBytecode": "0x608080604052600436101561001357600080fd5b600090813560e01c9081630caeeb2414610125575080633d549b321461009d5763813584981461004257600080fd5b3461009a57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261009a5760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b80fd5b503461009a5760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261009a576004359073ffffffffffffffffffffffffffffffffffffffff90818316830361009a5760243590828216820361009a57604435928316830361009a576040610119606435858588610390565b82519182526020820152f35b90503461019357817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101935760209073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b5080fd5b6040810190811067ffffffffffffffff8211176101b357604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176101b357604052565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146102505760010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80518210156102935760209160051b010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b519081600f0b82036102d057565b600080fd5b9060088110156102935760051b0190565b3d1561033f573d9067ffffffffffffffff82116101b3576040519161033360207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601846101e2565b82523d6000602084013e565b606090565b8181029291811591840414171561025057565b8115610361570490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b909173ffffffffffffffffffffffffffffffffffffffff80911603610c7e57604051917fa064072b00000000000000000000000000000000000000000000000000000000835273ffffffffffffffffffffffffffffffffffffffff8216600484015273ffffffffffffffffffffffffffffffffffffffff8116602484015260008360448173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa9283156109cf57600093610bcd575b50825115610bc15773ffffffffffffffffffffffffffffffffffffffff821673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee03610b1b57670de0b6b3a7640000905b83519560405180606081011067ffffffffffffffff6060830111176101b35760408160608093018252600081526000602082015201526040519660808160061b8901016040526000885260006020890152606088016040890152606088015260005b8551811080610aee575b15610a335773ffffffffffffffffffffffffffffffffffffffff610530828861027f565b511690604051917feb85226d000000000000000000000000000000000000000000000000000000008352600483015273ffffffffffffffffffffffffffffffffffffffff8616602483015273ffffffffffffffffffffffffffffffffffffffff8416604483015260608260648173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa80156109cf576000926000906000926109db575b5073ffffffffffffffffffffffffffffffffffffffff61060a848b61027f565b511691604051927f59f4f35100000000000000000000000000000000000000000000000000000000845260048401526101008360248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa9283156109cf57600093610935575b5089886106a76fffffffffffffffffffffffffffffffff8816866102d5565b5111801590610911575b610903576106e073ffffffffffffffffffffffffffffffffffffffff6106d98760ff9461027f565b5116610ca8565b16159081806108fc575b1561089b5750507f07211ef7000000000000000000000000000000000000000000000000000000005b73ffffffffffffffffffffffffffffffffffffffff610732858c61027f565b51166040519160208301526fffffffffffffffffffffffffffffffff861660248301526fffffffffffffffffffffffffffffffff83166044830152886064830152606482528160a081011067ffffffffffffffff60a0840111176101b357816000929160a0849301604052602082519201905afa6107ae6102e6565b908061088f575b6107cc575b5050506107c79150610223565b610502565b6020818051810103126102d0576020015190811580156107ed575b506107ba565b670de0b6b3a7640000908382810204821417156102505761084c936fffffffffffffffffffffffffffffffff6108378161082f8d610840966108479902610357565b9916836102d5565b519316906102d5565b5190610344565b610d78565b9160405180604081011067ffffffffffffffff6040830111176101b3576107c7936108859260408301604052825260208201528a610ebb565b50388080806107e7565b506020815110156107b5565b816108f3575b50156108cd577f5e0d443f00000000000000000000000000000000000000000000000000000000610713565b7f556d6e9f00000000000000000000000000000000000000000000000000000000610713565b905015386108a1565b50806106ea565b505050506107c79150610223565b5061092e6fffffffffffffffffffffffffffffffff8416856102d5565b51156106b1565b909250610100903d610100116109c7575b61095082826101e2565b6101008183810103126102d057818101601f820112156102d057604051918261010081011067ffffffffffffffff610100850111176101b3576101008301604052829082016101008301116102d05781905b610100830182106109b7575050509138610688565b81518152602091820191016109a2565b3d9150610946565b6040513d6000823e3d90fd5b935050506060823d606011610a2b575b816109f8606093836101e2565b810103126102d057610a09826102c2565b6040610a17602085016102c2565b9301519081151582036102d05792386105ea565b3d91506109eb565b50949593505050506000906000936020820151806040840151526000925b818410610a7457505050508280610a6757509190565b610a7091610357565b9190565b90919295610a8687604084015161027f565b51946020860195865160649081810291818304149015171561025057610aad878651610344565b11610ae25791610acf610ad792610ac9600195518a5190610344565b90610f17565b965190610f17565b965b01929190610a51565b50945095600190610ad9565b5060208801517f00000000000000000000000000000000000000000000000000000000000000001161050c565b6040517f313ce56700000000000000000000000000000000000000000000000000000000815260208160048173ffffffffffffffffffffffffffffffffffffffff87165afa80156109cf57600090610b84575b60ff915016604d811161025057600a0a906104a0565b506020813d602011610bb9575b81610b9e602093836101e2565b810103126102d0575160ff811681036102d05760ff90610b6e565b3d9150610b91565b50505050600090600090565b9092503d806000833e610be081836101e2565b810160209081838203126102d057825167ffffffffffffffff938482116102d0570181601f820112156102d05780519384116101b3578360051b9060405194610c2b858401876101e2565b855283808601928201019283116102d0578301905b828210610c525750505050913861045c565b815173ffffffffffffffffffffffffffffffffffffffff811681036102d0578152908301908301610c40565b60046040517fccf7e6f7000000000000000000000000000000000000000000000000000000008152fd5b60008060405160208101907f49fe9e7700000000000000000000000000000000000000000000000000000000825260048152610ce381610197565b5190845afa610cf06102e6565b81610d6b575b50610d65576000809160405160208101907f095a0fc600000000000000000000000000000000000000000000000000000000825260048152610d3781610197565b51915afa610d436102e6565b81610d58575b50610d5357600090565b600290565b6020915051101538610d49565b50600190565b6020915051101538610cf6565b8015610eb557610e43816000908360801c80610ea9575b508060401c80610e9c575b508060201c80610e8f575b508060101c80610e82575b508060081c80610e75575b508060041c80610e68575b508060021c80610e5b575b50600191828092811c610e54575b1c1b610deb8185610357565b01811c610df88185610357565b01811c610e058185610357565b01811c610e128185610357565b01811c610e1f8185610357565b01811c610e2c8185610357565b01811c610e398185610357565b01901c8092610357565b80821015610e4f575090565b905090565b0181610ddf565b6002915091019038610dd1565b6004915091019038610dc6565b6008915091019038610dbb565b6010915091019038610db0565b6020915091019038610da5565b6040915091019038610d9a565b91505060809038610d8f565b50600090565b9060208101908151610ecf57505050600090565b610ef06040840151916020850192835191610eea838361027f565b5261027f565b50610efb8151610223565b9052519080518211610f0f575b5050600190565b523880610f08565b919082018092116102505756fea2646970667358221220bf934760b8c950184fbb00c61df2e4b7bc157005de6bde022cb80f0c51b48f5464736f6c63430008170033" } \ No newline at end of file From bb030a4d7de41055955055d06836f52010fde3b9 Mon Sep 17 00:00:00 2001 From: Denis Date: Wed, 14 Aug 2024 17:25:49 +0100 Subject: [PATCH 8/8] Deploy on aurora --- README.md | 2 +- deployments/aurora/CurveOracle.json | 92 ++++++----------------------- 2 files changed, 19 insertions(+), 75 deletions(-) diff --git a/README.md b/README.md index adaf729..c5090ba 100644 --- a/README.md +++ b/README.md @@ -419,7 +419,7 @@ If no direct liquidity pair exists between two tokens, the spot price aggregator * AuroraSwap - [0xd8C7661C2bA6E9732613C15780f9fBBD55d8bf9c](https://aurorascan.dev/address/0xd8C7661C2bA6E9732613C15780f9fBBD55d8bf9c) * Dodo - [0x0A7c4d89e1629f189Eb12dd716B178d1b90D9f66](https://aurorascan.dev/address/0x0A7c4d89e1629f189Eb12dd716B178d1b90D9f66) * DodoV2 - [0x03aA019F3B78110e030c34e9fA98047A1f62859A](https://aurorascan.dev/address/0x03aA019F3B78110e030c34e9fA98047A1f62859A) - * Curve - [0x0bA0D1B119d8a8E193e2802c2C7Ef1BDfAdddc49](https://aurorascan.dev/address/0x0bA0D1B119d8a8E193e2802c2C7Ef1BDfAdddc49) + * Curve - [0x4e5Cee3B8Af0CB46EFAA94Cba5E0f25f8770BB19](https://aurorascan.dev/address/0x4e5Cee3B8Af0CB46EFAA94Cba5E0f25f8770BB19) diff --git a/deployments/aurora/CurveOracle.json b/deployments/aurora/CurveOracle.json index 138fb3a..aa4c816 100644 --- a/deployments/aurora/CurveOracle.json +++ b/deployments/aurora/CurveOracle.json @@ -1,27 +1,17 @@ { - "address": "0x0bA0D1B119d8a8E193e2802c2C7Ef1BDfAdddc49", + "address": "0x4e5Cee3B8Af0CB46EFAA94Cba5E0f25f8770BB19", "abi": [ { "inputs": [ { "internalType": "contract ICurveProvider", - "name": "_addressProvider", + "name": "curveProvider", "type": "address" }, { "internalType": "uint256", - "name": "_maxPools", + "name": "maxPools", "type": "uint256" - }, - { - "internalType": "uint256[]", - "name": "_registryIds", - "type": "uint256[]" - }, - { - "internalType": "enum CurveOracle.CurveRegistryType[]", - "name": "_registryTypes", - "type": "uint8[]" } ], "stateMutability": "nonpayable", @@ -32,11 +22,6 @@ "name": "ConnectorShouldBeNone", "type": "error" }, - { - "inputs": [], - "name": "MathOverflowedMulDiv", - "type": "error" - }, { "inputs": [], "name": "PoolNotFound", @@ -49,12 +34,12 @@ }, { "inputs": [], - "name": "MAX_POOLS", + "name": "CURVE_METAREGISTRY", "outputs": [ { - "internalType": "uint256", + "internalType": "contract ICurveMetaregistry", "name": "", - "type": "uint256" + "type": "address" } ], "stateMutability": "view", @@ -62,7 +47,7 @@ }, { "inputs": [], - "name": "REGISTRIES_COUNT", + "name": "MAX_POOLS", "outputs": [ { "internalType": "uint256", @@ -111,69 +96,28 @@ ], "stateMutability": "view", "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "registries", - "outputs": [ - { - "internalType": "contract ICurveRegistry", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "registryTypes", - "outputs": [ - { - "internalType": "enum CurveOracle.CurveRegistryType", - "name": "", - "type": "uint8" - } - ], - "stateMutability": "view", - "type": "function" } ], + "transactionHash": "0x6405666bbdb6dfbc09be0be7f656cf7bbb88f9beb5e9e9c8bb182b3cdb5d2254", "receipt": { "to": "0xD935a2bb926019E0ed6fb31fbD5b1Bbb7c05bf65", "from": "0x56E44874F624EbDE6efCc783eFD685f0FBDC6dcF", "contractAddress": null, - "gasUsed": "1162521", + "transactionIndex": 0, + "gasUsed": "928882", "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "blockHash": "0xd1ea7fb1fa8adffd01abdc9c792d67034530a8fc4d41a6c65fdedbcfe2bde75d", + "blockHash": "0x7e9dc93340e70289a6596e96723b253e5366032544b8d05c34cee6db047389fa", + "transactionHash": "0x6405666bbdb6dfbc09be0be7f656cf7bbb88f9beb5e9e9c8bb182b3cdb5d2254", "logs": [], - "blockNumber": 117108223, + "blockNumber": 125772577, "cumulativeGasUsed": "0", "status": 1 }, "args": [ - "0x0000000022d53366457f9d5e68ec105046fc4383", - 100, - [ - 0 - ], - [ - 0 - ] + "0x5ffe7FB82894076ECB99A30D6A32e969e6e35E98", + 100 ], - "numDeployments": 1, - "bytecode": "0x60c06040818152346200022a57620015af8038038091620000218286620002af565b84398201906080838303126200022a5782516001600160a01b039283821692918390036200022a57602085810151838701516001600160401b039692939291908781116200022a5788019683601f890112156200022a57875198620000868a620002e7565b986200009588519a8b620002af565b8a8a52868a018760059c60051b830101918783116200022a5788809101915b8383106200029e575050505060608101519182116200022a57019280601f850112156200022a578351620000e881620002e7565b94620000f788519687620002af565b818652868087019260051b8201019283116200022a578601905b828210620002845750505060805285519560a09660a0525f5b87518110156200024057620001408183620002ff565b51865163124fd3dd60e21b8152600491828201526024878282818d5afa91821562000236575f92620001f3575b50600b9182851015620001e05784546001600160a01b031916908716178455620001988488620002ff565b5192600a841015620001cf5750509082916001938c1c0190815460f88460031b169160ff809116831b921b1916179055016200012a565b602190634e487b7160e01b5f52525ffd5b50634e487b7160e01b5f90815260328452fd5b9091508781813d83116200022e575b6200020e8183620002af565b810103126200022a575185811681036200022a57905f6200016d565b5f80fd5b503d62000202565b89513d5f823e3d90fd5b8551611286908162000329823960805181818161011a015281816102c1015281816102fe01528181610ca50152610dd2015260a0518181816101cf015261033f0152f35b8151600a8110156200022a57815290860190860162000111565b8251815291810191899101620000b4565b601f909101601f19168101906001600160401b03821190821017620002d357604052565b634e487b7160e01b5f52604160045260245ffd5b6001600160401b038111620002d35760051b60200190565b8051821015620003145760209160051b010190565b634e487b7160e01b5f52603260045260245ffdfe6080806040526004361015610012575f80fd5b5f3560e01c9081633d549b32146101f257508063474004491461019a5780636347c9001461013d57806381358498146100e55763b72529f214610053575f80fd5b346100e15760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100e157600435600b8110156100e15761009960ff91610e20565b90549060031b1c16604051600a8210156100b4576020918152f35b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f80fd5b346100e1575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100e15760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b346100e15760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100e157600435600b8110156100e15773ffffffffffffffffffffffffffffffffffffffff6020915416604051908152f35b346100e1575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100e15760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b346100e15760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100e1576004359073ffffffffffffffffffffffffffffffffffffffff821682036100e1576024359073ffffffffffffffffffffffffffffffffffffffff821682036100e15760443573ffffffffffffffffffffffffffffffffffffffff81168091036100e15773ffffffffffffffffffffffffffffffffffffffff03610df857506060604080516102ae81610e38565b5f81525f602082015201526040519060807f000000000000000000000000000000000000000000000000000000000000000060061b8301016040525f82525f6020830152606082018060408401527f000000000000000000000000000000000000000000000000000000000000000090525f6040805161032d81610e38565b82815282602082015201525f915f925b7f0000000000000000000000000000000000000000000000000000000000000000841080610dcf575b15610cea575f91600b851015918261077a5773ffffffffffffffffffffffffffffffffffffffff865416936040517f6982eb0b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8916600482015273ffffffffffffffffffffffffffffffffffffffff871660248201525f6044820152602081606481895afa90811561076f575f91610ccb575b50915b73ffffffffffffffffffffffffffffffffffffffff8316151580610ca2575b15610c8c5761043c90610eb1565b915f908561077a575f808b60405173ffffffffffffffffffffffffffffffffffffffff60208201927feb85226d000000000000000000000000000000000000000000000000000000008452818716602484015216604482015273ffffffffffffffffffffffffffffffffffffffff8c166064820152606481526104be81610e54565b51908a5afa916104cc610f0a565b9280610c80575b15610c71576104e18a610e20565b905490600a60ff838360031b1c1610156100b45760031b1c60ff166002148015610c4c575b8015610c27575b15610bec576040838051810103126100e157610537604061053060208601610f67565b9401610f67565b81610b6b5760405161054881610e38565b7f92e3cc2d0000000000000000000000000000000000000000000000000000000081527f5e0d443f0000000000000000000000000000000000000000000000000000000060208201527f556d6e9f000000000000000000000000000000000000000000000000000000006040820152925b8861077a575f807fffffffff000000000000000000000000000000000000000000000000000000008651166040516020810191825273ffffffffffffffffffffffffffffffffffffffff851660248201526024815261061781610e38565b51908d5afa92610625610f0a565b9380610b5f575b15610abc57908995949392916008901561094e575b8352600f946fffffffffffffffffffffffffffffffff908181169361068761068261066c8789610f75565b519483169461067b868a610f75565b5190610f89565b610fd3565b976127106106a2858261069a8a8c610f75565b510499610f75565b51048715159081610944575b506107a7575b50505050505050505061077a576106ca90610eb1565b6040517f6982eb0b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff89811660048301528716602482015260448101829052909690602081606481895afa90811561076f575f91610740575b50915b96909661040f565b610762915060203d602011610768575b61075a8183610e70565b810190610ede565b89610735565b503d610750565b6040513d5f823e3d90fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f9283927fffffffff0000000000000000000000000000000000000000000000000000000060208b015116926040519260208401948552810b60248401520b6044820152876064820152606481526107fe81610e54565b5190855afa9261080c610f0a565b9584158015610939575b6108cb575b50505050806108bf575b610835575b8080808080806106b4565b909192506020828051810103126100e1576020610853920151611114565b60405180604081011067ffffffffffffffff604083011117610892578692610889926040830160405282526020820152856111e8565b5089808061082a565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b50602082511015610825565b5f95965085945060407fffffffff0000000000000000000000000000000000000000000000000000000091015116916040519160208301938452602483015260448201528560648201526064815261092281610e54565b51915afa9061092f610f0a565b918d80808061081b565b506020875110610816565b905015155f6106ae565b95506109598d610e20565b96905496600a60ff898360031b1c1610156100b4578b978f9160031b1c60ff166001148015610a90575b8015610a64575b8015610a39575b8015610a0d575b156109a757505060045b610641565b60ff9197506109b590610e20565b90549060031b1c1695600a8710156100b4578d60068c98145f146109dc5750506003610641565b60ff9197506109ea90610e20565b90549060031b1c1695600a8710156100b45760038b97036109a257506002610641565b5060ff919750610a1c90610e20565b90549060031b1c1695600a8710156100b4578d60098c9814610998565b5060ff919750610a4890610e20565b90549060031b1c1695600a8710156100b4578d818c9814610991565b5060ff919750610a7390610e20565b90549060031b1c1695600a8710156100b4578d60078c981461098a565b5060ff919750610a9f90610e20565b90549060031b1c1695600a8710156100b4578d60058c9814610983565b5050505050509250610ace5f93610eb1565b6040517f6982eb0b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff89811660048301528716602482015260448101829052909690602081606481895afa90811561076f575f91610b40575b5091610738565b610b59915060203d6020116107685761075a8183610e70565b89610b39565b5060408451101561062c565b604051610b7781610e38565b7f59f4f3510000000000000000000000000000000000000000000000000000000081527f07211ef70000000000000000000000000000000000000000000000000000000060208201527f85f11d1e000000000000000000000000000000000000000000000000000000006040820152926105b9565b506060828051810103126100e157610c0660208301610f67565b916060610c1560408301610f67565b91015180151581036100e15790610537565b5060ff610c338b610e20565b90549060031b1c16600a8110156100b45760061461050d565b5060ff610c588b610e20565b90549060031b1c16600a8110156100b457600314610506565b5050509250610ace5f93610eb1565b506040835110156104d3565b9450505093610c9b9150610eb1565b929061033d565b507f0000000000000000000000000000000000000000000000000000000000000000811061042e565b610ce4915060203d6020116107685761075a8183610e70565b8961040c565b505f806020830151806040850151525f905b808210610d2a576040848480610d19575b82519182526020820152f35b9081610d2491610f9c565b90610d0d565b9091610d3a836040870151610f75565b519360208501948551606481029080820460641490151715610da257610d636064358951610f89565b11610d965791610d85610d8d92610d7f60019551895190610f89565b90611243565b955190611243565b925b0190610cfc565b50935091600190610d8f565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b507f00000000000000000000000000000000000000000000000000000000000000008110610366565b807fccf7e6f70000000000000000000000000000000000000000000000000000000060049252fd5b90600b82101561077a57601f8260051c600b01921690565b6060810190811067ffffffffffffffff82111761089257604052565b60a0810190811067ffffffffffffffff82111761089257604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761089257604052565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610da25760010190565b908160209103126100e1575173ffffffffffffffffffffffffffffffffffffffff811681036100e15790565b3d15610f62573d9067ffffffffffffffff82116108925760405191610f5760207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160184610e70565b82523d5f602084013e565b606090565b519081600f0b82036100e157565b805182101561077a5760209160051b010190565b81810292918115918404141715610da257565b8115610fa6570490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b801561110f5761109d815f908360801c80611103575b508060401c806110f6575b508060201c806110e9575b508060101c806110dc575b508060081c806110cf575b508060041c806110c2575b508060021c806110b5575b50600191828092811c6110ae575b1c1b6110458185610f9c565b01811c6110528185610f9c565b01811c61105f8185610f9c565b01811c61106c8185610f9c565b01811c6110798185610f9c565b01811c6110868185610f9c565b01811c6110938185610f9c565b01901c8092610f9c565b808210156110a9575090565b905090565b0181611039565b600291509101905f61102b565b600491509101905f611020565b600891509101905f611015565b601091509101905f61100a565b602091509101905f610fff565b604091509101905f610ff4565b9150506080905f610fe9565b505f90565b670de0b6b3a764000091828202917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848209938380861095039480860395146111d857848311156111ae57829109815f038216809204600280826003021880830282030280830282030280830282030280830282030280830282030280920290030293600183805f03040190848311900302920304170290565b60046040517f227bc153000000000000000000000000000000000000000000000000000000008152fd5b5050906111e59250610f9c565b90565b90602081019081516111fb575050505f90565b61121c60408401519160208501928351916112168383610f75565b52610f75565b506112278151610eb1565b905251908051821161123b575b5050600190565b525f80611234565b91908201809211610da25756fea2646970667358221220f8ad8e013591e6290fbced5a0543480dbccf93b164bbcc20777d33bc04b28f5a64736f6c63430008170033", - "deployedBytecode": "0x6080806040526004361015610012575f80fd5b5f3560e01c9081633d549b32146101f257508063474004491461019a5780636347c9001461013d57806381358498146100e55763b72529f214610053575f80fd5b346100e15760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100e157600435600b8110156100e15761009960ff91610e20565b90549060031b1c16604051600a8210156100b4576020918152f35b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f80fd5b346100e1575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100e15760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b346100e15760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100e157600435600b8110156100e15773ffffffffffffffffffffffffffffffffffffffff6020915416604051908152f35b346100e1575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100e15760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b346100e15760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100e1576004359073ffffffffffffffffffffffffffffffffffffffff821682036100e1576024359073ffffffffffffffffffffffffffffffffffffffff821682036100e15760443573ffffffffffffffffffffffffffffffffffffffff81168091036100e15773ffffffffffffffffffffffffffffffffffffffff03610df857506060604080516102ae81610e38565b5f81525f602082015201526040519060807f000000000000000000000000000000000000000000000000000000000000000060061b8301016040525f82525f6020830152606082018060408401527f000000000000000000000000000000000000000000000000000000000000000090525f6040805161032d81610e38565b82815282602082015201525f915f925b7f0000000000000000000000000000000000000000000000000000000000000000841080610dcf575b15610cea575f91600b851015918261077a5773ffffffffffffffffffffffffffffffffffffffff865416936040517f6982eb0b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8916600482015273ffffffffffffffffffffffffffffffffffffffff871660248201525f6044820152602081606481895afa90811561076f575f91610ccb575b50915b73ffffffffffffffffffffffffffffffffffffffff8316151580610ca2575b15610c8c5761043c90610eb1565b915f908561077a575f808b60405173ffffffffffffffffffffffffffffffffffffffff60208201927feb85226d000000000000000000000000000000000000000000000000000000008452818716602484015216604482015273ffffffffffffffffffffffffffffffffffffffff8c166064820152606481526104be81610e54565b51908a5afa916104cc610f0a565b9280610c80575b15610c71576104e18a610e20565b905490600a60ff838360031b1c1610156100b45760031b1c60ff166002148015610c4c575b8015610c27575b15610bec576040838051810103126100e157610537604061053060208601610f67565b9401610f67565b81610b6b5760405161054881610e38565b7f92e3cc2d0000000000000000000000000000000000000000000000000000000081527f5e0d443f0000000000000000000000000000000000000000000000000000000060208201527f556d6e9f000000000000000000000000000000000000000000000000000000006040820152925b8861077a575f807fffffffff000000000000000000000000000000000000000000000000000000008651166040516020810191825273ffffffffffffffffffffffffffffffffffffffff851660248201526024815261061781610e38565b51908d5afa92610625610f0a565b9380610b5f575b15610abc57908995949392916008901561094e575b8352600f946fffffffffffffffffffffffffffffffff908181169361068761068261066c8789610f75565b519483169461067b868a610f75565b5190610f89565b610fd3565b976127106106a2858261069a8a8c610f75565b510499610f75565b51048715159081610944575b506107a7575b50505050505050505061077a576106ca90610eb1565b6040517f6982eb0b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff89811660048301528716602482015260448101829052909690602081606481895afa90811561076f575f91610740575b50915b96909661040f565b610762915060203d602011610768575b61075a8183610e70565b810190610ede565b89610735565b503d610750565b6040513d5f823e3d90fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f9283927fffffffff0000000000000000000000000000000000000000000000000000000060208b015116926040519260208401948552810b60248401520b6044820152876064820152606481526107fe81610e54565b5190855afa9261080c610f0a565b9584158015610939575b6108cb575b50505050806108bf575b610835575b8080808080806106b4565b909192506020828051810103126100e1576020610853920151611114565b60405180604081011067ffffffffffffffff604083011117610892578692610889926040830160405282526020820152856111e8565b5089808061082a565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b50602082511015610825565b5f95965085945060407fffffffff0000000000000000000000000000000000000000000000000000000091015116916040519160208301938452602483015260448201528560648201526064815261092281610e54565b51915afa9061092f610f0a565b918d80808061081b565b506020875110610816565b905015155f6106ae565b95506109598d610e20565b96905496600a60ff898360031b1c1610156100b4578b978f9160031b1c60ff166001148015610a90575b8015610a64575b8015610a39575b8015610a0d575b156109a757505060045b610641565b60ff9197506109b590610e20565b90549060031b1c1695600a8710156100b4578d60068c98145f146109dc5750506003610641565b60ff9197506109ea90610e20565b90549060031b1c1695600a8710156100b45760038b97036109a257506002610641565b5060ff919750610a1c90610e20565b90549060031b1c1695600a8710156100b4578d60098c9814610998565b5060ff919750610a4890610e20565b90549060031b1c1695600a8710156100b4578d818c9814610991565b5060ff919750610a7390610e20565b90549060031b1c1695600a8710156100b4578d60078c981461098a565b5060ff919750610a9f90610e20565b90549060031b1c1695600a8710156100b4578d60058c9814610983565b5050505050509250610ace5f93610eb1565b6040517f6982eb0b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff89811660048301528716602482015260448101829052909690602081606481895afa90811561076f575f91610b40575b5091610738565b610b59915060203d6020116107685761075a8183610e70565b89610b39565b5060408451101561062c565b604051610b7781610e38565b7f59f4f3510000000000000000000000000000000000000000000000000000000081527f07211ef70000000000000000000000000000000000000000000000000000000060208201527f85f11d1e000000000000000000000000000000000000000000000000000000006040820152926105b9565b506060828051810103126100e157610c0660208301610f67565b916060610c1560408301610f67565b91015180151581036100e15790610537565b5060ff610c338b610e20565b90549060031b1c16600a8110156100b45760061461050d565b5060ff610c588b610e20565b90549060031b1c16600a8110156100b457600314610506565b5050509250610ace5f93610eb1565b506040835110156104d3565b9450505093610c9b9150610eb1565b929061033d565b507f0000000000000000000000000000000000000000000000000000000000000000811061042e565b610ce4915060203d6020116107685761075a8183610e70565b8961040c565b505f806020830151806040850151525f905b808210610d2a576040848480610d19575b82519182526020820152f35b9081610d2491610f9c565b90610d0d565b9091610d3a836040870151610f75565b519360208501948551606481029080820460641490151715610da257610d636064358951610f89565b11610d965791610d85610d8d92610d7f60019551895190610f89565b90611243565b955190611243565b925b0190610cfc565b50935091600190610d8f565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b507f00000000000000000000000000000000000000000000000000000000000000008110610366565b807fccf7e6f70000000000000000000000000000000000000000000000000000000060049252fd5b90600b82101561077a57601f8260051c600b01921690565b6060810190811067ffffffffffffffff82111761089257604052565b60a0810190811067ffffffffffffffff82111761089257604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761089257604052565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610da25760010190565b908160209103126100e1575173ffffffffffffffffffffffffffffffffffffffff811681036100e15790565b3d15610f62573d9067ffffffffffffffff82116108925760405191610f5760207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160184610e70565b82523d5f602084013e565b606090565b519081600f0b82036100e157565b805182101561077a5760209160051b010190565b81810292918115918404141715610da257565b8115610fa6570490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b801561110f5761109d815f908360801c80611103575b508060401c806110f6575b508060201c806110e9575b508060101c806110dc575b508060081c806110cf575b508060041c806110c2575b508060021c806110b5575b50600191828092811c6110ae575b1c1b6110458185610f9c565b01811c6110528185610f9c565b01811c61105f8185610f9c565b01811c61106c8185610f9c565b01811c6110798185610f9c565b01811c6110868185610f9c565b01811c6110938185610f9c565b01901c8092610f9c565b808210156110a9575090565b905090565b0181611039565b600291509101905f61102b565b600491509101905f611020565b600891509101905f611015565b601091509101905f61100a565b602091509101905f610fff565b604091509101905f610ff4565b9150506080905f610fe9565b505f90565b670de0b6b3a764000091828202917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848209938380861095039480860395146111d857848311156111ae57829109815f038216809204600280826003021880830282030280830282030280830282030280830282030280830282030280920290030293600183805f03040190848311900302920304170290565b60046040517f227bc153000000000000000000000000000000000000000000000000000000008152fd5b5050906111e59250610f9c565b90565b90602081019081516111fb575050505f90565b61121c60408401519160208501928351916112168383610f75565b52610f75565b506112278151610eb1565b905251908051821161123b575b5050600190565b525f80611234565b91908201809211610da25756fea2646970667358221220f8ad8e013591e6290fbced5a0543480dbccf93b164bbcc20777d33bc04b28f5a64736f6c63430008170033" + "numDeployments": 2, + "bytecode": "0x60c080604052346100e85760408161101b803803809161001f82856100ff565b8339810103126100e85780516001600160a01b038082169290918390036100e8576020806024920151936040519283809263124fd3dd60e21b8252600760048301525afa9081156100f4575f916100b5575b501660805260a052604051610ee4908161013782396080518181816101660152818161040e0152818161058d015261062d015260a05181818160720152610a8a0152f35b90506020813d6020116100ec575b816100d0602093836100ff565b810103126100e8575181811681036100e8575f610071565b5f80fd5b3d91506100c3565b6040513d5f823e3d90fd5b601f909101601f19168101906001600160401b0382119082101761012257604052565b634e487b7160e01b5f52604160045260245ffdfe6080806040526004361015610012575f80fd5b5f3560e01c9081630caeeb241461011e575080633d549b32146100995763813584981461003d575f80fd5b34610095575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100955760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b5f80fd5b346100955760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100955773ffffffffffffffffffffffffffffffffffffffff600435818116810361009557602435908282168203610095576044359283168303610095576040926101129260643592610375565b82519182526020820152f35b34610095575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100955760209073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b6040810190811067ffffffffffffffff8211176101a657604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176101a657604052565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146102415760010190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b80518210156102825760209160051b010190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b519081600f0b820361009557565b9060088110156102825760051b0190565b3d15610326573d9067ffffffffffffffff82116101a6576040519161031b60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601846101d3565b82523d5f602084013e565b606090565b8181029291811591840414171561024157565b8115610348570490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b9173ffffffffffffffffffffffffffffffffffffffff80911603610c0e57604051917fa064072b00000000000000000000000000000000000000000000000000000000835273ffffffffffffffffffffffffffffffffffffffff8116600484015273ffffffffffffffffffffffffffffffffffffffff821660248401525f8360448173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa928315610967575f93610b5e575b50825115610b545773ffffffffffffffffffffffffffffffffffffffff811673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee03610aaf57670de0b6b3a7640000915b8351956040516060810181811067ffffffffffffffff8211176101a65760609160409182525f81525f602082015201526040519660808160061b8901016040525f88525f602089015260608801604089015260608801525f5b8551811080610a82575b156109ca5773ffffffffffffffffffffffffffffffffffffffff610509828861026e565b511690604051917feb85226d000000000000000000000000000000000000000000000000000000008352600483015273ffffffffffffffffffffffffffffffffffffffff8516602483015273ffffffffffffffffffffffffffffffffffffffff8416604483015260608260648173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa8015610967575f925f905f92610972575b5073ffffffffffffffffffffffffffffffffffffffff6105e0848b61026e565b511690604051917f59f4f35100000000000000000000000000000000000000000000000000000000835260048301526101008260248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa918215610967575f926108cd575b506fffffffffffffffffffffffffffffffff928a8a61067e868916866102bd565b51118015906108b9575b6108aa576106b773ffffffffffffffffffffffffffffffffffffffff6106b08860ff9461026e565b5116610c38565b16159081806108a3575b156108425750507f07211ef7000000000000000000000000000000000000000000000000000000005b73ffffffffffffffffffffffffffffffffffffffff610709868d61026e565b5116604051916020830152848716602483015284831660448301528a6064830152606482528160a081011067ffffffffffffffff60a0840111176101a657815f929160a0849301604052602082519201905afa6107646102ce565b9080610836575b610783575b5050505061077e9150610214565b6104db565b602081805181010312610095576020015180159283156107a4575b50610770565b670de0b6b3a76400009382858102048514171561024157846107dd6107f2966107d58e6107ed986107e6970261033e565b9916836102bd565b519316906102bd565b519061032b565b610d05565b9160405180604081011067ffffffffffffffff6040830111176101a65761077e9361082b9260408301604052825260208201528a610e46565b505f8080808061079e565b5060208151101561076b565b8161089a575b5015610874577f5e0d443f000000000000000000000000000000000000000000000000000000006106ea565b7f556d6e9f000000000000000000000000000000000000000000000000000000006106ea565b9050155f610848565b50806106c1565b505050505061077e9150610214565b506108c6858416856102bd565b5115610688565b909150610100903d6101001161095f575b6108e882826101d3565b61010081838101031261009557818101601f8201121561009557604051918261010081011067ffffffffffffffff610100850111176101a6576101008301604052829082016101008301116100955781905b6101008301821061094f57505050905f61065d565b815181526020918201910161093a565b3d91506108de565b6040513d5f823e3d90fd5b935050506060823d6060116109c2575b8161098f606093836101d3565b81010312610095576109a0826102af565b60406109ae602085016102af565b93015190811515820361009557925f6105c0565b3d9150610982565b50949593505050505f905f936020820151806040840151525f925b818410610a08575050505082806109fb57509190565b610a049161033e565b9190565b90919295610a1a87604084015161026e565b51946020860195865160649081810291818304149015171561024157610a4187865161032b565b11610a765791610a63610a6b92610a5d600195518a519061032b565b90610ea1565b965190610ea1565b965b019291906109e5565b50945095600190610a6d565b5060208801517f0000000000000000000000000000000000000000000000000000000000000000116104e5565b6040517f313ce56700000000000000000000000000000000000000000000000000000000815260208160048173ffffffffffffffffffffffffffffffffffffffff86165afa8015610967575f90610b17575b60ff915016604d811161024157600a0a91610482565b506020813d602011610b4c575b81610b31602093836101d3565b81010312610095575160ff811681036100955760ff90610b01565b3d9150610b24565b505050505f905f90565b9092503d805f833e610b7081836101d3565b8101602090818382031261009557825167ffffffffffffffff93848211610095570181601f820112156100955780519384116101a6578360051b9060405194610bbb858401876101d3565b85528380860192820101928311610095578301905b828210610be25750505050915f61043e565b815173ffffffffffffffffffffffffffffffffffffffff81168103610095578152908301908301610bd0565b60046040517fccf7e6f7000000000000000000000000000000000000000000000000000000008152fd5b5f8060405160208101907f49fe9e7700000000000000000000000000000000000000000000000000000000825260048152610c728161018a565b5190845afa610c7f6102ce565b81610cf8575b50610cf2575f809160405160208101907f095a0fc600000000000000000000000000000000000000000000000000000000825260048152610cc58161018a565b51915afa610cd16102ce565b81610ce5575b50610ce0575f90565b600290565b602091505110155f610cd7565b50600190565b602091505110155f610c85565b8015610e4157610dcf815f908360801c80610e35575b508060401c80610e28575b508060201c80610e1b575b508060101c80610e0e575b508060081c80610e01575b508060041c80610df4575b508060021c80610de7575b50600191828092811c610de0575b1c1b610d77818561033e565b01811c610d84818561033e565b01811c610d91818561033e565b01811c610d9e818561033e565b01811c610dab818561033e565b01811c610db8818561033e565b01811c610dc5818561033e565b01901c809261033e565b80821015610ddb575090565b905090565b0181610d6b565b600291509101905f610d5d565b600491509101905f610d52565b600891509101905f610d47565b601091509101905f610d3c565b602091509101905f610d31565b604091509101905f610d26565b9150506080905f610d1b565b505f90565b9060208101908151610e59575050505f90565b610e7a6040840151916020850192835191610e74838361026e565b5261026e565b50610e858151610214565b9052519080518211610e99575b5050600190565b525f80610e92565b919082018092116102415756fea2646970667358221220a81ff33c7895af4540da6504953e168cd75a11fa971e7fd306cabb70b1febaea64736f6c63430008170033", + "deployedBytecode": "0x6080806040526004361015610012575f80fd5b5f3560e01c9081630caeeb241461011e575080633d549b32146100995763813584981461003d575f80fd5b34610095575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100955760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b5f80fd5b346100955760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100955773ffffffffffffffffffffffffffffffffffffffff600435818116810361009557602435908282168203610095576044359283168303610095576040926101129260643592610375565b82519182526020820152f35b34610095575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100955760209073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b6040810190811067ffffffffffffffff8211176101a657604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176101a657604052565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146102415760010190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b80518210156102825760209160051b010190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b519081600f0b820361009557565b9060088110156102825760051b0190565b3d15610326573d9067ffffffffffffffff82116101a6576040519161031b60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601846101d3565b82523d5f602084013e565b606090565b8181029291811591840414171561024157565b8115610348570490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b9173ffffffffffffffffffffffffffffffffffffffff80911603610c0e57604051917fa064072b00000000000000000000000000000000000000000000000000000000835273ffffffffffffffffffffffffffffffffffffffff8116600484015273ffffffffffffffffffffffffffffffffffffffff821660248401525f8360448173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa928315610967575f93610b5e575b50825115610b545773ffffffffffffffffffffffffffffffffffffffff811673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee03610aaf57670de0b6b3a7640000915b8351956040516060810181811067ffffffffffffffff8211176101a65760609160409182525f81525f602082015201526040519660808160061b8901016040525f88525f602089015260608801604089015260608801525f5b8551811080610a82575b156109ca5773ffffffffffffffffffffffffffffffffffffffff610509828861026e565b511690604051917feb85226d000000000000000000000000000000000000000000000000000000008352600483015273ffffffffffffffffffffffffffffffffffffffff8516602483015273ffffffffffffffffffffffffffffffffffffffff8416604483015260608260648173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa8015610967575f925f905f92610972575b5073ffffffffffffffffffffffffffffffffffffffff6105e0848b61026e565b511690604051917f59f4f35100000000000000000000000000000000000000000000000000000000835260048301526101008260248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa918215610967575f926108cd575b506fffffffffffffffffffffffffffffffff928a8a61067e868916866102bd565b51118015906108b9575b6108aa576106b773ffffffffffffffffffffffffffffffffffffffff6106b08860ff9461026e565b5116610c38565b16159081806108a3575b156108425750507f07211ef7000000000000000000000000000000000000000000000000000000005b73ffffffffffffffffffffffffffffffffffffffff610709868d61026e565b5116604051916020830152848716602483015284831660448301528a6064830152606482528160a081011067ffffffffffffffff60a0840111176101a657815f929160a0849301604052602082519201905afa6107646102ce565b9080610836575b610783575b5050505061077e9150610214565b6104db565b602081805181010312610095576020015180159283156107a4575b50610770565b670de0b6b3a76400009382858102048514171561024157846107dd6107f2966107d58e6107ed986107e6970261033e565b9916836102bd565b519316906102bd565b519061032b565b610d05565b9160405180604081011067ffffffffffffffff6040830111176101a65761077e9361082b9260408301604052825260208201528a610e46565b505f8080808061079e565b5060208151101561076b565b8161089a575b5015610874577f5e0d443f000000000000000000000000000000000000000000000000000000006106ea565b7f556d6e9f000000000000000000000000000000000000000000000000000000006106ea565b9050155f610848565b50806106c1565b505050505061077e9150610214565b506108c6858416856102bd565b5115610688565b909150610100903d6101001161095f575b6108e882826101d3565b61010081838101031261009557818101601f8201121561009557604051918261010081011067ffffffffffffffff610100850111176101a6576101008301604052829082016101008301116100955781905b6101008301821061094f57505050905f61065d565b815181526020918201910161093a565b3d91506108de565b6040513d5f823e3d90fd5b935050506060823d6060116109c2575b8161098f606093836101d3565b81010312610095576109a0826102af565b60406109ae602085016102af565b93015190811515820361009557925f6105c0565b3d9150610982565b50949593505050505f905f936020820151806040840151525f925b818410610a08575050505082806109fb57509190565b610a049161033e565b9190565b90919295610a1a87604084015161026e565b51946020860195865160649081810291818304149015171561024157610a4187865161032b565b11610a765791610a63610a6b92610a5d600195518a519061032b565b90610ea1565b965190610ea1565b965b019291906109e5565b50945095600190610a6d565b5060208801517f0000000000000000000000000000000000000000000000000000000000000000116104e5565b6040517f313ce56700000000000000000000000000000000000000000000000000000000815260208160048173ffffffffffffffffffffffffffffffffffffffff86165afa8015610967575f90610b17575b60ff915016604d811161024157600a0a91610482565b506020813d602011610b4c575b81610b31602093836101d3565b81010312610095575160ff811681036100955760ff90610b01565b3d9150610b24565b505050505f905f90565b9092503d805f833e610b7081836101d3565b8101602090818382031261009557825167ffffffffffffffff93848211610095570181601f820112156100955780519384116101a6578360051b9060405194610bbb858401876101d3565b85528380860192820101928311610095578301905b828210610be25750505050915f61043e565b815173ffffffffffffffffffffffffffffffffffffffff81168103610095578152908301908301610bd0565b60046040517fccf7e6f7000000000000000000000000000000000000000000000000000000008152fd5b5f8060405160208101907f49fe9e7700000000000000000000000000000000000000000000000000000000825260048152610c728161018a565b5190845afa610c7f6102ce565b81610cf8575b50610cf2575f809160405160208101907f095a0fc600000000000000000000000000000000000000000000000000000000825260048152610cc58161018a565b51915afa610cd16102ce565b81610ce5575b50610ce0575f90565b600290565b602091505110155f610cd7565b50600190565b602091505110155f610c85565b8015610e4157610dcf815f908360801c80610e35575b508060401c80610e28575b508060201c80610e1b575b508060101c80610e0e575b508060081c80610e01575b508060041c80610df4575b508060021c80610de7575b50600191828092811c610de0575b1c1b610d77818561033e565b01811c610d84818561033e565b01811c610d91818561033e565b01811c610d9e818561033e565b01811c610dab818561033e565b01811c610db8818561033e565b01811c610dc5818561033e565b01901c809261033e565b80821015610ddb575090565b905090565b0181610d6b565b600291509101905f610d5d565b600491509101905f610d52565b600891509101905f610d47565b601091509101905f610d3c565b602091509101905f610d31565b604091509101905f610d26565b9150506080905f610d1b565b505f90565b9060208101908151610e59575050505f90565b610e7a6040840151916020850192835191610e74838361026e565b5261026e565b50610e858151610214565b9052519080518211610e99575b5050600190565b525f80610e92565b919082018092116102415756fea2646970667358221220a81ff33c7895af4540da6504953e168cd75a11fa971e7fd306cabb70b1febaea64736f6c63430008170033" } \ No newline at end of file