ETH Price: $3,040.98 (+3.10%)

Transaction Decoder

Block:
21972442 at Mar-04-2025 08:50:47 AM +UTC
Transaction Fee:
0.000141799 ETH $0.43
Gas Used:
202,570 Gas / 0.7 Gwei

Emitted Events:

515 UUPSProxy.0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925( 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925, 0x000000000000000000000000c5d65ce2dfc2ee9f215aee043f5b5811ef7b5e28, 0x00000000000000000000000077a917df7a084b7b3e43517ae28373c2a5492625, 0000000000000000000000000000000000000000000000000000000000000000 )
516 UUPSProxy.0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef( 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef, 0x000000000000000000000000c5d65ce2dfc2ee9f215aee043f5b5811ef7b5e28, 0x000000000000000000000000a1bea5fe917450041748dbbbe7e9ac57a4bbebab, 00000000000000000000000000000000000000000000000000005af3107a4000 )
517 UUPSProxy.0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925( 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925, 0x000000000000000000000000a1bea5fe917450041748dbbbe7e9ac57a4bbebab, 0x0000000000000000000000000000000000001ff3684f28c67538d4d072c22734, 00000000000000000000000000000000000000000000000000005af3107a4000 )
518 WETH9.Transfer( src=UniswapV3Pool, dst=MainnetSettler, wad=106102154611007 )
519 UUPSProxy.0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925( 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925, 0x000000000000000000000000a1bea5fe917450041748dbbbe7e9ac57a4bbebab, 0x0000000000000000000000000000000000001ff3684f28c67538d4d072c22734, 0000000000000000000000000000000000000000000000000000000000000000 )
520 UUPSProxy.0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef( 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef, 0x000000000000000000000000a1bea5fe917450041748dbbbe7e9ac57a4bbebab, 0x000000000000000000000000202a6012894ae5c288ea824cbc8a9bfb26a49b93, 00000000000000000000000000000000000000000000000000005af3107a4000 )
521 UniswapV3Pool.Swap( sender=MainnetSettler, recipient=MainnetSettler, amount0=-106102154611007, amount1=100000000000000, sqrtPriceX96=76912294256291092513161841701, liquidity=10300625462919899211504959, tick=-594 )
522 WETH9.Withdrawal( src=MainnetSettler, wad=106102154611007 )

Account State Difference:

  Address   Before After State Difference Code
0x202A6012...b26A49b93
(Uniswap V3: weETH 2)
(beaverbuild)
9.88671569466945167 Eth9.88672298895809034 Eth0.00000729428863867
0xC02aaA39...83C756Cc2 2,866,819.060127915737370771 Eth2,866,819.060021813582759764 Eth0.000106102154611007
0xc5d65cE2...1eF7B5e28
0.020019997891919612 Eth
Nonce: 150
0.019984301046530619 Eth
Nonce: 151
0.000035696845388993
0xCd5fE23C...3E359b7ee

Execution Trace

ApprovalProxy.transferAndMulticall( tokens=[0xCd5fE23C85820F7B72D0926FC9b05b43E359b7ee], amounts=[100000000000000], targets=[0xCd5fE23C85820F7B72D0926FC9b05b43E359b7ee, 0xf70da97812CB96acDF810712Aa562db8dfA3dbEF, 0x0000000000001fF3684f28c67538d4D072C22734], datas=[CV6nswAAAAAAAAAAAAAAAAAAAAAAAB/zaE8oxnU41NBywic0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABa8xB6QAA=, , IhO8CwAAAAAAAAAAAAAAAA0ONkqnhSKRiDwWKyLW2B9jVUKPAAAAAAAAAAAAAAAAzV/iPIWCD3ty0JJvybBbQ+NZt+4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFrzEHpAAAAAAAAAAAAAAAAAAA0ONkqnhSKRiDwWKyLW2B9jVUKPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBB//mR8AAAAAAAAAAAAAAAChvqX+kXRQBBdI27vn6axXpLvrqwAAAAAAAAAAAAAAAO7u7u7u7u7u7u7u7u7u7u7u7u7uAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABfiMtsTtwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoA8mDpZ1jkUZKMeQyAr0PAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYQizm7eAAAAAAAAAAAAAAAADQ42SqeFIpGIPBYrItbYH2NVQo8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAM1f4jyFgg97ctCSb8mwW0PjWbfuAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABa8xB6QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABnxr/MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAszV/iPIWCD3ty0JJvybBbQ+NZt+4AAABkwCqqObIj/o0KDlxPJ+rZCDx1bMIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEEOMnBRwAAAAAAAAAAAAAAAMAqqjmyI/6NCg5cTyfq2Qg8dWzCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJxAAAAAAAAAAAAAAAADAKqo5siP+jQoOXE8n6tkIPHVswgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJC4afU0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==], values=[0, 0, 0], refundTo=0xc5d65cE2Dfc2EE9F215aee043f5B5811eF7B5e28 ) => ( 0x00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000A000000000000000000000000000000000000000000000000000000000000000C00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000001 )
  • UUPSProxy.23b872dd( )
    • WeETH.transferFrom( from=0xc5d65cE2Dfc2EE9F215aee043f5B5811eF7B5e28, to=0xA1BEa5fe917450041748Dbbbe7E9AC57A4bBEBaB, amount=100000000000000 ) => ( True )
    • ERC20Router.delegatecallMulticall( targets=[0xCd5fE23C85820F7B72D0926FC9b05b43E359b7ee, 0xf70da97812CB96acDF810712Aa562db8dfA3dbEF, 0x0000000000001fF3684f28c67538d4D072C22734], datas=[CV6nswAAAAAAAAAAAAAAAAAAAAAAAB/zaE8oxnU41NBywic0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABa8xB6QAA=, , IhO8CwAAAAAAAAAAAAAAAA0ONkqnhSKRiDwWKyLW2B9jVUKPAAAAAAAAAAAAAAAAzV/iPIWCD3ty0JJvybBbQ+NZt+4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFrzEHpAAAAAAAAAAAAAAAAAAA0ONkqnhSKRiDwWKyLW2B9jVUKPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBB//mR8AAAAAAAAAAAAAAAChvqX+kXRQBBdI27vn6axXpLvrqwAAAAAAAAAAAAAAAO7u7u7u7u7u7u7u7u7u7u7u7u7uAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABfiMtsTtwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoA8mDpZ1jkUZKMeQyAr0PAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYQizm7eAAAAAAAAAAAAAAAADQ42SqeFIpGIPBYrItbYH2NVQo8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAM1f4jyFgg97ctCSb8mwW0PjWbfuAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABa8xB6QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABnxr/MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAszV/iPIWCD3ty0JJvybBbQ+NZt+4AAABkwCqqObIj/o0KDlxPJ+rZCDx1bMIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEEOMnBRwAAAAAAAAAAAAAAAMAqqjmyI/6NCg5cTyfq2Qg8dWzCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJxAAAAAAAAAAAAAAAADAKqo5siP+jQoOXE8n6tkIPHVswgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJC4afU0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==], values=[0, 0, 0], refundTo=0xc5d65cE2Dfc2EE9F215aee043f5B5811eF7B5e28 ) => ( 0x00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000A000000000000000000000000000000000000000000000000000000000000000C00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000001 )
      • Multicaller.aggregate( targets=[0xCd5fE23C85820F7B72D0926FC9b05b43E359b7ee, 0xf70da97812CB96acDF810712Aa562db8dfA3dbEF, 0x0000000000001fF3684f28c67538d4D072C22734], data=[CV6nswAAAAAAAAAAAAAAAAAAAAAAAB/zaE8oxnU41NBywic0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABa8xB6QAA=, , IhO8CwAAAAAAAAAAAAAAAA0ONkqnhSKRiDwWKyLW2B9jVUKPAAAAAAAAAAAAAAAAzV/iPIWCD3ty0JJvybBbQ+NZt+4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFrzEHpAAAAAAAAAAAAAAAAAAA0ONkqnhSKRiDwWKyLW2B9jVUKPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBB//mR8AAAAAAAAAAAAAAAChvqX+kXRQBBdI27vn6axXpLvrqwAAAAAAAAAAAAAAAO7u7u7u7u7u7u7u7u7u7u7u7u7uAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABfiMtsTtwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoA8mDpZ1jkUZKMeQyAr0PAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYQizm7eAAAAAAAAAAAAAAAADQ42SqeFIpGIPBYrItbYH2NVQo8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAM1f4jyFgg97ctCSb8mwW0PjWbfuAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABa8xB6QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABnxr/MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAszV/iPIWCD3ty0JJvybBbQ+NZt+4AAABkwCqqObIj/o0KDlxPJ+rZCDx1bMIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEEOMnBRwAAAAAAAAAAAAAAAMAqqjmyI/6NCg5cTyfq2Qg8dWzCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJxAAAAAAAAAAAAAAAADAKqo5siP+jQoOXE8n6tkIPHVswgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJC4afU0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==], values=[0, 0, 0], refundTo=0xc5d65cE2Dfc2EE9F215aee043f5B5811eF7B5e28 ) => ( [AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE=, , AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB] )
        • UUPSProxy.095ea7b3( )
          • WeETH.approve( spender=0x0000000000001fF3684f28c67538d4D072C22734, amount=100000000000000 ) => ( True )
          • Relay: Solver.CALL( )
          • AllowanceHolder.2213bc0b( )
            • MainnetSettler.balanceOf( 0xA1BEa5fe917450041748Dbbbe7E9AC57A4bBEBaB )
            • MainnetSettler.execute( slippage=[{name:recipient, type:address, order:1, indexed:false, value:0xA1BEa5fe917450041748Dbbbe7E9AC57A4bBEBaB, valueString:0xA1BEa5fe917450041748Dbbbe7E9AC57A4bBEBaB}, {name:buyToken, type:address, order:2, indexed:false, value:0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE, valueString:0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE}, {name:minAmountOut, type:uint256, order:3, indexed:false, value:105041133063900, valueString:105041133063900}], actions=[Is5u3gAAAAAAAAAAAAAAAA0ONkqnhSKRiDwWKyLW2B9jVUKPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAADNX+I8hYIPe3LQkm/JsFtD41m37gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWvMQekAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZ8a/zAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALM1f4jyFgg97ctCSb8mwW0PjWbfuAAAAZMAqqjmyI/6NCg5cTyfq2Qg8dWzCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==, OMnBRwAAAAAAAAAAAAAAAMAqqjmyI/6NCg5cTyfq2Qg8dWzCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJxAAAAAAAAAAAAAAAADAKqo5siP+jQoOXE8n6tkIPHVswgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJC4afU0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=], 0F260E96758E451928C790C80AF43C0000000000000000000000000000000000 ) => ( True )
              • UniswapV3Pool.swap( recipient=0x0d0E364aa7852291883C162B22D6D81f6355428F, zeroForOne=False, amountSpecified=100000000000000, sqrtPriceLimitX96=1461446703485210103287273052203988822378723970341, data=0x0000000000000000000000000000000000000000CD5FE23C85820F7B72D0926FC9B05B43E359B7EE00000000000000000000000000000000000000000000000000005AF3107A400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000067C6BFCC01 ) => ( amount0=-106102154611007, amount1=100000000000000 )
                • WETH9.transfer( dst=0x0d0E364aa7852291883C162B22D6D81f6355428F, wad=106102154611007 ) => ( True )
                • UUPSProxy.70a08231( )
                • MainnetSettler.fa461e33( )
                • UUPSProxy.70a08231( )
                • WETH9.balanceOf( 0x0d0E364aa7852291883C162B22D6D81f6355428F ) => ( 106102154611007 )
                • WETH9.withdraw( wad=106102154611007 )
                  • ETH 0.000106102154611007 MainnetSettler.CALL( )
                  • ETH 0.000106102154611007 ERC20Router.CALL( )
                  • ETH 0.000106102154611007 0xc5d65ce2dfc2ee9f215aee043f5b5811ef7b5e28.CALL( )
                    transferAndMulticall[ApprovalProxy (ln:37)]
                    File 1 of 9: ApprovalProxy
                    1
                    2
                    3
                    4
                    5
                    6
                    7
                    8
                    9
                    10
                    11
                    12
                    13
                    14
                    15
                    16
                    // SPDX-License-Identifier: MIT
                    pragma solidity ^0.8.23;
                    import {Ownable} from "solady/src/auth/Ownable.sol";
                    import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
                    import {SafeERC20} from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
                    import {IERC20Router} from "../src/types/interfaces/IERC20Router.sol";
                    contract ApprovalProxy is Ownable {
                    using SafeERC20 for IERC20;
                    error ArrayLengthsMismatch();
                    error ERC20TransferFromFailed();
                    error NativeTransferFailed();
                    event RouterUpdated(address newRouter);
                    address public router;
                    receive() external payable {}
                    constructor(address _owner, address _router) {
                    _initializeOwner(_owner);
                    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

                    File 2 of 9: UUPSProxy
                    1
                    2
                    3
                    4
                    5
                    6
                    7
                    8
                    9
                    10
                    11
                    12
                    13
                    14
                    15
                    16
                    // SPDX-License-Identifier: MIT
                    pragma solidity 0.8.13;
                    import "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol";
                    contract UUPSProxy is ERC1967Proxy {
                    constructor(
                    address _implementation,
                    bytes memory _data
                    ) ERC1967Proxy(_implementation, _data) {}
                    }
                    // SPDX-License-Identifier: MIT
                    // OpenZeppelin Contracts (last updated v4.7.0) (proxy/ERC1967/ERC1967Proxy.sol)
                    pragma solidity ^0.8.0;
                    import "../Proxy.sol";
                    import "./ERC1967Upgrade.sol";
                    /**
                    * @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an
                    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

                    File 3 of 9: UniswapV3Pool
                    1
                    2
                    3
                    4
                    5
                    6
                    7
                    8
                    9
                    10
                    11
                    12
                    13
                    14
                    15
                    16
                    // SPDX-License-Identifier: BUSL-1.1
                    pragma solidity =0.7.6;
                    import './interfaces/IUniswapV3Pool.sol';
                    import './NoDelegateCall.sol';
                    import './libraries/LowGasSafeMath.sol';
                    import './libraries/SafeCast.sol';
                    import './libraries/Tick.sol';
                    import './libraries/TickBitmap.sol';
                    import './libraries/Position.sol';
                    import './libraries/Oracle.sol';
                    import './libraries/FullMath.sol';
                    import './libraries/FixedPoint128.sol';
                    import './libraries/TransferHelper.sol';
                    import './libraries/TickMath.sol';
                    import './libraries/LiquidityMath.sol';
                    import './libraries/SqrtPriceMath.sol';
                    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

                    File 4 of 9: MainnetSettler
                    1
                    2
                    3
                    4
                    5
                    6
                    7
                    8
                    9
                    10
                    11
                    12
                    13
                    14
                    15
                    16
                    // SPDX-License-Identifier: MIT
                    pragma solidity =0.8.25 >=0.6.2 >=0.8.25 ^0.8.0 ^0.8.25;
                    // lib/forge-std/src/interfaces/IERC165.sol
                    interface IERC165 {
                    /// @notice Query if a contract implements an interface
                    /// @param interfaceID The interface identifier, as specified in ERC-165
                    /// @dev Interface identification is specified in ERC-165. This function
                    /// uses less than 30,000 gas.
                    /// @return `true` if the contract implements `interfaceID` and
                    /// `interfaceID` is not 0xffffffff, `false` otherwise
                    function supportsInterface(bytes4 interfaceID) external view returns (bool);
                    }
                    // lib/forge-std/src/interfaces/IERC20.sol
                    /// @dev Interface of the ERC20 standard as defined in the EIP.
                    /// @dev This includes the optional name, symbol, and decimals metadata.
                    interface IERC20 {
                    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

                    File 5 of 9: WETH9
                    1
                    2
                    3
                    4
                    5
                    6
                    7
                    8
                    9
                    10
                    11
                    12
                    13
                    14
                    15
                    16
                    // Copyright (C) 2015, 2016, 2017 Dapphub
                    // This program is free software: you can redistribute it and/or modify
                    // it under the terms of the GNU General Public License as published by
                    // the Free Software Foundation, either version 3 of the License, or
                    // (at your option) any later version.
                    // This program is distributed in the hope that it will be useful,
                    // but WITHOUT ANY WARRANTY; without even the implied warranty of
                    // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
                    // GNU General Public License for more details.
                    // You should have received a copy of the GNU General Public License
                    // along with this program. If not, see <http://www.gnu.org/licenses/>.
                    pragma solidity ^0.4.18;
                    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

                    File 6 of 9: WeETH
                    1
                    2
                    3
                    4
                    5
                    6
                    7
                    8
                    9
                    10
                    11
                    12
                    13
                    14
                    15
                    16
                    // SPDX-License-Identifier: MIT
                    pragma solidity 0.8.13;
                    import "@openzeppelin-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol";
                    import "@openzeppelin-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol";
                    import "@openzeppelin-upgradeable/contracts/access/OwnableUpgradeable.sol";
                    import "@openzeppelin-upgradeable/contracts/token/ERC20/extensions/draft-ERC20PermitUpgradeable.sol";
                    import "./interfaces/IeETH.sol";
                    import "./interfaces/ILiquidityPool.sol";
                    import "./interfaces/IRateProvider.sol";
                    contract WeETH is ERC20Upgradeable, UUPSUpgradeable, OwnableUpgradeable, ERC20PermitUpgradeable, IRateProvider {
                    //--------------------------------------------------------------------------------------
                    //--------------------------------- STATE-VARIABLES ----------------------------------
                    //--------------------------------------------------------------------------------------
                    IeETH public eETH;
                    ILiquidityPool public liquidityPool;
                    //--------------------------------------------------------------------------------------
                    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

                    File 7 of 9: ERC20Router
                    1
                    2
                    3
                    4
                    5
                    6
                    7
                    8
                    9
                    10
                    11
                    12
                    13
                    14
                    15
                    16
                    // SPDX-License-Identifier: MIT
                    pragma solidity ^0.8.25;
                    import {Ownable} from "solady/src/auth/Ownable.sol";
                    import {Tstorish} from "tstorish/src/Tstorish.sol";
                    import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
                    import {IERC721} from "@openzeppelin/contracts/token/ERC721/IERC721.sol";
                    import {IERC1155} from "@openzeppelin/contracts/token/ERC1155/IERC1155.sol";
                    import {SafeERC20} from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
                    import {IAllowanceTransfer} from "permit2-relay/src/interfaces/IAllowanceTransfer.sol";
                    import {ISignatureTransfer} from "permit2-relay/src/interfaces/ISignatureTransfer.sol";
                    import {IPermit2} from "permit2-relay/src/interfaces/IPermit2.sol";
                    import {RelayerWitness} from "./types/lib/RelayStructs.sol";
                    import {IMulticaller} from "./types/interfaces/IMulticaller.sol";
                    contract ERC20Router is Ownable, Tstorish {
                    using SafeERC20 for IERC20;
                    // --- Errors --- //
                    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

                    File 8 of 9: Multicaller
                    1
                    2
                    3
                    4
                    5
                    6
                    7
                    8
                    9
                    10
                    11
                    12
                    13
                    14
                    15
                    16
                    // SPDX-License-Identifier: MIT
                    pragma solidity ^0.8.4;
                    /**
                    * @title Multicaller
                    * @author vectorized.eth
                    * @notice Contract that allows for efficient aggregation
                    * of multiple calls in a single transaction.
                    */
                    contract Multicaller {
                    // =============================================================
                    // ERRORS
                    // =============================================================
                    /**
                    * @dev The lengths of the input arrays are not the same.
                    */
                    error ArrayLengthsMismatch();
                    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

                    File 9 of 9: AllowanceHolder
                    1
                    2
                    3
                    4
                    5
                    6
                    7
                    8
                    9
                    10
                    11
                    12
                    13
                    14
                    15
                    16
                    // SPDX-License-Identifier: MIT
                    pragma solidity ^0.8.25;
                    import {AllowanceHolderBase} from "./AllowanceHolderBase.sol";
                    import {TransientStorage} from "./TransientStorage.sol";
                    /// @custom:security-contact security@0x.org
                    contract AllowanceHolder is TransientStorage, AllowanceHolderBase {
                    constructor() {
                    require(address(this) == 0x0000000000001fF3684f28c67538d4D072C22734 || block.chainid == 31337);
                    }
                    /// @inheritdoc AllowanceHolderBase
                    function exec(address operator, address token, uint256 amount, address payable target, bytes calldata data)
                    internal
                    override
                    returns (bytes memory)
                    {
                    (bytes memory result, address sender, TSlot allowance) = _exec(operator, token, amount, target, data);
                    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX