1 line
68 KiB
JSON
1 line
68 KiB
JSON
{"abi":[{"type":"constructor","inputs":[{"name":"_frxEthMinter","type":"address","internalType":"address"},{"name":"_sfrxEth","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"receive","stateMutability":"payable"},{"type":"function","name":"getCapabilities","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"},{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"capabilities","type":"uint8[]","internalType":"enum ISwapAdapterTypes.Capability[]"}],"stateMutability":"pure"},{"type":"function","name":"getLimits","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"},{"name":"sellToken","type":"address","internalType":"address"},{"name":"buyToken","type":"address","internalType":"address"}],"outputs":[{"name":"limits","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"getPoolIds","inputs":[{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"ids","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"view"},{"type":"function","name":"getTokens","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"tokens","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"price","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"},{"name":"sellToken","type":"address","internalType":"address"},{"name":"buyToken","type":"address","internalType":"address"},{"name":"_specifiedAmounts","type":"uint256[]","internalType":"uint256[]"}],"outputs":[{"name":"_prices","type":"tuple[]","internalType":"struct ISwapAdapterTypes.Fraction[]","components":[{"name":"numerator","type":"uint256","internalType":"uint256"},{"name":"denominator","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"swap","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"},{"name":"sellToken","type":"address","internalType":"address"},{"name":"buyToken","type":"address","internalType":"address"},{"name":"side","type":"uint8","internalType":"enum ISwapAdapterTypes.OrderSide"},{"name":"specifiedAmount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"trade","type":"tuple","internalType":"struct ISwapAdapterTypes.Trade","components":[{"name":"calculatedAmount","type":"uint256","internalType":"uint256"},{"name":"gasUsed","type":"uint256","internalType":"uint256"},{"name":"price","type":"tuple","internalType":"struct ISwapAdapterTypes.Fraction","components":[{"name":"numerator","type":"uint256","internalType":"uint256"},{"name":"denominator","type":"uint256","internalType":"uint256"}]}]}],"stateMutability":"nonpayable"},{"type":"error","name":"AddressEmptyCode","inputs":[{"name":"target","type":"address","internalType":"address"}]},{"type":"error","name":"FailedCall","inputs":[]},{"type":"error","name":"InsufficientBalance","inputs":[{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"LimitExceeded","inputs":[{"name":"limit","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"NotImplemented","inputs":[{"name":"reason","type":"string","internalType":"string"}]},{"type":"error","name":"SafeERC20FailedOperation","inputs":[{"name":"token","type":"address","internalType":"address"}]},{"type":"error","name":"Unavailable","inputs":[{"name":"reason","type":"string","internalType":"string"}]}],"bytecode":{"object":"0x60e03461011657601f6117ac38819003918201601f19168301916001600160401b0383118484101761011a578084926040948552833981010312610116576100468161012e565b906001600160a01b039061005c9060200161012e565b1660c052735e8422345238f34275888049021821e8e08caa1f6080526001600160a01b031660a052604051611669908161014382396080518181816107c301528181610a1501528181610e200152610ff1015260a051818181609b015281816104c601528181610dbd0152610f91015260c0518181816104890152818161083f01528181610a9f01528181610aea01528181610b2801528181610b6f01528181610d7901528181610ec40152818161103c01526111dd0152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b03821682036101165756fe6080604052600436101561001a575b3615610018575f80fd5b005b5f3560e01c806323eeca011461045a57806348bd7dfd146103835780638307c65514610320578063a9270fbe146102c4578063aad6e488146101d85763ecbbc0330361000e57346101d45760203660031901126101d45760405161007f6060826105d9565b6002815260208101604036823760405163ba947f2760e01b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690602081600481855afa9182156101ac576004926020925f916101b7575b506100eb86610613565b6001600160a01b039091169052604051630e2b46db60e11b815292839182905afa9081156101ac575f9161017d575b50610126839293610620565b6001600160a01b0390911690526040805160208082529251928101839052928392918301915f5b81811061015b575050500390f35b82516001600160a01b031684528594506020938401939092019160010161014d565b61019f915060203d6020116101a5575b61019781836105d9565b8101906109e9565b5f61011a565b503d61018d565b6040513d5f823e3d90fd5b6101ce9150833d85116101a55761019781836105d9565b5f6100e1565b5f80fd5b346101d45760803660031901126101d4576101f1610543565b6101f9610559565b6064359067ffffffffffffffff82116101d457366023830112156101d457816004013592610226846105fb565b9261023460405194856105d9565b8484526024602085019560051b820101903682116101d457602401945b8186106102b45750506102649350610936565b6040518091602082016020835281518091526020604084019201905f5b81811061028f575050500390f35b8251805185526020908101518186015286955060409094019390920191600101610281565b8535815260209586019501610251565b346101d4576102dc6102d53661056f565b9150610778565b6040518091602082016020835281518091526020604084019201905f5b818110610307575050500390f35b82518452859450602093840193909201916001016102f9565b346101d45760a03660031901126101d457610339610543565b610341610559565b6064359160028310156101d45760809261035e9260843592610665565b6020604080519280518452828101518385015201518051604084015201516060820152f35b346101d4576103913661056f565b5050506040516103a260a0826105d9565b6004815260208101608036823760016103ba83610613565b5260026103c683610620565b5281516002101561044657600360608301528151600310156104465760056080830152604051906020820192602083525180935260408201905f935b80851061040f5783830384f35b9091825190600a8210156104325760208160019382935201930194019390610402565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b346101d45760403660031901126101d4576040516104796060826105d9565b60028152602081019060403683377f000000000000000000000000000000000000000000000000000000000000000060601b6bffffffffffffffffffffffff19166104c382610613565b527f000000000000000000000000000000000000000000000000000000000000000060601b6bffffffffffffffffffffffff191661050082610620565b52604051918291602083019060208452518091526040830191905f5b81811061052a575050500390f35b825184528594506020938401939092019160010161051c565b602435906001600160a01b03821682036101d457565b604435906001600160a01b03821682036101d457565b60609060031901126101d457600435906024356001600160a01b03811681036101d457906044356001600160a01b03811681036101d45790565b6040810190811067ffffffffffffffff8211176105c557604052565b634e487b7160e01b5f52604160045260245ffd5b90601f8019910116810190811067ffffffffffffffff8211176105c557604052565b67ffffffffffffffff81116105c55760051b60200190565b8051156104465760200190565b8051600110156104465760400190565b80518210156104465760209160051b010190565b9190820391821161065157565b634e487b7160e01b5f52601160045260245ffd5b9093926040516060810181811067ffffffffffffffff8211176105c5576040525f81526106e360208201965f88525f60408401986040516106a5816105a9565b8281528260208201528a528499604051906106bf826105a9565b670de0b6b3a76400008252670de0b6b3a76400006020830152528185525284610a08565b61077157505a916002841015610432578161073394155f146107415761070891610ea2565b80865290811561073a576040519161071f836105a9565b8252602082015260408501525b5a90610644565b6020830152565b505061072c565b61074a91610b5a565b808652801561073a5760405191610760836105a9565b82526020820152604085015261072c565b9450505050565b604051916107876060846105d9565b600283526040366020850137825f61079e82610613565b525f6107a982610620565b526107b48284610a08565b61092f57506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169216808314908115610926575b50156108205750506001600160801b0361080a82610613565b526001600160801b0361081c82610620565b5290565b6001600160a01b0316146108315790565b6040516278744560e21b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316602082600481845afa9182156101ac575f926108f1575b50602060249160405192838092630a28a47760e01b82528660048301525afa9081156101ac575f916108bf575b506108b583610613565b5261081c82610620565b90506020813d6020116108e9575b816108da602093836105d9565b810103126101d457515f6108ab565b3d91506108cd565b9091506020813d60201161091e575b8161090d602093836105d9565b810103126101d4575190602061087e565b3d9150610900565b9050155f6107f1565b9250505090565b9092918051610944816105fb565b9061095260405192836105d9565b808252610961601f19916105fb565b015f5b8181106109c6575050610978819584610a08565b6109c057505f5b81518110156109bb578061099f61099860019385610630565b5185610fd9565b6109a98288610630565b526109b48187610630565b500161097f565b505050565b93505050565b6020906040516109d5816105a9565b5f81525f8382015282828601015201610964565b908160209103126101d457516001600160a01b03811681036101d45790565b6001600160a01b039081167f000000000000000000000000000000000000000000000000000000000000000090911681811415929083610b26575b83610b1c575b8315610ac8575b508215610a81575b8215610a6e575b5050610a69575f90565b600190565b6001600160a01b03161490505f80610a5f565b9150801580610a91575b91610a58565b506001600160a01b038281167f00000000000000000000000000000000000000000000000000000000000000009091161415610a8b565b9092506001600160a01b038316908114159081610ae8575b50915f610a50565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316141590505f610ae0565b8215159350610a49565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168314159350610a43565b6001600160a01b031691905f908315610d5e577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690848203610caa57604051630a28a47760e01b81526004810182905294602086602481865afa908115610c9f578495968592610c63575b5091610be460209492610c1494309033906114cf565b604051632d182be560e21b8152600481019190915233602482015230604482015293849283919082906064820190565b03925af1918215610c575791610c28575090565b90506020813d602011610c4f575b81610c43602093836105d9565b810103126101d4575190565b3d9150610c36565b604051903d90823e3d90fd5b9391509193506020833d602011610c97575b81610c82602093836105d9565b810103126101d4579151849391610be4610bce565b3d9150610c75565b6040513d86823e3d90fd5b60405163b3d7f6b960e01b81526004810182905294602086602481865afa908115610c9f578495968592610d22575b5091610cf88285610c1495610cf3602098963033846114cf565b61137d565b6040516394bf804d60e01b8152600481019190915233602482015293849283919082906044820190565b9391509193506020833d602011610d56575b81610d41602093836105d9565b810103126101d4579151849391610cf8610cd9565b3d9150610d34565b60405163b3d7f6b960e01b81526004810182905292935090917f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169190602081602481865afa9081156101ac575f91610e70575b507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316803b156101d4575f8291600460405180948193632de597e360e11b83525af180156101ac57610e4d575b508392602092610c1492610cf890837f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661137d565b610cf8945092602092610e645f610c1494966105d9565b5f955092509290610e0f565b90506020813d602011610e9a575b81610e8b602093836105d9565b810103126101d457515f610dba565b3d9150610e7e565b6001600160a01b03168015610f705760209082610ec25f943033856114cf565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316908282148514610f3857604051635d043b2960e11b8152600481019190915233602482015230604482015293849250829081606481015b03925af19081156101ac575f91610c28575090565b610f468183610f239561137d565b604051636e553f6560e01b8152600481019190915233602482015293849283919082906044820190565b50604051634dcd454760e01b815233600482015290602090829060249082907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af19081156101ac575f91610c28575090565b9190820180921161065157565b604051610fe5816105a9565b5f8082526020909101527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b039081169116908114908115611374575b50156111c7576040516278744560e21b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169190602081600481865afa80156101ac5782905f90611191575b6110889250610fcc565b916040519163ef8b30f760e01b83526004830152602082602481845afa9182156101ac575f9261115c575b50906020600492604051938480926318160ddd60e01b82525afa80156101ac575f90611128575b6110e49250610fcc565b90815f1904670de0b6b3a7640000118202158102156101d4576040519161110a836105a9565b670de0b6b3a764000002048152670de0b6b3a7640000602082015290565b506020823d602011611154575b81611142602093836105d9565b810103126101d4576110e491516110da565b3d9150611135565b91506020823d602011611189575b81611177602093836105d9565b810103126101d45790519060206110b3565b3d915061116a565b50506020813d6020116111bf575b816111ac602093836105d9565b810103126101d45781611088915161107e565b3d915061119f565b60405163266d6a8360e11b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031691602082602481865afa9182156101ac575f92611340575b506040516278744560e21b815291602083600481875afa9283156101ac575f9361130a575b50611251602091600494610644565b93604051938480926318160ddd60e01b82525afa80156101ac575f906112d6575b61127c9250610644565b90816112ae575050670de0b6b3a76400005b6040519061129b826105a9565b8152670de0b6b3a7640000602082015290565b805f1904670de0b6b3a7640000118102158202156101d457670de0b6b3a7640000020461128e565b506020823d602011611302575b816112f0602093836105d9565b810103126101d45761127c9151611272565b3d91506112e3565b92506020833d602011611338575b81611325602093836105d9565b810103126101d457915191611251611242565b3d9150611318565b9091506020813d60201161136c575b8161135c602093836105d9565b810103126101d45751905f61121d565b3d915061134f565b9050155f611028565b604051636eb1769f60e11b81523060048201526001600160a01b03928316602482018190529392821692602082604481875afa80156101ac575f9061149b575b6113c79250610fcc565b915f8060405194602086019063095ea7b360e01b82528760248801526044870152604486526113f76064876105d9565b85519082855af190611407611596565b82611469575b508161145e575b501561141f57505050565b61145761145c936040519063095ea7b360e01b602083015260248201525f6044820152604481526114516064826105d9565b8261152b565b61152b565b565b90503b15155f611414565b80519192508115918215611481575b5050905f61140d565b6114949250602080918301019101611513565b5f80611478565b506020823d6020116114c7575b816114b5602093836105d9565b810103126101d4576113c791516113bd565b3d91506114a8565b6040516323b872dd60e01b60208201526001600160a01b03928316602482015292909116604483015260648083019390935291815261145c916114576084836105d9565b908160209103126101d4575180151581036101d45790565b5f806115539260018060a01b03169360208151910182865af161154c611596565b90836115d5565b805190811515918261157b575b50506115695750565b635274afe760e01b5f5260045260245ffd5b61158e9250602080918301019101611513565b155f80611560565b3d156115d0573d9067ffffffffffffffff82116105c557604051916115c5601f8201601f1916602001846105d9565b82523d5f602084013e565b606090565b906115f957508051156115ea57805190602001fd5b63d6bda27560e01b5f5260045ffd5b8151158061162a575b61160a575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b1561160256fea264697066735822122072a6acb1af5d7f7b4a48c2ff88e7f9fc18a79985403ac1f221926b9de12fd3ab64736f6c634300081b0033","sourceMap":"1156:9136:62:-:0;;;;;;;;;;;;;-1:-1:-1;;1156:9136:62;;;;-1:-1:-1;;;;;1156:9136:62;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;-1:-1:-1;;;;;1156:9136:62;;;;;;:::i;:::-;;1492:28;;1555:42;1530:69;;-1:-1:-1;;;;;1156:9136:62;;1610:43;-1:-1:-1;1156:9136:62;;;;;;;1530:69;1156:9136;;;;;;;;;;;;;;;;;;;;1610:43;1156:9136;;;;;;;;;;;;;;;;;;;;1492:28;1156:9136;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1156:9136:62;;;;;;-1:-1:-1;1156:9136:62;;;;;-1:-1:-1;1156:9136:62;;;;-1:-1:-1;;;;;1156:9136:62;;;;;;:::o","linkReferences":{}},"deployedBytecode":{"object":"0x6080604052600436101561001a575b3615610018575f80fd5b005b5f3560e01c806323eeca011461045a57806348bd7dfd146103835780638307c65514610320578063a9270fbe146102c4578063aad6e488146101d85763ecbbc0330361000e57346101d45760203660031901126101d45760405161007f6060826105d9565b6002815260208101604036823760405163ba947f2760e01b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690602081600481855afa9182156101ac576004926020925f916101b7575b506100eb86610613565b6001600160a01b039091169052604051630e2b46db60e11b815292839182905afa9081156101ac575f9161017d575b50610126839293610620565b6001600160a01b0390911690526040805160208082529251928101839052928392918301915f5b81811061015b575050500390f35b82516001600160a01b031684528594506020938401939092019160010161014d565b61019f915060203d6020116101a5575b61019781836105d9565b8101906109e9565b5f61011a565b503d61018d565b6040513d5f823e3d90fd5b6101ce9150833d85116101a55761019781836105d9565b5f6100e1565b5f80fd5b346101d45760803660031901126101d4576101f1610543565b6101f9610559565b6064359067ffffffffffffffff82116101d457366023830112156101d457816004013592610226846105fb565b9261023460405194856105d9565b8484526024602085019560051b820101903682116101d457602401945b8186106102b45750506102649350610936565b6040518091602082016020835281518091526020604084019201905f5b81811061028f575050500390f35b8251805185526020908101518186015286955060409094019390920191600101610281565b8535815260209586019501610251565b346101d4576102dc6102d53661056f565b9150610778565b6040518091602082016020835281518091526020604084019201905f5b818110610307575050500390f35b82518452859450602093840193909201916001016102f9565b346101d45760a03660031901126101d457610339610543565b610341610559565b6064359160028310156101d45760809261035e9260843592610665565b6020604080519280518452828101518385015201518051604084015201516060820152f35b346101d4576103913661056f565b5050506040516103a260a0826105d9565b6004815260208101608036823760016103ba83610613565b5260026103c683610620565b5281516002101561044657600360608301528151600310156104465760056080830152604051906020820192602083525180935260408201905f935b80851061040f5783830384f35b9091825190600a8210156104325760208160019382935201930194019390610402565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b346101d45760403660031901126101d4576040516104796060826105d9565b60028152602081019060403683377f000000000000000000000000000000000000000000000000000000000000000060601b6bffffffffffffffffffffffff19166104c382610613565b527f000000000000000000000000000000000000000000000000000000000000000060601b6bffffffffffffffffffffffff191661050082610620565b52604051918291602083019060208452518091526040830191905f5b81811061052a575050500390f35b825184528594506020938401939092019160010161051c565b602435906001600160a01b03821682036101d457565b604435906001600160a01b03821682036101d457565b60609060031901126101d457600435906024356001600160a01b03811681036101d457906044356001600160a01b03811681036101d45790565b6040810190811067ffffffffffffffff8211176105c557604052565b634e487b7160e01b5f52604160045260245ffd5b90601f8019910116810190811067ffffffffffffffff8211176105c557604052565b67ffffffffffffffff81116105c55760051b60200190565b8051156104465760200190565b8051600110156104465760400190565b80518210156104465760209160051b010190565b9190820391821161065157565b634e487b7160e01b5f52601160045260245ffd5b9093926040516060810181811067ffffffffffffffff8211176105c5576040525f81526106e360208201965f88525f60408401986040516106a5816105a9565b8281528260208201528a528499604051906106bf826105a9565b670de0b6b3a76400008252670de0b6b3a76400006020830152528185525284610a08565b61077157505a916002841015610432578161073394155f146107415761070891610ea2565b80865290811561073a576040519161071f836105a9565b8252602082015260408501525b5a90610644565b6020830152565b505061072c565b61074a91610b5a565b808652801561073a5760405191610760836105a9565b82526020820152604085015261072c565b9450505050565b604051916107876060846105d9565b600283526040366020850137825f61079e82610613565b525f6107a982610620565b526107b48284610a08565b61092f57506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169216808314908115610926575b50156108205750506001600160801b0361080a82610613565b526001600160801b0361081c82610620565b5290565b6001600160a01b0316146108315790565b6040516278744560e21b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316602082600481845afa9182156101ac575f926108f1575b50602060249160405192838092630a28a47760e01b82528660048301525afa9081156101ac575f916108bf575b506108b583610613565b5261081c82610620565b90506020813d6020116108e9575b816108da602093836105d9565b810103126101d457515f6108ab565b3d91506108cd565b9091506020813d60201161091e575b8161090d602093836105d9565b810103126101d4575190602061087e565b3d9150610900565b9050155f6107f1565b9250505090565b9092918051610944816105fb565b9061095260405192836105d9565b808252610961601f19916105fb565b015f5b8181106109c6575050610978819584610a08565b6109c057505f5b81518110156109bb578061099f61099860019385610630565b5185610fd9565b6109a98288610630565b526109b48187610630565b500161097f565b505050565b93505050565b6020906040516109d5816105a9565b5f81525f8382015282828601015201610964565b908160209103126101d457516001600160a01b03811681036101d45790565b6001600160a01b039081167f000000000000000000000000000000000000000000000000000000000000000090911681811415929083610b26575b83610b1c575b8315610ac8575b508215610a81575b8215610a6e575b5050610a69575f90565b600190565b6001600160a01b03161490505f80610a5f565b9150801580610a91575b91610a58565b506001600160a01b038281167f00000000000000000000000000000000000000000000000000000000000000009091161415610a8b565b9092506001600160a01b038316908114159081610ae8575b50915f610a50565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316141590505f610ae0565b8215159350610a49565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168314159350610a43565b6001600160a01b031691905f908315610d5e577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690848203610caa57604051630a28a47760e01b81526004810182905294602086602481865afa908115610c9f578495968592610c63575b5091610be460209492610c1494309033906114cf565b604051632d182be560e21b8152600481019190915233602482015230604482015293849283919082906064820190565b03925af1918215610c575791610c28575090565b90506020813d602011610c4f575b81610c43602093836105d9565b810103126101d4575190565b3d9150610c36565b604051903d90823e3d90fd5b9391509193506020833d602011610c97575b81610c82602093836105d9565b810103126101d4579151849391610be4610bce565b3d9150610c75565b6040513d86823e3d90fd5b60405163b3d7f6b960e01b81526004810182905294602086602481865afa908115610c9f578495968592610d22575b5091610cf88285610c1495610cf3602098963033846114cf565b61137d565b6040516394bf804d60e01b8152600481019190915233602482015293849283919082906044820190565b9391509193506020833d602011610d56575b81610d41602093836105d9565b810103126101d4579151849391610cf8610cd9565b3d9150610d34565b60405163b3d7f6b960e01b81526004810182905292935090917f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169190602081602481865afa9081156101ac575f91610e70575b507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316803b156101d4575f8291600460405180948193632de597e360e11b83525af180156101ac57610e4d575b508392602092610c1492610cf890837f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661137d565b610cf8945092602092610e645f610c1494966105d9565b5f955092509290610e0f565b90506020813d602011610e9a575b81610e8b602093836105d9565b810103126101d457515f610dba565b3d9150610e7e565b6001600160a01b03168015610f705760209082610ec25f943033856114cf565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316908282148514610f3857604051635d043b2960e11b8152600481019190915233602482015230604482015293849250829081606481015b03925af19081156101ac575f91610c28575090565b610f468183610f239561137d565b604051636e553f6560e01b8152600481019190915233602482015293849283919082906044820190565b50604051634dcd454760e01b815233600482015290602090829060249082907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af19081156101ac575f91610c28575090565b9190820180921161065157565b604051610fe5816105a9565b5f8082526020909101527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b039081169116908114908115611374575b50156111c7576040516278744560e21b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169190602081600481865afa80156101ac5782905f90611191575b6110889250610fcc565b916040519163ef8b30f760e01b83526004830152602082602481845afa9182156101ac575f9261115c575b50906020600492604051938480926318160ddd60e01b82525afa80156101ac575f90611128575b6110e49250610fcc565b90815f1904670de0b6b3a7640000118202158102156101d4576040519161110a836105a9565b670de0b6b3a764000002048152670de0b6b3a7640000602082015290565b506020823d602011611154575b81611142602093836105d9565b810103126101d4576110e491516110da565b3d9150611135565b91506020823d602011611189575b81611177602093836105d9565b810103126101d45790519060206110b3565b3d915061116a565b50506020813d6020116111bf575b816111ac602093836105d9565b810103126101d45781611088915161107e565b3d915061119f565b60405163266d6a8360e11b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031691602082602481865afa9182156101ac575f92611340575b506040516278744560e21b815291602083600481875afa9283156101ac575f9361130a575b50611251602091600494610644565b93604051938480926318160ddd60e01b82525afa80156101ac575f906112d6575b61127c9250610644565b90816112ae575050670de0b6b3a76400005b6040519061129b826105a9565b8152670de0b6b3a7640000602082015290565b805f1904670de0b6b3a7640000118102158202156101d457670de0b6b3a7640000020461128e565b506020823d602011611302575b816112f0602093836105d9565b810103126101d45761127c9151611272565b3d91506112e3565b92506020833d602011611338575b81611325602093836105d9565b810103126101d457915191611251611242565b3d9150611318565b9091506020813d60201161136c575b8161135c602093836105d9565b810103126101d45751905f61121d565b3d915061134f565b9050155f611028565b604051636eb1769f60e11b81523060048201526001600160a01b03928316602482018190529392821692602082604481875afa80156101ac575f9061149b575b6113c79250610fcc565b915f8060405194602086019063095ea7b360e01b82528760248801526044870152604486526113f76064876105d9565b85519082855af190611407611596565b82611469575b508161145e575b501561141f57505050565b61145761145c936040519063095ea7b360e01b602083015260248201525f6044820152604481526114516064826105d9565b8261152b565b61152b565b565b90503b15155f611414565b80519192508115918215611481575b5050905f61140d565b6114949250602080918301019101611513565b5f80611478565b506020823d6020116114c7575b816114b5602093836105d9565b810103126101d4576113c791516113bd565b3d91506114a8565b6040516323b872dd60e01b60208201526001600160a01b03928316602482015292909116604483015260648083019390935291815261145c916114576084836105d9565b908160209103126101d4575180151581036101d45790565b5f806115539260018060a01b03169360208151910182865af161154c611596565b90836115d5565b805190811515918261157b575b50506115695750565b635274afe760e01b5f5260045260245ffd5b61158e9250602080918301019101611513565b155f80611560565b3d156115d0573d9067ffffffffffffffff82116105c557604051916115c5601f8201601f1916602001846105d9565b82523d5f602084013e565b606090565b906115f957508051156115ea57805190602001fd5b63d6bda27560e01b5f5260045ffd5b8151158061162a575b61160a575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b1561160256fea264697066735822122072a6acb1af5d7f7b4a48c2ff88e7f9fc18a79985403ac1f221926b9de12fd3ab64736f6c634300081b0033","sourceMap":"1156:9136:62:-:0;;;;;;;;;-1:-1:-1;1156:9136:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1156:9136:62;;;;;;;;;;:::i;:::-;6192:1;1156:9136;;;;;;;;;;;-1:-1:-1;;;6217:26:62;;:12;-1:-1:-1;;;;;1156:9136:62;;;;;;;6217:26;;;;;;;1156:9136;6217:26;1156:9136;6217:26;1156:9136;6217:26;;;1156:9136;6205:38;;;;:::i;:::-;-1:-1:-1;;;;;1156:9136:62;;;;;;;-1:-1:-1;;;6265:27:62;;1156:9136;;;;;6265:27;;;;;;;1156:9136;6265:27;;;1156:9136;6253:39;;;;;;:::i;:::-;-1:-1:-1;;;;;1156:9136:62;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1156:9136:62;;;;;;;;;;;;;;;-1:-1:-1;;;;;1156:9136:62;;;;;-1:-1:-1;1156:9136:62;;;;;;;;;;;;;6265:27;;;;1156:9136;6265:27;1156:9136;6265:27;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;1156:9136;;;;;;;;;6217:26;;;;;;;;;;;;;;:::i;:::-;;;;1156:9136;;;;;;;;;;-1:-1:-1;;1156:9136:62;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1156:9136:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1156:9136:62;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1156:9136:62;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;5821:20;5803:38;;;:::i;:::-;1156:9136;5869:19;5851:37;;;:::i;:::-;1156:9136;;;5869:19;1156:9136;;;;5916:24;1156:9136;;;;;;5916:24;1156:9136;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5821:20;1156:9136;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1156:9136:62;;;;;;;;;;:::i;:::-;6615:1;1156:9136;;;;;;;;;;6652:7;1156:9136;;-1:-1:-1;;1156:9136:62;6627:34;;;:::i;:::-;1156:9136;6696:12;1156:9136;;-1:-1:-1;;1156:9136:62;6671:39;;;:::i;:::-;1156:9136;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1156:9136:62;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1156:9136:62;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;1156:9136:62;;;;;;:::o;:::-;;;;;;;;;;;;;;-1:-1:-1;;;;;1156:9136:62;;;;;;;;;-1:-1:-1;;;;;1156:9136:62;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;-1:-1:-1;1156:9136:62;;;;;-1:-1:-1;1156:9136:62;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;:::o;:::-;;;6675:1;1156:9136;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;1313:4::-;;;;;;;;;;:::o;:::-;1156:9136;;;1313:4;;;;;;;;3261:1017;;;;1156:9136;;;;;;;;;;;;;;;;-1:-1:-1;1156:9136:62;;3593:39;1156:9136;;;;-1:-1:-1;1156:9136:62;;-1:-1:-1;1156:9136:62;;;;;;;;;:::i;:::-;;;;;;;;;;;3435:18;1156:9136;;;;;;;:::i;:::-;1313:4;1156:9136;;1313:4;1156:9136;3479:36;;1156:9136;3465:50;1156:9136;;;;3593:39;;:::i;:::-;3589:82;;3701:9;;1313:4;;;;;;;3725:22;4250:21;3725:22;;3721:503;3725:22;;;3788:32;;;:::i;:::-;1156:9136;;;;3834:27;;;;1156:9136;;;;;;:::i;:::-;;;;3894:49;;1156:9136;;3880:11;;:63;3834:139;4262:9;4250:21;;:::i;:::-;1156:9136;4234:13;;1156:9136;3261:1017::o;3834:139::-;;;;;3721:503;4029:31;;;:::i;:::-;1156:9136;;;4074:27;;;;1156:9136;;;;;;:::i;:::-;;;;4134:49;;1156:9136;;4120:11;;:63;3721:503;;3589:82;3648:12;-1:-1:-1;;;;3648:12:62:o;4317:1239::-;1156:9136;;;;;;;:::i;:::-;4508:1;1156:9136;;;;;;;;4485:25;-1:-1:-1;4520:13:62;;;:::i;:::-;1156:9136;-1:-1:-1;4543:13:62;;;:::i;:::-;1156:9136;4571:39;;;;:::i;:::-;4567:83;;-1:-1:-1;;;;;;4685:6:62;1156:9136;;;;4664:28;;;;:55;;;;4317:1239;-1:-1:-1;4660:866:62;;;4907:29;;-1:-1:-1;;;;;4907:29:62;;;:::i;:::-;1156:9136;-1:-1:-1;;;;;4950:29:62;;;:::i;:::-;1156:9136;4317:1239;:::o;4660:866::-;-1:-1:-1;;;;;1156:9136:62;5000:27;4996:530;;4317:1239;:::o;4996:530::-;1156:9136;;-1:-1:-1;;;5065:21:62;;:7;-1:-1:-1;;;;;1156:9136:62;;;5065:21;1156:9136;;5065:21;;;;;;;-1:-1:-1;5065:21:62;;;4996:530;1156:9136;;5369:36;1156:9136;;;;;;;;;;5369:36;;;5065:21;5369:36;;1156:9136;5369:36;;;;;;;-1:-1:-1;5369:36:62;;;4996:530;5357:48;;;;:::i;:::-;1156:9136;5492:23;;;:::i;5369:36::-;;;1156:9136;5369:36;;1156:9136;5369:36;;;;;;1156:9136;5369:36;;;:::i;:::-;;;1156:9136;;;;;5369:36;;;;;;-1:-1:-1;5369:36:62;;5065:21;;;;1156:9136;5065:21;;1156:9136;5065:21;;;;;;1156:9136;5065:21;;;:::i;:::-;;;1156:9136;;;;;;;5065:21;;;;;-1:-1:-1;5065:21:62;;4664:55;4696:23;;;4664:55;;;4567:83;4626:13;;;;;:::o;2416:501::-;;;;1156:9136;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;-1:-1:-1;1156:9136:62;;;;;;2620:50;;2685:39;2620:50;2685:39;;;:::i;:::-;2681:84;;2780:13;-1:-1:-1;2825:3:62;1156:9136;;2795:28;;;;;2879:20;2857:43;2879:20;1156:9136;2879:20;;;:::i;:::-;1313:4;2857:43;;:::i;:::-;2844:56;;;;:::i;:::-;;;;;;:::i;:::-;;1156:9136;2780:13;;2795:28;;;;2416:501::o;2681:84::-;2740:14;-1:-1:-1;;;2740:14:62:o;1156:9136::-;;;;;;;;:::i;:::-;-1:-1:-1;1156:9136:62;;-1:-1:-1;1156:9136:62;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1156:9136:62;;;;;;;:::o;1717:547::-;-1:-1:-1;;;;;1156:9136:62;;;1905:6;1156:9136;;;1884:28;;;;;1717:547;1884:28;:61;;1717:547;1884:108;;;1717:547;1866:205;;;;1717:547;1866:282;;;;;1717:547;1866:323;;;;1717:547;1849:387;;;;1156:9136;1717:547;:::o;1849:387::-;2221:4;2214:11;:::o;1866:323::-;-1:-1:-1;;;;;1156:9136:62;2168:21;;-1:-1:-1;1866:323:62;;;;:282;2092:23;;;;:55;;;1866:282;;;;2092:55;-1:-1:-1;;;;;;1156:9136:62;;;2139:7;1156:9136;;;2119:28;;2092:55;;1866:205;1156:9136;;-1:-1:-1;;;;;;1156:9136:62;;2011:27;;;;;;:59;;1866:205;;;;;;2011:59;2062:7;-1:-1:-1;;;;;1156:9136:62;2042:28;;;-1:-1:-1;2011:59:62;;;1884:108;1969:23;;;;-1:-1:-1;1884:108:62;;:61;1937:7;-1:-1:-1;;;;;1156:9136:62;1916:29;;;;-1:-1:-1;1884:61:62;;7768:1083;-1:-1:-1;;;;;1156:9136:62;;7768:1083;1156:9136;;7894:23;;7890:322;;8247:7;-1:-1:-1;;;;;1156:9136:62;;8226:29;;;1156:9136;;;;-1:-1:-1;;;8290:31:62;;;;;1156:9136;;;;;;8290:31;1156:9136;8290:31;;;;;;;;;;;;;;;8222:623;8407:4;;8414:8;1156:9136;8407:4;;8457:51;8407:4;;8387:10;;8414:8;;:::i;:::-;1156:9136;;-1:-1:-1;;;8457:51:62;;8290:31;8457:51;;1156:9136;;;;8387:10;1156:9136;;;;8407:4;1156:9136;;;;;;;;;;;;;;;;;8457:51;;;;;;;;;;;;;8450:58;;:::o;8457:51::-;;;1156:9136;8457:51;;1156:9136;8457:51;;;;;;1156:9136;8457:51;;;:::i;:::-;;;1156:9136;;;;;8450:58;:::o;8457:51::-;;;-1:-1:-1;8457:51:62;;;1156:9136;;;;;;;;;;8290:31;;;;;;;1156:9136;8290:31;;1156:9136;8290:31;;;;;;1156:9136;8290:31;;;:::i;:::-;;;1156:9136;;;;;;;;;8414:8;8290:31;;;;;-1:-1:-1;8290:31:62;;;1156:9136;;;;;;;;;8222:623;1156:9136;;-1:-1:-1;;;8558:27:62;;;;;1156:9136;;;;;;8558:27;1156:9136;8558:27;;;;;;;;;;;;;;;8222:623;8671:4;;8772:8;8671:4;;8802:32;8671:4;8678:8;1156:9136;8671:4;;;8651:10;8678:8;;:::i;:::-;8772;:::i;:::-;1156:9136;;-1:-1:-1;;;8802:32:62;;8558:27;8802:32;;1156:9136;;;;8651:10;1156:9136;;;;;;;;;;;;;;;;;8558:27;;;;;;;1156:9136;8558:27;;1156:9136;8558:27;;;;;;1156:9136;8558:27;;;:::i;:::-;;;1156:9136;;;;;;;;;8772:8;8558:27;;;;;-1:-1:-1;8558:27:62;;7890:322;1156:9136;;-1:-1:-1;;;7952:27:62;;;;;1156:9136;;;;;-1:-1:-1;1156:9136:62;;7952:7;-1:-1:-1;;;;;1156:9136:62;;;;;7952:27;1156:9136;;7952:27;;;;;;;1156:9136;7952:27;;;7890:322;-1:-1:-1;7993:12:62;-1:-1:-1;;;;;1156:9136:62;7993:38;;;;;1156:9136;;;7952:27;1156:9136;;;;;;;;;7993:38;;;;;;;;;;7890:322;-1:-1:-1;1156:9136:62;;;;8169:32;;8126:8;;1156:9136;8060:6;-1:-1:-1;;;;;1156:9136:62;8126:8;:::i;7993:38::-;8126:8;7993:38;;;1156:9136;7993:38;;1156:9136;8169:32;7993:38;;;:::i;:::-;1156:9136;7993:38;;;;;;;;7952:27;;;1156:9136;7952:27;;1156:9136;7952:27;;;;;;1156:9136;7952:27;;;:::i;:::-;;;1156:9136;;;;;7952:27;;;;;;-1:-1:-1;7952:27:62;;6936:604;-1:-1:-1;;;;;1156:9136:62;7063:23;;7059:117;;7322:49;7241:4;;7248:6;1156:9136;7241:4;;7221:10;7248:6;;:::i;:::-;7291:7;-1:-1:-1;;;;;1156:9136:62;;7270:29;;;1156:9136;;;;;;-1:-1:-1;;;7322:49:62;;;;;1156:9136;;;;7221:10;1156:9136;;;;7241:4;1156:9136;;;;;;;-1:-1:-1;1156:9136:62;;;;;;7322:49;;;;;;;;;;1156:9136;7322:49;;;7315:56;;:::o;7266:268::-;7460:6;;;7488:35;7460:6;;:::i;:::-;1156:9136;;-1:-1:-1;;;7488:35:62;;;;;1156:9136;;;;7221:10;1156:9136;;;;;;;;;;;;;;;;;7059:117;-1:-1:-1;1156:9136:62;;-1:-1:-1;;;7109:56:62;;7154:10;7109:56;;;1156:9136;;;;;;7109:56;;1156:9136;;7109:12;-1:-1:-1;;;;;1156:9136:62;7109:56;;;;;;;1156:9136;7109:56;;;7102:63;;:::o;1156:9136::-;;;;;;;;;;:::o;9141:1149::-;1156:9136;;;;;:::i;:::-;-1:-1:-1;1156:9136:62;;;;;;;;9301:6;-1:-1:-1;;;;;1156:9136:62;;;;;9280:28;;;;:55;;;;9141:1149;-1:-1:-1;9276:1008:62;;;1156:9136;;-1:-1:-1;;;9423:21:62;;:7;-1:-1:-1;;;;;1156:9136:62;;;9423:21;1156:9136;9423:21;1156:9136;;9423:21;;;;;;;;-1:-1:-1;9423:21:62;;;9276:1008;9423:32;;;;:::i;:::-;1156:9136;;;;;;;9495:32;;9423:21;9495:32;;1156:9136;9423:21;9495:32;;;;;;;;;;;-1:-1:-1;9495:32:62;;;9276:1008;1156:9136;;9423:21;;1156:9136;;;;;;;;;;9567:21;;;;;;;;-1:-1:-1;9567:21:62;;;9276:1008;9567:39;;;;:::i;:::-;630:357;;;;;1313:4;630:357;;;;;;;;;1156:9136;;;;;;:::i;:::-;1313:4;630:357;;1156:9136;;1313:4;9423:21;9734:33;;1156:9136;9727:40;:::o;9567:21::-;;9423;9567;;9423;9567;;;;;;1156:9136;9567:21;;;:::i;:::-;;;1156:9136;;;;9567:39;1156:9136;;9567:21;;;;;-1:-1:-1;9567:21:62;;9495:32;;;9423:21;9495:32;;9423:21;9495:32;;;;;;1156:9136;9495:32;;;:::i;:::-;;;1156:9136;;;;;;;9423:21;9495:32;;;;;-1:-1:-1;9495:32:62;;9423:21;;;;;;;;;;;;;1156:9136;9423:21;;;:::i;:::-;;;1156:9136;;;;;9423:32;1156:9136;;9423:21;;;;;-1:-1:-1;9423:21:62;;9276:1008;1156:9136;;-1:-1:-1;;;9873:31:62;;;;;1156:9136;;;9873:7;-1:-1:-1;;;;;1156:9136:62;;;;9873:31;1156:9136;;9873:31;;;;;;;-1:-1:-1;9873:31:62;;;9276:1008;-1:-1:-1;1156:9136:62;;-1:-1:-1;;;9944:21:62;;1156:9136;;;9873:31;1156:9136;9944:21;;;;;;;;-1:-1:-1;9944:21:62;;;9276:1008;9944:42;;1156:9136;9944:42;9873:31;9944:42;;:::i;:::-;1156:9136;;;;;;;;;;10026:21;;;;;;;;-1:-1:-1;10026:21:62;;;9276:1008;10026:32;;;;:::i;:::-;10092:127;:20;;;:127;;1313:4;10092:127;1156:9136;;;;;;:::i;:::-;;;1313:4;1156:9136;10240:33;;1156:9136;10233:40;:::o;10092:127::-;630:357;;;;1313:4;630:357;;;;;;;;;1313:4;630:357;;10092:127;;10026:21;;1156:9136;10026:21;;1156:9136;10026:21;;;;;;1156:9136;10026:21;;;:::i;:::-;;;1156:9136;;;;10026:32;1156:9136;;10026:21;;;;;-1:-1:-1;10026:21:62;;9944;;;1156:9136;9944:21;;1156:9136;9944:21;;;;;;1156:9136;9944:21;;;:::i;:::-;;;1156:9136;;;;;;;9944:42;:21;;;;;-1:-1:-1;9944:21:62;;9873:31;;;;1156:9136;9873:31;;1156:9136;9873:31;;;;;;1156:9136;9873:31;;;:::i;:::-;;;1156:9136;;;;;9873:31;;;;;;;-1:-1:-1;9873:31:62;;9280:55;9312:23;;;9280:55;;;2081:225:32;1156:9136:62;;-1:-1:-1;;;2200:39:32;;2224:4;2200:39;;;1156:9136:62;-1:-1:-1;;;;;1156:9136:62;;;;;;;;;;;;;;;;2200:39:32;1156:9136:62;;2200:39:32;;;;;;-1:-1:-1;2200:39:32;;;2081:225;2278:20;;;;:::i;:::-;1156:9136:62;-1:-1:-1;1156:9136:62;;;3411:47:32;1156:9136:62;3411:47:32;;1156:9136:62;;;;3411:47:32;;;1156:9136:62;3411:47:32;;1156:9136:62;2200:39:32;1156:9136:62;;;2200:39:32;3411:47;;;;;;:::i;:::-;8024:25;;;;;;;;;;:::i;:::-;8066:69;;;2081:225;8066:103;;;;2081:225;3473:45;;3469:201;;2081:225;;;:::o;3469:201::-;3561:43;3646:12;1156:9136:62;;;;;;;;3561:43:32;;;1156:9136:62;3561:43:32;;1156:9136:62;-1:-1:-1;2200:39:32;1156:9136:62;;;2200:39:32;3561:43;;;3411:47;3561:43;;:::i;:::-;;;:::i;:::-;3646:12;:::i;:::-;2081:225::o;8066:103::-;8139:26;;;:30;;8066:103;;;:69;1156:9136:62;;;;-1:-1:-1;8078:22:32;;;:56;;;;8066:69;;;;;;;8078:56;8104:30;;;1156:9136:62;8104:30:32;;;;;;;;:::i;:::-;8078:56;;;;2200:39;;1156:9136:62;2200:39:32;;1156:9136:62;2200:39:32;;;;;;1156:9136:62;2200:39:32;;;:::i;:::-;;;1156:9136:62;;;;2278:20:32;1156:9136:62;;2200:39:32;;;;;-1:-1:-1;2200:39:32;;1702:188;1156:9136:62;;-1:-1:-1;;;1829:53:32;;;;-1:-1:-1;;;;;1156:9136:62;;;1829:53:32;;;1156:9136:62;;;;;;;;;;;;;;;;;1829:53:32;;;;;;;1156:9136:62;1829:53:32;:::i;1156:9136:62:-;;;;;;;;;;;;;;;;;;:::o;6468:629:32:-;2626:1:33;6468:629:32;3304:55:33;6468:629:32;1156:9136:62;;;;;;3256:31:33;;;;;;;;;;;;:::i;:::-;3304:55;;;:::i;:::-;1156:9136:62;;6960:22:32;;;;:57;;;;6468:629;6956:135;;;;6468:629;:::o;6956:135::-;7040:40;;;2626:1:33;7040:40:32;;1156:9136:62;;2626:1:33;7040:40:32;6960:57;6987:30;;;3256:31:33;6987:30:32;;;;;;;;:::i;:::-;6986:31;6960:57;;;;1156:9136:62;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1156:9136:62;;;;;:::i;:::-;;;;-1:-1:-1;1156:9136:62;;;;:::o;:::-;;;:::o;4421:582:33:-;;4593:8;;-1:-1:-1;1156:9136:62;;5674:21:33;:17;;5846:142;;;;;;5670:385;6025:19;;;5694:1;6025:19;;5694:1;6025:19;4589:408;1156:9136:62;;4841:22:33;:49;;;4589:408;4837:119;;4969:17;;:::o;4837:119::-;-1:-1:-1;;;4862:1:33;4917:24;;;-1:-1:-1;;;;;1156:9136:62;;;;4917:24:33;1156:9136:62;;;4917:24:33;4841:49;4867:18;;;:23;4841:49;","linkReferences":{},"immutableReferences":{"67817":[{"start":1987,"length":32},{"start":2581,"length":32},{"start":3616,"length":32},{"start":4081,"length":32}],"67820":[{"start":155,"length":32},{"start":1222,"length":32},{"start":3517,"length":32},{"start":3985,"length":32}],"67823":[{"start":1161,"length":32},{"start":2111,"length":32},{"start":2719,"length":32},{"start":2794,"length":32},{"start":2856,"length":32},{"start":2927,"length":32},{"start":3449,"length":32},{"start":3780,"length":32},{"start":4156,"length":32},{"start":4573,"length":32}]}},"methodIdentifiers":{"getCapabilities(bytes32,address,address)":"48bd7dfd","getLimits(bytes32,address,address)":"a9270fbe","getPoolIds(uint256,uint256)":"23eeca01","getTokens(bytes32)":"ecbbc033","price(bytes32,address,address,uint256[])":"aad6e488","swap(bytes32,address,address,uint8,uint256)":"8307c655"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_frxEthMinter\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_sfrxEth\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"LimitExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"NotImplemented\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"Unavailable\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"getCapabilities\",\"outputs\":[{\"internalType\":\"enum ISwapAdapterTypes.Capability[]\",\"name\":\"capabilities\",\"type\":\"uint8[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"sellToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"buyToken\",\"type\":\"address\"}],\"name\":\"getLimits\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"limits\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"getPoolIds\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"ids\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"getTokens\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"sellToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"buyToken\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"_specifiedAmounts\",\"type\":\"uint256[]\"}],\"name\":\"price\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"numerator\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"denominator\",\"type\":\"uint256\"}],\"internalType\":\"struct ISwapAdapterTypes.Fraction[]\",\"name\":\"_prices\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"sellToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"buyToken\",\"type\":\"address\"},{\"internalType\":\"enum ISwapAdapterTypes.OrderSide\",\"name\":\"side\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"specifiedAmount\",\"type\":\"uint256\"}],\"name\":\"swap\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"calculatedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasUsed\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"numerator\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"denominator\",\"type\":\"uint256\"}],\"internalType\":\"struct ISwapAdapterTypes.Fraction\",\"name\":\"price\",\"type\":\"tuple\"}],\"internalType\":\"struct ISwapAdapterTypes.Trade\",\"name\":\"trade\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"details\":\"This contract only supports: ETH -> sfrxETH and frxETH <-> sfrxETH\",\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"FailedCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"InsufficientBalance(uint256,uint256)\":[{\"details\":\"The ETH balance of the account is not enough to perform the operation.\"}],\"LimitExceeded(uint256)\":[{\"details\":\"The LimitExceeded error is thrown when a limit has been exceeded. E.g. the specified amount can't be traded safely.\"}],\"NotImplemented(string)\":[{\"details\":\"The NotImplemented error is thrown when a function is not implemented.\"}],\"SafeERC20FailedOperation(address)\":[{\"details\":\"An operation with an ERC-20 token failed.\"}],\"Unavailable(string)\":[{\"details\":\"The Unavailable error is thrown when a pool or swap is not available for unexpected reason. E.g. it was paused due to a bug.\"}]},\"kind\":\"dev\",\"methods\":{\"getCapabilities(bytes32,address,address)\":{\"params\":{\"poolId\":\"The ID of the trading pool.\"},\"returns\":{\"capabilities\":\"An array of Capability.\"}},\"getLimits(bytes32,address,address)\":{\"details\":\"Retrieve the maximum limits of a token that can be traded. The limit is reached when the change in the received amounts is zero or close to zero or when the swap fails because of the pools restrictions. Overestimate if in doubt rather than underestimate. The swap function should not error with `LimitExceeded` if called with amounts below the limit.\",\"params\":{\"buyToken\":\"The token being bought.\",\"poolId\":\"The ID of the trading pool.\",\"sellToken\":\"The token being sold.\"},\"returns\":{\"limits\":\"An array of size two indicating the limit amount for the sell token (maximum the pool is willing to buy in sell token) as well as the limit amount of the buy token (maximum the pool is willing to sell in buy token).\"}},\"getPoolIds(uint256,uint256)\":{\"details\":\"although FraxV3 frxETH has no pool ids, we return the sFrxETH and frxETHMinter addresses as pools\",\"params\":{\"limit\":\"The maximum number of pool IDs to retrieve.\",\"offset\":\"The starting index from which to retrieve pool IDs.\"},\"returns\":{\"ids\":\"An array of pool IDs.\"}},\"getTokens(bytes32)\":{\"details\":\"Mainly used for testing as this is redundant with the required substreams implementation.\",\"params\":{\"poolId\":\"The ID of the trading pool.\"},\"returns\":{\"tokens\":\"An array of address contracts.\"}},\"price(bytes32,address,address,uint256[])\":{\"details\":\"The returned prices should include all dex fees. In case the fee is dynamic on the amount traded, the returned price is expected to include the minimum fee. Note that the returned price should be the marginal price which is distinct from the executed price `swap(amount_in) / amount_in`! The marginal price is defined as the price to trade an arbitrarily small (almost zero) amount after the trade of (amount). E.g. the marginal price of a uniswap v2 pool at amount=0 is `reserve0/reserve1`. Ideally this method should be implemented, although it is optional as the price function can be numerically derived from the swap function. In case it is not available, it should be flagged via capabilities and calling it should revert using the `NotImplemented` error. The method needs to be implemented as view as this is usually more efficient and can be run in parallel.\",\"params\":{\"buyToken\":\"The token being bought.\",\"poolId\":\"The ID of the trading pool.\",\"sellToken\":\"The token being sold.\",\"specifiedAmounts\":\"Amounts to calculate marginal prices at.\"},\"returns\":{\"_prices\":\"array of prices as fractions corresponding to the provided amounts.\"}},\"swap(bytes32,address,address,uint8,uint256)\":{\"details\":\"This function should be state modifying, meaning it should actually execute the swap and change the state of the EVM accordingly. Please include a gas usage estimate for each amount. This can be achieved e.g. by using the `gasleft()` function. The return type `Trade` has an attribute called price which should contain the value of `price(specifiedAmount)`. As this is optional, defined via `Capability.PriceFunction`, it is valid to return a Fraction(0, 0) value for this price. In that case the price will be estimated numerically.\",\"params\":{\"buyToken\":\"The token being bought.\",\"sellToken\":\"The token being sold.\",\"side\":\"Either buy or sell.\",\"specifiedAmount\":\"The amount to be traded.\"},\"returns\":{\"trade\":\"The amount of tokens being sold or bought.\"}}},\"title\":\"FraxV3FrxEthAdapter Adapter for frxETH and sfrxETH tokens of FraxV3\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getCapabilities(bytes32,address,address)\":{\"notice\":\"Retrieves the capabilities of the selected pool.\"},\"getLimits(bytes32,address,address)\":{\"notice\":\"Retrieves the limits for each token.\"},\"getPoolIds(uint256,uint256)\":{\"notice\":\"Retrieves a range of pool IDs.\"},\"getTokens(bytes32)\":{\"notice\":\"Retrieves the tokens in the selected pool.\"},\"price(bytes32,address,address,uint256[])\":{\"notice\":\"Calculates marginal prices for specified amounts (optional).\"},\"swap(bytes32,address,address,uint8,uint256)\":{\"notice\":\"Executes a swap on the contract.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/sfraxeth/FraxV3FrxEthAdapter.sol\":\"FraxV3FrxEthAdapter\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73\",\"dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x9cac1f97ecc92043dd19235d6677e40cf6bac382886a94f7a80a957846b24229\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a1e0c924e0edfdfd4abceeb552d99f1cd95c0d387b38ccb1f67c583607e3d155\",\"dweb:/ipfs/QmZAi6qKa66zuS3jyEhsQR9bBNnZe1wSognYqw9nvseyUz\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xc61b3530214f6729db70cc02ffacf6218e601a5e351dd25e369a03c6ca201cfb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://48b897a0323b8d04464848832b364ecfd6c002fd15c53a86304ca1eec1475d12\",\"dweb:/ipfs/QmV1S2GmZgU9bDEfdXFyCe1HhDy4nND3z4Jyy4iBvh5wu2\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323\",\"dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488\",\"dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b\",\"dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756\",\"dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e\",\"dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX\"]},\"src/interfaces/ISwapAdapter.sol\":{\"keccak256\":\"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87\",\"dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C\"]},\"src/interfaces/ISwapAdapterTypes.sol\":{\"keccak256\":\"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c\",\"dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h\"]},\"src/sfraxeth/FraxV3FrxEthAdapter.sol\":{\"keccak256\":\"0xdbd9ad99addc8ac7771da9ff88057aac4754af575b8a5f818db47da8f64ff0fa\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://c10e743e259bdb1ac0b38e097bf9009d6b46b5d44e1874d500a7527b4103cc55\",\"dweb:/ipfs/QmdKFhhygHbb8tN448AJAVYt6bdzr68pBKi5CotxEv4WNn\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_frxEthMinter","type":"address"},{"internalType":"address","name":"_sfrxEth","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"type":"error","name":"AddressEmptyCode"},{"inputs":[],"type":"error","name":"FailedCall"},{"inputs":[{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"InsufficientBalance"},{"inputs":[{"internalType":"uint256","name":"limit","type":"uint256"}],"type":"error","name":"LimitExceeded"},{"inputs":[{"internalType":"string","name":"reason","type":"string"}],"type":"error","name":"NotImplemented"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"type":"error","name":"SafeERC20FailedOperation"},{"inputs":[{"internalType":"string","name":"reason","type":"string"}],"type":"error","name":"Unavailable"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"stateMutability":"pure","type":"function","name":"getCapabilities","outputs":[{"internalType":"enum ISwapAdapterTypes.Capability[]","name":"capabilities","type":"uint8[]"}]},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"address","name":"sellToken","type":"address"},{"internalType":"address","name":"buyToken","type":"address"}],"stateMutability":"view","type":"function","name":"getLimits","outputs":[{"internalType":"uint256[]","name":"limits","type":"uint256[]"}]},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"getPoolIds","outputs":[{"internalType":"bytes32[]","name":"ids","type":"bytes32[]"}]},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function","name":"getTokens","outputs":[{"internalType":"address[]","name":"tokens","type":"address[]"}]},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"address","name":"sellToken","type":"address"},{"internalType":"address","name":"buyToken","type":"address"},{"internalType":"uint256[]","name":"_specifiedAmounts","type":"uint256[]"}],"stateMutability":"view","type":"function","name":"price","outputs":[{"internalType":"struct ISwapAdapterTypes.Fraction[]","name":"_prices","type":"tuple[]","components":[{"internalType":"uint256","name":"numerator","type":"uint256"},{"internalType":"uint256","name":"denominator","type":"uint256"}]}]},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"address","name":"sellToken","type":"address"},{"internalType":"address","name":"buyToken","type":"address"},{"internalType":"enum ISwapAdapterTypes.OrderSide","name":"side","type":"uint8"},{"internalType":"uint256","name":"specifiedAmount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"swap","outputs":[{"internalType":"struct ISwapAdapterTypes.Trade","name":"trade","type":"tuple","components":[{"internalType":"uint256","name":"calculatedAmount","type":"uint256"},{"internalType":"uint256","name":"gasUsed","type":"uint256"},{"internalType":"struct ISwapAdapterTypes.Fraction","name":"price","type":"tuple","components":[{"internalType":"uint256","name":"numerator","type":"uint256"},{"internalType":"uint256","name":"denominator","type":"uint256"}]}]}]},{"inputs":[],"stateMutability":"payable","type":"receive"}],"devdoc":{"kind":"dev","methods":{"getCapabilities(bytes32,address,address)":{"params":{"poolId":"The ID of the trading pool."},"returns":{"capabilities":"An array of Capability."}},"getLimits(bytes32,address,address)":{"details":"Retrieve the maximum limits of a token that can be traded. The limit is reached when the change in the received amounts is zero or close to zero or when the swap fails because of the pools restrictions. Overestimate if in doubt rather than underestimate. The swap function should not error with `LimitExceeded` if called with amounts below the limit.","params":{"buyToken":"The token being bought.","poolId":"The ID of the trading pool.","sellToken":"The token being sold."},"returns":{"limits":"An array of size two indicating the limit amount for the sell token (maximum the pool is willing to buy in sell token) as well as the limit amount of the buy token (maximum the pool is willing to sell in buy token)."}},"getPoolIds(uint256,uint256)":{"details":"although FraxV3 frxETH has no pool ids, we return the sFrxETH and frxETHMinter addresses as pools","params":{"limit":"The maximum number of pool IDs to retrieve.","offset":"The starting index from which to retrieve pool IDs."},"returns":{"ids":"An array of pool IDs."}},"getTokens(bytes32)":{"details":"Mainly used for testing as this is redundant with the required substreams implementation.","params":{"poolId":"The ID of the trading pool."},"returns":{"tokens":"An array of address contracts."}},"price(bytes32,address,address,uint256[])":{"details":"The returned prices should include all dex fees. In case the fee is dynamic on the amount traded, the returned price is expected to include the minimum fee. Note that the returned price should be the marginal price which is distinct from the executed price `swap(amount_in) / amount_in`! The marginal price is defined as the price to trade an arbitrarily small (almost zero) amount after the trade of (amount). E.g. the marginal price of a uniswap v2 pool at amount=0 is `reserve0/reserve1`. Ideally this method should be implemented, although it is optional as the price function can be numerically derived from the swap function. In case it is not available, it should be flagged via capabilities and calling it should revert using the `NotImplemented` error. The method needs to be implemented as view as this is usually more efficient and can be run in parallel.","params":{"buyToken":"The token being bought.","poolId":"The ID of the trading pool.","sellToken":"The token being sold.","specifiedAmounts":"Amounts to calculate marginal prices at."},"returns":{"_prices":"array of prices as fractions corresponding to the provided amounts."}},"swap(bytes32,address,address,uint8,uint256)":{"details":"This function should be state modifying, meaning it should actually execute the swap and change the state of the EVM accordingly. Please include a gas usage estimate for each amount. This can be achieved e.g. by using the `gasleft()` function. The return type `Trade` has an attribute called price which should contain the value of `price(specifiedAmount)`. As this is optional, defined via `Capability.PriceFunction`, it is valid to return a Fraction(0, 0) value for this price. In that case the price will be estimated numerically.","params":{"buyToken":"The token being bought.","sellToken":"The token being sold.","side":"Either buy or sell.","specifiedAmount":"The amount to be traded."},"returns":{"trade":"The amount of tokens being sold or bought."}}},"version":1},"userdoc":{"kind":"user","methods":{"getCapabilities(bytes32,address,address)":{"notice":"Retrieves the capabilities of the selected pool."},"getLimits(bytes32,address,address)":{"notice":"Retrieves the limits for each token."},"getPoolIds(uint256,uint256)":{"notice":"Retrieves a range of pool IDs."},"getTokens(bytes32)":{"notice":"Retrieves the tokens in the selected pool."},"price(bytes32,address,address,uint256[])":{"notice":"Calculates marginal prices for specified amounts (optional)."},"swap(bytes32,address,address,uint8,uint256)":{"notice":"Executes a swap on the contract."}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/sfraxeth/FraxV3FrxEthAdapter.sol":"FraxV3FrxEthAdapter"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253","urls":["bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73","dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x9cac1f97ecc92043dd19235d6677e40cf6bac382886a94f7a80a957846b24229","urls":["bzz-raw://a1e0c924e0edfdfd4abceeb552d99f1cd95c0d387b38ccb1f67c583607e3d155","dweb:/ipfs/QmZAi6qKa66zuS3jyEhsQR9bBNnZe1wSognYqw9nvseyUz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol":{"keccak256":"0xc61b3530214f6729db70cc02ffacf6218e601a5e351dd25e369a03c6ca201cfb","urls":["bzz-raw://48b897a0323b8d04464848832b364ecfd6c002fd15c53a86304ca1eec1475d12","dweb:/ipfs/QmV1S2GmZgU9bDEfdXFyCe1HhDy4nND3z4Jyy4iBvh5wu2"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28","urls":["bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323","dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91","urls":["bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488","dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84","urls":["bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b","dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424","urls":["bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756","dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c","urls":["bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e","dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX"],"license":"MIT"},"src/interfaces/ISwapAdapter.sol":{"keccak256":"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702","urls":["bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87","dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C"],"license":"AGPL-3.0-or-later"},"src/interfaces/ISwapAdapterTypes.sol":{"keccak256":"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778","urls":["bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c","dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h"],"license":"AGPL-3.0-or-later"},"src/sfraxeth/FraxV3FrxEthAdapter.sol":{"keccak256":"0xdbd9ad99addc8ac7771da9ff88057aac4754af575b8a5f818db47da8f64ff0fa","urls":["bzz-raw://c10e743e259bdb1ac0b38e097bf9009d6b46b5d44e1874d500a7527b4103cc55","dweb:/ipfs/QmdKFhhygHbb8tN448AJAVYt6bdzr68pBKi5CotxEv4WNn"],"license":"AGPL-3.0-or-later"}},"version":1},"id":62} |