1 line
91 KiB
JSON
1 line
91 KiB
JSON
{"abi":[{"type":"constructor","inputs":[{"name":"_factory","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"receive","stateMutability":"payable"},{"type":"function","name":"EMERGENCY_TIMELOCK","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"FLASH_LOAN_TIMEOUT","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"MAX_CONCURRENT_FLASH_LOANS","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"addValidPool","inputs":[{"name":"pool","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"authorizedCallers","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"calculateFlashSwapFee","inputs":[{"name":"pool","type":"address","internalType":"address"},{"name":"amount0","type":"uint256","internalType":"uint256"},{"name":"amount1","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"fee0","type":"uint256","internalType":"uint256"},{"name":"fee1","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"canExecuteEmergencyWithdraw","inputs":[{"name":"requestId","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"cancelEmergencyWithdraw","inputs":[{"name":"requestId","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"emergencyCleanupFlashLoan","inputs":[{"name":"flashId","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"emergencyRequests","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"token","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"executeAfter","type":"uint256","internalType":"uint256"},{"name":"executed","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"emergencyWithdraw","inputs":[{"name":"token","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"executeEmergencyWithdraw","inputs":[{"name":"requestId","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"executeFlashSwap","inputs":[{"name":"pool","type":"address","internalType":"address"},{"name":"params","type":"tuple","internalType":"struct IFlashSwapper.FlashSwapParams","components":[{"name":"token0","type":"address","internalType":"address"},{"name":"token1","type":"address","internalType":"address"},{"name":"amount0","type":"uint256","internalType":"uint256"},{"name":"amount1","type":"uint256","internalType":"uint256"},{"name":"to","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"factory","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IUniswapV3Factory"}],"stateMutability":"view"},{"type":"function","name":"getActiveFlashLoans","inputs":[{"name":"user","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"removeValidPool","inputs":[{"name":"pool","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"requestEmergencyWithdraw","inputs":[{"name":"token","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setAuthorizedCaller","inputs":[{"name":"caller","type":"address","internalType":"address"},{"name":"authorized","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"uniswapV3FlashCallback","inputs":[{"name":"fee0","type":"uint256","internalType":"uint256"},{"name":"fee1","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"validPools","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"event","name":"EmergencyWithdrawCancelled","inputs":[{"name":"requestId","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"EmergencyWithdrawExecuted","inputs":[{"name":"requestId","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"EmergencyWithdrawRequested","inputs":[{"name":"requestId","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"executeAfter","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"FlashLoanCompleted","inputs":[{"name":"flashId","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"pool","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"FlashLoanInitiated","inputs":[{"name":"flashId","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"pool","type":"address","indexed":true,"internalType":"address"},{"name":"amount0","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"amount1","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"FlashSwapExecuted","inputs":[{"name":"pool","type":"address","indexed":true,"internalType":"address"},{"name":"token0","type":"address","indexed":true,"internalType":"address"},{"name":"token1","type":"address","indexed":true,"internalType":"address"},{"name":"amount0","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"amount1","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"to","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"AddressEmptyCode","inputs":[{"name":"target","type":"address","internalType":"address"}]},{"type":"error","name":"AddressInsufficientBalance","inputs":[{"name":"account","type":"address","internalType":"address"}]},{"type":"error","name":"FailedInnerCall","inputs":[]},{"type":"error","name":"OwnableInvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"OwnableUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"}]},{"type":"error","name":"ReentrancyGuardReentrantCall","inputs":[]},{"type":"error","name":"SafeERC20FailedOperation","inputs":[{"name":"token","type":"address","internalType":"address"}]}],"bytecode":{"object":"0x60a03461013b57601f611b9a38819003918201601f19168301916001600160401b0383118484101761013f5780849260209460405283398101031261013b57516001600160a01b038082169182900361013b5760015f5533156101235760018054336001600160a01b03198216811790925560405192167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3335f52600260205260405f20600160ff1982541617905581156100e15750608052604051611a469081610154823960805181818161045b0152818161087d01526118670152f35b62461bcd60e51b815260206004820152601760248201527f496e76616c696420666163746f727920616464726573730000000000000000006044820152606490fd5b604051631e4fbdf760e01b81525f6004820152602490fd5b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe608080604052600436101561001c575b50361561001a575f80fd5b005b5f905f3560e01c9081630515b6fa146115e7575080630557ac411461158e5780630abe6fb51461153e5780632275566d146114e15780632bfd31501461143757806337229f051461141b578063454bbd29146113c6578063536fff6c1461138957806360d7442b1461136c57806362e0cd2914611296578063715018a61461123b5780637c7f4ce5146110a457806387d103b214610acb5780638da5cb5b14610aa25780638facc19214610a6957806393368fdf14610a2a57806395ccea67146109c85780639ad3ec48146108ac578063c45a015514610867578063cee5e02e14610826578063e9cbafb01461028a578063f2fde38b146102005763fbe1a43f0361000f57346101fd5760203660031901126101fd5760043561013d6117ea565b80825260036020526040822061016a60ff600360028401549361016185151561173a565b0154161561177f565b4210156101b85780825260036020528160036040822082815582600182015582600282015501557fc8fdc0bbef3c457a504d7142a467f41bd5c16eaa1b1d316b1efef96a92457f3c8280a280f35b60405162461bcd60e51b815260206004820152601a60248201527f5265717565737420616c72656164792065786563757461626c650000000000006044820152606490fd5b80fd5b50346101fd5760203660031901126101fd5761021a611600565b6102226117ea565b6001600160a01b0390811690811561027157600154826001600160601b0360a01b821617600155167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a380f35b604051631e4fbdf760e01b815260048101849052602490fd5b50346101fd5760603660031901126101fd5760243560443567ffffffffffffffff8082116107db57366023830112156107db57816004013581811161082257820190602482019036821161081e576102e06118b5565b6102e933611816565b156107e357604084879403126107df5760448401359081116107df57830190806043830112156107df57602482013590610322826116ad565b90610330604051928361165d565b828252604483850101116107db5781604460209401848301370101526024810135835260046020526040832060ff600482015460a01c16156107a1576002810154336001600160a01b039091160361076c5760038101544211610732576001600160801b038060043511159081610727575b50156106f357604051630dfe168160e01b8152602081600481335afa9081156106e85785916106c9575b5060405163d21220a760e01b8152602081600481335afa9081156106be57869161069f575b5060405163ddca3f4360e01b815291602083600481335afa92831561066357879361066e575b50604051630b4c774160e11b81526001600160a01b03918216600482018190529282166024820181905262ffffff94909416604482015290602090829060649082907f0000000000000000000000000000000000000000000000000000000000000000165afa908115610663578791610634575b50336001600160a01b03909116036105fb57825460018401546004358201968101929187106105bd57821061057f578560249661056d575b50508061055b575b5050600401805460ff60a01b1981169091556001600160a01b0316835260056020526040832080546104fc90611651565b905533828201357fdee01309c544a924bbb91fef416d52b22805e6a29849ab1fc91ffb9200c869958580a30135815260046020526105546040822060045f918281558260018201558260028201558260038201550155565b6001815580f35b610566913390611928565b5f806104cb565b610578913390611928565b5f806104c3565b60405162461bcd60e51b8152602060048201526016602482015275526570617920616d6f756e7431206f766572666c6f7760501b6044820152606490fd5b60405162461bcd60e51b8152602060048201526016602482015275526570617920616d6f756e7430206f766572666c6f7760501b6044820152606490fd5b60405162461bcd60e51b8152602060048201526011602482015270155b985d5d1a1bdc9a5e9959081c1bdbdb607a1b6044820152606490fd5b610656915060203d60201161065c575b61064e818361165d565b8101906117cb565b5f61048b565b503d610644565b6040513d89823e3d90fd5b61069191935060203d602011610698575b610689818361165d565b81019061167f565b915f610417565b503d61067f565b6106b8915060203d60201161065c5761064e818361165d565b5f6103f1565b6040513d88823e3d90fd5b6106e2915060203d60201161065c5761064e818361165d565b5f6103cc565b6040513d87823e3d90fd5b60405162461bcd60e51b815260206004820152600c60248201526b466565206f766572666c6f7760a01b6044820152606490fd5b90508311155f6103a2565b60405162461bcd60e51b8152602060048201526012602482015271119b185cda081b1bd85b88195e1c1a5c995960721b6044820152606490fd5b60405162461bcd60e51b815260206004820152600d60248201526c0a0deded840dad2e6dac2e8c6d609b1b6044820152606490fd5b60405162461bcd60e51b815260206004820152601260248201527124b73b30b634b210333630b9b4103637b0b760711b6044820152606490fd5b8380fd5b8280fd5b60405162461bcd60e51b815260206004820152601360248201527224b73b30b634b2103837b7b61031b0b63632b960691b6044820152606490fd5b8580fd5b8480fd5b50346101fd5760203660031901126101fd57610840611600565b6108486117ea565b6001600160a01b03168152600660205260408120805460ff1916905580f35b50346101fd57806003193601126101fd576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b50346101fd5760203660031901126101fd576004356108c96117ea565b8082526003602052604082209060028201546108e681151561173a565b600383018054916108fa60ff84161561177f565b421061098c57600160ff19929092168217905582547fac1588e122eedb6af5a0e5e3a5f41eea47cd8359422fc2450adef2b3492d1a59916020916001600160a01b039081168061097557506109658780808085875416878c0154905af161095f6116c9565b506116f8565b855416940154604051908152a380f35b61098790828454168489015491611928565b610965565b60405162461bcd60e51b8152602060048201526014602482015273151a5b595b1bd8dac81b9bdd08195e1c1a5c995960621b6044820152606490fd5b50346101fd5760403660031901126101fd57806109e3611600565b602435906109ef6117ea565b6001600160a01b0390811680610a1a57509180808093610a1795600154165af161095f6116c9565b80f35b90610a1793506001541690611928565b50346101fd5760203660031901126101fd5760209060ff906040906001600160a01b03610a55611600565b168152600684522054166040519015158152f35b50346101fd5760203660031901126101fd576020906040906001600160a01b03610a91611600565b168152600583522054604051908152f35b50346101fd57806003193601126101fd576001546040516001600160a01b039091168152602090f35b5034610e8b57600319604036820112610e8b57610ae6611600565b60249067ffffffffffffffff908235828111610e8b5760c081360395860112610e8b57335f526020906002825260ff60405f2054168015611090575b1561105d57610b2f6118b5565b6001600160a01b039182610b45600484016118d6565b16156110295782610b578784016118d6565b1615610ff5576084820183610b6b826118d6565b1615610fbd57604483013594851595869283158094610fb0575b610b8e906118ea565b610b966118b5565b610ba7610ba284611816565b611616565b335f5260058552600560405f20541015610f6c57335f526002855260ff60405f2054168015610f5f575b15610f255786831697606487013593604051878101916001600160601b03199060601b1682528460348201528560548201524260748201524460948201523360601b60b482015260a8815260e081018181108d821117610f12576040525190209490610f09575b610c41906118ea565b6001600160801b03808311159081610efe575b5015610ec85761012c4201804211610eb55760405160c081018181108c821117610ea2576040528381528860048883019287845260408101948d865260608201908152608082019533875260a0830195600187528b5f52848d5260405f209351845551600184015584600284019151166001600160601b0360a01b8254161790555160038201550192511682549160ff60a01b9051151560a01b16916affffffffffffffffffffff60a81b1617179055335f526005855260405f2080545f198114610e8f57906001610d59939201905588857f17de7599ca6fc82458b63cfebd5849eeeabb1ed1b8cfaa0dbb908d2c18f92f5b60408051878152888b820152a36118d6565b9960a495808701359160221901821215610e8b570195600487013596898811610e8b578a01938736038513610e8b576080610dca9189601f9a6040519889938b850152604080850152816060850152848401375f8382840101528a199a8b910116810103606081018752018561165d565b873b15610e8b576040516312439b2f60e21b81529a1660048b0152888a0152604489015260806064890152805160848901819052889493909291905f5b848110610e7557505050505f60a484829694601f858585859886010152011681010301925af18015610e6a57610e40575b836001815580f35b909180935011610e5757506040525f808080610e38565b634e487b7160e01b5f9081526041600452fd5b6040513d5f823e3d90fd5b8281018401518b82018301528a96508301610e07565b5f80fd5b8b634e487b7160e01b5f5260116004525ffd5b8c634e487b7160e01b5f5260416004525ffd5b8a634e487b7160e01b5f5260116004525ffd5b60405162461bcd60e51b815260048101869052600f818c01526e416d6f756e74206f766572666c6f7760881b6044820152606490fd5b90508311155f610c54565b50821515610c38565b8d634e487b7160e01b5f5260416004525ffd5b60405162461bcd60e51b8152600481018690526013818c0152722ab730baba3437b934bd32b21031b0b63632b960691b6044820152606490fd5b5086600154163314610bd1565b60405162461bcd60e51b815260048101869052601f818c01527f546f6f206d616e7920636f6e63757272656e7420666c617368206c6f616e73006044820152606490fd5b5060648601351515610b85565b60405162461bcd60e51b81526004810183905260118189015270125b9d985b1a59081c9958da5c1a595b9d607a1b6044820152606490fd5b606490600e876040519262461bcd60e51b845260048401528201526d496e76616c696420746f6b656e3160901b6044820152fd5b606490600e876040519262461bcd60e51b845260048401528201526d0496e76616c696420746f6b656e360941b6044820152fd5b60405162461bcd60e51b815260048101839052600c818701526b155b985d5d1a1bdc9a5e995960a21b6044820152606490fd5b506001546001600160a01b03163314610b22565b34610e8b576040366003190112610e8b576110bd611600565b6024356110c86117ea565b80156112055760405190602082019060018060a01b0390818516946001600160601b03199060601b1683528060348501524260548501524460748501526074845260a0840167ffffffffffffffff93858210858311176111dd578160405285519020946202a3004201918242116111f1576101208201958611818710176111dd5760036040956111d0937ff3e5fdcc801d2636fa5ac7da5f82875c80218c24690f9c51d37007d662c4804e9888528a845260c0810187815261010060e083019288845201925f84528b5f5284602052895f209551166001600160601b0360a01b86541617855551600185015551600284015551151591019060ff801983541691151516179055565b82519182526020820152a3005b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b60405162461bcd60e51b815260206004820152600e60248201526d125b9d985b1a5908185b5bdd5b9d60921b6044820152606490fd5b34610e8b575f366003190112610e8b576112536117ea565b600180546001600160a01b031981169091555f906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b34610e8b576060366003190112610e8b5760046112b1611600565b602435906020604435916112c7610ba282611816565b60405163ddca3f4360e01b815294859182906001600160a01b03165afa918215610e6a576040935f9361134b575b50801561134357611310620f42409162ffffff85169061169a565b04915b811561133b57620f42409162ffffff61132d92169061169a565b045b82519182526020820152f35b50505f61132f565b505f91611313565b61136591935060203d60201161069857610689818361165d565b91846112f5565b34610e8b575f366003190112610e8b5760206040516202a3008152f35b34610e8b576020366003190112610e8b576001600160a01b036113aa611600565b165f526002602052602060ff60405f2054166040519015158152f35b34610e8b576040366003190112610e8b576113df611600565b6024358015158103610e8b5761001a916113f76117ea565b60018060a01b03165f52600260205260405f209060ff801983541691151516179055565b34610e8b575f366003190112610e8b57602060405161012c8152f35b34610e8b576020366003190112610e8b576004356114536117ea565b805f52600460205260405f206004810180549160ff8360a01c1690816114d3575b5061147b57005b60ff60a01b19821690556001600160a01b03165f90815260056020526040902080546114a690611651565b90555f52600460205261001a60405f2060045f918281558260018201558260028201558260038201550155565b600391500154421184611474565b34610e8b576020366003190112610e8b576004355f526003602052602060405f206002810154801515918261152e575b5081611523575b506040519015158152f35b905042101582611518565b6003015460ff1615915083611511565b34610e8b576020366003190112610e8b57611557611600565b61155f6117ea565b61156b610ba282611816565b6001600160a01b03165f908152600660205260409020805460ff19166001179055005b34610e8b576020366003190112610e8b576004355f526003602052608060405f2060018060a01b038154169060018101549060ff6003600283015492015416916040519384526020840152604083015215156060820152f35b34610e8b575f366003190112610e8b5780600560209252f35b600435906001600160a01b0382168203610e8b57565b1561161d57565b60405162461bcd60e51b815260206004820152600c60248201526b125b9d985b1a59081c1bdbdb60a21b6044820152606490fd5b80156111f1575f190190565b90601f8019910116810190811067ffffffffffffffff8211176111dd57604052565b90816020910312610e8b575162ffffff81168103610e8b5790565b818102929181159184041417156111f157565b67ffffffffffffffff81116111dd57601f01601f191660200190565b3d156116f3573d906116da826116ad565b916116e8604051938461165d565b82523d5f602084013e565b606090565b156116ff57565b60405162461bcd60e51b8152602060048201526013602482015272115512081d1c985b9cd9995c8819985a5b1959606a1b6044820152606490fd5b1561174157565b60405162461bcd60e51b815260206004820152601660248201527514995c5d595cdd08191bd95cc81b9bdd08195e1a5cdd60521b6044820152606490fd5b1561178657565b60405162461bcd60e51b815260206004820152601860248201527f5265717565737420616c726561647920657865637574656400000000000000006044820152606490fd5b90816020910312610e8b57516001600160a01b0381168103610e8b5790565b6001546001600160a01b031633036117fe57565b60405163118cdaa760e01b8152336004820152602490fd5b6001600160a01b039081165f8181526006602052604090205490919060ff166118ae5760206004926040519384809263c45a015560e01b82525afa5f928161188d575b506118645750505f90565b807f00000000000000000000000000000000000000000000000000000000000000001691161490565b6118a791935060203d60201161065c5761064e818361165d565b915f611859565b5050600190565b60025f54146118c45760025f55565b604051633ee5aeb560e01b8152600490fd5b356001600160a01b0381168103610e8b5790565b156118f157565b60405162461bcd60e51b815260206004820152600f60248201526e496e76616c696420616d6f756e747360881b6044820152606490fd5b60405163a9059cbb60e01b602082019081526001600160a01b03938416602483015260448083019590955293815292608084019067ffffffffffffffff8211858310176111dd57611991935f9384936040521694519082865af161198a6116c9565b90836119e3565b80519081151591826119bf575b50506119a75750565b60249060405190635274afe760e01b82526004820152fd5b8192509060209181010312610e8b5760200151801590811503610e8b575f8061199e565b90611a0a57508051156119f857805190602001fd5b604051630a12f52160e11b8152600490fd5b81511580611a3d575b611a1b575090565b604051639996b31560e01b81526001600160a01b039091166004820152602490fd5b50803b15611a1356","sourceMap":"290:7569:17:-:0;;;;;;;;;;;;;-1:-1:-1;;290:7569:17;;;;-1:-1:-1;;;;;290:7569:17;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;290:7569:17;;;;;;;;;1713:1:6;-1:-1:-1;1713:1:6;2665:10:16;1273:26:0;1269:95;;1713:1:6;290:7569:17;;2665:10:16;-1:-1:-1;;;;;;290:7569:17;;;;;;;;;;;3052:40:0;-1:-1:-1;;3052:40:0;2665:10:16;-1:-1:-1;290:7569:17;2687:17:16;290:7569:17;;;-1:-1:-1;290:7569:17;1713:1:6;290:7569:17;;;;;;;;1329:22;;290:7569;;1389:37;;;290:7569;;;;;;;;1389:37;290:7569;;;;;;;;;;;;;;;;;-1:-1:-1;;;290:7569:17;;;;;;;;;;;;;;;;;;;;1269:95:0;290:7569:17;;-1:-1:-1;;;1322:31:0;;-1:-1:-1;1322:31:0;;;290:7569:17;;;1322:31:0;290:7569:17;-1:-1:-1;290:7569:17;;;;;;-1:-1:-1;290:7569:17;;;;;-1:-1:-1;290:7569:17","linkReferences":{}},"deployedBytecode":{"object":"0x608080604052600436101561001c575b50361561001a575f80fd5b005b5f905f3560e01c9081630515b6fa146115e7575080630557ac411461158e5780630abe6fb51461153e5780632275566d146114e15780632bfd31501461143757806337229f051461141b578063454bbd29146113c6578063536fff6c1461138957806360d7442b1461136c57806362e0cd2914611296578063715018a61461123b5780637c7f4ce5146110a457806387d103b214610acb5780638da5cb5b14610aa25780638facc19214610a6957806393368fdf14610a2a57806395ccea67146109c85780639ad3ec48146108ac578063c45a015514610867578063cee5e02e14610826578063e9cbafb01461028a578063f2fde38b146102005763fbe1a43f0361000f57346101fd5760203660031901126101fd5760043561013d6117ea565b80825260036020526040822061016a60ff600360028401549361016185151561173a565b0154161561177f565b4210156101b85780825260036020528160036040822082815582600182015582600282015501557fc8fdc0bbef3c457a504d7142a467f41bd5c16eaa1b1d316b1efef96a92457f3c8280a280f35b60405162461bcd60e51b815260206004820152601a60248201527f5265717565737420616c72656164792065786563757461626c650000000000006044820152606490fd5b80fd5b50346101fd5760203660031901126101fd5761021a611600565b6102226117ea565b6001600160a01b0390811690811561027157600154826001600160601b0360a01b821617600155167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a380f35b604051631e4fbdf760e01b815260048101849052602490fd5b50346101fd5760603660031901126101fd5760243560443567ffffffffffffffff8082116107db57366023830112156107db57816004013581811161082257820190602482019036821161081e576102e06118b5565b6102e933611816565b156107e357604084879403126107df5760448401359081116107df57830190806043830112156107df57602482013590610322826116ad565b90610330604051928361165d565b828252604483850101116107db5781604460209401848301370101526024810135835260046020526040832060ff600482015460a01c16156107a1576002810154336001600160a01b039091160361076c5760038101544211610732576001600160801b038060043511159081610727575b50156106f357604051630dfe168160e01b8152602081600481335afa9081156106e85785916106c9575b5060405163d21220a760e01b8152602081600481335afa9081156106be57869161069f575b5060405163ddca3f4360e01b815291602083600481335afa92831561066357879361066e575b50604051630b4c774160e11b81526001600160a01b03918216600482018190529282166024820181905262ffffff94909416604482015290602090829060649082907f0000000000000000000000000000000000000000000000000000000000000000165afa908115610663578791610634575b50336001600160a01b03909116036105fb57825460018401546004358201968101929187106105bd57821061057f578560249661056d575b50508061055b575b5050600401805460ff60a01b1981169091556001600160a01b0316835260056020526040832080546104fc90611651565b905533828201357fdee01309c544a924bbb91fef416d52b22805e6a29849ab1fc91ffb9200c869958580a30135815260046020526105546040822060045f918281558260018201558260028201558260038201550155565b6001815580f35b610566913390611928565b5f806104cb565b610578913390611928565b5f806104c3565b60405162461bcd60e51b8152602060048201526016602482015275526570617920616d6f756e7431206f766572666c6f7760501b6044820152606490fd5b60405162461bcd60e51b8152602060048201526016602482015275526570617920616d6f756e7430206f766572666c6f7760501b6044820152606490fd5b60405162461bcd60e51b8152602060048201526011602482015270155b985d5d1a1bdc9a5e9959081c1bdbdb607a1b6044820152606490fd5b610656915060203d60201161065c575b61064e818361165d565b8101906117cb565b5f61048b565b503d610644565b6040513d89823e3d90fd5b61069191935060203d602011610698575b610689818361165d565b81019061167f565b915f610417565b503d61067f565b6106b8915060203d60201161065c5761064e818361165d565b5f6103f1565b6040513d88823e3d90fd5b6106e2915060203d60201161065c5761064e818361165d565b5f6103cc565b6040513d87823e3d90fd5b60405162461bcd60e51b815260206004820152600c60248201526b466565206f766572666c6f7760a01b6044820152606490fd5b90508311155f6103a2565b60405162461bcd60e51b8152602060048201526012602482015271119b185cda081b1bd85b88195e1c1a5c995960721b6044820152606490fd5b60405162461bcd60e51b815260206004820152600d60248201526c0a0deded840dad2e6dac2e8c6d609b1b6044820152606490fd5b60405162461bcd60e51b815260206004820152601260248201527124b73b30b634b210333630b9b4103637b0b760711b6044820152606490fd5b8380fd5b8280fd5b60405162461bcd60e51b815260206004820152601360248201527224b73b30b634b2103837b7b61031b0b63632b960691b6044820152606490fd5b8580fd5b8480fd5b50346101fd5760203660031901126101fd57610840611600565b6108486117ea565b6001600160a01b03168152600660205260408120805460ff1916905580f35b50346101fd57806003193601126101fd576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b50346101fd5760203660031901126101fd576004356108c96117ea565b8082526003602052604082209060028201546108e681151561173a565b600383018054916108fa60ff84161561177f565b421061098c57600160ff19929092168217905582547fac1588e122eedb6af5a0e5e3a5f41eea47cd8359422fc2450adef2b3492d1a59916020916001600160a01b039081168061097557506109658780808085875416878c0154905af161095f6116c9565b506116f8565b855416940154604051908152a380f35b61098790828454168489015491611928565b610965565b60405162461bcd60e51b8152602060048201526014602482015273151a5b595b1bd8dac81b9bdd08195e1c1a5c995960621b6044820152606490fd5b50346101fd5760403660031901126101fd57806109e3611600565b602435906109ef6117ea565b6001600160a01b0390811680610a1a57509180808093610a1795600154165af161095f6116c9565b80f35b90610a1793506001541690611928565b50346101fd5760203660031901126101fd5760209060ff906040906001600160a01b03610a55611600565b168152600684522054166040519015158152f35b50346101fd5760203660031901126101fd576020906040906001600160a01b03610a91611600565b168152600583522054604051908152f35b50346101fd57806003193601126101fd576001546040516001600160a01b039091168152602090f35b5034610e8b57600319604036820112610e8b57610ae6611600565b60249067ffffffffffffffff908235828111610e8b5760c081360395860112610e8b57335f526020906002825260ff60405f2054168015611090575b1561105d57610b2f6118b5565b6001600160a01b039182610b45600484016118d6565b16156110295782610b578784016118d6565b1615610ff5576084820183610b6b826118d6565b1615610fbd57604483013594851595869283158094610fb0575b610b8e906118ea565b610b966118b5565b610ba7610ba284611816565b611616565b335f5260058552600560405f20541015610f6c57335f526002855260ff60405f2054168015610f5f575b15610f255786831697606487013593604051878101916001600160601b03199060601b1682528460348201528560548201524260748201524460948201523360601b60b482015260a8815260e081018181108d821117610f12576040525190209490610f09575b610c41906118ea565b6001600160801b03808311159081610efe575b5015610ec85761012c4201804211610eb55760405160c081018181108c821117610ea2576040528381528860048883019287845260408101948d865260608201908152608082019533875260a0830195600187528b5f52848d5260405f209351845551600184015584600284019151166001600160601b0360a01b8254161790555160038201550192511682549160ff60a01b9051151560a01b16916affffffffffffffffffffff60a81b1617179055335f526005855260405f2080545f198114610e8f57906001610d59939201905588857f17de7599ca6fc82458b63cfebd5849eeeabb1ed1b8cfaa0dbb908d2c18f92f5b60408051878152888b820152a36118d6565b9960a495808701359160221901821215610e8b570195600487013596898811610e8b578a01938736038513610e8b576080610dca9189601f9a6040519889938b850152604080850152816060850152848401375f8382840101528a199a8b910116810103606081018752018561165d565b873b15610e8b576040516312439b2f60e21b81529a1660048b0152888a0152604489015260806064890152805160848901819052889493909291905f5b848110610e7557505050505f60a484829694601f858585859886010152011681010301925af18015610e6a57610e40575b836001815580f35b909180935011610e5757506040525f808080610e38565b634e487b7160e01b5f9081526041600452fd5b6040513d5f823e3d90fd5b8281018401518b82018301528a96508301610e07565b5f80fd5b8b634e487b7160e01b5f5260116004525ffd5b8c634e487b7160e01b5f5260416004525ffd5b8a634e487b7160e01b5f5260116004525ffd5b60405162461bcd60e51b815260048101869052600f818c01526e416d6f756e74206f766572666c6f7760881b6044820152606490fd5b90508311155f610c54565b50821515610c38565b8d634e487b7160e01b5f5260416004525ffd5b60405162461bcd60e51b8152600481018690526013818c0152722ab730baba3437b934bd32b21031b0b63632b960691b6044820152606490fd5b5086600154163314610bd1565b60405162461bcd60e51b815260048101869052601f818c01527f546f6f206d616e7920636f6e63757272656e7420666c617368206c6f616e73006044820152606490fd5b5060648601351515610b85565b60405162461bcd60e51b81526004810183905260118189015270125b9d985b1a59081c9958da5c1a595b9d607a1b6044820152606490fd5b606490600e876040519262461bcd60e51b845260048401528201526d496e76616c696420746f6b656e3160901b6044820152fd5b606490600e876040519262461bcd60e51b845260048401528201526d0496e76616c696420746f6b656e360941b6044820152fd5b60405162461bcd60e51b815260048101839052600c818701526b155b985d5d1a1bdc9a5e995960a21b6044820152606490fd5b506001546001600160a01b03163314610b22565b34610e8b576040366003190112610e8b576110bd611600565b6024356110c86117ea565b80156112055760405190602082019060018060a01b0390818516946001600160601b03199060601b1683528060348501524260548501524460748501526074845260a0840167ffffffffffffffff93858210858311176111dd578160405285519020946202a3004201918242116111f1576101208201958611818710176111dd5760036040956111d0937ff3e5fdcc801d2636fa5ac7da5f82875c80218c24690f9c51d37007d662c4804e9888528a845260c0810187815261010060e083019288845201925f84528b5f5284602052895f209551166001600160601b0360a01b86541617855551600185015551600284015551151591019060ff801983541691151516179055565b82519182526020820152a3005b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b60405162461bcd60e51b815260206004820152600e60248201526d125b9d985b1a5908185b5bdd5b9d60921b6044820152606490fd5b34610e8b575f366003190112610e8b576112536117ea565b600180546001600160a01b031981169091555f906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b34610e8b576060366003190112610e8b5760046112b1611600565b602435906020604435916112c7610ba282611816565b60405163ddca3f4360e01b815294859182906001600160a01b03165afa918215610e6a576040935f9361134b575b50801561134357611310620f42409162ffffff85169061169a565b04915b811561133b57620f42409162ffffff61132d92169061169a565b045b82519182526020820152f35b50505f61132f565b505f91611313565b61136591935060203d60201161069857610689818361165d565b91846112f5565b34610e8b575f366003190112610e8b5760206040516202a3008152f35b34610e8b576020366003190112610e8b576001600160a01b036113aa611600565b165f526002602052602060ff60405f2054166040519015158152f35b34610e8b576040366003190112610e8b576113df611600565b6024358015158103610e8b5761001a916113f76117ea565b60018060a01b03165f52600260205260405f209060ff801983541691151516179055565b34610e8b575f366003190112610e8b57602060405161012c8152f35b34610e8b576020366003190112610e8b576004356114536117ea565b805f52600460205260405f206004810180549160ff8360a01c1690816114d3575b5061147b57005b60ff60a01b19821690556001600160a01b03165f90815260056020526040902080546114a690611651565b90555f52600460205261001a60405f2060045f918281558260018201558260028201558260038201550155565b600391500154421184611474565b34610e8b576020366003190112610e8b576004355f526003602052602060405f206002810154801515918261152e575b5081611523575b506040519015158152f35b905042101582611518565b6003015460ff1615915083611511565b34610e8b576020366003190112610e8b57611557611600565b61155f6117ea565b61156b610ba282611816565b6001600160a01b03165f908152600660205260409020805460ff19166001179055005b34610e8b576020366003190112610e8b576004355f526003602052608060405f2060018060a01b038154169060018101549060ff6003600283015492015416916040519384526020840152604083015215156060820152f35b34610e8b575f366003190112610e8b5780600560209252f35b600435906001600160a01b0382168203610e8b57565b1561161d57565b60405162461bcd60e51b815260206004820152600c60248201526b125b9d985b1a59081c1bdbdb60a21b6044820152606490fd5b80156111f1575f190190565b90601f8019910116810190811067ffffffffffffffff8211176111dd57604052565b90816020910312610e8b575162ffffff81168103610e8b5790565b818102929181159184041417156111f157565b67ffffffffffffffff81116111dd57601f01601f191660200190565b3d156116f3573d906116da826116ad565b916116e8604051938461165d565b82523d5f602084013e565b606090565b156116ff57565b60405162461bcd60e51b8152602060048201526013602482015272115512081d1c985b9cd9995c8819985a5b1959606a1b6044820152606490fd5b1561174157565b60405162461bcd60e51b815260206004820152601660248201527514995c5d595cdd08191bd95cc81b9bdd08195e1a5cdd60521b6044820152606490fd5b1561178657565b60405162461bcd60e51b815260206004820152601860248201527f5265717565737420616c726561647920657865637574656400000000000000006044820152606490fd5b90816020910312610e8b57516001600160a01b0381168103610e8b5790565b6001546001600160a01b031633036117fe57565b60405163118cdaa760e01b8152336004820152602490fd5b6001600160a01b039081165f8181526006602052604090205490919060ff166118ae5760206004926040519384809263c45a015560e01b82525afa5f928161188d575b506118645750505f90565b807f00000000000000000000000000000000000000000000000000000000000000001691161490565b6118a791935060203d60201161065c5761064e818361165d565b915f611859565b5050600190565b60025f54146118c45760025f55565b604051633ee5aeb560e01b8152600490fd5b356001600160a01b0381168103610e8b5790565b156118f157565b60405162461bcd60e51b815260206004820152600f60248201526e496e76616c696420616d6f756e747360881b6044820152606490fd5b60405163a9059cbb60e01b602082019081526001600160a01b03938416602483015260448083019590955293815292608084019067ffffffffffffffff8211858310176111dd57611991935f9384936040521694519082865af161198a6116c9565b90836119e3565b80519081151591826119bf575b50506119a75750565b60249060405190635274afe760e01b82526004820152fd5b8192509060209181010312610e8b5760200151801590811503610e8b575f8061199e565b90611a0a57508051156119f857805190602001fd5b604051630a12f52160e11b8152600490fd5b81511580611a3d575b611a1b575090565b604051639996b31560e01b81526001600160a01b039091166004820152602490fd5b50803b15611a1356","sourceMap":"290:7569:17:-:0;;;;;;;;;;-1:-1:-1;290:7569:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;290:7569:17;;;;;;1500:62:0;;:::i;:::-;290:7569:17;;;8602:17:16;290:7569:17;;;;;8710:54:16;290:7569:17;8602:17:16;8648:20;;;290:7569:17;8648:25:16;8640:60;8648:25;;;8640:60;:::i;:::-;8719:16;290:7569:17;;8718:17:16;8710:54;:::i;:::-;8782:15;:38;290:7569:17;;;;;;8602:17:16;290:7569:17;;;8602:17:16;290:7569:17;;;;;;;;;;;;8648:20:16;290:7569:17;;;;;8920:37:16;;;;290:7569:17;;;;;-1:-1:-1;;;290:7569:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;290:7569:17;;;;;;:::i;:::-;1500:62:0;;:::i;:::-;-1:-1:-1;;;;;290:7569:17;;;;2627:22:0;;2623:91;;3004:6;290:7569:17;;-1:-1:-1;;;;;290:7569:17;;;;;3004:6:0;290:7569:17;;3052:40:0;290:7569:17;3052:40:0;;290:7569:17;;2623:91:0;290:7569:17;;-1:-1:-1;;;2672:31:0;;290:7569:17;2672:31:0;;290:7569:17;;;;;2672:31:0;290:7569:17;;;;;;;-1:-1:-1;;290:7569:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2322:103:6;;:::i;:::-;3289:24:17;3302:10;3289:24;:::i;:::-;290:7569;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3619:16;;290:7569;;;;;;;3676:14;;;290:7569;3302:10;-1:-1:-1;;;;;290:7569:17;;;3676:28;290:7569;;3759:18;;;290:7569;3740:15;:37;290:7569;;-1:-1:-1;;;;;290:7569:17;;;3818:25;;:54;;;;290:7569;;;;;;;-1:-1:-1;;;4021:13:17;;290:7569;;;;3302:10;4021:13;;;;;;;;;;;290:7569;-1:-1:-1;290:7569:17;;-1:-1:-1;;;4061:13:17;;290:7569;;;;3302:10;4061:13;;;;;;;;;;;290:7569;-1:-1:-1;290:7569:17;;-1:-1:-1;;;4097:10:17;;290:7569;;;;;3302:10;4097;;;;;;;;;;;290:7569;-1:-1:-1;290:7569:17;;-1:-1:-1;;;4204:36:17;;-1:-1:-1;;;;;290:7569:17;;;;4204:36;;290:7569;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4204:7;290:7569;4204:36;;;;;;;;;;;290:7569;-1:-1:-1;3302:10:17;-1:-1:-1;;;;;290:7569:17;;;4258:26;290:7569;;;;;4847:17;;290:7569;;;;;;;;;;4935:33;;290:7569;;5013:33;;290:7569;;5128:16;290:7569;5128:16;5124:100;;290:7569;5237:16;;;5233:100;;290:7569;-1:-1:-1;;290:7569:17;3619:16;290:7569;;-1:-1:-1;;;;290:7569:17;;;;;-1:-1:-1;;;;;290:7569:17;;;5422:17;290:7569;;;;;;;5422:40;;;:::i;:::-;290:7569;;3302:10;290:7569;;;;5486:39;;;;290:7569;;;;;;;5579:31;290:7569;;;;;;;;;;;;;;;;;;;;;;;;;;;5579:31;290:7569;;;;;5233:100;5309:12;3302:10;;5309:12;;:::i;:::-;5233:100;;;;5124;5200:12;3302:10;;5200:12;;:::i;:::-;5124:100;;;;290:7569;;;-1:-1:-1;;;290:7569:17;;;;;;;;;;;;-1:-1:-1;;;290:7569:17;;;;;;;;;;-1:-1:-1;;;290:7569:17;;;;;;;;;;;;-1:-1:-1;;;290:7569:17;;;;;;;;;;-1:-1:-1;;;290:7569:17;;;;;;;;;;;;-1:-1:-1;;;290:7569:17;;;;;;;4204:36;;;;290:7569;4204:36;290:7569;4204:36;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;290:7569;;;;;;;;;4097:10;;;;;290:7569;4097:10;290:7569;4097:10;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;4061:13;;;;290:7569;4061:13;290:7569;4061:13;;;;;;;:::i;:::-;;;;;290:7569;;;;;;;;;4021:13;;;;290:7569;4021:13;290:7569;4021:13;;;;;;;:::i;:::-;;;;;290:7569;;;;;;;;;;;;-1:-1:-1;;;290:7569:17;;;;;;;;;;;;-1:-1:-1;;;290:7569:17;;;;;;;3818:54;3847:25;;;;;3818:54;;;290:7569;;;-1:-1:-1;;;290:7569:17;;;;;;;;;;;;-1:-1:-1;;;290:7569:17;;;;;;;;;;-1:-1:-1;;;290:7569:17;;;;;;;;;;;;-1:-1:-1;;;290:7569:17;;;;;;;;;;-1:-1:-1;;;290:7569:17;;;;;;;;;;;;-1:-1:-1;;;290:7569:17;;;;;;;;;;;;;;;;;;-1:-1:-1;;;290:7569:17;;;;;;;;;;;;-1:-1:-1;;;290:7569:17;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;290:7569:17;;;;;;:::i;:::-;1500:62:0;;:::i;:::-;-1:-1:-1;;;;;290:7569:17;;;6232:10;290:7569;;;;;;;-1:-1:-1;;290:7569:17;;;;;;;;;;;;;;;;;;;;404:42;-1:-1:-1;;;;;290:7569:17;;;;;;;;;;;;;-1:-1:-1;;290:7569:17;;;;;;1500:62:0;;:::i;:::-;290:7569:17;;;7382:17:16;290:7569:17;;;;;7428:20:16;;;;290:7569:17;7420:60:16;7428:25;;;7420:60;:::i;:::-;7382:17;7499:16;;290:7569:17;;;7490:54:16;290:7569:17;;;7498:17:16;7490:54;:::i;:::-;7562:15;:39;290:7569:17;;;-1:-1:-1;;290:7569:17;;;;;;;;;;8193:67:16;;290:7569:17;;-1:-1:-1;;;;;290:7569:17;;;;;;;7958:39:16;290:7569:17;;;;;;;;7925:14:16;;;290:7569:17;7896:48:16;;;;;:::i;:::-;;7958:39;:::i;:::-;290:7569:17;;;8245:14:16;;290:7569:17;;;;;;8193:67:16;290:7569:17;;7751:419:16;8144:14;290:7569:17;;;;;8144:14:16;;;290:7569:17;8144:14:16;;:::i;:::-;7751:419;;290:7569:17;;;-1:-1:-1;;;290:7569:17;;;;;;;;;;;;-1:-1:-1;;;290:7569:17;;;;;;;;;;;;;;-1:-1:-1;;290:7569:17;;;;;;;:::i;:::-;;;1500:62:0;;;:::i;:::-;-1:-1:-1;;;;;290:7569:17;;;9849:19:16;290:7569:17;;;;;;;;9957:39:16;290:7569:17;;;;9903:40:16;;;;:::i;9957:39::-;290:7569:17;;9845:236:16;290:7569:17;10063:6:16;290:7569:17;;;;;10063:6:16;;:::i;290:7569:17:-;;;;;;;-1:-1:-1;;290:7569:17;;;;;;;;;;-1:-1:-1;;;;;290:7569:17;;:::i;:::-;;;;820:42;290:7569;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;290:7569:17;;;;;;;;-1:-1:-1;;;;;290:7569:17;;:::i;:::-;;;;6767:17;290:7569;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;290:7569:17;;;;;;;;;;;;;-1:-1:-1;;290:7569:17;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;2424:10:16;290:7569:17;;;;2406:17:16;290:7569:17;;;;;;;;2406:54:16;;;;290:7569:17;;;;2322:103:6;;:::i;:::-;-1:-1:-1;;;;;290:7569:17;;4732:13:16;290:7569:17;;;4732:13:16;:::i;:::-;290:7569:17;4732:27:16;290:7569:17;;4841:13:16;;;;;;:::i;:::-;290:7569:17;4841:27:16;290:7569:17;;4950:9:16;;;;;;;:::i;:::-;290:7569:17;4950:23:16;290:7569:17;;5062:14:16;;;290:7569:17;5062:18:16;;;;;;;;:40;;;;290:7569:17;5054:68:16;;;:::i;:::-;2322:103:6;;:::i;:::-;1576:43:17;1584:18;;;:::i;:::-;1576:43;:::i;:::-;2424:10:16;290:7569:17;;1637:17;290:7569;;1637:17;290:7569;;;;1637:58;290:7569;;;2424:10:16;290:7569:17;;2406:17:16;290:7569:17;;;;;;;;1749:54;;;;290:7569;;;;;;;2073:14;;;;290:7569;;;;1995:187;;;290:7569;-1:-1:-1;;;;;290:7569:17;;2073:14;290:7569;;;;;;;;;;;;;;2102:15;290:7569;;;;2132:16;290:7569;;;;2424:10:16;2073:14:17;290:7569;;;;;1995:187;;;290:7569;;;;;;;;;;;;;;;1985:198;;2238:40;;;;290:7569;2230:68;;;:::i;:::-;-1:-1:-1;;;;;2316:35:17;;;;:74;;;;290:7569;;;;;944:3;2102:15;290:7569;2102:15;;290:7569;;;;;;;;;;;;;;;;;;;;;;2488:244;290:7569;2488:244;;;290:7569;;;;;2488:244;;290:7569;;;;2073:14;2488:244;;290:7569;;;4950:9:16;2488:244:17;;2424:10:16;;290:7569:17;;2488:244;;;290:7569;;;;;;;;;;;;;;;;;;;;;;;2406:17:16;290:7569:17;;;;;-1:-1:-1;;;;;290:7569:17;;;;;;;;;;;;;;;;;;;;;;;;;;;2488:244;290:7569;;;;;;;;;;;2424:10:16;290:7569:17;;1637:17;290:7569;;;;;;;;;;;;;;;2950:9;290:7569;;;;;;;2806:65;290:7569;;;;;;;;;;;2806:65;2950:9;:::i;:::-;3049:11;;;;;;290:7569;;-1:-1:-1;;290:7569:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;4950:9:16;3029:32:17;290:7569;;;;;;3029:32;;;;;;290:7569;;;;;;;2073:14;290:7569;;;;;;;;;;;;;;1995:187;;290:7569;;;;;;;3029:32;2073:14;3029:32;;;;;;;:::i;:::-;2924:147;;;;;290:7569;;-1:-1:-1;;;2924:147:17;;290:7569;;;2924:147;;290:7569;;;;;5062:14:16;290:7569:17;;;4950:9:16;2073:14:17;290:7569;;;;;4950:9:16;290:7569:17;;;;;;;;;;;;-1:-1:-1;290:7569:17;;;;;;;;;;;3049:11;290:7569;;;;;;;;;;;;;;;;;;2924:147;;;;;;;;;;;290:7569;;;;;;;2924:147;290:7569;;;;;;;;;;;;2924:147;;;;;290:7569;-1:-1:-1;;;290:7569:17;;;;;;;;2924:147;290:7569;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;290:7569:17;;;;2924:147;290:7569;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;290:7569:17;;;;;;;;;;;;;-1:-1:-1;;;5062:14:16;290:7569:17;;;2073:14;;290:7569;2316:74;2355:35;;;;;2316:74;;;2238:40;-1:-1:-1;2260:18:17;;;2238:40;;290:7569;;;;;;;;;;;;;;;-1:-1:-1;;;290:7569:17;;;;;;;;;;;;;-1:-1:-1;;;5062:14:16;290:7569:17;;;;;;1749:54;290:7569;;;;;2424:10:16;1782:21:17;1749:54;;290:7569;;;-1:-1:-1;;;290:7569:17;;;;;;;;;;;;;;5062:14:16;290:7569:17;;;;;;5062:40:16;-1:-1:-1;5084:14:16;;;290:7569:17;5084:18:16;;5062:40;;290:7569:17;;;-1:-1:-1;;;290:7569:17;;;;;;;;;;;;;-1:-1:-1;;;290:7569:17;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;290:7569:17;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;290:7569:17;;;;;;;;-1:-1:-1;;;290:7569:17;;;;;;;;;;;;;-1:-1:-1;;;290:7569:17;;;;;;;2406:54:16;-1:-1:-1;290:7569:17;;-1:-1:-1;;;;;290:7569:17;2424:10:16;2439:21;2406:54;;290:7569:17;;;;;;-1:-1:-1;;290:7569:17;;;;;;:::i;:::-;;;1500:62:0;;:::i;:::-;6418:10:16;;290:7569:17;;;;6534:124:16;290:7569:17;6534:124:16;;290:7569:17;;;;;;;;;;;-1:-1:-1;;;;;290:7569:17;;;;;;;;;;;;6603:15:16;290:7569:17;;;;6632:16:16;290:7569:17;;;;;6534:124:16;;290:7569:17;;;;;;;;;;;;;;;;;;;6524:135:16;;6603:15;1801:8;6603:15;290:7569:17;6603:15:16;;;290:7569:17;;;;;;;;;;;;;;;6756:17:16;290:7569:17;;;;6962:66:16;290:7569:17;;;;;;6787:151:16;;;290:7569:17;;;6787:151:16;290:7569:17;6787:151:16;;290:7569:17;;;;6787:151:16;290:7569:17;;;;;;;;;;;;;;;;-1:-1:-1;;;;;290:7569:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6962:66:16;290:7569:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;290:7569:17;;;;;;;;;;;;-1:-1:-1;;;290:7569:17;;;;;;;;;;;;;-1:-1:-1;;290:7569:17;;;;1500:62:0;;:::i;:::-;3004:6;290:7569:17;;-1:-1:-1;;;;;;290:7569:17;;;;;;;-1:-1:-1;;;;;290:7569:17;3052:40:0;290:7569:17;;3052:40:0;290:7569:17;;;;;;;-1:-1:-1;;290:7569:17;;;;;;;:::i;:::-;;;;;;;7424:18;7416:43;7424:18;;;:::i;7416:43::-;290:7569;;-1:-1:-1;;;7551:26:17;;290:7569;;;;;-1:-1:-1;;;;;290:7569:17;7551:26;;;;;;;290:7569;7551:26;290:7569;7551:26;;;290:7569;-1:-1:-1;7739:11:17;;;;7754:17;7775:7;290:7569;;;;7754:17;;:::i;:::-;290:7569;7739:47;;7803:11;;;;7839:7;290:7569;;7818:17;290:7569;;7818:17;;:::i;:::-;290:7569;7803:47;290:7569;;;;;;;;;;7803:47;;;290:7569;7803:47;;7739;;290:7569;7739:47;;;7551:26;;;;;290:7569;7551:26;290:7569;7551:26;;;;;;;:::i;:::-;;;;;290:7569;;;;;;-1:-1:-1;;290:7569:17;;;;;;;1801:8:16;290:7569:17;;;;;;;;;-1:-1:-1;;290:7569:17;;;;-1:-1:-1;;;;;290:7569:17;;:::i;:::-;;;;1430:49:16;290:7569:17;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;290:7569:17;;;;;;:::i;:::-;;;;;;;;;;3162:38:16;1500:62:0;;;:::i;:::-;290:7569:17;;;;;;;;3162:17:16;290:7569:17;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;290:7569:17;;;;;;;944:3;290:7569;;;;;;;;;-1:-1:-1;;290:7569:17;;;;;;1500:62:0;;:::i;:::-;290:7569:17;;;;;;;;;;6453:16;;290:7569;;;;;;;;6453:56;;;;290:7569;6449:210;;;290:7569;6449:210;-1:-1:-1;;;;290:7569:17;;;;-1:-1:-1;;;;;290:7569:17;;;;;6563:17;290:7569;;;;;;;6563:40;;;:::i;:::-;290:7569;;;;;;;6617:31;290:7569;;;;;;;;;;;;;;;;;;;;;;;;;;;6453:56;6491:18;;;;290:7569;6473:15;:36;6453:56;;;290:7569;;;;;;-1:-1:-1;;290:7569:17;;;;;;;;9259:17:16;290:7569:17;;;;;;9304:20:16;;;290:7569:17;9304:25:16;;;:62;;;;290:7569:17;9304:121:16;;;;290:7569:17;;;;;;;;;;9304:121:16;9386:15;;;:39;;9304:121;;;:62;9259:17;9350:16;290:7569:17;;;9349:17:16;;-1:-1:-1;9304:62:16;;;290:7569:17;;;;;;-1:-1:-1;;290:7569:17;;;;;;:::i;:::-;1500:62:0;;:::i;:::-;6071:43:17;6079:18;;;:::i;6071:43::-;-1:-1:-1;;;;;290:7569:17;;;;;6124:10;290:7569;;;;;;;-1:-1:-1;;290:7569:17;;;;;;;;;;;;-1:-1:-1;;290:7569:17;;;;;;;;1689:61:16;290:7569:17;;;;;;;;;;;;;;1689:61:16;290:7569:17;1689:61:16;;290:7569:17;1689:61:16;290:7569:17;1689:61:16;;;;290:7569:17;1689:61:16;;290:7569:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;290:7569:17;;;;;1019:1;290:7569;;;;;;;;-1:-1:-1;;;;;290:7569:17;;;;;;:::o;:::-;;;;:::o;:::-;;;-1:-1:-1;;;290:7569:17;;;;;;;;;;;;-1:-1:-1;;;290:7569:17;;;;;;;;;;;;-1:-1:-1;;290:7569:17;;:::o;:::-;;;1995:187;;290:7569;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;-1:-1:-1;;290:7569:17;;;;:::o;:::-;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;-1:-1:-1;290:7569:17;;;;:::o;:::-;;;:::o;:::-;;;;:::o;:::-;;;-1:-1:-1;;;290:7569:17;;;;;;;;;;;;-1:-1:-1;;;290:7569:17;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;290:7569:17;;;;;;;;;;;;-1:-1:-1;;;290:7569:17;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;290:7569:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;290:7569:17;;;;;;;:::o;1796:162:0:-;290:7569:17;;-1:-1:-1;;;;;290:7569:17;735:10:5;1855:23:0;1851:101;;1796:162::o;1851:101::-;290:7569:17;;-1:-1:-1;;;1901:40:0;;735:10:5;1901:40:0;;;290:7569:17;;;1901:40:0;5627:305:17;-1:-1:-1;;;;;290:7569:17;;;-1:-1:-1;290:7569:17;;;5706:10;290:7569;;;;;;;;;;;5702:33;;290:7569;5758:30;290:7569;;;;;;;;;;5758:30;;;;-1:-1:-1;;5758:30:17;;;5627:305;-1:-1:-1;5754:172:17;;5903:12;;-1:-1:-1;5903:12:17;:::o;5754:172::-;5863:7;;290:7569;;;5840:31;5833:38;:::o;5758:30::-;;;;;290:7569;5758:30;290:7569;5758:30;;;;;;;:::i;:::-;;;;;5702:33;5724:11;;5731:4;5724:11;:::o;2431:307:6:-;1755:1;2558:7;290:7569:17;2558:18:6;2554:86;;1755:1;2558:7;290:7569:17;2431:307:6:o;2554:86::-;290:7569:17;;-1:-1:-1;;;2599:30:6;;;;;290:7569:17;;-1:-1:-1;;;;;290:7569:17;;;;;;;:::o;:::-;;;;:::o;:::-;;;-1:-1:-1;;;290:7569:17;;;;;;;;;;;;-1:-1:-1;;;290:7569:17;;;;;;;1303:160:3;290:7569:17;;-1:-1:-1;;;1412:43:3;;;;;;-1:-1:-1;;;;;290:7569:17;;;1412:43:3;;;290:7569:17;;;;;;;;;1412:43:3;;;290:7569:17;;;;;;;;;;;;;;3510:55:4;290:7569:17;-1:-1:-1;290:7569:17;;;;;;3462:31:4;;;;;;;;;:::i;:::-;3510:55;;;:::i;:::-;290:7569:17;;4551:22:3;;;;:57;;;;1303:160;4547:135;;;;1303:160;:::o;4547:135::-;1412:43;290:7569:17;;;4631:40:3;;;;;;;;;290:7569:17;4631:40:3;4551:57;4578:30;;;;1412:43;4578:30;;;290:7569:17;;;;1412:43:3;4578:30;290:7569:17;;;;;;;;;4551:57:3;;;;4625:582:4;;4797:8;;-1:-1:-1;290:7569:17;;5874:21:4;:17;;6046:142;;;;;;5870:383;290:7569:17;;-1:-1:-1;;;6225:17:4;;;;;4793:408;290:7569:17;;5045:22:4;:49;;;4793:408;5041:119;;5173:17;;:::o;5041:119::-;290:7569:17;;-1:-1:-1;;;5121:24:4;;-1:-1:-1;;;;;290:7569:17;;;5121:24:4;;;290:7569:17;;;5121:24:4;5045:49;5071:18;;;:23;5045:49;","linkReferences":{},"immutableReferences":{"1954":[{"start":1115,"length":32},{"start":2173,"length":32},{"start":6247,"length":32}]}},"methodIdentifiers":{"EMERGENCY_TIMELOCK()":"60d7442b","FLASH_LOAN_TIMEOUT()":"37229f05","MAX_CONCURRENT_FLASH_LOANS()":"0515b6fa","addValidPool(address)":"0abe6fb5","authorizedCallers(address)":"536fff6c","calculateFlashSwapFee(address,uint256,uint256)":"62e0cd29","canExecuteEmergencyWithdraw(bytes32)":"2275566d","cancelEmergencyWithdraw(bytes32)":"fbe1a43f","emergencyCleanupFlashLoan(bytes32)":"2bfd3150","emergencyRequests(bytes32)":"0557ac41","emergencyWithdraw(address,uint256)":"95ccea67","executeEmergencyWithdraw(bytes32)":"9ad3ec48","executeFlashSwap(address,(address,address,uint256,uint256,address,bytes))":"87d103b2","factory()":"c45a0155","getActiveFlashLoans(address)":"8facc192","owner()":"8da5cb5b","removeValidPool(address)":"cee5e02e","renounceOwnership()":"715018a6","requestEmergencyWithdraw(address,uint256)":"7c7f4ce5","setAuthorizedCaller(address,bool)":"454bbd29","transferOwnership(address)":"f2fde38b","uniswapV3FlashCallback(uint256,uint256,bytes)":"e9cbafb0","validPools(address)":"93368fdf"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_factory\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"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\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"requestId\",\"type\":\"bytes32\"}],\"name\":\"EmergencyWithdrawCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"requestId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"EmergencyWithdrawExecuted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"requestId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"executeAfter\",\"type\":\"uint256\"}],\"name\":\"EmergencyWithdrawRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"flashId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"FlashLoanCompleted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"flashId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"name\":\"FlashLoanInitiated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token0\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token1\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"FlashSwapExecuted\",\"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\":\"EMERGENCY_TIMELOCK\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FLASH_LOAN_TIMEOUT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_CONCURRENT_FLASH_LOANS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"addValidPool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"authorizedCallers\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"name\":\"calculateFlashSwapFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"fee0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee1\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"requestId\",\"type\":\"bytes32\"}],\"name\":\"canExecuteEmergencyWithdraw\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"requestId\",\"type\":\"bytes32\"}],\"name\":\"cancelEmergencyWithdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"flashId\",\"type\":\"bytes32\"}],\"name\":\"emergencyCleanupFlashLoan\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"emergencyRequests\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"executeAfter\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"executed\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"emergencyWithdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"requestId\",\"type\":\"bytes32\"}],\"name\":\"executeEmergencyWithdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token0\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token1\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IFlashSwapper.FlashSwapParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"executeFlashSwap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"contract IUniswapV3Factory\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getActiveFlashLoans\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"removeValidPool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"requestEmergencyWithdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"authorized\",\"type\":\"bool\"}],\"name\":\"setAuthorizedCaller\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"fee0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee1\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"uniswapV3FlashCallback\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"validPools\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"AddressInsufficientBalance(address)\":[{\"details\":\"The ETH balance of the account is not enough to perform the operation.\"}],\"FailedInnerCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}],\"SafeERC20FailedOperation(address)\":[{\"details\":\"An operation with an ERC20 token failed.\"}]},\"events\":{\"FlashSwapExecuted(address,address,address,uint256,uint256,address)\":{\"params\":{\"amount0\":\"The amount of token0 that was borrowed\",\"amount1\":\"The amount of token1 that was borrowed\",\"pool\":\"The address of the liquidity pool used for the flash swap\",\"to\":\"The address that received the borrowed tokens\",\"token0\":\"The address of the first token in the pair\",\"token1\":\"The address of the second token in the pair\"}}},\"kind\":\"dev\",\"methods\":{\"calculateFlashSwapFee(address,uint256,uint256)\":{\"details\":\"V3 pools have dynamic fees that depend on the pool's fee tier\",\"params\":{\"amount0\":\"The amount of token0 being borrowed\",\"amount1\":\"The amount of token1 being borrowed\",\"pool\":\"The address of the V3 pool\"},\"returns\":{\"fee0\":\"The fee required for borrowing token0\",\"fee1\":\"The fee required for borrowing token1\"}},\"canExecuteEmergencyWithdraw(bytes32)\":{\"params\":{\"requestId\":\"The ID of the emergency withdrawal request\"}},\"cancelEmergencyWithdraw(bytes32)\":{\"details\":\"Only the owner can cancel pending requests\",\"params\":{\"requestId\":\"The ID of the emergency withdrawal request to cancel\"}},\"emergencyWithdraw(address,uint256)\":{\"details\":\"TODO: Remove in production deployment - use requestEmergencyWithdraw instead\",\"params\":{\"amount\":\"The amount of tokens to withdraw\",\"token\":\"The address of the token to withdraw (address(0) for ETH)\"}},\"executeEmergencyWithdraw(bytes32)\":{\"details\":\"Can only be executed after the timelock period has passed\",\"params\":{\"requestId\":\"The ID of the emergency withdrawal request\"}},\"executeFlashSwap(address,(address,address,uint256,uint256,address,bytes))\":{\"details\":\"Main entry point for flash swap execution. Validates parameters and delegates to the protocol-specific implementation\",\"params\":{\"params\":\"The flash swap parameters including tokens, amounts, and callback data\",\"pool\":\"The address of the liquidity pool to execute the flash swap on\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"requestEmergencyWithdraw(address,uint256)\":{\"details\":\"Only the contract owner can call this function. Creates a timelock request that must be executed after the timelock period expires\",\"params\":{\"amount\":\"The amount of tokens to withdraw\",\"token\":\"The address of the token to withdraw (address(0) for ETH)\"}},\"setAuthorizedCaller(address,bool)\":{\"details\":\"Only the contract owner can modify authorization status\",\"params\":{\"authorized\":\"Whether the caller should be authorized (true) or not (false)\",\"caller\":\"The address to update authorization for\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"uniswapV3FlashCallback(uint256,uint256,bytes)\":{\"details\":\"In the implementation you must repay the pool the tokens sent by flash plus the computed fee amounts. The caller of this method must be checked to be a UniswapV3Pool deployed by the canonical UniswapV3Factory.\",\"params\":{\"data\":\"Any data passed through by the caller via the IUniswapV3PoolActions#flash call\",\"fee0\":\"The fee amount in token0 due to the pool by the end of the flash\",\"fee1\":\"The fee amount in token1 due to the pool by the end of the flash\"}}},\"version\":1},\"userdoc\":{\"events\":{\"FlashSwapExecuted(address,address,address,uint256,uint256,address)\":{\"notice\":\"Emitted when a flash swap is successfully executed\"}},\"kind\":\"user\",\"methods\":{\"authorizedCallers(address)\":{\"notice\":\"Mapping to track addresses authorized to call flash swap functions\"},\"calculateFlashSwapFee(address,uint256,uint256)\":{\"notice\":\"Calculates the fees required for a V3 flash swap\"},\"canExecuteEmergencyWithdraw(bytes32)\":{\"notice\":\"Check if an emergency withdrawal request can be executed\"},\"cancelEmergencyWithdraw(bytes32)\":{\"notice\":\"Cancel a pending emergency withdrawal request\"},\"emergencyWithdraw(address,uint256)\":{\"notice\":\"Legacy emergency withdraw for backward compatibility with tests\"},\"executeEmergencyWithdraw(bytes32)\":{\"notice\":\"Execute a previously requested emergency withdrawal\"},\"executeFlashSwap(address,(address,address,uint256,uint256,address,bytes))\":{\"notice\":\"Executes a flash swap with the specified parameters\"},\"requestEmergencyWithdraw(address,uint256)\":{\"notice\":\"Request an emergency withdrawal with timelock protection\"},\"setAuthorizedCaller(address,bool)\":{\"notice\":\"Updates the authorization status of a caller\"},\"uniswapV3FlashCallback(uint256,uint256,bytes)\":{\"notice\":\"Called to `msg.sender` after transferring to the recipient from IUniswapV3Pool#flash.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/dex/UniswapV3FlashSwapper.sol\":\"UniswapV3FlashSwapper\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"appendCBOR\":false,\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@balancer-labs/=lib/balancer-v2-monorepo/../../node_modules/@balancer-labs/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v2-core/=lib/v2-core/contracts/\",\":@uniswap/v3-core/=lib/v3-core/contracts/\",\":Algebra/=lib/Algebra/src/\",\":balancer-v2-monorepo/=lib/balancer-v2-monorepo/\",\":curve-contract/=lib/curve-contract/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/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":smart-contracts/=lib/smart-contracts/\",\":v2-core/=lib/v2-core/contracts/\",\":v3-core/=lib/v3-core/\",\":v3-periphery/=lib/v3-periphery/contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x6008dabfe393240d73d7dd7688033f72740d570aa422254d29a7dce8568f3aff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5196ec75139918c6c7bb4251b36395e668f1fa6d206beba7e7520e74913940d\",\"dweb:/ipfs/QmSyqjksXxmm2mCG6qRd1yuwLykypkSVBbnBnGqJRcuJMi\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x37bb49513c49c87c4642a891b13b63571bc87013dde806617aa1efb54605f386\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b3036b3a83b7c48f96641f2a9002b9f2dcb6a5958dd670894ada21ae8229b3d0\",\"dweb:/ipfs/QmUNfSBdoVtjhETaUJCYcaC7pTMgbhht926tJ2uXJbiVd3\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x75a4ee64c68dbd5f38bddd06e664a64c8271b4caa554fb6f0607dfd672bb4bf3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0c4e6cb30d3601e2f7af5af09e265508147cb275a8dcd99d6f7363645cc56867\",\"dweb:/ipfs/QmNgFkoXNWoUbAyw71rr1sKQ95Rj2GfvYiWg79xEYDn2NY\"]},\"lib/openzeppelin-contracts/contracts/utils/ReentrancyGuard.sol\":{\"keccak256\":\"0xf980daa263b661ab8ddee7d4fd833c7da7e7995e2c359ff1f17e67e4112f2236\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7448ab095d6940130bcf76ba47a2eab14148c83119523b93dd89f6d84edd6c02\",\"dweb:/ipfs/QmawrZ4voKQjH3oomXT3Kuheb3Mnmo2VvVpxg8Ne5UJUrd\"]},\"lib/v3-core/contracts/interfaces/IUniswapV3Factory.sol\":{\"keccak256\":\"0xcc3d0c93fc9ac0febbe09f941b465b57f750bcf3b48432da0b97dc289cfdc489\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b9379ad954680c44a0bc523b314ae4c4da735f9fe1d02aa56ea5bdba6f1136f2\",\"dweb:/ipfs/QmZXdgQNXKAckrXWz9R3mc47F1fvDvr28a2ewJrwNAw71B\"]},\"lib/v3-core/contracts/interfaces/IUniswapV3Pool.sol\":{\"keccak256\":\"0xfe6113d518466cd6652c85b111e01f33eb62157f49ae5ed7d5a3947a2044adb1\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://1c42b9e6f5902ac38dd43e25750939baa7e0c1425dc75afd717c4412731065d5\",\"dweb:/ipfs/QmWaoacnzsucTvBME2o7YgZBZMhaHv7fkj83htHMVWJKWh\"]},\"lib/v3-core/contracts/interfaces/callback/IUniswapV3FlashCallback.sol\":{\"keccak256\":\"0x151ba1777392771025f0fca946c95fbc16ec4b5eff05e1f236115b99bd574de2\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://738a50c25d9d26ca3fabb1865bf6a0cdd8d7a2eec9dbfbd1fc000c81fb8e2b5e\",\"dweb:/ipfs/QmQjgCiLhrq5eLJgQcVHV24MRHyf6YdVzrGH8Ms7LnSSRA\"]},\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol\":{\"keccak256\":\"0x9453dd0e7442188667d01d9b65de3f1e14e9511ff3e303179a15f6fc267f7634\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://982f4328f956c3e60e67501e759eb292ac487f76460c774c50e9ae4fcc92aae5\",\"dweb:/ipfs/QmRnzEDsaqtd9PJEVcgQi7p5aV5pMSvRUoGZJAdwFUJxgZ\"]},\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol\":{\"keccak256\":\"0xe603ac5b17ecdee73ba2b27efdf386c257a19c14206e87eee77e2017b742d9e5\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://8febc9bdb399a4d94bb89f5377732652e2400e4a8dee808201ade6848f9004e7\",\"dweb:/ipfs/QmaKDqYYFU4d2W2iN77aDHptfbFmYZRrMYXHeGpJmM8C1c\"]},\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol\":{\"keccak256\":\"0x8071514d0fe5d17d6fbd31c191cdfb703031c24e0ece3621d88ab10e871375cd\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://d0b571930cc7488b1d546a7e9cea7c52d8b3c4e207da657ed0e0db7343b8cd03\",\"dweb:/ipfs/QmaGK6vVwB95QSTR1XMYvrh7ivYAYZxi3fD7v6VMA4jZ39\"]},\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol\":{\"keccak256\":\"0xf6e5d2cd1139c4c276bdbc8e1d2b256e456c866a91f1b868da265c6d2685c3f7\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b99c8c9ae8e27ee6559e5866bea82cbc9ffc8247f8d15b7422a4deb287d4d047\",\"dweb:/ipfs/QmfL8gaqt3ffAnm6nVj5ksuNpLygXuL3xq5VBqrkwC2JJ3\"]},\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol\":{\"keccak256\":\"0x759b78a2918af9e99e246dc3af084f654e48ef32bb4e4cb8a966aa3dcaece235\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://64144fb96e1c7fdba87305acadb98a198d26a3d46c097cb3a666e567f6f29735\",\"dweb:/ipfs/QmUnWVwN9FKB9uV5Pr8YfLpWZnYM2DENnRMaadZ492JS9u\"]},\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol\":{\"keccak256\":\"0x852dc1f5df7dcf7f11e7bb3eed79f0cea72ad4b25f6a9d2c35aafb48925fd49f\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://ed63907c38ff36b0e22bc9ffc53e791ea74f0d4f0e7c257fdfb5aaf8825b1f0f\",\"dweb:/ipfs/QmSQrckghEjs6HVsA5GVgpNpZWvTXMY5eQLF7cN6deFeEg\"]},\"src/core/BaseFlashSwapper.sol\":{\"keccak256\":\"0x5a692e2ce1630b905d546e446a8797a5425c36e6855c7933caeaa6437032f98f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c75f9d119aa25f4bad3ee9373b40dd2b11e6aa2e1c8b26c943d58153a3c14de7\",\"dweb:/ipfs/Qmb1c6AJnMZ2vxEiDRWDAjWmKyogUMcrUqvQbHCnLEebbx\"]},\"src/dex/UniswapV3FlashSwapper.sol\":{\"keccak256\":\"0x03622ed052ec5a1d54520ca461b05efb0a8517f538d8cfd41b9c2dfd82f420af\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6ea2db8e83506a63a59caac5fe7bad41cde3fce094ac8c704e333edf294c988a\",\"dweb:/ipfs/QmX1pCEVfKDc36ZFVYo1Nq3AGWNT3mccsH3KbQXrKoBeUT\"]},\"src/interfaces/IFlashSwapper.sol\":{\"keccak256\":\"0x61c05e0f7e8be39b7e5615cafc57ff719f16b9bd356921d9bd9bb96162090ca5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://31354ca48b047f91eb06417c6d96f2ae4e9ee9e853ca088a54aded8d74045758\",\"dweb:/ipfs/Qmc8LF6fwYqPLmqQUnJttqJA2adWyXJSwUiwpqvcqbvnG6\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.24+commit.e11b9ed9"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_factory","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"type":"error","name":"AddressEmptyCode"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"type":"error","name":"AddressInsufficientBalance"},{"inputs":[],"type":"error","name":"FailedInnerCall"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"OwnableInvalidOwner"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"type":"error","name":"OwnableUnauthorizedAccount"},{"inputs":[],"type":"error","name":"ReentrancyGuardReentrantCall"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"type":"error","name":"SafeERC20FailedOperation"},{"inputs":[{"internalType":"bytes32","name":"requestId","type":"bytes32","indexed":true}],"type":"event","name":"EmergencyWithdrawCancelled","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"requestId","type":"bytes32","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"EmergencyWithdrawExecuted","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"requestId","type":"bytes32","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"uint256","name":"executeAfter","type":"uint256","indexed":false}],"type":"event","name":"EmergencyWithdrawRequested","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"flashId","type":"bytes32","indexed":true},{"internalType":"address","name":"pool","type":"address","indexed":true}],"type":"event","name":"FlashLoanCompleted","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"flashId","type":"bytes32","indexed":true},{"internalType":"address","name":"pool","type":"address","indexed":true},{"internalType":"uint256","name":"amount0","type":"uint256","indexed":false},{"internalType":"uint256","name":"amount1","type":"uint256","indexed":false}],"type":"event","name":"FlashLoanInitiated","anonymous":false},{"inputs":[{"internalType":"address","name":"pool","type":"address","indexed":true},{"internalType":"address","name":"token0","type":"address","indexed":true},{"internalType":"address","name":"token1","type":"address","indexed":true},{"internalType":"uint256","name":"amount0","type":"uint256","indexed":false},{"internalType":"uint256","name":"amount1","type":"uint256","indexed":false},{"internalType":"address","name":"to","type":"address","indexed":false}],"type":"event","name":"FlashSwapExecuted","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"EMERGENCY_TIMELOCK","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"FLASH_LOAN_TIMEOUT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MAX_CONCURRENT_FLASH_LOANS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"addValidPool"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"authorizedCallers","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256","name":"amount0","type":"uint256"},{"internalType":"uint256","name":"amount1","type":"uint256"}],"stateMutability":"view","type":"function","name":"calculateFlashSwapFee","outputs":[{"internalType":"uint256","name":"fee0","type":"uint256"},{"internalType":"uint256","name":"fee1","type":"uint256"}]},{"inputs":[{"internalType":"bytes32","name":"requestId","type":"bytes32"}],"stateMutability":"view","type":"function","name":"canExecuteEmergencyWithdraw","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"bytes32","name":"requestId","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"cancelEmergencyWithdraw"},{"inputs":[{"internalType":"bytes32","name":"flashId","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"emergencyCleanupFlashLoan"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function","name":"emergencyRequests","outputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"executeAfter","type":"uint256"},{"internalType":"bool","name":"executed","type":"bool"}]},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"emergencyWithdraw"},{"inputs":[{"internalType":"bytes32","name":"requestId","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"executeEmergencyWithdraw"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"struct IFlashSwapper.FlashSwapParams","name":"params","type":"tuple","components":[{"internalType":"address","name":"token0","type":"address"},{"internalType":"address","name":"token1","type":"address"},{"internalType":"uint256","name":"amount0","type":"uint256"},{"internalType":"uint256","name":"amount1","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}]}],"stateMutability":"nonpayable","type":"function","name":"executeFlashSwap"},{"inputs":[],"stateMutability":"view","type":"function","name":"factory","outputs":[{"internalType":"contract IUniswapV3Factory","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"stateMutability":"view","type":"function","name":"getActiveFlashLoans","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"removeValidPool"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"requestEmergencyWithdraw"},{"inputs":[{"internalType":"address","name":"caller","type":"address"},{"internalType":"bool","name":"authorized","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setAuthorizedCaller"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[{"internalType":"uint256","name":"fee0","type":"uint256"},{"internalType":"uint256","name":"fee1","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"uniswapV3FlashCallback"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"validPools","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"payable","type":"receive"}],"devdoc":{"kind":"dev","methods":{"calculateFlashSwapFee(address,uint256,uint256)":{"details":"V3 pools have dynamic fees that depend on the pool's fee tier","params":{"amount0":"The amount of token0 being borrowed","amount1":"The amount of token1 being borrowed","pool":"The address of the V3 pool"},"returns":{"fee0":"The fee required for borrowing token0","fee1":"The fee required for borrowing token1"}},"canExecuteEmergencyWithdraw(bytes32)":{"params":{"requestId":"The ID of the emergency withdrawal request"}},"cancelEmergencyWithdraw(bytes32)":{"details":"Only the owner can cancel pending requests","params":{"requestId":"The ID of the emergency withdrawal request to cancel"}},"emergencyWithdraw(address,uint256)":{"details":"TODO: Remove in production deployment - use requestEmergencyWithdraw instead","params":{"amount":"The amount of tokens to withdraw","token":"The address of the token to withdraw (address(0) for ETH)"}},"executeEmergencyWithdraw(bytes32)":{"details":"Can only be executed after the timelock period has passed","params":{"requestId":"The ID of the emergency withdrawal request"}},"executeFlashSwap(address,(address,address,uint256,uint256,address,bytes))":{"details":"Main entry point for flash swap execution. Validates parameters and delegates to the protocol-specific implementation","params":{"params":"The flash swap parameters including tokens, amounts, and callback data","pool":"The address of the liquidity pool to execute the flash swap on"}},"owner()":{"details":"Returns the address of the current owner."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"requestEmergencyWithdraw(address,uint256)":{"details":"Only the contract owner can call this function. Creates a timelock request that must be executed after the timelock period expires","params":{"amount":"The amount of tokens to withdraw","token":"The address of the token to withdraw (address(0) for ETH)"}},"setAuthorizedCaller(address,bool)":{"details":"Only the contract owner can modify authorization status","params":{"authorized":"Whether the caller should be authorized (true) or not (false)","caller":"The address to update authorization for"}},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."},"uniswapV3FlashCallback(uint256,uint256,bytes)":{"details":"In the implementation you must repay the pool the tokens sent by flash plus the computed fee amounts. The caller of this method must be checked to be a UniswapV3Pool deployed by the canonical UniswapV3Factory.","params":{"data":"Any data passed through by the caller via the IUniswapV3PoolActions#flash call","fee0":"The fee amount in token0 due to the pool by the end of the flash","fee1":"The fee amount in token1 due to the pool by the end of the flash"}}},"version":1},"userdoc":{"kind":"user","methods":{"authorizedCallers(address)":{"notice":"Mapping to track addresses authorized to call flash swap functions"},"calculateFlashSwapFee(address,uint256,uint256)":{"notice":"Calculates the fees required for a V3 flash swap"},"canExecuteEmergencyWithdraw(bytes32)":{"notice":"Check if an emergency withdrawal request can be executed"},"cancelEmergencyWithdraw(bytes32)":{"notice":"Cancel a pending emergency withdrawal request"},"emergencyWithdraw(address,uint256)":{"notice":"Legacy emergency withdraw for backward compatibility with tests"},"executeEmergencyWithdraw(bytes32)":{"notice":"Execute a previously requested emergency withdrawal"},"executeFlashSwap(address,(address,address,uint256,uint256,address,bytes))":{"notice":"Executes a flash swap with the specified parameters"},"requestEmergencyWithdraw(address,uint256)":{"notice":"Request an emergency withdrawal with timelock protection"},"setAuthorizedCaller(address,bool)":{"notice":"Updates the authorization status of a caller"},"uniswapV3FlashCallback(uint256,uint256,bytes)":{"notice":"Called to `msg.sender` after transferring to the recipient from IUniswapV3Pool#flash."}},"version":1}},"settings":{"remappings":["@balancer-labs/=lib/balancer-v2-monorepo/../../node_modules/@balancer-labs/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@uniswap/v2-core/=lib/v2-core/contracts/","@uniswap/v3-core/=lib/v3-core/contracts/","Algebra/=lib/Algebra/src/","balancer-v2-monorepo/=lib/balancer-v2-monorepo/","curve-contract/=lib/curve-contract/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/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/","smart-contracts/=lib/smart-contracts/","v2-core/=lib/v2-core/contracts/","v3-core/=lib/v3-core/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"none","appendCBOR":false},"compilationTarget":{"src/dex/UniswapV3FlashSwapper.sol":"UniswapV3FlashSwapper"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/access/Ownable.sol":{"keccak256":"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb","urls":["bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6","dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70","urls":["bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c","dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol":{"keccak256":"0x6008dabfe393240d73d7dd7688033f72740d570aa422254d29a7dce8568f3aff","urls":["bzz-raw://f5196ec75139918c6c7bb4251b36395e668f1fa6d206beba7e7520e74913940d","dweb:/ipfs/QmSyqjksXxmm2mCG6qRd1yuwLykypkSVBbnBnGqJRcuJMi"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0x37bb49513c49c87c4642a891b13b63571bc87013dde806617aa1efb54605f386","urls":["bzz-raw://b3036b3a83b7c48f96641f2a9002b9f2dcb6a5958dd670894ada21ae8229b3d0","dweb:/ipfs/QmUNfSBdoVtjhETaUJCYcaC7pTMgbhht926tJ2uXJbiVd3"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721","urls":["bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245","dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x75a4ee64c68dbd5f38bddd06e664a64c8271b4caa554fb6f0607dfd672bb4bf3","urls":["bzz-raw://0c4e6cb30d3601e2f7af5af09e265508147cb275a8dcd99d6f7363645cc56867","dweb:/ipfs/QmNgFkoXNWoUbAyw71rr1sKQ95Rj2GfvYiWg79xEYDn2NY"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/ReentrancyGuard.sol":{"keccak256":"0xf980daa263b661ab8ddee7d4fd833c7da7e7995e2c359ff1f17e67e4112f2236","urls":["bzz-raw://7448ab095d6940130bcf76ba47a2eab14148c83119523b93dd89f6d84edd6c02","dweb:/ipfs/QmawrZ4voKQjH3oomXT3Kuheb3Mnmo2VvVpxg8Ne5UJUrd"],"license":"MIT"},"lib/v3-core/contracts/interfaces/IUniswapV3Factory.sol":{"keccak256":"0xcc3d0c93fc9ac0febbe09f941b465b57f750bcf3b48432da0b97dc289cfdc489","urls":["bzz-raw://b9379ad954680c44a0bc523b314ae4c4da735f9fe1d02aa56ea5bdba6f1136f2","dweb:/ipfs/QmZXdgQNXKAckrXWz9R3mc47F1fvDvr28a2ewJrwNAw71B"],"license":"GPL-2.0-or-later"},"lib/v3-core/contracts/interfaces/IUniswapV3Pool.sol":{"keccak256":"0xfe6113d518466cd6652c85b111e01f33eb62157f49ae5ed7d5a3947a2044adb1","urls":["bzz-raw://1c42b9e6f5902ac38dd43e25750939baa7e0c1425dc75afd717c4412731065d5","dweb:/ipfs/QmWaoacnzsucTvBME2o7YgZBZMhaHv7fkj83htHMVWJKWh"],"license":"GPL-2.0-or-later"},"lib/v3-core/contracts/interfaces/callback/IUniswapV3FlashCallback.sol":{"keccak256":"0x151ba1777392771025f0fca946c95fbc16ec4b5eff05e1f236115b99bd574de2","urls":["bzz-raw://738a50c25d9d26ca3fabb1865bf6a0cdd8d7a2eec9dbfbd1fc000c81fb8e2b5e","dweb:/ipfs/QmQjgCiLhrq5eLJgQcVHV24MRHyf6YdVzrGH8Ms7LnSSRA"],"license":"GPL-2.0-or-later"},"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol":{"keccak256":"0x9453dd0e7442188667d01d9b65de3f1e14e9511ff3e303179a15f6fc267f7634","urls":["bzz-raw://982f4328f956c3e60e67501e759eb292ac487f76460c774c50e9ae4fcc92aae5","dweb:/ipfs/QmRnzEDsaqtd9PJEVcgQi7p5aV5pMSvRUoGZJAdwFUJxgZ"],"license":"GPL-2.0-or-later"},"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol":{"keccak256":"0xe603ac5b17ecdee73ba2b27efdf386c257a19c14206e87eee77e2017b742d9e5","urls":["bzz-raw://8febc9bdb399a4d94bb89f5377732652e2400e4a8dee808201ade6848f9004e7","dweb:/ipfs/QmaKDqYYFU4d2W2iN77aDHptfbFmYZRrMYXHeGpJmM8C1c"],"license":"GPL-2.0-or-later"},"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol":{"keccak256":"0x8071514d0fe5d17d6fbd31c191cdfb703031c24e0ece3621d88ab10e871375cd","urls":["bzz-raw://d0b571930cc7488b1d546a7e9cea7c52d8b3c4e207da657ed0e0db7343b8cd03","dweb:/ipfs/QmaGK6vVwB95QSTR1XMYvrh7ivYAYZxi3fD7v6VMA4jZ39"],"license":"GPL-2.0-or-later"},"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol":{"keccak256":"0xf6e5d2cd1139c4c276bdbc8e1d2b256e456c866a91f1b868da265c6d2685c3f7","urls":["bzz-raw://b99c8c9ae8e27ee6559e5866bea82cbc9ffc8247f8d15b7422a4deb287d4d047","dweb:/ipfs/QmfL8gaqt3ffAnm6nVj5ksuNpLygXuL3xq5VBqrkwC2JJ3"],"license":"GPL-2.0-or-later"},"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol":{"keccak256":"0x759b78a2918af9e99e246dc3af084f654e48ef32bb4e4cb8a966aa3dcaece235","urls":["bzz-raw://64144fb96e1c7fdba87305acadb98a198d26a3d46c097cb3a666e567f6f29735","dweb:/ipfs/QmUnWVwN9FKB9uV5Pr8YfLpWZnYM2DENnRMaadZ492JS9u"],"license":"GPL-2.0-or-later"},"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol":{"keccak256":"0x852dc1f5df7dcf7f11e7bb3eed79f0cea72ad4b25f6a9d2c35aafb48925fd49f","urls":["bzz-raw://ed63907c38ff36b0e22bc9ffc53e791ea74f0d4f0e7c257fdfb5aaf8825b1f0f","dweb:/ipfs/QmSQrckghEjs6HVsA5GVgpNpZWvTXMY5eQLF7cN6deFeEg"],"license":"GPL-2.0-or-later"},"src/core/BaseFlashSwapper.sol":{"keccak256":"0x5a692e2ce1630b905d546e446a8797a5425c36e6855c7933caeaa6437032f98f","urls":["bzz-raw://c75f9d119aa25f4bad3ee9373b40dd2b11e6aa2e1c8b26c943d58153a3c14de7","dweb:/ipfs/Qmb1c6AJnMZ2vxEiDRWDAjWmKyogUMcrUqvQbHCnLEebbx"],"license":"MIT"},"src/dex/UniswapV3FlashSwapper.sol":{"keccak256":"0x03622ed052ec5a1d54520ca461b05efb0a8517f538d8cfd41b9c2dfd82f420af","urls":["bzz-raw://6ea2db8e83506a63a59caac5fe7bad41cde3fce094ac8c704e333edf294c988a","dweb:/ipfs/QmX1pCEVfKDc36ZFVYo1Nq3AGWNT3mccsH3KbQXrKoBeUT"],"license":"MIT"},"src/interfaces/IFlashSwapper.sol":{"keccak256":"0x61c05e0f7e8be39b7e5615cafc57ff719f16b9bd356921d9bd9bb96162090ca5","urls":["bzz-raw://31354ca48b047f91eb06417c6d96f2ae4e9ee9e853ca088a54aded8d74045758","dweb:/ipfs/Qmc8LF6fwYqPLmqQUnJttqJA2adWyXJSwUiwpqvcqbvnG6"],"license":"MIT"}},"version":1},"id":17} |